public void UpdateEscape(GameTime gameTime) { float seconds = gameTime.getSeconds(); //remove entities foreach (Collectable c in collectablesToRemove) { if (levels != null) { Level l = levels[c.levelX, c.levelY]; if (l != null && l.collectables != null) { if (c is Prisoner) { l.removePrisoner((Prisoner)c); } else if (c is PowerupIcon) { l.removePowerup((PowerupIcon)c); } else { l.collectables.Remove(c); } } } } collectablesToRemove.Clear(); foreach (Enemy e in enemiesToRemove) { foreach (Level l in levels) { if (l != null) { l.enemies.Remove(e); } } } enemiesToRemove.Clear(); foreach (Hero hero in heroes) { hero.Update(gameTime); } foreach (Level l in CurrentLevels) { l.UpdateEscape(gameTime); } bool levelChanged = false; foreach (Hero hero in heroes) { levelChanged |= hero.levelChanged; } if (levelChanged) { createAndRemoveLevels(); if (RetroGame.State == GameState.Arena) { RetroGame.EnterEscapeMode(); } } float mult = 0f; float currentZoomSpeed = Camera.zoomSpeed; #if DEBUG if (heroes[0].isDown(Keys.E)) { mult = 2.7f; } else if (heroes[0].isDown(Keys.R)) { mult = -2.7f; } Camera.targetZoom += Camera.zoomSpeed * mult * seconds; #endif if (mult != 0f) { currentZoomSpeed = 5 * Camera.zoomSpeed; } if (Camera.targetZoom - Camera.zoom > seconds * currentZoomSpeed) { Camera.zoom += currentZoomSpeed * seconds; } else if (Camera.targetZoom - Camera.zoom < -seconds * currentZoomSpeed) { Camera.zoom -= currentZoomSpeed * seconds; } else { Camera.zoom = Camera.targetZoom; } Camera.Update(gameTime); }