Beispiel #1
0
        public void initMainContainer()
        {
            VList vlSaves = new VList();

            vlSaves.PercentWidth = vlSaves.PercentHeight = 100;

            VPane vpMain = new VPane(vlSaves, inputInfoPane);

            vpMain.PercentWidth  = 50;
            vpMain.PercentHeight = 100;
            vpMain.Color         = Color.Black;
            vpMain.Alpha         = 0.5f;

            if (GameManager.SaveStates.Count < MAX_SAVES)
            {
                vlSaves.add(tiNewGame);
            }

            int i = 0;

            GameManager.SaveStates.Sort((s1, s2) => - DateTime.Compare(s1.SavedDate, s2.SavedDate));
            GameManager.SaveStates.ForEach(saveState => {
                TextItem saveInfo       = new TextItem("", "fonts/menu_font1");
                TextItem saveDetail     = new TextItem("", "fonts/menu_font2");
                ImageItem saveThumbnail = new ImageItem("images/world/entities/npcs/neutral/kevin_sheet", new Rectangle(0, 32, 16, 16));
                VPane textPane          = new VPane(saveInfo, saveDetail);
                HPane saveEntry         = new HPane(saveThumbnail, textPane);
                saveEntry.PercentWidth  = 100;
                saveEntry.Color         = i % 2 == 0 ? Color.Black : Color.Gray;
                saveEntry.Alpha         = 0.3f;
                textPane.PercentWidth   = 70;

                saveDetail.SecondaryColor    = Color.Yellow;
                saveInfo.SecondaryColor      = Color.Yellow;
                saveThumbnail.SecondaryColor = Color.White;
                saveThumbnail.DefaultScale   = 4;
                saveThumbnail.MillisPerScale = 128;

                saveInfo.Text   = "" + saveState.SavedDate;
                saveDetail.Text = "Created at: "
                                  + saveState.CreationDate + ", Total Playtime: "
                                  + saveState.Playtime;

                saveInfos.Add(saveInfo);
                saveDetails.Add(saveDetail);
                saveThumbnails.Add(saveThumbnail);
                vlSaves.add(saveEntry);
                ++i;
            });

            vlSaves.SelectedEvent += (sender, args) => {
                if (!(args.SelectedItem is Container))
                {
                    return;
                }
                int selected = args.SelectedIndex - (vlSaves.Children.Contains(tiNewGame) ? 1 : 0);
                saveInfos[selected].IsSelected      = true;
                saveDetails[selected].IsSelected    = true;
                saveThumbnails[selected].IsSelected = true;
            };

            vlSaves.DeselectedEvent += (sender, args) => {
                if (!(args.SelectedItem is Container))
                {
                    return;
                }
                int selected = args.SelectedIndex - (vlSaves.Children.Contains(tiNewGame) ? 1 : 0);
                saveInfos[selected].IsSelected      = false;
                saveDetails[selected].IsSelected    = false;
                saveThumbnails[selected].IsSelected = false;
            };

            vlSaves.ActionKeys.Add(deleteKey);
            vlSaves.ActionButtons.Add(deleteButton);

            vlSaves.ActionEvent += (sender, args) => {
                if (Keyboard.GetState().IsKeyDown(deleteKey) ||
                    GamePad.GetState(0).IsButtonDown(deleteButton))
                {
                    if (args.SelectedItem is Container)
                    {
                        ScreenManager.AddScreen(new ConfirmDialog(ParentScreen, answer => {
                            if (answer == 0 || answer == 2)
                            {
                                if (answer == 0)
                                {
                                    GameManager.SaveStates.RemoveAt(args.SelectedIndex - (vlSaves.Children.Contains(tiNewGame) ? 1 : 0));
                                    ScreenManager.AddScreen(new SaveMenuScreen(ParentScreen), null);
                                }

                                Alpha = 0;
                                ExitScreen();
                            }
                        },

                                                                  "Do you really want to delete this Savegame?",
                                                                  "This action cannot be undone!"),
                                                null);
                    }

                    return;
                }

                GameManager.ActiveSave = (args.SelectedItem is TextItem) ? new SaveState()
                    : GameManager.SaveStates[args.SelectedIndex - (vlSaves.Children.Contains(tiNewGame) ? 1 : 0)];

                ExitScreen();
                ParentScreen.ExitScreen();
                ((Besmash)ScreenManager.Game).loadSave();
                ScreenManager.AddScreen(new GameplayScreen(ParentScreen), null);
            };

            vlSaves.CancelEvent += (sender, args) => {
                Alpha = 0;
                ExitScreen();
            };

            vlSaves.select(0);
            vlSaves.IsFocused = true;
            MainContainer.add(vpMain);
        }