public override void Draw(SpriteBatch spriteBatch, ViewportAdapter viewportAdapter) { base.Draw(spriteBatch, viewportAdapter); spriteBatch.Begin(transformMatrix: viewportAdapter.GetScaleMatrix(), samplerState: SamplerState.PointClamp); // Background and Logo spriteBatch.Draw(_backgroundSprite); spriteBatch.Draw(_logoSprite); if (_phase == PressAnyButtonPhase) { spriteBatch.DrawString(SceneManager.Instance.GameFont, "Press Any Button", _pressAnyButtonPosition, _menuItemColor); } else if (_phase == MenuPhase) { // Menu for (var i = 0; i < _menuOptions.Length; i++) spriteBatch.DrawString(SceneManager.Instance.GameFont, _menuOptions[i], new Vector2(25, _menuY + (i * SceneManager.Instance.GameFont.LineHeight)), _menuItemColor); spriteBatch.Draw(_menuIcon); } spriteBatch.End(); }
public override void Draw(SpriteBatch spriteBatch, ViewportAdapter viewportAdapter) { base.Draw(spriteBatch, viewportAdapter); spriteBatch.Begin(samplerState: SamplerState.PointClamp, transformMatrix: viewportAdapter.GetScaleMatrix()); // Background spriteBatch.Draw(_backgroundTexture, _backgroundTexture.Bounds, Color.White); // Strings DrawWithShadow(spriteBatch, PlayerManager.Instance.Ammo.ToString(), _ammoPosition); DrawWithShadow(spriteBatch, PlayerManager.Instance.Coins.ToString(), _coinsPosition); DrawWithShadow(spriteBatch, "HP", _hpTextPosition); DrawWithShadow(spriteBatch, "Lives", _livesTextPosition); // Hearts and lives DrawCenteredSpritesOnRectangle(spriteBatch, _hpSpritesArea, _heartSprite, PlayerManager.Instance.Hearts); DrawCenteredSpritesOnRectangle(spriteBatch, _livesSpritesArea, _lifeSprite, PlayerManager.Instance.Lives); for (var i = 0; i < GetCurrentStage(); i++) { var position = new Rectangle((int)_stageSelectionPositions[i].X, (int)_stageSelectionPositions[i].Y, 19, 19); spriteBatch.Draw(_stageSelectionSpritesheet, position, new Rectangle(76, 0, 19, 19), Color.White, 0f, new Vector2(9, 9), SpriteEffects.None, 0f); } spriteBatch.DrawString(SceneManager.Instance.GameFont, MapPressMessage, _pressZTextPosition, _fontColor); // Map sprites _stageSelectionSprite.Draw(spriteBatch); _stageSelectionPeteSprite.Draw(spriteBatch); spriteBatch.End(); }
public override void Draw(SpriteBatch spriteBatch, ViewportAdapter viewportAdapter) { base.Draw(spriteBatch, viewportAdapter); var screenSize = SceneManager.Instance.VirtualSize; var gameFont = SceneManager.Instance.GameFont; spriteBatch.Begin(samplerState: SamplerState.PointClamp, transformMatrix: viewportAdapter.GetScaleMatrix()); // Background spriteBatch.Draw(_backgroundTexture, _backgroundTexture.Bounds, Color.White); // Title var titleString = _titleStrings[SceneManager.Instance.TypeOfSceneSaves]; var titleX = (SceneManager.Instance.VirtualSize.X - SceneManager.Instance.GameFontBig.MeasureString(titleString).X) / 2; spriteBatch.DrawTextWithShadow(SceneManager.Instance.GameFontBig, titleString, new Vector2(titleX, 10), Color.White); // Slots for (var i = 0; i < 3; i++) { var slotPosition = _slotsPosition[i].Location.ToVector2(); // Check if the slot isn't empty if (_gameSaves[i].StagesCompleted > 0) { // Pete Head if (_slotIndex == i) { _peteAnimatedSprite.Position = slotPosition + _peteHeadPosition; _peteAnimatedSprite.Draw(spriteBatch); } else { spriteBatch.Draw(_peteSpritesheet, slotPosition + _peteHeadPosition, _peteDefaultFrame, Color.White); } // Save Name spriteBatch.DrawString(gameFont, "SAVE NAME", slotPosition + _namePosition, _fontColor); // Stages var divisorPosition = Vector2.Zero; for (var j = 0; j < _gameSaves[i].StagesCompleted; j++) { var markPosition = slotPosition + _stagesPosition + ((_stagePeteMarkFrame.Width + 4) * j * Vector2.UnitX); spriteBatch.Draw(_stageSpritesheet, markPosition, _stagePeteMarkFrame, Color.White); if (j < SceneManager.MaxLevels - 1) { divisorPosition = markPosition + (_stagePeteMarkFrame.Width + 1) * Vector2.UnitX + (9 * Vector2.UnitY); spriteBatch.Draw(_stageSpritesheet, divisorPosition, _stageDivisorFrame, Color.White); } } if (_gameSaves[i].StagesCompleted < SceneManager.MaxLevels) { var nextMarkPos = (divisorPosition == Vector2.Zero) ? (slotPosition + _stagesPosition) : (divisorPosition - (9 * Vector2.UnitY) + (3 * Vector2.UnitX)); if (_slotIndex == i) { _nextStageMarkAnimatedSprite.Position = nextMarkPos; _nextStageMarkAnimatedSprite.Draw(spriteBatch); } else { spriteBatch.Draw(_stageSpritesheet, nextMarkPos, _stageNextMarkFrame, Color.White); } } // Lives var lives = _gameSaves[i].Lives; var livesWidth = (lives * _lifeFrame.Width) + (lives - 1); var livesPosition = slotPosition + (_slotsPosition[i].Width - livesWidth - _livesPosition.X) * Vector2.UnitX + _livesPosition.Y * Vector2.UnitY; for (var j = 0; j < lives; j++) { var lifePosition = livesPosition + ((_lifeFrame.Width + 1) * j * Vector2.UnitX); spriteBatch.Draw(_iconsSpritesheet, lifePosition, _lifeFrame, Color.White); } // Hearts var hearts = _gameSaves[i].Hearts; var heartsWidth = (hearts * _heartFrame.Width) + (hearts - 1) * 5; var heartsPosition = slotPosition + (_slotsPosition[i].Width - heartsWidth - _heartsPosition.X) * Vector2.UnitX + _heartsPosition.Y * Vector2.UnitY; for (var j = 0; j < hearts; j++) { var heartPosition = heartsPosition + ((_heartFrame.Width + 5) * j * Vector2.UnitX); spriteBatch.Draw(_iconsSpritesheet, heartPosition, _heartFrame, Color.White); } // Ammo spriteBatch.Draw(_iconsSpritesheet, slotPosition + _ammoPosition, _ammoFrame, Color.White); spriteBatch.DrawString(gameFont, _gameSaves[i].Ammo.ToString(), slotPosition + _ammoTextPosition, _fontColor); // Coins spriteBatch.Draw(_iconsSpritesheet, slotPosition + _coinsPosition, _coinFrame, Color.White); spriteBatch.DrawString(gameFont, _gameSaves[i].Coins.ToString(), slotPosition + _coinsTextPosition, _fontColor); } else { // Empty slot text var emptySlotTextSize = gameFont.MeasureString(EmptySlotText); var emptyPosition = new Vector2(slotPosition.X + (_slotsPosition[i].Width - emptySlotTextSize.X) / 2, slotPosition.Y + (_slotsPosition[i].Height - emptySlotTextSize.Y) / 2); spriteBatch.DrawString(gameFont, EmptySlotText, emptyPosition, _fontColor); } } IconsManager.Instance.DrawRightArrow(spriteBatch, _arrowPosition + _arrowPositionInc * Vector2.UnitY, false); var xOffset = SceneManager.Instance.GameFontSmall.MeasureString(ConfirmButtonLabel).X + 30; IconsManager.Instance.DrawActionButton(spriteBatch, new Vector2(5, screenSize.Y - 18), false, ConfirmButtonLabel, 1.0f, true); IconsManager.Instance.DrawCancelButton(spriteBatch, new Vector2(xOffset, screenSize.Y - 18), false, CancelButtonLabel, 1.0f, true); if (_loadingVisible) { spriteBatch.Draw(_loadingBackgroundTexture, new Rectangle(0, 0, (int)screenSize.X, (int)screenSize.Y), Color.White * 0.5f); _loadingAnimatedSprite.Draw(spriteBatch); } spriteBatch.End(); }