예제 #1
0
    public void Update()
    {
        if (isBuilding)
        {
            constructionTime += Time.deltaTime;
            parentTile.ProgressBar.GetComponent <Slider>().value = constructionTime / totalConstructionTime;
            if (constructionTime >= totalConstructionTime)
            {
                ConstructionDone();
            }
        }

        bool hasResources = true;

        foreach (ResourceType need in resourceNeeds)
        {
            hasResources = ItemBarController.main.AmountOf(need) > 0;

            if (!hasResources)
            {
                Debug.Log("Doesn't have resources");
                break;
            }
        }

        bool hasRequirements = true;

        // if there are resources, check the living
        foreach (LifeNeeds need in requiredNeeds)
        {
            switch (need.providedRequirements)
            {
            case LivingRequirements.Energy:
                Debug.Log("Doesnt have power: " + need.amount);
                hasRequirements = LivingResourcesManager.CheckPower(need.amount);
                break;

            case LivingRequirements.Food:
                Debug.Log("Doesnt have food: " + need.amount);
                hasRequirements = LivingResourcesManager.CheckFood(need.amount);
                break;

            case LivingRequirements.Water:
                Debug.Log("Doesnt have water: " + need.amount);
                hasRequirements = LivingResourcesManager.CheckWater(need.amount);
                break;

            default:
                break;
            }
            if (!hasRequirements)
            {
                Debug.Log("Doesn't have requirements");
                break;
            }
        }

        if (isBuilt && IsProducing && (hasResources && hasRequirements))
        {
            productionTime += Time.deltaTime;
            parentTile.ProgressBar.GetComponent <Slider>().value = productionTime / totalProductionTime;

            // Check somewhere that resourceNeeds are met
            if (productionTime >= totalProductionTime)
            {
                productionTime = 0.0f;

                foreach (ResourceProduction production in resourceOutput)
                {
                    if (Random.value <= production.chance)
                    {
                        ItemBarController.main.Add(production.resource, production.amount);
                    }
                }

                foreach (ResourceType need in resourceNeeds)
                {
                    ItemBarController.main.Add(need, -1);
                }

                foreach (LifeNeeds need in requiredNeeds)
                {
                    switch (need.providedRequirements)
                    {
                    case LivingRequirements.Energy:
                        LivingResourcesManager.GetPower(need.amount);
                        break;

                    case LivingRequirements.Food:
                        LivingResourcesManager.GetFood(need.amount);
                        break;

                    case LivingRequirements.Water:
                        LivingResourcesManager.GetWater(need.amount);
                        break;

                    default:
                        break;
                    }
                }

                foreach (LifeNeeds need in providedNeeds)
                {
                    switch (need.providedRequirements)
                    {
                    case LivingRequirements.Energy:
                        LivingResourcesManager.AddPower(need.amount);
                        break;

                    case LivingRequirements.Food:
                        LivingResourcesManager.AddFood(need.amount);
                        break;

                    case LivingRequirements.Water:
                        LivingResourcesManager.AddWater(need.amount);
                        break;

                    default:
                        break;
                    }
                }

                Debug.Log("Getting up keep for: " + PeopleRequired);
                LivingResourcesManager.GetUpKeep(PeopleRequired);
            }
            //Provide the needs to needs manager.
        }
    }
예제 #2
0
 // Use this for initialization
 void Start()
 {
     LivingResourcesManager.foodCount = GetComponent <Text>();
     LivingResourcesManager.AddFood(150);
 }