예제 #1
0
파일: Main.cs 프로젝트: dmitmel/ASCIIWars
        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();
            }
        }