From 865fd11383f435e6ff3048d9819597d38ec44634 Mon Sep 17 00:00:00 2001 From: pascal Date: Sat, 2 Apr 2016 14:41:42 +0200 Subject: [PATCH] Added How-To-Play info screen at the beginning of the game --- BreakoutParty/BreakoutParty.csproj | 4 ++ BreakoutParty/BreakoutPartyGame.cs | 2 +- BreakoutParty/Content/HowToPlay.png | Bin 0 -> 9300 bytes BreakoutParty/Gamestates/HowToPlayState.cs | 80 +++++++++++++++++++++ 4 files changed, 85 insertions(+), 1 deletion(-) create mode 100644 BreakoutParty/Content/HowToPlay.png create mode 100644 BreakoutParty/Gamestates/HowToPlayState.cs diff --git a/BreakoutParty/BreakoutParty.csproj b/BreakoutParty/BreakoutParty.csproj index 81ca207..c19e08e 100644 --- a/BreakoutParty/BreakoutParty.csproj +++ b/BreakoutParty/BreakoutParty.csproj @@ -76,6 +76,7 @@ + @@ -140,6 +141,9 @@ PreserveNewest + + PreserveNewest + PreserveNewest diff --git a/BreakoutParty/BreakoutPartyGame.cs b/BreakoutParty/BreakoutPartyGame.cs index 7e484bb..c6a52dd 100644 --- a/BreakoutParty/BreakoutPartyGame.cs +++ b/BreakoutParty/BreakoutPartyGame.cs @@ -88,7 +88,7 @@ protected override void Initialize() Batch = new SpriteBatch(Graphics.GraphicsDevice); AudioManager = new SoundManager(this); GameManager = new GamestateManager(this); - GameManager.Add(new MainMenuGamestate()); + GameManager.Add(new HowToPlayState()); } /// diff --git a/BreakoutParty/Content/HowToPlay.png b/BreakoutParty/Content/HowToPlay.png new file mode 100644 index 0000000000000000000000000000000000000000..a51e0c001cd69cbb7f9b5dfff4c866c699f6630f GIT binary patch literal 9300 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 literal 0 HcmV?d00001 diff --git a/BreakoutParty/Gamestates/HowToPlayState.cs b/BreakoutParty/Gamestates/HowToPlayState.cs new file mode 100644 index 0000000..60fe37e --- /dev/null +++ b/BreakoutParty/Gamestates/HowToPlayState.cs @@ -0,0 +1,80 @@ +using BreakoutParty.Sounds; +using Microsoft.Xna.Framework; +using Microsoft.Xna.Framework.Graphics; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace BreakoutParty.Gamestates +{ + /// + /// "How To Play" information screen. + /// + sealed class HowToPlayState : Gamestate + { + /// + /// for drawing. + /// + private SpriteBatch _Batch; + + /// + /// Texture showing how to play. + /// + private Texture2D _HowToPlayTexture; + + /// + /// Initializes the . + /// + public override void Initialize() + { + _Batch = Manager.Game.Batch; + _HowToPlayTexture = Manager.Game.Content.Load("HowToPlay"); + Manager.Game.AudioManager.Play(MusicTracks.TitleMusic); + } + + /// + /// Destroys the . + /// + public override void Destroy() + { + + } + + /// + /// Updates the . + /// + /// Timing information. + public override void Update(GameTime gameTime) + { + if (InputManager.IsActionPressed(PlayerIndex.One, InputActions.Ok) + || InputManager.IsActionPressed(PlayerIndex.One, InputActions.Abort)) + { + Manager.Game.AudioManager.Play(SoundEffects.MenuValidate); + Manager.Remove(this); + Manager.Add(new MainMenuGamestate()); + } + } + + /// + /// Draws the . + /// + /// Timing information. + /// True, if the next gamestate may draw too. + public override bool Draw(GameTime gameTime) + { + _Batch.Begin(SpriteSortMode.Texture, + BlendState.NonPremultiplied, + SamplerState.PointClamp, + DepthStencilState.None, + RasterizerState.CullNone); + + _Batch.Draw(_HowToPlayTexture, Vector2.Zero, Color.White); + + _Batch.End(); + + return false; + } + } +}