Exemple #1
0
    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);
    }
Exemple #2
0
    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);
            }
        }
    }
Exemple #3
0
    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>());
            };
        }
    }