// Eats the found food and adds to character hunger IEnumerator EatFood(BuildingParts.FoodStores food, GameObject foodStore) { yield return(new WaitForSeconds(2)); switch (food) { case BuildingParts.FoodStores.Bread: { characterStats.currentHunger += 30; } break; case BuildingParts.FoodStores.None: { characterStats.currentHunger = 100; Debug.LogError("Food eaten by " + gameObject + " was " + food); } break; } characterStats.currentTask = characterStats.idleTask; foodStore.GetComponent <BuildingPartsData>().inUse = false; foodFound = BuildingParts.FoodStores.None; buildingOwned.GetComponent <BuildingStats>().foodStores[0] = BuildingParts.FoodStores.None; isBusy = false; isStarving = false; }
// Check if the character needs to eat void CheckFood() { if (hasHome && buildingOwned.GetComponent <BuildingStats>().foodStores[0] != BuildingParts.FoodStores.None) { // Character will eat if hungry and doing nothing, and forces the character to go to eat if they are starving if ((characterStats.currentHunger <= 50 && isDoingHobby) || (characterStats.currentHunger <= 30 && characterStats.currentTask != CharacterTasks.CurrentTask.Eating)) { if (characterStats.currentHunger <= 30) { isStarving = true; } // Looks for food storage in the building that is not already in use for (int i = 0; i < buildingOwned.GetComponent <BuildingStats>().buildingArea.Length; i++) { if (buildingOwned.GetComponent <BuildingStats>().furnitureType[i] == BuildingParts.FurnitureType.FoodStorage) { if (!buildingOwned.transform.GetChild(i).GetComponent <BuildingPartsData>().inUse) { characterStats.nav.destination = new Vector3(buildingOwned.transform.GetChild(i).transform.position.x + buildingOwned.transform.GetChild(i).GetComponent <ObjectNavOffset>().customerNavOffset.x, 0, buildingOwned.transform.GetChild(i).transform.position.z + buildingOwned.transform.GetChild(i).GetComponent <ObjectNavOffset>().customerNavOffset.y); foodFound = buildingOwned.GetComponent <BuildingStats>().foodStores[0]; isBusy = true; characterStats.currentTask = CharacterTasks.CurrentTask.Eating; buildingOwned.transform.GetChild(i).GetComponent <BuildingPartsData>().inUse = true; foodStore = buildingOwned.transform.GetChild(i).gameObject; foundFood = true; break; } } } } // Starts eating food once the character reaches the food storage if (foundFood) { if (new Vector3(transform.position.x, 0, transform.position.z) == new Vector3(characterStats.nav.destination.x, 0, characterStats.nav.destination.z)) { StartCoroutine(EatFood(foodFound, foodStore)); foundFood = false; } } } }