public void main() { foreach (Entity e in _entities) { e.Main(); } //Run the game loop while (!SwinGame.WindowCloseRequested() && !SwinGame.KeyTyped(KeyCode.vk_ESCAPE)) { if (SwinGame.KeyTyped(KeyCode.vk_BACKSPACE)) { SwinGame.ToggleFullScreen(); } if (SwinGame.MouseClicked(MouseButton.LeftButton)) { bool playerSelected = false; foreach (Player p in _players) { if (p.AtPoint(SwinGame.MousePosition())) { p.Selected = !p.Selected; playerSelected = true; } } if (!playerSelected) { if (_player1.Selected) { _player1.SetDest(SwinGame.MousePosition()); } else if (!_player2.Selected) { UpdateTile(SwinGame.MousePosition()); } } } else if (SwinGame.MouseClicked(MouseButton.RightButton) && _player2.Selected) { _player2.SetDest(SwinGame.MousePosition()); } if (SwinGame.KeyTyped(KeyCode.vk_p)) { _paused = !_paused; } if (!_paused) { List <Entity> toRemove = new List <Entity>(); foreach (Player p in _players) { foreach (Entity e in p.GetToAdd()) { _entities.Add(e); } } foreach (Entity e in _entities) { e.Main(); if (e.GetToRemove()) { toRemove.Add(e); } } foreach (Entity e in toRemove) { _entities.Remove(e); } } foreach (Player p in _players) { if (p.Selected) { p.AcceptInput(); } } _drawer.Draw(); } }