public void Reset(GameEngine gameEngine, MainCharacter mainCharacter, ContentManager content) { content.Unload(); MainCharacter = mainCharacter; Content = content; Arial = content.Load <SpriteFont>("Fonts/Arial"); // Initialize buttons StartButtonImg = Content.Load <Texture2D>("start"); ExitButtonImg = Content.Load <Texture2D>("exit"); LoadingTxt = Content.Load <Texture2D>("loading"); float StartX = (Game1.GetWindowSize().X / 2) - (StartButtonImg.Width / 2); float StartY = Game1.GetWindowSize().Y / 3; float ExitX = (Game1.GetWindowSize().X / 2) - (ExitButtonImg.Width / 2); float ExitY = 2 * Game1.GetWindowSize().Y / 3; float LoadingX = (Game1.GetWindowSize().X / 2) - (LoadingTxt.Width / 2); float LoadingY = (Game1.GetWindowSize().Y / 2) - (LoadingTxt.Height / 2); StartButton = new ClickableTexture(StartButtonImg, new Vector2(StartX, StartY)); ExitButton = new ClickableTexture(ExitButtonImg, new Vector2(ExitX, ExitY)); LoadingTxtPos = new Vector2(LoadingX, LoadingY); // important to reset these components to null when the manager is reloaded KeyboardInputMenu = null; GState = StartupState.StartMenu; MouseState = Mouse.GetState(); PrevMouseState = MouseState; }
/* MouseClick Handler for Start Menu */ private void MouseClicked(int x, int y) { Rectangle mouseClickRect = new Rectangle(x, y, 10, 10); switch (GState) { case StartupState.StartMenu: bool ClickedPlay = StartButton.Rect.Contains(mouseClickRect); if (ClickedPlay && MainCharacter.Name == null) { GState = StartupState.EnterName; // We don't want this long term, just to test KeyboardInputMenu string Query = "Hi, what's your name?"; KeyboardInputMenu = new KeyboardInputMenu(Query, Content, Arial); } else if (ClickedPlay) { GState = StartupState.Loading; IsLoading = false; } else if (ExitButton.Rect.Contains(mouseClickRect)) { Game1.QuitGame(); } break; case StartupState.EnterName: if (KeyboardInputMenu.IsConfirming(mouseClickRect)) { GState = StartupState.Loading; MainCharacter.Name = KeyboardInputMenu.GetText(); } if (KeyboardInputMenu.IsCancelling(mouseClickRect)) { GState = StartupState.StartMenu; KeyboardInputMenu = null; } break; default: break; } }