private float SetFoodRatio(Hex habitat) { float plantFood = habitat.GetVegHealth(); float meatFood = habitat.GetMeatHealth(); float insectFood = habitat.GetInsectHealth(); float fishFood = habitat.GetFishHealth(); float wasteFood = habitat.GetWasteRatio(); float foodRatio = 0.00f; if(diet.Contains(dietType.HERB)){ foodRatio += plantFood + ((1 - plantFood) / 2); } if(diet.Contains(dietType.CARNO)){ foodRatio += meatFood + ((1 - meatFood) / 2); } if(diet.Contains(dietType.FISH)){ foodRatio += fishFood + ((1 - fishFood) / 2); } if(diet.Contains(dietType.INSECT)){ foodRatio += insectFood + ((1 - insectFood) / 2); } if(diet.Contains(dietType.SCAV)){ foodRatio += wasteFood + ((1 - wasteFood) / 2); } foodRatio /= diet.Count; if (isPlayer) { //print(foodRatio); } if(foodRatio > 1){ foodRatio = 1; } else if(foodRatio < 0){ foodRatio = 0; } return foodRatio; }
//Herbivores energy gain from food void EatPlants(Hex habitat) { float bite = biteSize; Hex currentHabitat = habitat; float plantFood = currentHabitat.GetLocalPlantFood(); if(plantFood < (size * bite * currentHabitat.localCritters.Count)){ bite = bite / 2; } if(plantFood <= 0){ bite = 0; currentHabitat.SetLocalPlantFood(0); } else if(plantFood < bite){ bite = currentHabitat.GetLocalPlantFood(); } if(bite > energy_Needed){ bite = energy_Needed; } float food = habitat.GetVegHealth(); float foodHealth = food + (1 - food) / 2; foodTaken += (bite * foodHealth); currentHabitat.SetLocalPlantFood((int)(plantFood - foodTaken)); if(foodTaken * 2 < energy_Needed){ if(offense > Random.Range(0, 101)){ foodTaken *= 2; } } }