public int OffsetValue(int amount) { if (Amount + amount < 0) { return(-1); } var amountAdded = amount; if (Amount + amount > Capacity) { amountAdded = Capacity - Amount; Amount = Capacity; } else { Amount += amount; } if (amountAdded < 0) { FloatingText.Instantiate(display.transform, amountAdded, type.ToString(), false, false, 0.7f); } display.text = Amount + "/" + Capacity; OnChangeEvent.Invoke(type, amountAdded); return(amountAdded); }
public bool EatMeal() { var food = ResourceManager.GetInstance()[ResourceType.Food]; if (food.Amount - starvingPeople < 0) { Debug.Log("Game Over!"); return(false); } var previousFoodAmount = food.Amount; var previousStarvingPeopleAmount = starvingPeople; food.OffsetValue(-starvingPeople); starvingPeople = 0; if (food.Amount - workers.Count >= 0) { food.OffsetValue(-workers.Count); } else { starvingPeople += (workers.Count - food.Amount); food.OffsetValue(-food.Amount); } var deltaFood = food.Amount - previousFoodAmount; var deltaStarving = starvingPeople - previousStarvingPeopleAmount; if (deltaStarving != 0) { FloatingText.Instantiate(starvingPeopleText.transform, deltaStarving, "Starving", false, deltaStarving < 0, 0.7f); } return(true); }
private void Update() { var dayCycleManager = DayCycleManager.GetInstance(); if (dayCycleManager.Day > 2 && dayCycleManager.GetCurrentHour() == spawnHour && prevHour != spawnHour) { var randomPoint = Random.insideUnitSphere; FloatingText.Instantiate(populationText.transform, 1, "Worker", false, true, 1); Worker.Instantiate( PopulationManager.GetInstance().GetAvailableHome(), spawnpoint.position + new Vector3(randomPoint.x, 0, randomPoint.z), spawnpoint.rotation); } prevHour = dayCycleManager.GetCurrentHour(); }
private void Update() { var assignable = GetComponent <Assignable>(); if (IsFunctioning()) { progress += Time.deltaTime * assignable.GetWorkersInRange() * DayCycleManager.GetInstance().ClockMinuteRate; } if (assignable.GetWorkersInRange() == 0 || DayCycleManager.GetInstance().IsRestTime()) { progress = 0; } if (PercentComplete > 1) { ResourceManager.GetInstance()[type].OffsetValue(TakeFromPile(1)); FloatingText.Instantiate(statusUI.transform, "+1 " + type.ToString()); progress = progress - gatherPeriod; } }