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; } }