/// <summary> /// Initializes a new instance of the <see cref="LevelManager"/> class. /// </summary> /// <param name="gameDisplayResolution">The resolution the game is set to render at.</param> /// <param name="frameTime">The frame time set for the game.</param> public LevelManager(Vector2 gameDisplayResolution, float frameTime) { this.startText = new RenderableText(); this.Complete = false; this.physicsWorld = null; this.gameDisplayResolution = gameDisplayResolution; this.frameTime = frameTime; this.physicsWorld = null; this.spriteBatch = null; this.floorSprite = new Sprite(); this.contentManager = null; this.levelLoader = null; this.floorEdges = new List <Body>(); this.visualFloorEdges = new List <VisualEdge>(); this.platforms = new List <Platform>(); this.interactiveEntities = new List <InteractiveEntity>(); this.stickman = null; this.exit = null; this.scrollingDeath = null; this.mineCart = null; this.cartSwitch = null; this.scrollStartTimer = 0.0f; this.background = new Background(this.gameDisplayResolution, 0.8f); this.maxScore = 0.0f; }
/// <summary> /// Draws the level and any entities it contains. /// </summary> public void Draw() { this.background.Draw(); foreach (Platform platform in this.platforms) { platform.Draw(); } SceneryRenderer.DrawTerrain(this.spriteBatch, this.rockyTerrain, this.visualFloorEdges, this.gameDisplayResolution.Y * 1.5f); foreach (InteractiveEntity entity in this.interactiveEntities) { entity.Draw(); } this.exit.Draw(); this.stickman.Draw(); if (this.mineCart != null) { this.mineCart.Draw(); this.cartSwitch.Draw(); } if (!this.scrollingDeath.Active) { RenderableText.Draw(this.startText, this.gameDisplayResolution / 2.0f, 0.0f, Color.Black); } }
/// <summary> /// Initializes a new instance of the <see cref="MenuButton"/> class. /// </summary> /// <param name="relativePosition">The centre position of the menu item, relative to it's owner/parent.</param> /// <param name="tile">The button's background sprite.</param> /// <param name="icon">The icon to display on the button.</param> /// <param name="text">The text to display on the button.</param> /// <param name="name">The name of the button.</param> public MenuButton(Vector2 relativePosition, Sprite tile, Sprite icon, RenderableText text, string name) : base(relativePosition, name, new Vector2(tile.Width, tile.Height)) { this.textIcon = null; this.tile = new MenuImage(Vector2.Zero, tile); this.icon = new MenuImage(Vector2.Zero, icon); Vector2 relativeTextPosition = new Vector2(0.0f, tile.Height * 0.36f); this.text = new MenuText(relativeTextPosition, text); }
/// <summary> /// Initializes a new instance of the <see cref="MenuButton"/> class. /// </summary> /// <param name="relativePosition">The centre position of the menu item, relative to it's owner/parent.</param> /// <param name="tile">The button's background sprite.</param> /// <param name="icon">The icon to display on the button.</param> /// <param name="textIcon">The text to display at the centre of the button.</param> /// <param name="text">The text to display on the button.</param> /// <param name="name">The name of the button.</param> public MenuButton(Vector2 relativePosition, Sprite tile, Sprite icon, RenderableText textIcon, RenderableText text, string name) : base(relativePosition, name, new Vector2(tile.Width, tile.Height)) { this.textIcon = new MenuText(Vector2.Zero, textIcon); this.tile = new MenuImage(Vector2.Zero, tile); this.icon = new MenuImage(Vector2.Zero, icon); Vector2 relativeTextPosition = new Vector2(0.0f, tile.Height * 0.36f); this.text = new MenuText(relativeTextPosition, text); }
/// <summary> /// Initializes a new instance of the <see cref="NotificationManager"/> class. /// </summary> /// <param name="contentManager">The content manager to use for loading assets.</param> /// <param name="spriteBatch">The sprite batch used to render game sprites.</param> /// <param name="displayDimensions">The size of the game display area.</param> private NotificationManager(ContentManager contentManager, SpriteBatch spriteBatch, Vector2 displayDimensions) { this.notificationQueue = new Queue<Notification>(); this.notificationFactory = new NotificationFactory(contentManager, spriteBatch, displayDimensions); this.closeInformation = new RenderableText(); this.closeInformation.InitializeAndLoad(spriteBatch, contentManager, ContentLocations.SegoeUIFont, NotificationStrings.CloseNotification); this.closeInformation.Colour = Color.Gray; this.textPosition = new Vector2(displayDimensions.X / 2.0f, displayDimensions.Y / 8.0f); this.notificationSettings = NotificationSettings.Load(); this.delayTimer = NotificationManager.DelayTime; }
/// <summary> /// Draws the text menu item. /// </summary> /// <param name="parentPosition">The position of the menu item's parent/owner.</param> /// <param name="grayedOut">Whether the item should be grayed out or not.</param> public override void Draw(Vector2 parentPosition, bool grayedOut = false) { if (grayedOut) { RenderableText.Draw(this.text, parentPosition + this.RelativePosition, 0.0f, new Color(30, 30, 30)); } else { RenderableText.Draw(this.text, parentPosition + this.RelativePosition, 0.0f); } }
/// <summary> /// Draws the currently active notification. /// </summary> public void Draw() { lock (NotificationManager.mutex) { if (this.notificationQueue.Count > 0 && this.delayTimer >= NotificationManager.DelayTime) { this.notificationQueue.Peek().Draw(); RenderableText.Draw(this.closeInformation, this.textPosition, 0.0f); } } }
/// <summary> /// Initializes a new instance of the <see cref="NotificationManager"/> class. /// </summary> /// <param name="contentManager">The content manager to use for loading assets.</param> /// <param name="spriteBatch">The sprite batch used to render game sprites.</param> /// <param name="displayDimensions">The size of the game display area.</param> private NotificationManager(ContentManager contentManager, SpriteBatch spriteBatch, Vector2 displayDimensions) { this.notificationQueue = new Queue <Notification>(); this.notificationFactory = new NotificationFactory(contentManager, spriteBatch, displayDimensions); this.closeInformation = new RenderableText(); this.closeInformation.InitializeAndLoad(spriteBatch, contentManager, ContentLocations.SegoeUIFont, NotificationStrings.CloseNotification); this.closeInformation.Colour = Color.Gray; this.textPosition = new Vector2(displayDimensions.X / 2.0f, displayDimensions.Y / 8.0f); this.notificationSettings = NotificationSettings.Load(); this.delayTimer = NotificationManager.DelayTime; }
/// <summary> /// Draws the notification to the screen. /// </summary> public void Draw() { if (this.background != null) { Sprite.Draw(this.background, this.centrePosition, 0.0f); } if (this.image != null) { AnimatedSprite.Draw(this.image, this.imagePosition, 0.0f); } if (this.textLines != null) { Vector2 offset = Vector2.Zero; for (int count = 0; count < this.textLines.Count; count++) { offset.Y = this.textLines[count].Height * 1.1f * count; RenderableText.Draw(this.textLines[count], this.textPosition + offset, 0.0f); } } }
/// <summary> /// Creates a level complete menu. /// </summary> /// <param name="contentManager">The content manager to use to load resources.</param> /// <param name="spriteBatch">The sprite batch to attach to menu items.</param> /// <param name="position">The position of the menu.</param> /// <returns>The new menu created.</returns> public static Menu CreateLevelCompleteMenu(ContentManager contentManager, SpriteBatch spriteBatch, Vector2 position) { Menu levelCompleteMenu = new Menu(position, 1, 3); MenuButton button = null; MenuText text = null; Sprite largeButtonTile = new Sprite(); largeButtonTile.InitializeAndLoad(spriteBatch, contentManager, ContentLocations.LargeButtonTile); Vector2 relativePos = Vector2.Zero; float tileSpacing = 32.0f; relativePos = new Vector2(-largeButtonTile.Width - tileSpacing, largeButtonTile.Height * 0.75f); Sprite largePlayIcon = new Sprite(); largePlayIcon.InitializeAndLoad(spriteBatch, contentManager, ContentLocations.LargePlayIcon); RenderableText continueText = new RenderableText(); continueText.InitializeAndLoad(spriteBatch, contentManager, ContentLocations.SegoeUIFont, MenuConstants.ContinueButtonName.ToLowerInvariant()); button = new MenuButton(relativePos, largeButtonTile, largePlayIcon, continueText, MenuConstants.ContinueButtonName); levelCompleteMenu.AddItem(button); relativePos.X = 0.0f; Sprite largeRetryIcon = new Sprite(); largeRetryIcon.InitializeAndLoad(spriteBatch, contentManager, ContentLocations.LargeRetryIcon); RenderableText retryText = new RenderableText(); retryText.InitializeAndLoad(spriteBatch, contentManager, ContentLocations.SegoeUIFont, MenuConstants.RetryButtonName.ToLowerInvariant()); button = new MenuButton(relativePos, largeButtonTile, largeRetryIcon, retryText, MenuConstants.RetryButtonName); levelCompleteMenu.AddItem(button); relativePos.X = largeButtonTile.Width + tileSpacing; Sprite largeExitIcon = new Sprite(); largeExitIcon.InitializeAndLoad(spriteBatch, contentManager, ContentLocations.LargeExitIcon); RenderableText exitText = new RenderableText(); exitText.InitializeAndLoad(spriteBatch, contentManager, ContentLocations.SegoeUIFont, MenuConstants.ExitButtonName.ToLowerInvariant()); button = new MenuButton(relativePos, largeButtonTile, largeExitIcon, exitText, MenuConstants.ExitButtonName); levelCompleteMenu.AddItem(button); relativePos = new Vector2(-largeButtonTile.Width - tileSpacing, -largeButtonTile.Height * 0.75f); for (int row = 0; row < 2; row++) { for (int col = 0; col < 4; col++) { largeButtonTile = new Sprite(); largeButtonTile.InitializeAndLoad(spriteBatch, contentManager, ContentLocations.LargeButtonTile); MenuImage background = new MenuImage(relativePos, largeButtonTile); levelCompleteMenu.AddItem(background); relativePos.X += largeButtonTile.Width * 0.745f; } relativePos.Y += largeButtonTile.Height * 0.375f; relativePos.X = -largeButtonTile.Width - tileSpacing; } relativePos = new Vector2(0.0f, -largeButtonTile.Height * 1.1f); RenderableText levelComplete = new RenderableText(); levelComplete.InitializeAndLoad(spriteBatch, contentManager, ContentLocations.SegoeUIFontMedium, MenuConstants.LevelCompleteText); text = new MenuText(relativePos, levelComplete); levelCompleteMenu.AddItem(text); relativePos += new Vector2(0.0f, levelComplete.Height * 1.25f); RenderableText highScoreText = new RenderableText(); highScoreText.InitializeAndLoad(spriteBatch, contentManager, ContentLocations.SegoeUIFont, MenuConstants.LevelCompleteText); text = new MenuText(relativePos, highScoreText, true); levelCompleteMenu.AddItem(text); relativePos += new Vector2(0.0f, levelComplete.Height * 1.5f); RenderableText scoreText = new RenderableText(); scoreText.InitializeAndLoad(spriteBatch, contentManager, ContentLocations.SegoeUIFontMedium, MenuConstants.ScoreText); text = new MenuText(relativePos, scoreText); levelCompleteMenu.AddItem(text); relativePos += new Vector2(0.0f, levelComplete.Height * 1.25f); RenderableText score = new RenderableText(); score.InitializeAndLoad(spriteBatch, contentManager, ContentLocations.SegoeUIFont, MenuConstants.ScoreDefaultText); text = new MenuText(relativePos, score, true); levelCompleteMenu.AddItem(text); relativePos += new Vector2(0.0f, levelComplete.Height * 1.5f); RenderableText ratingText = new RenderableText(); ratingText.InitializeAndLoad(spriteBatch, contentManager, ContentLocations.SegoeUIFontMedium, MenuConstants.RatingText); text = new MenuText(relativePos, ratingText); levelCompleteMenu.AddItem(text); relativePos += new Vector2(0.0f, levelComplete.Height * 1.25f); RenderableText rating = new RenderableText(); rating.InitializeAndLoad(spriteBatch, contentManager, ContentLocations.SegoeUIFont, MenuConstants.GetRating(0)); text = new MenuText(relativePos, rating, true); levelCompleteMenu.AddItem(text); return levelCompleteMenu; }
/// <summary> /// Creates a letter input menu. /// </summary> /// <param name="contentManager">The content manager to use to load resources.</param> /// <param name="spriteBatch">The sprite batch to attach to menu items.</param> /// <param name="position">The position of the menu.</param> /// <param name="firstLetter">The first letter to put in the menu. This should be MaxValue if creating the base character select menu.</param> /// <returns>The new menu created.</returns> public static Menu CreateLetterInputMenu(ContentManager contentManager, SpriteBatch spriteBatch, Vector2 position, char firstLetter) { int rows = 2; int columns = 3; float tileGap = 32.0f; Menu nameInutMenu = new Menu(position, rows, columns); Sprite buttonTile = new Sprite(); RenderableText textIcon = new RenderableText(); RenderableText text = new RenderableText(); buttonTile.InitializeAndLoad(spriteBatch, contentManager, ContentLocations.LargeButtonTile); Vector2 firstTileRelativePosition = new Vector2(-buttonTile.Width - tileGap, -0.5f * (buttonTile.Height + tileGap)); Vector2 currentTileOffset = Vector2.Zero; char letter = firstLetter; string label = string.Empty; for (int rowCount = 0; rowCount < rows; rowCount++) { currentTileOffset.Y = rowCount * (buttonTile.Height + tileGap); for (int colCount = 0; colCount < columns; colCount++) { if (firstLetter == char.MaxValue) { label = MenuFactory.GetCharacterSelectionLabel((rowCount * columns) + colCount); } else { if (letter == '{') { letter = '0'; } label = letter.ToString(); } currentTileOffset.X = colCount * (buttonTile.Width + tileGap); buttonTile = new Sprite(); buttonTile.InitializeAndLoad(spriteBatch, contentManager, ContentLocations.LargeButtonTile); textIcon = new RenderableText(); textIcon.InitializeAndLoad(spriteBatch, contentManager, ContentLocations.SegoeUIFontLarge, label.ToUpperInvariant()); text = new RenderableText(); text.InitializeAndLoad(spriteBatch, contentManager, ContentLocations.SegoeUIFont, label); text.Colour = Color.Black; MenuButton button = new MenuButton(firstTileRelativePosition + currentTileOffset, buttonTile, textIcon, text, label.ToUpperInvariant()); nameInutMenu.AddItem(button); letter += (char)1; } } return nameInutMenu; }
/// <summary> /// Creates a leaderboard type select menu. /// </summary> /// <param name="contentManager">The content manager to use to load resources.</param> /// <param name="spriteBatch">The sprite batch to attach to menu items.</param> /// <param name="position">The position of the menu.</param> /// <returns>The new menu created.</returns> public static Menu CreateLeaderboardTypeMenu(ContentManager contentManager, SpriteBatch spriteBatch, Vector2 position) { Menu leaderboardTypeMenu = new Menu(position, 1, 3); MenuButton button = null; RenderableText buttonText = null; Sprite largeButtonTile = new Sprite(); largeButtonTile.InitializeAndLoad(spriteBatch, contentManager, ContentLocations.LargeButtonTile); float tileOffset = 32.0f; Vector2 relativePos = new Vector2(-(largeButtonTile.Width + tileOffset), 0.0f); Sprite largeBackIcon = new Sprite(); largeBackIcon.InitializeAndLoad(spriteBatch, contentManager, ContentLocations.LargeBackIcon); buttonText = new RenderableText(); buttonText.InitializeAndLoad(spriteBatch, contentManager, ContentLocations.SegoeUIFont, MenuConstants.BackButtonName.ToLowerInvariant()); button = new MenuButton(relativePos, largeButtonTile, largeBackIcon, buttonText, MenuConstants.BackButtonName); leaderboardTypeMenu.AddItem(button); relativePos.X += largeButtonTile.Width + tileOffset; Sprite largeLocalIcon = new Sprite(); largeLocalIcon.InitializeAndLoad(spriteBatch, contentManager, ContentLocations.LargeLocalIcon); buttonText = new RenderableText(); buttonText.InitializeAndLoad(spriteBatch, contentManager, ContentLocations.SegoeUIFont, MenuConstants.LocalButtonName.ToLowerInvariant()); button = new MenuButton(relativePos, largeButtonTile, largeLocalIcon, buttonText, MenuConstants.LocalButtonName); leaderboardTypeMenu.AddItem(button); relativePos.X += largeButtonTile.Width + tileOffset; Sprite largeGlobalIcon = new Sprite(); largeGlobalIcon.InitializeAndLoad(spriteBatch, contentManager, ContentLocations.LargeGlobalIcon); buttonText = new RenderableText(); buttonText.InitializeAndLoad(spriteBatch, contentManager, ContentLocations.SegoeUIFont, MenuConstants.GlobalButtonName.ToLowerInvariant()); button = new MenuButton(relativePos, largeButtonTile, largeGlobalIcon, buttonText, MenuConstants.GlobalButtonName); leaderboardTypeMenu.AddItem(button); return leaderboardTypeMenu; }
/// <summary> /// Creates a leaderboard menu. /// </summary> /// <param name="contentManager">The content manager to use to load resources.</param> /// <param name="spriteBatch">The sprite batch to attach to menu items.</param> /// <param name="position">The position of the menu.</param> /// <returns>The new menu created.</returns> public static Menu CreateLeaderboardMenu(ContentManager contentManager, SpriteBatch spriteBatch, Vector2 position) { Menu leaderboardMenu = new Menu(position, 1, 1); MenuButton button = null; MenuText text = null; Sprite largeButtonTile = new Sprite(); largeButtonTile.InitializeAndLoad(spriteBatch, contentManager, ContentLocations.LargeButtonTile); Vector2 relativePos = Vector2.Zero; float tileOffset = 32.0f; relativePos = new Vector2((-largeButtonTile.Width - tileOffset) * 1.5f, (-largeButtonTile.Height - tileOffset) * 0.5f); Sprite largeBackIcon = new Sprite(); largeBackIcon.InitializeAndLoad(spriteBatch, contentManager, ContentLocations.LargeBackIcon); RenderableText backText = new RenderableText(); backText.InitializeAndLoad(spriteBatch, contentManager, ContentLocations.SegoeUIFont, MenuConstants.BackButtonName.ToLowerInvariant()); button = new MenuButton(relativePos, largeButtonTile, largeBackIcon, backText, MenuConstants.BackButtonName); leaderboardMenu.AddItem(button); relativePos = new Vector2((-largeButtonTile.Width) * 0.5f, (-largeButtonTile.Height - tileOffset) * 0.5f); for (int row = 0; row < 2; row++) { for (int col = 0; col < 2; col++) { largeButtonTile = new Sprite(); largeButtonTile.InitializeAndLoad(spriteBatch, contentManager, ContentLocations.LargeButtonTile); MenuImage background = new MenuImage(relativePos, largeButtonTile); leaderboardMenu.AddItem(background); relativePos.X += largeButtonTile.Width; } relativePos.Y += largeButtonTile.Height; relativePos.X = (-largeButtonTile.Width) * 0.5f; } relativePos = new Vector2(0.0f, -largeButtonTile.Height * 0.825f); for (int count = 0; count < 10; count++) { RenderableText placeHolderText = new RenderableText(); placeHolderText.InitializeAndLoad(spriteBatch, contentManager, ContentLocations.SegoeUIFontMedium, string.Empty); text = new MenuText(relativePos, placeHolderText, true); leaderboardMenu.AddItem(text); relativePos.Y += tileOffset * 1.5f; } return leaderboardMenu; }
/// <summary> /// Creates an editor overlay type menu object. /// </summary> /// <param name="contentManager">The content manager to use to load resources.</param> /// <param name="spriteBatch">The sprite batch to attach to menu items.</param> /// <param name="position">The position of the menu.</param> /// <returns>The new menu created.</returns> public static Menu CreateEditorTypeMenu(ContentManager contentManager, SpriteBatch spriteBatch, Vector2 position) { Menu editorMenu = new Menu(position, 2, 3); MenuButton button = null; Sprite largeButtonTile = new Sprite(); largeButtonTile.InitializeAndLoad(spriteBatch, contentManager, ContentLocations.LargeButtonTile); float gapBetweenTiles = 32.0f; Vector2 relativePos = Vector2.Zero; Sprite buttonIcon = null; RenderableText buttonText = null; // Floor relativePos = new Vector2(-largeButtonTile.Width - gapBetweenTiles, -0.5f * (largeButtonTile.Height + gapBetweenTiles)); buttonIcon = new Sprite(); buttonIcon.InitializeAndLoad(spriteBatch, contentManager, ContentLocations.LargeFloorIcon); buttonText = new RenderableText(); buttonText.InitializeAndLoad(spriteBatch, contentManager, ContentLocations.SegoeUIFont, MenuConstants.FloorButtonName.ToLowerInvariant()); button = new MenuButton(relativePos, largeButtonTile, buttonIcon, buttonText, MenuConstants.FloorButtonName); editorMenu.AddItem(button); // Platform relativePos.X += largeButtonTile.Width + gapBetweenTiles; buttonIcon = new Sprite(); buttonIcon.InitializeAndLoad(spriteBatch, contentManager, ContentLocations.LargePlatformIcon); buttonText = new RenderableText(); buttonText.InitializeAndLoad(spriteBatch, contentManager, ContentLocations.SegoeUIFont, MenuConstants.PlatformButtonName.ToLowerInvariant()); button = new MenuButton(relativePos, largeButtonTile, buttonIcon, buttonText, MenuConstants.PlatformButtonName); editorMenu.AddItem(button); // Main relativePos.X += largeButtonTile.Width + gapBetweenTiles; buttonIcon = new Sprite(); buttonIcon.InitializeAndLoad(spriteBatch, contentManager, ContentLocations.LargeMainTypeIcon); buttonText = new RenderableText(); buttonText.InitializeAndLoad(spriteBatch, contentManager, ContentLocations.SegoeUIFont, MenuConstants.MainTypeButtonName.ToLowerInvariant()); button = new MenuButton(relativePos, largeButtonTile, buttonIcon, buttonText, MenuConstants.MainTypeButtonName); editorMenu.AddItem(button); // Bonus relativePos = new Vector2(-largeButtonTile.Width - gapBetweenTiles, 0.5f * (largeButtonTile.Height + gapBetweenTiles)); buttonIcon = new Sprite(); buttonIcon.InitializeAndLoad(spriteBatch, contentManager, ContentLocations.LargeBonusIcon); buttonText = new RenderableText(); buttonText.InitializeAndLoad(spriteBatch, contentManager, ContentLocations.SegoeUIFont, MenuConstants.BonusButtonName.ToLowerInvariant()); button = new MenuButton(relativePos, largeButtonTile, buttonIcon, buttonText, MenuConstants.BonusButtonName); editorMenu.AddItem(button); // Obstacle relativePos.X += largeButtonTile.Width + gapBetweenTiles; buttonIcon = new Sprite(); buttonIcon.InitializeAndLoad(spriteBatch, contentManager, ContentLocations.LargeObstacleIcon); buttonText = new RenderableText(); buttonText.InitializeAndLoad(spriteBatch, contentManager, ContentLocations.SegoeUIFont, MenuConstants.ObstacleButtonName.ToLowerInvariant()); button = new MenuButton(relativePos, largeButtonTile, buttonIcon, buttonText, MenuConstants.ObstacleButtonName); editorMenu.AddItem(button); // Power up relativePos.X += largeButtonTile.Width + gapBetweenTiles; buttonIcon = new Sprite(); buttonIcon.InitializeAndLoad(spriteBatch, contentManager, ContentLocations.LargePowerUpIcon); buttonText = new RenderableText(); buttonText.InitializeAndLoad(spriteBatch, contentManager, ContentLocations.SegoeUIFont, MenuConstants.PowerUpButtonName.ToLowerInvariant()); button = new MenuButton(relativePos, largeButtonTile, buttonIcon, buttonText, MenuConstants.PowerUpButtonName); editorMenu.AddItem(button); return editorMenu; }
/// <summary> /// Creates an about menu. /// </summary> /// <param name="contentManager">The content manager to use to load resources.</param> /// <param name="spriteBatch">The sprite batch to attach to menu items.</param> /// <param name="position">The position of the menu.</param> /// <returns>The new menu created.</returns> public static Menu CreateAboutMenu(ContentManager contentManager, SpriteBatch spriteBatch, Vector2 position) { Menu aboutMenu = new Menu(position, 1, 1); MenuButton button = null; MenuText text = null; RenderableText creditsText = new RenderableText(); Sprite largeButtonTile = new Sprite(); largeButtonTile.InitializeAndLoad(spriteBatch, contentManager, ContentLocations.LargeButtonTile); Vector2 relativePos = Vector2.Zero; float tileOffset = 32.0f; relativePos = new Vector2((-largeButtonTile.Width - tileOffset) * 1.5f, (-largeButtonTile.Height - tileOffset) * 0.5f); Sprite largeBackIcon = new Sprite(); largeBackIcon.InitializeAndLoad(spriteBatch, contentManager, ContentLocations.LargeBackIcon); RenderableText backText = new RenderableText(); backText.InitializeAndLoad(spriteBatch, contentManager, ContentLocations.SegoeUIFont, MenuConstants.BackButtonName.ToLowerInvariant()); button = new MenuButton(relativePos, largeButtonTile, largeBackIcon, backText, MenuConstants.BackButtonName); aboutMenu.AddItem(button); relativePos = new Vector2((-largeButtonTile.Width) * 0.5f, (-largeButtonTile.Height - tileOffset) * 0.5f); for (int row = 0; row < 2; row++) { for (int col = 0; col < 2; col++) { largeButtonTile = new Sprite(); largeButtonTile.InitializeAndLoad(spriteBatch, contentManager, ContentLocations.LargeButtonTile); MenuImage background = new MenuImage(relativePos, largeButtonTile); aboutMenu.AddItem(background); relativePos.X += largeButtonTile.Width; } relativePos.Y += largeButtonTile.Height; relativePos.X = (-largeButtonTile.Width) * 0.5f; } relativePos = new Vector2(0.0f, -largeButtonTile.Height * 0.875f); float smallGap = tileOffset * 1.2f; float largeGap = tileOffset * 2.2f; creditsText = new RenderableText(); creditsText.InitializeAndLoad(spriteBatch, contentManager, ContentLocations.SegoeUIFontMedium, MenuConstants.DesignArtworkText); text = new MenuText(relativePos, creditsText, true); aboutMenu.AddItem(text); relativePos.Y += smallGap; creditsText = new RenderableText(); creditsText.InitializeAndLoad(spriteBatch, contentManager, ContentLocations.SegoeUIFontMedium, MenuConstants.ProgrammingSfxText); text = new MenuText(relativePos, creditsText, true); aboutMenu.AddItem(text); relativePos.Y += smallGap; creditsText = new RenderableText(); creditsText.InitializeAndLoad(spriteBatch, contentManager, ContentLocations.SegoeUIFontMedium, MenuConstants.KeithText); text = new MenuText(relativePos, creditsText, true); aboutMenu.AddItem(text); relativePos.Y += largeGap; creditsText = new RenderableText(); creditsText.InitializeAndLoad(spriteBatch, contentManager, ContentLocations.SegoeUIFontMedium, MenuConstants.MusicText); text = new MenuText(relativePos, creditsText, true); aboutMenu.AddItem(text); relativePos.Y += smallGap; creditsText = new RenderableText(); creditsText.InitializeAndLoad(spriteBatch, contentManager, ContentLocations.SegoeUIFontMedium, MenuConstants.MusicSourceText); text = new MenuText(relativePos, creditsText, true); aboutMenu.AddItem(text); relativePos.Y += largeGap; creditsText = new RenderableText(); creditsText.InitializeAndLoad(spriteBatch, contentManager, ContentLocations.SegoeUIFontMedium, MenuConstants.ModelText); text = new MenuText(relativePos, creditsText, true); aboutMenu.AddItem(text); relativePos.Y += smallGap; creditsText = new RenderableText(); creditsText.InitializeAndLoad(spriteBatch, contentManager, ContentLocations.SegoeUIFontMedium, MenuConstants.ModelSourceText); text = new MenuText(relativePos, creditsText, true); aboutMenu.AddItem(text); relativePos.Y += largeGap; creditsText = new RenderableText(); creditsText.InitializeAndLoad(spriteBatch, contentManager, ContentLocations.SegoeUIFontMedium, MenuConstants.ThanksText); text = new MenuText(relativePos, creditsText, true); aboutMenu.AddItem(text); relativePos.Y += smallGap; creditsText = new RenderableText(); creditsText.InitializeAndLoad(spriteBatch, contentManager, ContentLocations.SegoeUIFontMedium, MenuConstants.TestersText); text = new MenuText(relativePos, creditsText, true); aboutMenu.AddItem(text); relativePos.Y += smallGap; creditsText = new RenderableText(); creditsText.InitializeAndLoad(spriteBatch, contentManager, ContentLocations.SegoeUIFontMedium, MenuConstants.LecturersText); text = new MenuText(relativePos, creditsText, true); aboutMenu.AddItem(text); return aboutMenu; }
/// <summary> /// Creates a pause menu object. /// </summary> /// <param name="contentManager">The content manager to use to load resources.</param> /// <param name="spriteBatch">The sprite batch to attach to menu items.</param> /// <param name="position">The position of the menu.</param> /// <returns>The new menu created.</returns> public static Menu CreatePauseMenu(ContentManager contentManager, SpriteBatch spriteBatch, Vector2 position) { Menu pauseMenu = new Menu(position, 1, 3); MenuButton button = null; Sprite largeButtonTile = new Sprite(); largeButtonTile.InitializeAndLoad(spriteBatch, contentManager, ContentLocations.LargeButtonTile); float gapBetweenTiles = 32.0f; Vector2 relativePos = Vector2.Zero; Sprite buttonIcon = null; RenderableText buttonText = null; relativePos = new Vector2(-largeButtonTile.Width - gapBetweenTiles, 0.0f); // Restart relativePos.X += largeButtonTile.Width + gapBetweenTiles; buttonIcon = new Sprite(); buttonIcon.InitializeAndLoad(spriteBatch, contentManager, ContentLocations.LargeRetryIcon); buttonText = new RenderableText(); buttonText.InitializeAndLoad(spriteBatch, contentManager, ContentLocations.SegoeUIFont, MenuConstants.RetryButtonName.ToLowerInvariant()); button = new MenuButton(relativePos, largeButtonTile, buttonIcon, buttonText, MenuConstants.RetryButtonName); pauseMenu.AddItem(button); // Exit relativePos.X += largeButtonTile.Width + gapBetweenTiles; buttonIcon = new Sprite(); buttonIcon.InitializeAndLoad(spriteBatch, contentManager, ContentLocations.LargeExitIcon); buttonText = new RenderableText(); buttonText.InitializeAndLoad(spriteBatch, contentManager, ContentLocations.SegoeUIFont, MenuConstants.ExitButtonName.ToLowerInvariant()); button = new MenuButton(relativePos, largeButtonTile, buttonIcon, buttonText, MenuConstants.ExitButtonName); pauseMenu.AddItem(button); // Continue relativePos = new Vector2(-largeButtonTile.Width - gapBetweenTiles, 0.0f); buttonIcon = new Sprite(); buttonIcon.InitializeAndLoad(spriteBatch, contentManager, ContentLocations.LargePlayIcon); buttonText = new RenderableText(); buttonText.InitializeAndLoad(spriteBatch, contentManager, ContentLocations.SegoeUIFont, MenuConstants.ContinueButtonName.ToLowerInvariant()); button = new MenuButton(relativePos, largeButtonTile, buttonIcon, buttonText, MenuConstants.ContinueButtonName); pauseMenu.AddItem(button); return pauseMenu; }
/// <summary> /// Creates a name prompt menu. /// </summary> /// <param name="contentManager">The content manager to use to load resources.</param> /// <param name="spriteBatch">The sprite batch to attach to menu items.</param> /// <param name="position">The position of the menu.</param> /// <param name="playerName">The stored player's name.</param> /// <returns>The new menu created.</returns> public static Menu CreateNamePromptMenu(ContentManager contentManager, SpriteBatch spriteBatch, Vector2 position, string playerName) { Menu namePromptMenu = new Menu(position, 2, 3); MenuButton button = null; Sprite buttonTile = new Sprite(); RenderableText textIcon = new RenderableText(); RenderableText text = new RenderableText(); buttonTile.InitializeAndLoad(spriteBatch, contentManager, ContentLocations.MediumButtonTile); float tileGap = 16.0f; Vector2 relativePosition = new Vector2(-tileGap - buttonTile.Width, 0.0f); for (int count = 0; count < 3; count++) { buttonTile = new Sprite(); buttonTile.InitializeAndLoad(spriteBatch, contentManager, ContentLocations.MediumButtonTile); textIcon = new RenderableText(); textIcon.InitializeAndLoad(spriteBatch, contentManager, ContentLocations.SegoeUIFontLarge, playerName[count].ToString().ToUpperInvariant()); text = new RenderableText(); text.InitializeAndLoad(spriteBatch, contentManager, ContentLocations.SegoeUIFont, playerName[count].ToString().ToLowerInvariant()); text.Colour = Color.Black; button = new MenuButton(relativePosition, buttonTile, textIcon, text, count.ToString()); namePromptMenu.AddItem(button); relativePosition.X += tileGap + buttonTile.Width; } relativePosition = new Vector2(0.0f, buttonTile.Height + tileGap); Sprite largePlayIcon = new Sprite(); largePlayIcon.InitializeAndLoad(spriteBatch, contentManager, ContentLocations.MediumPlayIcon); RenderableText continueText = new RenderableText(); continueText.InitializeAndLoad(spriteBatch, contentManager, ContentLocations.SegoeUIFont, MenuConstants.DoneButtonName.ToLowerInvariant()); button = new MenuButton(relativePosition, buttonTile, largePlayIcon, continueText, MenuConstants.DoneButtonName); namePromptMenu.AddItem(button); relativePosition = new Vector2(-buttonTile.Width - tileGap, -buttonTile.Height - tileGap); float offset = (buttonTile.Width + tileGap) / 2.0f; for (int col = 0; col < 5; col++) { buttonTile = new Sprite(); buttonTile.InitializeAndLoad(spriteBatch, contentManager, ContentLocations.MediumButtonTile); MenuImage background = new MenuImage(relativePosition, buttonTile); namePromptMenu.AddItem(background); relativePosition.X += offset; } relativePosition = new Vector2(0.0f, -1.55f * (buttonTile.Height - tileGap)); RenderableText hello = new RenderableText(); hello.InitializeAndLoad(spriteBatch, contentManager, ContentLocations.SegoeUIFontMedium, MenuConstants.HelloText); MenuText helloText = new MenuText(relativePosition, hello); namePromptMenu.AddItem(helloText); RenderableText enterName = new RenderableText(); enterName.InitializeAndLoad(spriteBatch, contentManager, ContentLocations.SegoeUIFont, MenuConstants.EnterNameText); relativePosition.Y += enterName.Height * 1.2f; MenuText enterNameText = new MenuText(relativePosition, enterName); namePromptMenu.AddItem(enterNameText); relativePosition.Y += enterName.Height * 1.2f; RenderableText selectLetter = new RenderableText(); selectLetter.InitializeAndLoad(spriteBatch, contentManager, ContentLocations.SegoeUIFont, MenuConstants.SelectLetterText); MenuText selectLetterText = new MenuText(relativePosition, selectLetter); namePromptMenu.AddItem(selectLetterText); relativePosition.Y += enterName.Height * 1.2f; RenderableText pressDone = new RenderableText(); pressDone.InitializeAndLoad(spriteBatch, contentManager, ContentLocations.SegoeUIFont, MenuConstants.PressDoneText); MenuText pressDoneText = new MenuText(relativePosition, pressDone); namePromptMenu.AddItem(pressDoneText); return namePromptMenu; }
/// <summary> /// Creates a level select menu. /// </summary> /// <param name="contentManager">The content manager to use to load resources.</param> /// <param name="spriteBatch">The sprite batch to attach to menu items.</param> /// <param name="position">The position of the menu.</param> /// <param name="screenWidth">The width of the rendering window.</param> /// <param name="gameSettings">The game settings.</param> /// <returns>The new menu created.</returns> public static Menu CreateLevelSelectMenu(ContentManager contentManager, SpriteBatch spriteBatch, Vector2 position, float screenWidth, GameSettings gameSettings) { int pages = (GameSettings.TotalLevels + 1) / 8; pages += (GameSettings.TotalLevels + 1) % 8 == 0 ? 0 : 1; Menu levelSelectMenu = new Menu(position, 2, 4, pages, screenWidth); Sprite largeButtonTile = new Sprite(); largeButtonTile.InitializeAndLoad(spriteBatch, contentManager, ContentLocations.LargeButtonTile); float gapBetweenTiles = 32.0f; Vector2 firstTileRelativePos = new Vector2((-largeButtonTile.Width * 1.5f) + (-gapBetweenTiles * 1.5f), (-largeButtonTile.Height - gapBetweenTiles) * 0.5f); Vector2 tileOffset = new Vector2(largeButtonTile.Width + gapBetweenTiles, largeButtonTile.Height + gapBetweenTiles); float screenCount = 0.0f; int total = 0; int tilesPerScreen = 8; int columns = 4; int rowOffset = 0; int colOffset = 0; while (total < GameSettings.TotalLevels + 1) { MenuButton button = null; Vector2 relativePos = new Vector2(screenCount * screenWidth, 0.0f) + firstTileRelativePos + new Vector2(tileOffset.X * colOffset, tileOffset.Y * rowOffset); if (total == 0) { Sprite largeBackIcon = new Sprite(); largeBackIcon.InitializeAndLoad(spriteBatch, contentManager, ContentLocations.LargeBackIcon); RenderableText backText = new RenderableText(); backText.InitializeAndLoad(spriteBatch, contentManager, ContentLocations.SegoeUIFont, MenuConstants.BackButtonName.ToLowerInvariant()); button = new MenuButton(relativePos, largeButtonTile, largeBackIcon, backText, MenuConstants.BackButtonName); levelSelectMenu.AddItem(button); } else { RenderableText text = new RenderableText(); RenderableText largeText = new RenderableText(); string name = ConvertToWords.ConvertIntToWords(total); text.InitializeAndLoad(spriteBatch, contentManager, ContentLocations.SegoeUIFont, name); largeText.InitializeAndLoad(spriteBatch, contentManager, ContentLocations.SegoeUIFontLarge, total.ToString()); button = new MenuButton(relativePos, largeButtonTile, largeText, text, total.ToString()); levelSelectMenu.AddItem(button); } colOffset++; total++; if (total % tilesPerScreen == 0) { rowOffset = 0; colOffset = 0; screenCount++; } else if (total % columns == 0) { rowOffset++; colOffset = 0; } } levelSelectMenu.SelectablesActive = gameSettings.LevelsUnlocked + 1; return levelSelectMenu; }
/// <summary> /// Initializes a new instance of the <see cref="MenuText"/> class. /// </summary> /// <param name="relativePosition">The centre position of the menu item, relative to it's owner/parent.</param> /// <param name="text">The text object to associate with the menu item.</param> /// <param name="canChange">A value indicating whether the text is allowed to be changed or not.</param> public MenuText(Vector2 relativePosition, RenderableText text, bool canChange) : base(relativePosition) { this.IsChangeable = canChange; this.text = text; }
/// <summary> /// Initializes a new instance of the <see cref="MenuText"/> class. /// </summary> /// <param name="relativePosition">The centre position of the menu item, relative to it's owner/parent.</param> /// <param name="text">The text object to associate with the menu item.</param> public MenuText(Vector2 relativePosition, RenderableText text) : base(relativePosition) { this.IsChangeable = false; this.text = text; }
/// <summary> /// Creates a main menu object. /// </summary> /// <param name="contentManager">The content manager to use to load resources.</param> /// <param name="spriteBatch">The sprite batch to attach to menu items.</param> /// <param name="position">The position of the menu.</param> /// <returns>The new menu created.</returns> public static Menu CreateMainMenu(ContentManager contentManager, SpriteBatch spriteBatch, Vector2 position) { Menu mainMenu = new Menu(position, 2, 3); MenuButton button = null; Sprite largeButtonTile = new Sprite(); largeButtonTile.InitializeAndLoad(spriteBatch, contentManager, ContentLocations.LargeButtonTile); float gapBetweenTiles = 32.0f; Vector2 relativePos = Vector2.Zero; // Play relativePos = new Vector2(-largeButtonTile.Width - gapBetweenTiles, (-largeButtonTile.Height - gapBetweenTiles) * 0.5f); Sprite largePlayIcon = new Sprite(); largePlayIcon.InitializeAndLoad(spriteBatch, contentManager, ContentLocations.LargePlayIcon); RenderableText playGameText = new RenderableText(); playGameText.InitializeAndLoad(spriteBatch, contentManager, ContentLocations.SegoeUIFont, MenuConstants.PlayButtonName.ToLowerInvariant()); button = new MenuButton(relativePos, largeButtonTile, largePlayIcon, playGameText, MenuConstants.PlayButtonName); mainMenu.AddItem(button); // Options relativePos.X += largeButtonTile.Width + gapBetweenTiles; Sprite largeOptionsIcon = new Sprite(); largeOptionsIcon.InitializeAndLoad(spriteBatch, contentManager, ContentLocations.LargeOptionsIcon); RenderableText optionsText = new RenderableText(); optionsText.InitializeAndLoad(spriteBatch, contentManager, ContentLocations.SegoeUIFont, MenuConstants.OptionsButtonName.ToLowerInvariant()); button = new MenuButton(relativePos, largeButtonTile, largeOptionsIcon, optionsText, MenuConstants.OptionsButtonName); mainMenu.AddItem(button); // High scores relativePos.X += largeButtonTile.Width + gapBetweenTiles; Sprite largeLeaderboardIcon = new Sprite(); largeLeaderboardIcon.InitializeAndLoad(spriteBatch, contentManager, ContentLocations.LargeLeaderboardIcon); RenderableText leaderboardText = new RenderableText(); leaderboardText.InitializeAndLoad(spriteBatch, contentManager, ContentLocations.SegoeUIFont, MenuConstants.LeaderboardButtonName.ToLowerInvariant()); button = new MenuButton(relativePos, largeButtonTile, largeLeaderboardIcon, leaderboardText, MenuConstants.LeaderboardButtonName); mainMenu.AddItem(button); // Custom content relativePos = new Vector2(-largeButtonTile.Width - gapBetweenTiles, (largeButtonTile.Height + gapBetweenTiles) * 0.5f); Sprite largeCustomIcon = new Sprite(); largeCustomIcon.InitializeAndLoad(spriteBatch, contentManager, ContentLocations.LargeCustomIcon); RenderableText customText = new RenderableText(); customText.InitializeAndLoad(spriteBatch, contentManager, ContentLocations.SegoeUIFont, MenuConstants.CustomButtonName.ToLowerInvariant()); button = new MenuButton(relativePos, largeButtonTile, largeCustomIcon, customText, MenuConstants.CustomButtonName); mainMenu.AddItem(button); // Exit relativePos.X += largeButtonTile.Width + gapBetweenTiles; Sprite largeExitIcon = new Sprite(); largeExitIcon.InitializeAndLoad(spriteBatch, contentManager, ContentLocations.LargeExitIcon); RenderableText exitText = new RenderableText(); exitText.InitializeAndLoad(spriteBatch, contentManager, ContentLocations.SegoeUIFont, MenuConstants.ExitButtonName.ToLowerInvariant()); button = new MenuButton(relativePos, largeButtonTile, largeExitIcon, exitText, MenuConstants.ExitButtonName); mainMenu.AddItem(button); // About relativePos.X += largeButtonTile.Width + gapBetweenTiles; Sprite largeAboutIcon = new Sprite(); largeAboutIcon.InitializeAndLoad(spriteBatch, contentManager, ContentLocations.LargeAboutIcon); RenderableText aboutText = new RenderableText(); aboutText.InitializeAndLoad(spriteBatch, contentManager, ContentLocations.SegoeUIFont, MenuConstants.AboutButtonName.ToLowerInvariant()); button = new MenuButton(relativePos, largeButtonTile, largeAboutIcon, aboutText, MenuConstants.AboutButtonName); mainMenu.AddItem(button); return mainMenu; }
/// <summary> /// Creates a place holder for menu's which are yet to be implemented. /// </summary> /// <param name="contentManager">The content manager to use to load resources.</param> /// <param name="spriteBatch">The sprite batch to attach to menu items.</param> /// <param name="position">The position of the menu.</param> /// <returns>The new menu created.</returns> public static Menu CreatePlaceholderMenu(ContentManager contentManager, SpriteBatch spriteBatch, Vector2 position) { Menu placeHolderMenu = new Menu(position, 1, 1); MenuButton button = null; Sprite largeButtonTile = new Sprite(); largeButtonTile.InitializeAndLoad(spriteBatch, contentManager, ContentLocations.LargeButtonTile); Vector2 relativePos = Vector2.Zero; Sprite largeBackIcon = new Sprite(); largeBackIcon.InitializeAndLoad(spriteBatch, contentManager, ContentLocations.LargeBackIcon); RenderableText backText = new RenderableText(); backText.InitializeAndLoad(spriteBatch, contentManager, ContentLocations.SegoeUIFont, MenuConstants.BackButtonName.ToLowerInvariant()); button = new MenuButton(relativePos, largeButtonTile, largeBackIcon, backText, MenuConstants.BackButtonName); placeHolderMenu.AddItem(button); return placeHolderMenu; }
/// <summary> /// Creates an options menu. /// </summary> /// <param name="contentManager">The content manager to use to load resources.</param> /// <param name="spriteBatch">The sprite batch to attach to menu items.</param> /// <param name="position">The position of the menu.</param> /// <param name="settings">The game settings.</param> /// <returns>The new menu created.</returns> public static Menu CreateOptionsMenu(ContentManager contentManager, SpriteBatch spriteBatch, Vector2 position, GameSettings settings) { Menu optionsMenu = new Menu(position, 2, 3); MenuButton button = null; RenderableText buttonText = null; RenderableText buttonIconText = null; Sprite largeButtonTile = new Sprite(); largeButtonTile.InitializeAndLoad(spriteBatch, contentManager, ContentLocations.LargeButtonTile); float tileOffset = 32.0f; Vector2 relativePos = new Vector2(-(largeButtonTile.Width + tileOffset), -0.5f * (largeButtonTile.Height + tileOffset)); // Music toggle Sprite largeMusicIcon = new Sprite(); largeMusicIcon.InitializeAndLoad(spriteBatch, contentManager, ContentLocations.LargeMusicIcon); buttonIconText = new RenderableText(); buttonIconText.InitializeAndLoad(spriteBatch, contentManager, ContentLocations.SegoeUIFontLarge, settings.MusicEnabled ? " " : "X"); buttonText = new RenderableText(); buttonText.InitializeAndLoad(spriteBatch, contentManager, ContentLocations.SegoeUIFont, MenuConstants.MusicButtonName.ToLowerInvariant()); button = new MenuButton(relativePos, largeButtonTile, largeMusicIcon, buttonIconText, buttonText, MenuConstants.MusicButtonName); optionsMenu.AddItem(button); // SFX toggle relativePos.X += largeButtonTile.Width + tileOffset; Sprite largeSoundEffectsIcon = new Sprite(); largeSoundEffectsIcon.InitializeAndLoad(spriteBatch, contentManager, ContentLocations.LargeSoundEffectsIcon); buttonIconText = new RenderableText(); buttonIconText.InitializeAndLoad(spriteBatch, contentManager, ContentLocations.SegoeUIFontLarge, settings.SoundEffectsEnabled ? " " : "X"); buttonText = new RenderableText(); buttonText.InitializeAndLoad(spriteBatch, contentManager, ContentLocations.SegoeUIFont, MenuConstants.SoundEffectsButtonName.ToLowerInvariant()); button = new MenuButton(relativePos, largeButtonTile, largeSoundEffectsIcon, buttonIconText, buttonText, MenuConstants.SoundEffectsButtonName); optionsMenu.AddItem(button); // Upload toggle relativePos.X += largeButtonTile.Width + tileOffset; Sprite largeUploadIcon = new Sprite(); largeUploadIcon.InitializeAndLoad(spriteBatch, contentManager, ContentLocations.LargeGlobalIcon); buttonIconText = new RenderableText(); buttonIconText.InitializeAndLoad(spriteBatch, contentManager, ContentLocations.SegoeUIFontLarge, settings.UploadHighScores ? " " : "X"); buttonText = new RenderableText(); buttonText.InitializeAndLoad(spriteBatch, contentManager, ContentLocations.SegoeUIFont, MenuConstants.UploadButtonName.ToLowerInvariant()); button = new MenuButton(relativePos, largeButtonTile, largeUploadIcon, buttonIconText, buttonText, MenuConstants.UploadButtonName); optionsMenu.AddItem(button); // Reset Notifications relativePos = new Vector2(-(largeButtonTile.Width + tileOffset), 0.5f * (largeButtonTile.Height + tileOffset)); buttonIconText = new RenderableText(); buttonIconText.InitializeAndLoad(spriteBatch, contentManager, ContentLocations.SegoeUIFontLarge, "!"); buttonText = new RenderableText(); buttonText.InitializeAndLoad(spriteBatch, contentManager, ContentLocations.SegoeUIFont, MenuConstants.NotificationButtonName.ToLowerInvariant()); button = new MenuButton(relativePos, largeButtonTile, buttonIconText, buttonText, MenuConstants.NotificationButtonName); optionsMenu.AddItem(button); // Set Name relativePos.X += largeButtonTile.Width + tileOffset; buttonIconText = new RenderableText(); buttonIconText.InitializeAndLoad(spriteBatch, contentManager, ContentLocations.SegoeUIFontLarge, "A"); buttonText = new RenderableText(); buttonText.InitializeAndLoad(spriteBatch, contentManager, ContentLocations.SegoeUIFont, MenuConstants.NameButtonName.ToLowerInvariant()); button = new MenuButton(relativePos, largeButtonTile, buttonIconText, buttonText, MenuConstants.NameButtonName); optionsMenu.AddItem(button); // Done button relativePos.X += largeButtonTile.Width + tileOffset; Sprite largeDoneIcon = new Sprite(); largeDoneIcon.InitializeAndLoad(spriteBatch, contentManager, ContentLocations.LargePlayIcon); buttonText = new RenderableText(); buttonText.InitializeAndLoad(spriteBatch, contentManager, ContentLocations.SegoeUIFont, MenuConstants.DoneButtonName.ToLowerInvariant()); button = new MenuButton(relativePos, largeButtonTile, largeDoneIcon, buttonText, MenuConstants.DoneButtonName); optionsMenu.AddItem(button); return optionsMenu; }
/// <summary> /// Creates a custom content menu object. /// </summary> /// <param name="contentManager">The content manager to use to load resources.</param> /// <param name="spriteBatch">The sprite batch to attach to menu items.</param> /// <param name="position">The position of the menu.</param> /// <returns>The new menu created.</returns> public static Menu CreateCustomContentMenu(ContentManager contentManager, SpriteBatch spriteBatch, Vector2 position) { Menu customMenu = new Menu(position, 2, 2); MenuButton button = null; Sprite largeButtonTile = new Sprite(); largeButtonTile.InitializeAndLoad(spriteBatch, contentManager, ContentLocations.LargeButtonTile); float gapBetweenTiles = 32.0f; Vector2 relativePos = Vector2.Zero; RenderableText buttonText = null; Sprite buttonIcon = null; // Play relativePos = new Vector2(-0.5f * (largeButtonTile.Width + gapBetweenTiles), -0.5f * (largeButtonTile.Height + gapBetweenTiles)); buttonIcon = new Sprite(); buttonIcon.InitializeAndLoad(spriteBatch, contentManager, ContentLocations.LargePlayIcon); buttonText = new RenderableText(); buttonText.InitializeAndLoad(spriteBatch, contentManager, ContentLocations.SegoeUIFont, MenuConstants.PlayButtonName.ToLowerInvariant()); button = new MenuButton(relativePos, largeButtonTile, buttonIcon, buttonText, MenuConstants.PlayButtonName); customMenu.AddItem(button); // New relativePos.X += largeButtonTile.Width + gapBetweenTiles; buttonIcon = new Sprite(); buttonIcon.InitializeAndLoad(spriteBatch, contentManager, ContentLocations.LargeNewIcon); buttonText = new RenderableText(); buttonText.InitializeAndLoad(spriteBatch, contentManager, ContentLocations.SegoeUIFont, MenuConstants.NewButtonName.ToLowerInvariant()); button = new MenuButton(relativePos, largeButtonTile, buttonIcon, buttonText, MenuConstants.NewButtonName); customMenu.AddItem(button); // Edit relativePos = new Vector2(-0.5f * (largeButtonTile.Width + gapBetweenTiles), 0.5f * (largeButtonTile.Height + gapBetweenTiles)); buttonIcon = new Sprite(); buttonIcon.InitializeAndLoad(spriteBatch, contentManager, ContentLocations.LargeEditIcon); buttonText = new RenderableText(); buttonText.InitializeAndLoad(spriteBatch, contentManager, ContentLocations.SegoeUIFont, MenuConstants.EditButtonName.ToLowerInvariant()); button = new MenuButton(relativePos, largeButtonTile, buttonIcon, buttonText, MenuConstants.EditButtonName); customMenu.AddItem(button); // Edit relativePos.X += largeButtonTile.Width + gapBetweenTiles; buttonIcon = new Sprite(); buttonIcon.InitializeAndLoad(spriteBatch, contentManager, ContentLocations.LargeBackIcon); buttonText = new RenderableText(); buttonText.InitializeAndLoad(spriteBatch, contentManager, ContentLocations.SegoeUIFont, MenuConstants.BackButtonName.ToLowerInvariant()); button = new MenuButton(relativePos, largeButtonTile, buttonIcon, buttonText, MenuConstants.BackButtonName); customMenu.AddItem(button); return customMenu; }
/// <summary> /// Initializes a new instance of the <see cref="LevelManager"/> class. /// </summary> /// <param name="gameDisplayResolution">The resolution the game is set to render at.</param> /// <param name="frameTime">The frame time set for the game.</param> public LevelManager(Vector2 gameDisplayResolution, float frameTime) { this.startText = new RenderableText(); this.Complete = false; this.physicsWorld = null; this.gameDisplayResolution = gameDisplayResolution; this.frameTime = frameTime; this.physicsWorld = null; this.spriteBatch = null; this.floorSprite = new Sprite(); this.contentManager = null; this.levelLoader = null; this.floorEdges = new List<Body>(); this.visualFloorEdges = new List<VisualEdge>(); this.platforms = new List<Platform>(); this.interactiveEntities = new List<InteractiveEntity>(); this.stickman = null; this.exit = null; this.scrollingDeath = null; this.mineCart = null; this.cartSwitch = null; this.scrollStartTimer = 0.0f; this.background = new Background(this.gameDisplayResolution, 0.8f); this.maxScore = 0.0f; }
/// <summary> /// Creates an editor overlay main menu object. /// </summary> /// <param name="contentManager">The content manager to use to load resources.</param> /// <param name="spriteBatch">The sprite batch to attach to menu items.</param> /// <param name="position">The position of the menu.</param> /// <returns>The new menu created.</returns> public static Menu CreateEditorMainMenu(ContentManager contentManager, SpriteBatch spriteBatch, Vector2 position) { Menu editorMenu = new Menu(position, 1, 3); MenuButton button = null; Sprite smallButtonTile = new Sprite(); smallButtonTile.InitializeAndLoad(spriteBatch, contentManager, ContentLocations.MediumButtonTile); float gapBetweenTiles = 16.0f; Vector2 relativePos = Vector2.Zero; Sprite buttonIcon = null; RenderableText buttonText = null; // Menu relativePos = new Vector2(-smallButtonTile.Width - gapBetweenTiles, -smallButtonTile.Height * 1.7f); buttonIcon = new Sprite(); buttonIcon.InitializeAndLoad(spriteBatch, contentManager, ContentLocations.MediumMenuIcon); buttonText = new RenderableText(); buttonText.InitializeAndLoad(spriteBatch, contentManager, ContentLocations.SegoeUIFont, MenuConstants.MenuButtonName.ToLowerInvariant()); button = new MenuButton(relativePos, smallButtonTile, buttonIcon, buttonText, MenuConstants.MenuButtonName); editorMenu.AddItem(button); // Undo relativePos.X += smallButtonTile.Width + gapBetweenTiles; buttonIcon = new Sprite(); buttonIcon.InitializeAndLoad(spriteBatch, contentManager, ContentLocations.MediumRetryIcon); buttonText = new RenderableText(); buttonText.InitializeAndLoad(spriteBatch, contentManager, ContentLocations.SegoeUIFont, MenuConstants.UndoButtonName.ToLowerInvariant()); button = new MenuButton(relativePos, smallButtonTile, buttonIcon, buttonText, MenuConstants.UndoButtonName); editorMenu.AddItem(button); // Change type relativePos.X += smallButtonTile.Width + gapBetweenTiles; buttonIcon = new Sprite(); buttonIcon.InitializeAndLoad(spriteBatch, contentManager, ContentLocations.MediumPlayIcon); buttonText = new RenderableText(); buttonText.InitializeAndLoad(spriteBatch, contentManager, ContentLocations.SegoeUIFont, MenuConstants.ChangeButtonName.ToLowerInvariant()); button = new MenuButton(relativePos, smallButtonTile, buttonIcon, buttonText, MenuConstants.ChangeButtonName); editorMenu.AddItem(button); return editorMenu; }