using System.Collections; using System.Collections.Generic; using UnityEngine; public class HouseManager : MonoBehaviour { [SerializeField] private float ttnw = 30; //Time to next worker private float currentTtnw = 0; private int workerPerHouse = 3; private GameManager gameManager; [SerializeField] private GameObject mouseNotificationLabel; //House cost: Brick Tile Plank public int[] cost = new int[3] { 10, 5, 2 }; [SerializeField] private Transform notificationOrigin; // Start is called before the first frame update void Start() { gameManager = GameObject.Find("GameManager").GetComponent(); } // Update is called once per frame void Update() { if (currentTtnw > 0) { currentTtnw -= Time.deltaTime; } else { currentTtnw = ttnw; if (gameManager.GetResourceCount(Resource.TOTAL_WORKER) < gameManager.GetResourceCount(Resource.HOUSE) * workerPerHouse) { int freeWorkerSlots = (gameManager.GetResourceCount(Resource.HOUSE) * workerPerHouse) - gameManager.GetResourceCount(Resource.TOTAL_WORKER); int newWorkers = Mathf.CeilToInt((float)freeWorkerSlots / workerPerHouse); gameManager.AddResource(Resource.WORKER, newWorkers); gameManager.AddResource(Resource.TOTAL_WORKER, newWorkers); GameObject infoLabel = Instantiate(mouseNotificationLabel, notificationOrigin.transform.position, Quaternion.identity, GameObject.Find("Canvas").transform); infoLabel.GetComponent().tmp.text = $"{newWorkers} worker{(newWorkers > 1 ? "s" : "")} moved in"; infoLabel.transform.position = notificationOrigin.transform.position; infoLabel.GetComponent ().direction = new Vector3(0, -2, 0); } } } public void BuildHouse() { if (gameManager.GetResourceCount(Resource.BRICK) < cost[0] || gameManager.GetResourceCount(Resource.TILE) < cost[1] || gameManager.GetResourceCount(Resource.PLANKS) < cost[2]) { Debug.Log("Not enough resources to build house!"); GameObject infoLabel = Instantiate(mouseNotificationLabel, GameObject.Find("Canvas").transform); infoLabel.GetComponent().tmp.text = "Not enough resources to build house!"; infoLabel.GetComponent().direction = new Vector3(0, 4, 0); return; } gameManager.RemoveResource(Resource.BRICK, cost[0]); gameManager.RemoveResource(Resource.TILE, cost[1]); gameManager.RemoveResource(Resource.PLANKS, cost[2]); gameManager.AddResource(Resource.HOUSE, 1); } }