public void ShowStatsProduction(IBuildingProduction building) { m_currentBuilding = building; // show stats buildingName.text = building.GetName(); buildingDesc.text = building.GetDesc(); foodPerDay.text = string.Format(FORMAT_PER_DAY, building.GetProducedFood()); researchPerDay.text = string.Format(FORMAT_PER_DAY, building.GetProducedResearch()); wareProd.text = building.GetProducedWareType().ToString(); // check if someone's working Guid settler = building.GetWorker(); /* Done in RefreshUI() * if (settler == Guid.Empty) // no settler * { * removeButton.gameObject.SetActive(false); * employButton.gameObject.SetActive(true); * } else * { * removeButton.gameObject.SetActive(true); * employButton.gameObject.SetActive(false); * }*/ houseBuildingContent.SetActive(false); productiveBuildingContent.SetActive(true); /* done in RefreshUI() * if (building.GetWorker() != Guid.Empty) * { * workerImage.sprite = M_SettlersManager.SGetPortraitOfSettler(building.GetWorker()); * }*/ M_ScreenManager.SChangeScreenPersistentBack(s_instance.gameObject); }
private void RefreshUI() { buildingName.text = m_currentBuilding.GetName(); buildingDesc.text = m_currentBuilding.GetDesc(); if (m_currentBuilding is IBuildingProduction) { IBuildingProduction prod = (IBuildingProduction)m_currentBuilding; foodPerDay.text = string.Format(FORMAT_PER_DAY, prod.GetProducedFood()); researchPerDay.text = string.Format(FORMAT_PER_DAY, prod.GetProducedResearch()); if (prod.GetWorker() != Guid.Empty) { workerImage.sprite = M_SettlersManager.SGetPortraitOfSettler(prod.GetWorker()); workerName.text = M_SettlersManager.SGetNameOfSettler(prod.GetWorker()); employButton.gameObject.SetActive(false); removeButton.gameObject.SetActive(true); infoButtonProd.gameObject.SetActive(true); } else { workerImage.sprite = defaultWorkerImg; workerName.text = "None"; employButton.gameObject.SetActive(true); removeButton.gameObject.SetActive(false); infoButtonProd.gameObject.SetActive(false); } } }
public void UpdatePerDay() { m_graphBuildings.Foreach((UT_Node <BuildingStats> node) => { node.GetData().overallMood = 0; node.GetData().availability = 0; node.GetData().createdInstances = 0; }); List <IBuilding> buildings = M_BuildingManager.SGetBuildings(); foreach (IBuilding building in buildings) { if (building is IBuildingHouse) { GetNode(building.GetData().id).GetData().createdInstances++; continue; } if (!(building is IBuildingProduction)) { continue; } IBuildingProduction prod = (IBuildingProduction)building; UT_Node <BuildingStats> node = GetNode(building.GetData().id); node.GetData().overallMood += prod.GetMood(); node.GetData().createdInstances++; if (prod.IsWorking()) { M_WaresManager.SAddProductiveBuilding(prod.GetId(), prod.GetProducedWareType()); } else { M_WaresManager.SRemoveProductiveBuilding(prod.GetId(), prod.GetProducedWareType()); } } m_graphBuildings.Foreach((UT_Node <BuildingStats> node) => { BuildingStats stats = node.GetData(); foreach (DAT_Building.BuildDependency dep in stats.data.dependencies) { if (stats.overallMood > dep.requiredMood) { UT_Node <BuildingStats> tempNode = GetNode(dep.unlocksBuilding); tempNode.GetData().availability += 1; if (tempNode.GetData().availability == tempNode.GetAdjacent().Count && m_currentBuildingsLevel < tempNode.GetData().buildingLevel) { m_currentBuildingsLevel = tempNode.GetData().buildingLevel; } } } }); }
public void DisplayProduction(IBuildingProduction building) { if (_current != null) { _current.OnTimeProductionChange -= OnNormalizedTimeProductionChangeHandler; _current.OnProductionChange -= OnProductionChangeHandler; } Title.text = building.Profile.name; Icon.sprite = building.Profile.Icon; _current = building; _current.OnTimeProductionChange += OnNormalizedTimeProductionChangeHandler; _current.OnProductionChange += OnProductionChangeHandler; DrawPossibleProduction(); DrawProgressQueue(); }
public void Init(IBuildingProduction production) { Production = production; enabled = production != null; if (production != null) { Production.OnDone += (element) => { var offset = (Random.insideUnitCircle * 5); var product = Instantiate(element.Prefab, new Vector3(transform.position.x + offset.x, transform.position.y, transform.position.z + offset.y), Quaternion.identity); SquadController.Instance.Add(product.GetComponent <NavMeshAgent>()); }; } }