Example #1
0
        public SaveGameScreen(Game game) : base("Save Game")
        {
            this.game      = game;
            Title.Position = new CPos(0, -4096, 0);

            list = new GameSaveList(4096, "wooden")
            {
                Position = new CPos(0, 1024, 0)
            };

            Add(new Button("Back", "wooden", () => game.ShowScreen(ScreenType.MENU))
            {
                Position = new CPos(4096, 6144, 0)
            });
            Add(new Button("Save", "wooden", () => { saveGame(); game.RefreshSaveGameScreens(); })
            {
                Position = new CPos(0, 6144, 0)
            });
            Add(new Button("New Save", "wooden", () => createSaveScreen.ActiveScreen = true)
            {
                Position = new CPos(-4096, 6144, 0)
            });

            Add(list);

            createSaveScreen = new NewSaveGameScreen(game);
        }
        public LoadGameScreen(Game game) : base("Load Game")
        {
            this.game      = game;
            Title.Position = new CPos(0, -4096, 0);

            list = new GameSaveList(4096, "wooden")
            {
                Position = new CPos(0, 1024, 0)
            };

            Add(new Button("Back", "wooden", () => game.ShowScreen(ScreenType.MENU))
            {
                Position = new CPos(4096, 6144, 0)
            });
            void loadAction()
            {
                var save = list.SelectedSave;

                if (save != null)
                {
                    humanAgreeOnLoad(() =>
                    {
                        Log.Debug($"Loading game save '{save.SaveName}'.");
                        GameController.CreateNew(save.Copy(), loadStatsMap: true);
                    }, "Are you sure you want to load this save? Unsaved progress will be lost!");
                }
            }

            Add(new Button("Load", "wooden", loadAction)
            {
                Position = new CPos(0, 6144, 0)
            });

            void deleteAction()
            {
                var save = list.SelectedSave;

                if (save != null)
                {
                    humanAgreeOnDelete(() =>
                    {
                        GameSaveManager.Delete(save);
                        game.RefreshSaveGameScreens();
                        game.ShowScreen(ScreenType.LOADGAME);
                        Log.Debug($"Deleted game save '{save.SaveName}'.");
                    }, "Are you sure you want to delete this save?");
                }
            }

            Add(new Button("Delete", "wooden", deleteAction)
            {
                Position = new CPos(-4096, 6144, 0)
            });

            Add(list);
        }