public override void Update(GameTime gameTime)
{
if (levelState == LevelState.Active)
{
foreach (Gem gem in gems)
{
gem.Update(gameTime);
}
int i = 0;
Rectangle boundingRect = hero.GetBoundingRect(hero.rect);
while (i < gems.Count)
{
if (gems[i].rect.Intersects(boundingRect))
{
gems.RemoveAt(i);
Score += 100;
sound.Play();
if (gems.Count == 0)
{
quit.quitPortalSound.Play();
quit.quitSound.Play();
quit.OpenPortal();
}
}
else
{
i++;
}
}
enter.Update(gameTime);
hero.Update(gameTime);
quit.Update(gameTime);
shader.Update(gameTime);
background.Update(gameTime);
try
{
foreach (AnimatedSprite enemy in enemies)
{
Rectangle enemyBoundingRect = enemy.GetBoundingRect(enemy.rect);
if (enemyBoundingRect.Intersects(boundingRect))
{
hero.health -= enemy.power * (float)gameTime.ElapsedGameTime.Ticks / 1000000;
if (hero.health <= 0)
{
Score = 0;
CreateLevel(0);
}
}
enemy.Update(gameTime);
}
}
catch (InvalidOperationException) { }
/// Keys Event Handler For Level
/// Новый уровень
if (InputManager.IsKeyPress(Keys.Space))
{
CreateLevel(2);
}
/// Пауза
if (InputManager.IsKeyPress(Keys.P))
{
oldLevelState = levelState;
levelState = LevelState.Paused;
}
/// Выход в главное меню
if (InputManager.IsKeyDown(Keys.Escape))
{
oldLevelState = levelState;
levelState = LevelState.Paused;
Game.Components.Add(new Transition(Game, null, new Menu(Game)));
}
}
else
{
UpdateActiveUnits(gameTime);
}
}