コード例 #1
0
        public void DoAction(Screen screen, UIAction menuAction, UI ui)
        {
            switch (menuAction.Action)
            {
            case Toolbox.UIAction.MainMenu_NewGame:
                if (!Screens.ContainsKey(Toolbox.ScreenType.GameMap))
                {
                    Screens.Add(Toolbox.ScreenType.GameMap, new GameMapScreen());
                }
                ToT.State = Toolbox.GameState.GameMap;
                Screens[Toolbox.ScreenType.GameMap].LoadAssets();
                ToT.PlayerCamera.SetFocalPoint(Vector2.Zero + ToT.Settings.TileSize / 2);
                break;

            case Toolbox.UIAction.MainMenu:
                ToT.State = Toolbox.GameState.MainMenu;
                ToT.PlayerCamera.SetFocalPoint(Vector2.Zero + ToT.Settings.Resolution / 2);
                break;

            case Toolbox.UIAction.MainMenu_LoadGame:
                if (!Screens.ContainsKey(Toolbox.ScreenType.LoadGame))
                {
                    Screens.Add(Toolbox.ScreenType.LoadGame, new LoadGameScreen());
                }
                Screens[Toolbox.ScreenType.LoadGame].LoadAssets();
                ToT.State = Toolbox.GameState.LoadMenu;
                ToT.PlayerCamera.SetFocalPoint(Vector2.Zero + ToT.Settings.Resolution / 2);
                break;

            case Toolbox.UIAction.GameMap_LoadGame:
                if (!Screens.ContainsKey(Toolbox.ScreenType.GameMap))
                {
                    Screens.Add(Toolbox.ScreenType.GameMap, new GameMapScreen(menuAction.ActionParam));
                }
                ToT.State = Toolbox.GameState.GameMap;
                Screens[Toolbox.ScreenType.GameMap].LoadAssets();
                ToT.PlayerCamera.SetFocalPoint((((GameMapScreen)Screens[Toolbox.ScreenType.GameMap]).GameMap.player.TileIndex * ToT.Settings.TileSize) + ToT.Settings.TileSize / 2);
                break;

            case Toolbox.UIAction.MainMenu_Settings:

                break;

            case Toolbox.UIAction.MainMenu_Exit:
                ToT.UIAction = menuAction;
                break;

            case Toolbox.UIAction.GameMap_Exit:
                ((GameMapScreen)screen).Save();
                ToT.UIAction = menuAction;
                break;

            case Toolbox.UIAction.GameMap_MainMenu:
                ((GameMapScreen)screen).Save();
                Screens.Remove(Toolbox.ScreenType.GameMap);
                ToT.State = Toolbox.GameState.MainMenu;
                ToT.PlayerCamera.SetFocalPoint(Vector2.Zero + ToT.Settings.Resolution / 2);
                break;

            case Toolbox.UIAction.GameMap_SaveGame:
                Screens[Toolbox.ScreenType.GameMap].Save();
                break;

            case Toolbox.UIAction.Toggle_UII:
                string[] split = menuAction.ActionParam.Split(',');
                foreach (UIItem uii in ui.uiItems)
                {
                    if (split.Contains(uii.Name))
                    {
                        uii.Visible = !uii.Visible;
                    }
                }
                ui.RefreshUISize();

                if (ui.Position.X + ui.Rectangle.Width > ToT.Settings.Resolution.X)
                {
                    ui.Position = new Vector2(ToT.Settings.Resolution.X - (float)ui.Rectangle.Width, ui.Position.Y);
                }
                if (ui.Position.Y + ui.Rectangle.Height > ToT.Settings.Resolution.Y)
                {
                    ui.Position = new Vector2(ui.Position.X, ToT.Settings.Resolution.Y - (float)ui.Rectangle.Height);
                }

                if (ui.Position.X < 0f)
                {
                    ui.Position = new Vector2(0f, ui.Position.Y);
                }
                if (ui.Position.Y < 0f)
                {
                    ui.Position = new Vector2(ui.Position.X, 0f);
                }
                ui.RefreshUISize();
                break;

            case Toolbox.UIAction.GameMap_Adventure:
                if (!Screens.ContainsKey(Toolbox.ScreenType.GameLevel))
                {
                    Screens.Add(Toolbox.ScreenType.GameLevel, new GameLevelScreen());
                }
                ToT.State = Toolbox.GameState.GameLevel;
                Screens[Toolbox.ScreenType.GameLevel].LoadAssets();
                ((GameMapScreen)ToT.screenManager.Screens[Toolbox.ScreenType.GameMap]).GameMap.player.LevelMoveTo(
                    Toolbox.Orientation.South,
                    ((GameMapScreen)ToT.screenManager.Screens[Toolbox.ScreenType.GameMap]).GameMap.Map[((GameMapScreen)ToT.screenManager.Screens[Toolbox.ScreenType.GameMap]).GameMap.player.TileIndex].Level.StartPosition * ToT.Settings.LevelTileSize
                    );
                ToT.PlayerCamera.SetFocalPoint(
                    ((GameMapScreen)ToT.screenManager.Screens[Toolbox.ScreenType.GameMap]).GameMap.player.LevelPosition
                    );
                break;

            case Toolbox.UIAction.GameLevel_GameMap:
                Screens.Remove(Toolbox.ScreenType.GameLevel);
                ToT.State = Toolbox.GameState.GameMap;
                ToT.PlayerCamera.SetFocalPoint
                (
                    (((GameMapScreen)Screens[Toolbox.ScreenType.GameMap]).GameMap.player.TileIndex * ToT.Settings.TileSize) +
                    ToT.Settings.TileSize / 2
                );
                break;
            }
        }