public static void Main() { try { Console.CursorVisible = false; PrepareLoading(); DoLoading(); #if !DEBUG FinishLoading(); #endif Console.WriteLine(Assets["asciiArts"]["title.txt"].content); var state = MenuState.MainMenu; while (state != MenuState.ExitGame) { switch (state) { case MenuState.MainMenu: MenuDrawer.Select(new Dictionary <string, Action> { { "Новая Игра", () => { state = MenuState.NewGame; } }, { "Загрузить Игру", () => { state = MenuState.LoadGame; } }, { "Настройки", () => { state = MenuState.Settings; } }, { "Выйти Из Игры", () => { state = MenuState.ExitGame; } } }); break; case MenuState.NewGame: Dictionary <string, Action> actions = Campaigns.ToDictionary(campaign => { return(new KeyValuePair <string, Action>(campaign.name, () => { var gameController = new GameController(campaign.situations, campaign.items); gameController.Start(); // В GameController'е стоит свой game-loop, поэтому, // когда он завершится (игрок выйдет из игры) - контроль вернётся сюда state = MenuState.MainMenu; })); }); actions["Назад"] = () => { state = MenuState.MainMenu; }; MenuDrawer.Select("Новая Игра: Выбор кампании", actions); break; case MenuState.LoadGame: MenuDrawer.Select("Загрузить игру", new Dictionary <string, Action> { { "<Тут нет сохраений. Ты можешь начать новую игру>", () => { state = MenuState.NewGame; } }, { "Назад", () => { state = MenuState.MainMenu; } } }); break; case MenuState.Settings: MenuDrawer.Select("Настройки", new Dictionary <string, Action> { { "<Пока что, тут ничего нет>", () => { state = MenuState.Settings; } }, { "Назад", () => { state = MenuState.MainMenu; } } }); break; case MenuState.ExitGame: break; } } } catch (Exception e) { Console.Error.WriteLine(e); } finally { Console.CursorVisible = true; ModLoader.DestroyMods(); } }