diff --git a/RhythmBullet/Content/cursor.png b/RhythmBullet/Content/cursor.png index e0c7434..ac920b0 100644 Binary files a/RhythmBullet/Content/cursor.png and b/RhythmBullet/Content/cursor.png differ diff --git a/RhythmBullet/RhythmBulletGame.cs b/RhythmBullet/RhythmBulletGame.cs index ac906de..07dfa38 100644 --- a/RhythmBullet/RhythmBulletGame.cs +++ b/RhythmBullet/RhythmBulletGame.cs @@ -35,6 +35,8 @@ namespace RhythmBullet private bool resizing; private bool initialLoadComplete; private MainScreen mainScreen; + private Texture2D currentCursorTexture; + public RhythmBulletGame() { graphics = new GraphicsDeviceManager(this); @@ -91,6 +93,8 @@ namespace RhythmBullet protected override void UnloadContent() { Assets.UnloadAll(); + screenManager.Dispose(); + currentCursorTexture.Dispose(); } /// @@ -108,10 +112,12 @@ namespace RhythmBullet { resizing = false; PostResize(); - } else if (!initialLoadComplete) + } + else if (!initialLoadComplete) { - Console.WriteLine("Initial load complete."); + Debug.WriteLine("Initial load complete."); initialLoadComplete = true; + SetUpCursor(); mainScreen = new MainScreen(Assets); } @@ -143,6 +149,7 @@ namespace RhythmBullet Assets.UnloadAll(); QueueContent(); screenManager.Resize(new LoadingScreen(this, Content.Load("loading_ring"), 0.4f)); + SetUpCursor(); } private void PostResize() @@ -159,6 +166,24 @@ namespace RhythmBullet Assets.Queue("backgrounds/mainBG"); } + private void SetUpCursor() + { + Texture2D texture = Assets.Get("cursor"); + int cursorSize = (int)(0.08f * graphics.PreferredBackBufferHeight); + Debug.WriteLine("Cursor size length: " + cursorSize); + RenderTarget2D renderTarget = new RenderTarget2D(GraphicsDevice, cursorSize, cursorSize); + GraphicsDevice.SetRenderTarget(renderTarget); + GraphicsDevice.Clear(Color.Transparent); + spriteBatch.Begin(); + spriteBatch.Draw(texture, new Rectangle(0, 0, cursorSize, cursorSize), Color.White); + spriteBatch.End(); + GraphicsDevice.SetRenderTarget(null); + + currentCursorTexture?.Dispose(); + currentCursorTexture = renderTarget; + Mouse.SetCursor(MouseCursor.FromTexture2D(currentCursorTexture, currentCursorTexture.Width / 2, currentCursorTexture.Height / 2)); + } + private void RequireNextScreen(Screen Screen) { Screen.NextScreen = mainScreen; diff --git a/RhythmBullet/Zer01HD/Screens/MainMenu/MainScreen.cs b/RhythmBullet/Zer01HD/Screens/MainMenu/MainScreen.cs index 49b8f4b..3da8810 100644 --- a/RhythmBullet/Zer01HD/Screens/MainMenu/MainScreen.cs +++ b/RhythmBullet/Zer01HD/Screens/MainMenu/MainScreen.cs @@ -38,7 +38,6 @@ namespace RhythmBullet.Zer01HD.Screens.MainMenu public override void Show() { - Mouse.SetCursor(MouseCursor.FromTexture2D(assets.Get("cursor"), 256, 256)); Transitions.Add(fat); base.Show(); } diff --git a/RhythmBullet/Zer01HD/Utilities/ContentSystem/ContentManagerController.cs b/RhythmBullet/Zer01HD/Utilities/ContentSystem/ContentManagerController.cs index 4f85b4c..14ac617 100644 --- a/RhythmBullet/Zer01HD/Utilities/ContentSystem/ContentManagerController.cs +++ b/RhythmBullet/Zer01HD/Utilities/ContentSystem/ContentManagerController.cs @@ -45,7 +45,6 @@ namespace RhythmBullet.Zer01HD.Utilities.ContentSystem public T Get(string assetName) { - Console.WriteLine("Attempt get"); lock (queue) { return (T)assets[assetName]; diff --git a/RhythmBullet/Zer01HD/Utilities/ScreenSystem/LoadingScreen.cs b/RhythmBullet/Zer01HD/Utilities/ScreenSystem/LoadingScreen.cs index ac15ab3..029643f 100644 --- a/RhythmBullet/Zer01HD/Utilities/ScreenSystem/LoadingScreen.cs +++ b/RhythmBullet/Zer01HD/Utilities/ScreenSystem/LoadingScreen.cs @@ -31,7 +31,18 @@ namespace RhythmBullet.Zer01HD.Utilities.ScreenSystem this.proportion = proportion; this.rotate = rotate; Transitions.Add(this); + } + + public override void Show() + { game.IsMouseVisible = false; + base.Show(); + } + + public override void Hide() + { + game.IsMouseVisible = true; + base.Hide(); } public void InitiateTransition(Rectangle dimensions) diff --git a/RhythmBullet/Zer01HD/Utilities/ScreenSystem/ScreenManager.cs b/RhythmBullet/Zer01HD/Utilities/ScreenSystem/ScreenManager.cs index 0c7d364..c4778c3 100644 --- a/RhythmBullet/Zer01HD/Utilities/ScreenSystem/ScreenManager.cs +++ b/RhythmBullet/Zer01HD/Utilities/ScreenSystem/ScreenManager.cs @@ -44,6 +44,7 @@ namespace RhythmBullet.Zer01HD.Utilities.ScreenSystem Debug.WriteLine("Showing " + value.GetType().Name); Screen.Show(); + previousScreen?.Hide(); } }