private void burnBaseEnergy()
{
foreach (string organismID in _organismIDList)
{
OrganismState organismState = _newWorldState.GetOrganismState(organismID);
if (organismState == null) continue;
if (organismState.IsAlive)
{
// Age the organism
organismState.AddTickToAge();
if (organismState is AnimalState)
{
if (organismState.IsAlive)
{
organismState.BurnEnergy(organismState.Radius*
EngineSettings.BaseAnimalEnergyPerUnitOfRadius);
}
}
else
{
Debug.Assert(organismState is PlantState);
PlantState plantState = (PlantState) organismState;
if (organismState.IsAlive)
{
plantState.BurnEnergy(plantState.Radius*EngineSettings.BasePlantEnergyPerUnitOfRadius);
}
// When plants die they disappear
if (plantState.EnergyState == EnergyState.Dead)
{
removeOrganism(new KilledOrganism(plantState));
}
}
}
else
{
if (organismState is AnimalState)
{
AnimalState animalState = (AnimalState) organismState;
animalState.AddRotTick();
if (animalState.RotTicks > EngineSettings.TimeToRot)
{
removeOrganism(new KilledOrganism(animalState));
}
}
}
}
}