/// <summary> /// The constructor is private: loading screens should /// be activated via the static Load method instead. /// </summary> private LoadingScreen(ScreenManager screenManager, bool loadingIsSlow, GameScreen[] screensToLoad) { this.loadingIsSlow = loadingIsSlow; this.screensToLoad = screensToLoad; TransitionOnTime = TimeSpan.FromSeconds(0.5); }
public void AddScreen(GameScreen screen, InputManager inputManager, float alpha) { transition = true; newScreen = screen; fade.IsActive = true; fade.Alpha = alpha; fade.Increase = true; fade.ActivateValue = 1.0f; this.inputManager = inputManager; }
public PopupScreen(Game game, Character character) { cursor = (Cursor)game.Services.GetService(typeof(Cursor)); playerManager = (PlayerManager)game.Services.GetService(typeof(PlayerManager)); screenManager = (ScreenManager)game.Services.GetService(typeof(ScreenManager)); map = (BattleMap)game.Services.GetService(typeof(BattleMap)); gameStateManager = (GameStateManager)game.Services.GetService(typeof(GameStateManager)); selectedChar = character; selectScreen = new SelectScreen(game, character); screenManager.AddScreen(selectScreen, null); const string usageText = "A: Move" + "\nX: Attack" + "\nStart: End Turn" + "\nB: Cancel"; this.message = message + usageText; if (selectedChar == null) { this.message = "Start: End Turn" + "\nB: Cancel"; } else if (selectedChar.CharType == "champion") { this.message += "\nY: Buy Mercenary"; } IsPopup = true; TransitionOnTime = TimeSpan.FromSeconds(0.2); TransitionOffTime = TimeSpan.FromSeconds(0.2); menuMove = new InputAction( new Buttons[] { Buttons.A }, new Keys[] { Keys.A }, true); menuAttack = new InputAction( new Buttons[] { Buttons.X, }, new Keys[] { Keys.X }, true); menuCancel = new InputAction( new Buttons[] { Buttons.B, }, new Keys[] { Keys.B }, true); menuEndTurn = new InputAction( new Buttons[] { Buttons.Start, }, new Keys[] { Keys.Enter }, true); menuBuy = new InputAction( new Buttons[] { Buttons.Y, }, new Keys[] { Keys.Y }, true); }
/// <summary> /// Draws the button /// </summary> /// <param name="screen">The screen drawing the button</param> public void Draw(GameScreen screen) { // Grab some common items from the ScreenManager SpriteBatch spriteBatch = screen.ScreenManager.SpriteBatch; SpriteFont font = screen.ScreenManager.Font; Texture2D blank = screen.ScreenManager.BlankTexture; // Compute the button's rectangle Rectangle r = new Rectangle( (int)Position.X, (int)Position.Y, (int)Size.X, (int)Size.Y); // Fill the button spriteBatch.Draw(blank, r, FillColor * Alpha); // Draw the border spriteBatch.Draw( blank, new Rectangle(r.Left, r.Top, r.Width, BorderThickness), BorderColor * Alpha); spriteBatch.Draw( blank, new Rectangle(r.Left, r.Top, BorderThickness, r.Height), BorderColor * Alpha); spriteBatch.Draw( blank, new Rectangle(r.Right - BorderThickness, r.Top, BorderThickness, r.Height), BorderColor * Alpha); spriteBatch.Draw( blank, new Rectangle(r.Left, r.Bottom - BorderThickness, r.Width, BorderThickness), BorderColor * Alpha); // Draw the text centered in the button Vector2 textSize = font.MeasureString(Text); Vector2 textPosition = new Vector2(r.Center.X, r.Center.Y) - textSize / 2f; textPosition.X = (int)textPosition.X; textPosition.Y = (int)textPosition.Y; spriteBatch.DrawString(font, Text, textPosition, TextColor * Alpha); }
/// <summary> /// Removes a screen from the screen manager. You should normally /// use GameScreen.ExitScreen instead of calling this directly, so /// the screen can gradually transition off rather than just being /// instantly removed. /// </summary> public void RemoveScreen(GameScreen screen) { // If we have a graphics device, tell the screen to unload content. if (isInitialized) { screen.Unload(); } screens.Remove(screen); tempScreensList.Remove(screen); }
/// <summary> /// Adds a new screen to the screen manager. /// </summary> public void AddScreen(GameScreen screen, PlayerIndex? controllingPlayer) { screen.ControllingPlayer = controllingPlayer; screen.ScreenManager = this; screen.IsExiting = false; // If we have a graphics device, tell the screen to load content. if (isInitialized) { screen.Activate(false); } screens.Add(screen); }
public void Initialize() { currentScreen = new GameplayScreen(); fade = new FadeAnimation(); inputManager = new InputManager(); }
private void Transition(GameTime gameTime) { fade.Update(gameTime, ref animation); if (fade.Alpha == 1.0f && fade.Timer.TotalSeconds == 1.0f) { screenStack.Push(newScreen); currentScreen.UnloadContent(); currentScreen = newScreen; currentScreen.LoadContent(content, this.inputManager); } else if (fade.Alpha == 0.0f) { transition = false; fade.IsActive = false; } }