public void Update(int elapsed_time)
{
for (int i = 0; i < monsters.Count(); ++i)
{
Enemy monster = monsters.ElementAt(i);
bool mons_removed = false;
if (monster.getHealth() <= 0)
{
game_state.monster_engine.Remove(monster);
mons_removed = true;
game_state.fx_engine.RequestExplosion(explosionType.SMALL, monster.getX() + (monster.getWidth() / 2), monster.getY() + (monster.getHeight() / 2));
game_state.fx_engine.RequestSound(soundType.ENEMY_DIE);
}
if (mons_removed == false)
{
if (IsVisible(monster))
{
move_towards_target(monster);
if (monster.next_think_time >= 2000) //TIME DELAY
{
actionDecision action = think(monster);
act(monster, action);
monster.next_think_time = 0;
}
else
{
monster.next_think_time += elapsed_time;
}
}
}
}
}