private void LaunchGame(Save save) { GameLogic.CreateLevel(save.LevelName, save.Name, DataLayer.Settings.SizeX, DataLayer.Settings.SizeY, DataLayer.Settings.Difficulty, PlaySound); GameLogic.Player.Score = save.Score; GameLogic.Player.Hero = save.Hero; GameLogic.CurrentSave = save; GameStatus = GameStatusEnum.Game; }
private void CreateMenu() { var c = Console.ReadKey(true); _menuInputProcessor.ProcessInput( c.Key, () => { Environment.Exit(0); }, ChangeGameStatus, i => { ChangeCurrentMenuAction(i); _menu.DrawMenu(_currentMenuAction); }, () => _currentMenuAction, () => { _menu.DrawNewGame(); var name = Console.ReadLine(); _dataLayer.AddGameSave(new Save { Name = name }); var currentSave = _dataLayer.GetAllGameSaves().Find(e => e.Name == name); if (currentSave == null) { throw new Exception("Wrong save name!"); } _gameLogic.CreateLevel(currentSave.LevelName, currentSave.Name, _dataLayer.Settings.SizeX, _dataLayer.Settings.SizeY, _dataLayer.Settings.Difficulty, PlaySound); _gameLogic.CurrentSave = currentSave; }, () => { _menu.DrawHelp(); Console.ReadKey(); _menu.DrawMenu( 4); //3 is "Help" index in _menuActions, so new menu will be with this element current }, () => { _menu.DrawSettings(_dataLayer.Settings); Console.WriteLine(); Console.Write(" New Difficulty: "); _dataLayer.Settings.Difficulty = int.Parse(Console.ReadLine() ?? string.Empty); Console.WriteLine(); Console.Write(" New TickRate: "); _dataLayer.Settings.TickRate = int.Parse(Console.ReadLine() ?? string.Empty); Console.WriteLine(); Console.Write(" New SizeX: "); _dataLayer.Settings.SizeX = int.Parse(Console.ReadLine() ?? string.Empty); Console.WriteLine(); Console.Write(" New SizeY: "); _dataLayer.Settings.SizeY = int.Parse(Console.ReadLine() ?? string.Empty); Console.WriteLine(); Console.Write(" Press any key to quit settings"); Console.ReadKey(); _dataLayer.SaveSettings(); _menu.DrawMenu( 2); //2 is "Settings" index in _menuActions, so new menu will be with this element current }, () => { var results = _dataLayer.GetBestScores(); _menu.DrawScores(results); try { Console.ReadKey(); _menu.DrawMenu( 3); //2 is "Settings" index in _menuActions, so new menu will be with this element current } catch (Exception e) { Console.WriteLine("Unable to read file with best scores"); Console.WriteLine(e.Message); } }, () => { var saves = _dataLayer.GetAllGameSaves(); _menu.DrawSaves(saves); var name = Console.ReadLine(); foreach (var save in saves) { if (save.Name == name) { LaunchGame(save); ChangeGameStatus(GameStatusEnum.Game); } } } ); }