From 02e6bd7e496f772c10eda5dd420fa045160606f4 Mon Sep 17 00:00:00 2001 From: JoshuaNavarro Date: Wed, 17 Jul 2019 16:26:37 -0700 Subject: [PATCH] Added in some blinking text and the simple title screen. --- .../Backgrounds/TitleScreenBackground.png | Bin 0 -> 231 bytes .../Minigames/SeasideScramble/Maps/Intro.png | Bin 0 -> 44161 bytes .../SeasideScramble/Maps/TitleScreenMap.tbin | Bin 0 -> 539 bytes .../SeasideScrambleMinigame/SSCCamera.cs | 5 + .../SSCMenus/TitleScreen.cs | 75 ++++++++++++ .../SeasideScrambleMinigame/SSCPlayer.cs | 75 +++++++++++- .../SeasideScramble.cs | 109 +++++++----------- GeneralMods/Revitalize/Revitalize.csproj | 7 ++ GeneralMods/StardustCore/StardustCore.csproj | 1 + .../MenuComponents/BlinkingText.cs | 51 ++++++++ 10 files changed, 253 insertions(+), 70 deletions(-) create mode 100644 GeneralMods/Revitalize/Content/Minigames/SeasideScramble/Maps/Backgrounds/TitleScreenBackground.png create mode 100644 GeneralMods/Revitalize/Content/Minigames/SeasideScramble/Maps/Intro.png create mode 100644 GeneralMods/Revitalize/Content/Minigames/SeasideScramble/Maps/TitleScreenMap.tbin create mode 100644 GeneralMods/Revitalize/Framework/Minigame/SeasideScrambleMinigame/SSCMenus/TitleScreen.cs create mode 100644 GeneralMods/StardustCore/UIUtilities/MenuComponents/BlinkingText.cs diff --git a/GeneralMods/Revitalize/Content/Minigames/SeasideScramble/Maps/Backgrounds/TitleScreenBackground.png b/GeneralMods/Revitalize/Content/Minigames/SeasideScramble/Maps/Backgrounds/TitleScreenBackground.png new file mode 100644 index 0000000000000000000000000000000000000000..b64bd611b4f101a0bdc2d99a0cd9c84def6114d8 GIT binary patch literal 231 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 a?NUDWn E0CPb}8vp + /// Checks for player movement. + /// + /// + private void checkForMovementInput(Keys K) + { + if (SeasideScramble.self.isMenuUp) return; + //Microsoft.Xna.Framework.Input.GamePadState state = this.getGamepadState(PlayerIndex.One); + if (K == Keys.A) + { + ModCore.log("A pressed for player"); + this.movePlayer(SSCEnums.FacingDirection.Left); + } + if (K == Keys.W) + { + ModCore.log("W pressed for player!"); + this.movePlayer(SSCEnums.FacingDirection.Up); + } + if (K == Keys.S) + { + ModCore.log("S pressed for player!"); + this.movePlayer(SSCEnums.FacingDirection.Down); + } + if (K == Keys.D) + { + ModCore.log("D pressed for player!"); + this.movePlayer(SSCEnums.FacingDirection.Right); + } + + + + } + + + } } diff --git a/GeneralMods/Revitalize/Framework/Minigame/SeasideScrambleMinigame/SeasideScramble.cs b/GeneralMods/Revitalize/Framework/Minigame/SeasideScrambleMinigame/SeasideScramble.cs index 3cc8bd51..0b11d22e 100644 --- a/GeneralMods/Revitalize/Framework/Minigame/SeasideScrambleMinigame/SeasideScramble.cs +++ b/GeneralMods/Revitalize/Framework/Minigame/SeasideScrambleMinigame/SeasideScramble.cs @@ -22,7 +22,7 @@ namespace Revitalize.Framework.Minigame.SeasideScrambleMinigame public Dictionary SeasideScrambleMaps; public bool quitGame; public Vector2 topLeftScreenCoordinate; - + public SSCTextureUtilities textureUtils; @@ -32,19 +32,23 @@ namespace Revitalize.Framework.Minigame.SeasideScrambleMinigame public SSCCamera camera; + public IClickableMenuExtended activeMenu; + public bool isMenuUp + { + get + { + return this.activeMenu != null; + } + } + public SeasideScramble() { self = this; this.camera = new SSCCamera(); //this.viewport = new xTile.Dimensions.Rectangle(StardewValley.Game1.viewport); - this.topLeftScreenCoordinate= new Vector2((float)(this.camera.viewport.Width / 2 - 384), (float)(this.camera.viewport.Height / 2 - 384)); + this.topLeftScreenCoordinate = new Vector2((float)(this.camera.viewport.Width / 2 - 384), (float)(this.camera.viewport.Height / 2 - 384)); - this.textureUtils = new SSCTextureUtilities(); - TextureManager playerManager = new TextureManager("SSCPlayer"); - playerManager.searchForTextures(ModCore.ModHelper, ModCore.Manifest, Path.Combine("Content", "Minigames", "SeasideScramble", "Graphics", "Player")); - this.textureUtils.addTextureManager(playerManager); - this.LoadTextures(); this.LoadMaps(); @@ -52,17 +56,26 @@ namespace Revitalize.Framework.Minigame.SeasideScrambleMinigame this.quitGame = false; this.player = new SSCPlayer(); + this.player.setColor(Color.Red); + + this.activeMenu = new SSCMenus.TitleScreen(this.camera.viewport); } private void LoadTextures() { - + this.textureUtils = new SSCTextureUtilities(); + TextureManager playerManager = new TextureManager("SSCPlayer"); + playerManager.searchForTextures(ModCore.ModHelper, ModCore.Manifest, Path.Combine("Content", "Minigames", "SeasideScramble", "Graphics", "Player")); + TextureManager mapTextureManager = new TextureManager("SSCMaps"); + mapTextureManager.searchForTextures(ModCore.ModHelper, ModCore.Manifest, Path.Combine("Content", "Minigames", "SeasideScramble", "Maps", "Backgrounds")); + this.textureUtils.addTextureManager(playerManager); + this.textureUtils.addTextureManager(mapTextureManager); } private void LoadMaps() { this.SeasideScrambleMaps = new Dictionary(); - this.SeasideScrambleMaps.Add("TestRoom",new SeasideScrambleMap(SeasideScrambleMap.LoadMap("TestRoom.tbin").Value)); + this.SeasideScrambleMaps.Add("TestRoom", new SeasideScrambleMap(SeasideScrambleMap.LoadMap("TestRoom.tbin").Value)); } private void loadStartingMap() { @@ -99,7 +112,8 @@ namespace Revitalize.Framework.Minigame.SeasideScrambleMinigame /// public void draw(SpriteBatch b) { - if (this.currentMap!=null){ + if (this.currentMap != null) + { this.currentMap.draw(b); } b.Begin(SpriteSortMode.Deferred, BlendState.AlphaBlend, SamplerState.PointClamp, (DepthStencilState)null, (RasterizerState)null); @@ -107,6 +121,12 @@ namespace Revitalize.Framework.Minigame.SeasideScrambleMinigame { this.player.draw(b); } + + if (this.activeMenu != null) + { + this.activeMenu.draw(b); + } + b.End(); } @@ -156,72 +176,23 @@ namespace Revitalize.Framework.Minigame.SeasideScrambleMinigame public void receiveKeyPress(Keys k) { //throw new NotImplementedException(); - this.checkForMovementInput(k); - } - - /// - /// Checks for player movement. - /// - /// - private void checkForMovementInput(Keys K) - { - Microsoft.Xna.Framework.Input.GamePadState state = this.getGamepadState(PlayerIndex.One); - if(K== Keys.A) - { - ModCore.log("A pressed for Seaside Scramble!"); - this.player.movePlayer(SSCEnums.FacingDirection.Left); - } - if (K == Keys.W) - { - ModCore.log("W pressed for Seaside Scramble!"); - this.player.movePlayer(SSCEnums.FacingDirection.Up); - } - if(K== Keys.S) - { - ModCore.log("S pressed for Seaside Scramble!"); - this.player.movePlayer(SSCEnums.FacingDirection.Down); - } - if(K== Keys.D) - { - ModCore.log("D pressed for Seaside Scramble!"); - this.player.movePlayer(SSCEnums.FacingDirection.Right); - } - - - if(K== Keys.Escape) + if (k == Keys.Escape) { this.quitGame = true; } + this.player.receiveKeyPress(k); } + + private GamePadState getGamepadState(PlayerIndex index) { - return Microsoft.Xna.Framework.Input.GamePad.GetState(PlayerIndex.One); + return Microsoft.Xna.Framework.Input.GamePad.GetState(PlayerIndex.One); } public void receiveKeyRelease(Keys K) { - //throw new NotImplementedException(); - if (K == Keys.A) - { - ModCore.log("A released for Seaside Scramble!"); - this.player.isMoving = false; - } - if (K == Keys.W) - { - ModCore.log("W pressed for Seaside Scramble!"); - this.player.isMoving = false; - } - if (K == Keys.S) - { - ModCore.log("S pressed for Seaside Scramble!"); - this.player.isMoving = false; - } - if (K == Keys.D) - { - ModCore.log("D pressed for Seaside Scramble!"); - this.player.isMoving = false; - } + this.player.receiveKeyRelease(K); } public void receiveLeftClick(int x, int y, bool playSound = true) @@ -271,11 +242,15 @@ namespace Revitalize.Framework.Minigame.SeasideScrambleMinigame this.player.update(time); this.camera.centerOnPosition(this.player.position); } - + if (this.activeMenu != null) + { + this.activeMenu.update(time); + } + return false; //throw new NotImplementedException(); } - + /// /// Called when the minigame is quit upon. /// diff --git a/GeneralMods/Revitalize/Revitalize.csproj b/GeneralMods/Revitalize/Revitalize.csproj index 43408536..aa3c4382 100644 --- a/GeneralMods/Revitalize/Revitalize.csproj +++ b/GeneralMods/Revitalize/Revitalize.csproj @@ -69,6 +69,7 @@ + @@ -130,6 +131,12 @@ Always + + Always + + + Always + Always diff --git a/GeneralMods/StardustCore/StardustCore.csproj b/GeneralMods/StardustCore/StardustCore.csproj index b0f3c63b..4f4111bf 100644 --- a/GeneralMods/StardustCore/StardustCore.csproj +++ b/GeneralMods/StardustCore/StardustCore.csproj @@ -93,6 +93,7 @@ + diff --git a/GeneralMods/StardustCore/UIUtilities/MenuComponents/BlinkingText.cs b/GeneralMods/StardustCore/UIUtilities/MenuComponents/BlinkingText.cs new file mode 100644 index 00000000..fed6cb88 --- /dev/null +++ b/GeneralMods/StardustCore/UIUtilities/MenuComponents/BlinkingText.cs @@ -0,0 +1,51 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace StardustCore.UIUtilities.MenuComponents +{ + public class BlinkingText + { + public string displayText; + public int currentFrame; + public int maxFrames; + public bool drawThis; + + public BlinkingText(string text,int existsForXMilliseconds) + { + this.displayText = text; + this.maxFrames = existsForXMilliseconds; + this.currentFrame = existsForXMilliseconds; + } + + public void update(Microsoft.Xna.Framework.GameTime time) + { + this.currentFrame -= time.ElapsedGameTime.Milliseconds; + + if (this.currentFrame <= 0 && this.currentFrame>=-this.maxFrames) + { + this.drawThis = false; + } + else if(this.currentFrame>0) + { + if (this.currentFrame > 0) + { + this.drawThis = true; + } + } + else if(this.currentFrame<-this.maxFrames) + { + this.currentFrame = this.maxFrames; + } + } + public void draw(Microsoft.Xna.Framework.Graphics.SpriteBatch b, Microsoft.Xna.Framework.Graphics.SpriteFont font, Microsoft.Xna.Framework.Vector2 position, Microsoft.Xna.Framework.Color color) + { + if (this.drawThis) + { + b.DrawString(font, this.displayText, position, color); + } + } + } +}