/// <summary> /// Обработка нажатия клавиш /// </summary> private void ProcessingKeystrokes() { if (Keyboard.Escape) { SoundGame.Stop(); StateOfGame = StateOfGame.Menu; Menu.MenuControl.BringToFront(); Thread.Sleep(100); } else { if (Keyboard.Enter && menu.StateMenu == StateMenu.SaveGame && Level.StateOfLevel == StateOfLevel.Game) { // Сериализация timer.Stop(); var stream = new FileStream("Serialized", FileMode.Create); var formatter = new BinaryFormatter(); formatter.Serialize(stream, level); stream.Close(); menu.StateMenu = StateMenu.Game; StateOfGame = StateOfGame.Menu; Menu.MenuControl.BringToFront(); Thread.Sleep(100); timer.Start(); } else if (Keyboard.Enter && menu.StateMenu == StateMenu.LoadGame && Level.StateOfLevel == StateOfLevel.Game) { // Десериализвция timer.Stop(); level.Clear(); var stream = new FileStream("Serialized", FileMode.Open); var formatter = new BinaryFormatter(); level = formatter.Deserialize(stream) as Level; stream.Close(); menu.StateMenu = StateMenu.Game; StateOfGame = StateOfGame.Menu; Menu.MenuControl.BringToFront(); Thread.Sleep(100); level.InitStaticFild(); timer.Start(); } else if (Keyboard.Enter && StateOfGame == StateOfGame.GameOver) { StateOfGame = StateOfGame.Menu; Menu.MenuControl.BringToFront(); level.DownloadLevel(1); Thread.Sleep(100); } else if (Keyboard.Enter && StateOfGame == StateOfGame.Menu && menu.StateMenu == StateMenu.Game) { StateOfGame = StateOfGame.Game; screenGame.BringToFront(); menu.ResetPosition(); } } }
/// <summary> /// Вызывается при попадании снаряда в обьект /// </summary> /// <param name="shellObj">Ссылка на снаряд</param> public void Response(ShellObj shellObj) { // Если снаряд выпущен не етим танком if (shellObj.NameTank == KeyObjGame.TankEnemy) { // Удаление со списка обектов игры Level.DictionaryObjGame[KeyObjGame.Player].Remove(this);//todo shellObj.Detonation = true; // Миняем статус Level на game over Level.StateOfLevel = StateOfLevel.GameOver;//todo new DetonationShellBig(shellObj.Rect.Location, shellObj.Direction, 0); SoundGame.Stop(); } }
public void Update() { if (StateOfLevel == StateOfLevel.Download) { if (!informationDownloadLevel.IsShow()) { listInformation.Remove(informationDownloadLevel); tankPlayer = new SmallTankPlayer(respawnPlayer, Direction.Up); new AppearanceOfTank(respawnPlayer, tankPlayer); enemyTanks = new EnemyTanks(TanksEnemy); enemyTanks.AddEnemy(); StateOfLevel = StateOfLevel.Game; } else { informationDownloadLevel.Update(); } } if (StateOfLevel != StateOfLevel.GameOver) { for (int i = 0; i < listPlayer.Count; i++) { listPlayer[i].Update(); } } for (int i = 0; i < listOther.Count; i++) { listOther[i].Update(); } foreach (var item in listWater) { item.Update(); } for (int i = 0; i < listTankEnemy.Count; i++) { listTankEnemy[i].Update(); } for (int i = 0; i < listShell.Count; i++) { listShell[i].Update(); } if (StateOfLevel == StateOfLevel.GameOver) { if (imgGameOver == null) { SoundGame.Stop(); imgGameOver = new ImgGameOver(); listInformation.Add(imgGameOver); } else { imgGameOver.Update(); } } if (StateOfLevel == StateOfLevel.Game) { // Если вражиских танков неосталось if (listTankEnemy.Count == 0 && !enemyTanks.IsTanks()) { if (timerWin == 0) { SoundGame.Stop(); TimerWin(); } else { timerWin--; } } else if (listTankEnemy.Count < 3) { enemyTanks.AddEnemy(); } } }