diff --git a/RhythmBullet/Content/Content.mgcb b/RhythmBullet/Content/Content.mgcb
index bc2a38f..3a39ca3 100644
--- a/RhythmBullet/Content/Content.mgcb
+++ b/RhythmBullet/Content/Content.mgcb
@@ -700,3 +700,15 @@
/processorParam:TextureFormat=Color
/build:loading_ring.png
+#begin cursor.png
+/importer:TextureImporter
+/processor:TextureProcessor
+/processorParam:ColorKeyColor=255,0,255,255
+/processorParam:ColorKeyEnabled=True
+/processorParam:GenerateMipmaps=False
+/processorParam:PremultiplyAlpha=True
+/processorParam:ResizeToPowerOfTwo=False
+/processorParam:MakeSquare=False
+/processorParam:TextureFormat=Color
+/build:cursor.png
+
diff --git a/RhythmBullet/Content/cursor.png b/RhythmBullet/Content/cursor.png
new file mode 100644
index 0000000..e0c7434
Binary files /dev/null and b/RhythmBullet/Content/cursor.png differ
diff --git a/RhythmBullet/RhythmBullet.csproj b/RhythmBullet/RhythmBullet.csproj
index f572b1e..de70da7 100644
--- a/RhythmBullet/RhythmBullet.csproj
+++ b/RhythmBullet/RhythmBullet.csproj
@@ -47,8 +47,8 @@
true
-
-
+
+
@@ -59,7 +59,7 @@
-
+
@@ -71,13 +71,13 @@
-
-
-
+
+
+
-
-
+
+
diff --git a/RhythmBullet/RhythmBulletGame.cs b/RhythmBullet/RhythmBulletGame.cs
index 88b8950..ac906de 100644
--- a/RhythmBullet/RhythmBulletGame.cs
+++ b/RhythmBullet/RhythmBulletGame.cs
@@ -1,14 +1,15 @@
using Microsoft.Xna.Framework;
using Microsoft.Xna.Framework.Graphics;
using Microsoft.Xna.Framework.Input;
-using RhythmBullet.Zer01HD.Game.ContentResolvers;
-using RhythmBullet.Zer01HD.Game.Preferences;
-using RhythmBullet.Zer01HD.Game.Screens.MainMenu;
+using RhythmBullet.Zer01HD.ContentResolvers;
+using RhythmBullet.Zer01HD.Preferences;
+using RhythmBullet.Zer01HD.Screens.MainMenu;
using RhythmBullet.Zer01HD.Utilities;
using RhythmBullet.Zer01HD.Utilities.Camera;
using RhythmBullet.Zer01HD.Utilities.ContentSystem;
using RhythmBullet.Zer01HD.Utilities.DataTypes;
using RhythmBullet.Zer01HD.Utilities.Input;
+using RhythmBullet.Zer01HD.Utilities.Persistence;
using RhythmBullet.Zer01HD.Utilities.ScreenSystem;
using System;
using System.Diagnostics;
@@ -26,18 +27,19 @@ namespace RhythmBullet
GraphicsDeviceManager graphics;
SpriteBatch spriteBatch;
- public readonly ContentSystem Assets;
+ public readonly ContentManagerController Assets;
readonly ResolutionContentResolver resolutionContentResolver;
public PreferencesManager preferencesManager;
private ScreenManager screenManager;
public Camera2D Camera { get; private set; }
private bool resizing;
-
+ private bool initialLoadComplete;
+ private MainScreen mainScreen;
public RhythmBulletGame()
{
graphics = new GraphicsDeviceManager(this);
Content.RootDirectory = "Content";
- Assets = new ContentSystem(Content);
+ Assets = new ContentManagerController(Content);
resolutionContentResolver = new ResolutionContentResolver();
FontContentResolver fcr = new FontContentResolver(resolutionContentResolver);
@@ -77,9 +79,9 @@ namespace RhythmBullet
spriteBatch = new SpriteBatch(GraphicsDevice);
Camera = new Camera2D(graphics.GraphicsDevice);
screenManager = new ScreenManager(graphics, Camera);
- screenManager.RequireNextScreenEvent += ExitTransitionComplete;
+ screenManager.RequireNextScreenEvent += RequireNextScreen;
QueueContent();
- screenManager.Screen = new LoadingScreen(Content.Load("RhythmBullet"), 0.7f);
+ screenManager.Screen = new LoadingScreen(this, Content.Load("RhythmBullet"), 0.7f);
}
///
@@ -106,6 +108,11 @@ namespace RhythmBullet
{
resizing = false;
PostResize();
+ } else if (!initialLoadComplete)
+ {
+ Console.WriteLine("Initial load complete.");
+ initialLoadComplete = true;
+ mainScreen = new MainScreen(Assets);
}
screenManager.UpdateCurrentScreen(gameTime, Assets.Done);
@@ -135,7 +142,7 @@ namespace RhythmBullet
resizing = true;
Assets.UnloadAll();
QueueContent();
- screenManager.Resize(Content.Load("loading_ring"));
+ screenManager.Resize(new LoadingScreen(this, Content.Load("loading_ring"), 0.4f));
}
private void PostResize()
@@ -146,14 +153,15 @@ namespace RhythmBullet
private void QueueContent()
{
+ Assets.Queue("cursor", false);
Assets.Queue("title");
Assets.Queue("default_cover", false);
Assets.Queue("backgrounds/mainBG");
}
- private void ExitTransitionComplete(Screen Screen)
+ private void RequireNextScreen(Screen Screen)
{
- Screen.NextScreen = new MainScreen(Assets);
+ Screen.NextScreen = mainScreen;
}
}
}
diff --git a/RhythmBullet/Zer01HD/Game/ContentResolvers/FontContentResolver.cs b/RhythmBullet/Zer01HD/ContentResolvers/FontContentResolver.cs
similarity index 90%
rename from RhythmBullet/Zer01HD/Game/ContentResolvers/FontContentResolver.cs
rename to RhythmBullet/Zer01HD/ContentResolvers/FontContentResolver.cs
index b52674f..05fd46d 100644
--- a/RhythmBullet/Zer01HD/Game/ContentResolvers/FontContentResolver.cs
+++ b/RhythmBullet/Zer01HD/ContentResolvers/FontContentResolver.cs
@@ -5,7 +5,7 @@ using System.Linq;
using System.Text;
using System.Threading.Tasks;
-namespace RhythmBullet.Zer01HD.Game.ContentResolvers
+namespace RhythmBullet.Zer01HD.ContentResolvers
{
class FontContentResolver : IContentPathModifier
{
diff --git a/RhythmBullet/Zer01HD/Game/ContentResolvers/ResolutionContentResolver.cs b/RhythmBullet/Zer01HD/ContentResolvers/ResolutionContentResolver.cs
similarity index 96%
rename from RhythmBullet/Zer01HD/Game/ContentResolvers/ResolutionContentResolver.cs
rename to RhythmBullet/Zer01HD/ContentResolvers/ResolutionContentResolver.cs
index b3f3b25..0dbb8b1 100644
--- a/RhythmBullet/Zer01HD/Game/ContentResolvers/ResolutionContentResolver.cs
+++ b/RhythmBullet/Zer01HD/ContentResolvers/ResolutionContentResolver.cs
@@ -1,4 +1,4 @@
-using RhythmBullet.Zer01HD.Game.Preferences;
+using RhythmBullet.Zer01HD.Preferences;
using RhythmBullet.Zer01HD.Utilities;
using RhythmBullet.Zer01HD.Utilities.ContentSystem;
using RhythmBullet.Zer01HD.Utilities.DataTypes;
@@ -8,7 +8,7 @@ using System.Linq;
using System.Text;
using System.Threading.Tasks;
-namespace RhythmBullet.Zer01HD.Game.ContentResolvers
+namespace RhythmBullet.Zer01HD.ContentResolvers
{
class ResolutionContentResolver : IContentPathModifier
{
diff --git a/RhythmBullet/Zer01HD/Game/Preferences/Controls.cs b/RhythmBullet/Zer01HD/Preferences/Controls.cs
similarity index 88%
rename from RhythmBullet/Zer01HD/Game/Preferences/Controls.cs
rename to RhythmBullet/Zer01HD/Preferences/Controls.cs
index 12254c6..f5e29d8 100644
--- a/RhythmBullet/Zer01HD/Game/Preferences/Controls.cs
+++ b/RhythmBullet/Zer01HD/Preferences/Controls.cs
@@ -1,7 +1,7 @@
using Microsoft.Xna.Framework.Input;
using RhythmBullet.Zer01HD.Utilities.Persistence;
-namespace RhythmBullet.Zer01HD.Game.Preferences
+namespace RhythmBullet.Zer01HD.Preferences
{
public class Controls : Utilities.Persistence.Preferences
{
diff --git a/RhythmBullet/Zer01HD/Game/Preferences/General.cs b/RhythmBullet/Zer01HD/Preferences/General.cs
similarity index 91%
rename from RhythmBullet/Zer01HD/Game/Preferences/General.cs
rename to RhythmBullet/Zer01HD/Preferences/General.cs
index 8439f90..bc0f105 100644
--- a/RhythmBullet/Zer01HD/Game/Preferences/General.cs
+++ b/RhythmBullet/Zer01HD/Preferences/General.cs
@@ -3,7 +3,7 @@ using System.Xml.Serialization;
using RhythmBullet.Zer01HD.Utilities.DataTypes;
using RhythmBullet.Zer01HD.Utilities.Persistence;
-namespace RhythmBullet.Zer01HD.Game.Preferences
+namespace RhythmBullet.Zer01HD.Preferences
{
public class General : Utilities.Persistence.Preferences
{
diff --git a/RhythmBullet/Zer01HD/Game/Screens/MainMenu/MainPage.cs b/RhythmBullet/Zer01HD/Screens/MainMenu/MainPage.cs
similarity index 87%
rename from RhythmBullet/Zer01HD/Game/Screens/MainMenu/MainPage.cs
rename to RhythmBullet/Zer01HD/Screens/MainMenu/MainPage.cs
index 9586854..0c8328c 100644
--- a/RhythmBullet/Zer01HD/Game/Screens/MainMenu/MainPage.cs
+++ b/RhythmBullet/Zer01HD/Screens/MainMenu/MainPage.cs
@@ -4,12 +4,12 @@ using RhythmBullet.Zer01HD.UI.Book;
using RhythmBullet.Zer01HD.Utilities.ContentSystem;
using RhythmBullet.Zer01HD.Utilities.UI.Modular.Modules;
-namespace RhythmBullet.Zer01HD.Game.Screens.MainMenu
+namespace RhythmBullet.Zer01HD.Screens.MainMenu
{
internal class MainPage : Page
{
Image title;
- internal MainPage(ContentSystem assets) : base(0, 0)
+ internal MainPage(ContentManagerController assets) : base(0, 0)
{
title = new Image(assets.Get("title"));
AddModule(title);
diff --git a/RhythmBullet/Zer01HD/Game/Screens/MainMenu/MainScreen.cs b/RhythmBullet/Zer01HD/Screens/MainMenu/MainScreen.cs
similarity index 76%
rename from RhythmBullet/Zer01HD/Game/Screens/MainMenu/MainScreen.cs
rename to RhythmBullet/Zer01HD/Screens/MainMenu/MainScreen.cs
index 5bfe1bd..49b8f4b 100644
--- a/RhythmBullet/Zer01HD/Game/Screens/MainMenu/MainScreen.cs
+++ b/RhythmBullet/Zer01HD/Screens/MainMenu/MainScreen.cs
@@ -1,29 +1,28 @@
-using Microsoft.Xna.Framework;
+
+
+using Microsoft.Xna.Framework;
using Microsoft.Xna.Framework.Graphics;
-using RhythmBullet.Zer01HD.Game.Screens.Transitions;
-using RhythmBullet.Zer01HD.UI;
-using RhythmBullet.Zer01HD.Utilities.ContentSystem;
-using RhythmBullet.Zer01HD.Utilities.UI;
-using RhythmBullet.Zer01HD.Utilities.ScreenSystem;
-using System;
-using System.Collections.Generic;
-using System.Diagnostics;
-using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
+using Microsoft.Xna.Framework.Input;
+using RhythmBullet.Zer01HD.Screens.Transitions;
using RhythmBullet.Zer01HD.UI.Book;
using RhythmBullet.Zer01HD.Utilities.Camera;
+using RhythmBullet.Zer01HD.Utilities.ContentSystem;
+using RhythmBullet.Zer01HD.Utilities.ScreenSystem;
+using System;
-namespace RhythmBullet.Zer01HD.Game.Screens.MainMenu
+namespace RhythmBullet.Zer01HD.Screens.MainMenu
{
class MainScreen : Screen
{
+ ContentManagerController assets;
FadeAwayTransition fat;
Texture2D background;
Book book;
MainPage mainPage;
- public MainScreen(ContentSystem assets) : base(true)
+
+ public MainScreen(ContentManagerController assets) : base(true)
{
+ this.assets = assets;
background = assets.Get("backgrounds/mainBG");
fat = new FadeAwayTransition(1.5f);
book = new Book();
@@ -39,13 +38,13 @@ namespace RhythmBullet.Zer01HD.Game.Screens.MainMenu
public override void Show()
{
+ Mouse.SetCursor(MouseCursor.FromTexture2D(assets.Get("cursor"), 256, 256));
Transitions.Add(fat);
base.Show();
}
public override void Draw(SpriteBatch spriteBatch)
{
-
spriteBatch.Draw(background, ScreenSize, Color.White);
book.Draw(spriteBatch);
base.Draw(spriteBatch);
diff --git a/RhythmBullet/Zer01HD/Game/Screens/Transitions/FadeAwayTransition.cs b/RhythmBullet/Zer01HD/Screens/Transitions/FadeAwayTransition.cs
similarity index 97%
rename from RhythmBullet/Zer01HD/Game/Screens/Transitions/FadeAwayTransition.cs
rename to RhythmBullet/Zer01HD/Screens/Transitions/FadeAwayTransition.cs
index 78b0cf3..710bbb5 100644
--- a/RhythmBullet/Zer01HD/Game/Screens/Transitions/FadeAwayTransition.cs
+++ b/RhythmBullet/Zer01HD/Screens/Transitions/FadeAwayTransition.cs
@@ -9,7 +9,7 @@ using System.Linq;
using System.Text;
using System.Threading.Tasks;
-namespace RhythmBullet.Zer01HD.Game.Screens.Transitions
+namespace RhythmBullet.Zer01HD.Screens.Transitions
{
internal class FadeAwayTransition : IDisposable, ITransition
{
diff --git a/RhythmBullet/Zer01HD/Utilities/ContentSystem/ContentSystem.cs b/RhythmBullet/Zer01HD/Utilities/ContentSystem/ContentManagerController.cs
similarity index 89%
rename from RhythmBullet/Zer01HD/Utilities/ContentSystem/ContentSystem.cs
rename to RhythmBullet/Zer01HD/Utilities/ContentSystem/ContentManagerController.cs
index 6a9d4b5..4f85b4c 100644
--- a/RhythmBullet/Zer01HD/Utilities/ContentSystem/ContentSystem.cs
+++ b/RhythmBullet/Zer01HD/Utilities/ContentSystem/ContentManagerController.cs
@@ -11,18 +11,17 @@ using System.Threading.Tasks;
namespace RhythmBullet.Zer01HD.Utilities.ContentSystem
{
- public delegate void ContentSystemUpdate(String fileName, float completed);
-
- public class ContentSystem
+ public class ContentManagerController
{
- public event ContentSystemUpdate ContentSystemListeners;
Thread thread;
readonly ContentManager contentManager;
readonly Queue queue;
Dictionary assets;
public readonly Dictionary contentPathModifier;
volatile float progress;
- public ContentSystem(ContentManager contentManager)
+ volatile bool running;
+
+ public ContentManagerController(ContentManager contentManager)
{
this.contentManager = contentManager;
assets = new Dictionary();
@@ -46,6 +45,7 @@ namespace RhythmBullet.Zer01HD.Utilities.ContentSystem
public T Get(string assetName)
{
+ Console.WriteLine("Attempt get");
lock (queue)
{
return (T)assets[assetName];
@@ -83,6 +83,7 @@ namespace RhythmBullet.Zer01HD.Utilities.ContentSystem
private void LoadBatch()
{
+ running = true;
int totalTasks = queue.Count;
int tasksCompleted = 0;
while (queue.Count != 0)
@@ -93,9 +94,9 @@ namespace RhythmBullet.Zer01HD.Utilities.ContentSystem
Load(content.assetName, content.type, content.usePathModifier);
tasksCompleted++;
progress = (float)tasksCompleted / totalTasks;
- OnProgress(content.assetName, progress);
}
}
+ running = false;
}
///
/// Removes the asset from the list of assets in the system.
@@ -143,15 +144,10 @@ namespace RhythmBullet.Zer01HD.Utilities.ContentSystem
{
get
{
- return queue.Count == 0;
+ return !running && queue.Count == 0;
}
}
- protected virtual void OnProgress(string fileName, float progress)
- {
- ContentSystemListeners?.Invoke(fileName, progress);
- }
-
public float Progress
{
get
diff --git a/RhythmBullet/Zer01HD/Utilities/Persistence/PreferencesManager.cs b/RhythmBullet/Zer01HD/Utilities/Persistence/PreferencesManager.cs
index fc2e718..3c1ffab 100644
--- a/RhythmBullet/Zer01HD/Utilities/Persistence/PreferencesManager.cs
+++ b/RhythmBullet/Zer01HD/Utilities/Persistence/PreferencesManager.cs
@@ -1,14 +1,11 @@
-using RhythmBullet.Zer01HD.Utilities.Persistence;
+using RhythmBullet.Zer01HD.Preferences;
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.IO;
-using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
using System.Xml.Serialization;
-namespace RhythmBullet.Zer01HD.Utilities
+namespace RhythmBullet.Zer01HD.Utilities.Persistence
{
public class PreferencesManager
{
@@ -21,12 +18,13 @@ namespace RhythmBullet.Zer01HD.Utilities
this.savePath = savePath;
Directory.CreateDirectory(savePath);
preferenceList = new Dictionary();
-
+ Debug.WriteLine("Preference manager setting up...");
Type[] preferenceTypes = new Type[preferences.Length];
for (int prefID = 0; prefID < preferences.Length; prefID++)
{
preferenceList.Add(preferences[prefID].GetType(), preferences[prefID]);
preferenceTypes[prefID] = preferences[prefID].GetType();
+ Debug.WriteLine(preferences[prefID] + " added to list of preferences");
}
xmlSerializer = new XmlSerializer(typeof(Preferences), preferenceTypes);
diff --git a/RhythmBullet/Zer01HD/Utilities/ScreenSystem/LoadingScreen.cs b/RhythmBullet/Zer01HD/Utilities/ScreenSystem/LoadingScreen.cs
index d3a8943..ac15ab3 100644
--- a/RhythmBullet/Zer01HD/Utilities/ScreenSystem/LoadingScreen.cs
+++ b/RhythmBullet/Zer01HD/Utilities/ScreenSystem/LoadingScreen.cs
@@ -1,15 +1,17 @@
using Microsoft.Xna.Framework;
+using Microsoft.Xna.Framework.Content;
using Microsoft.Xna.Framework.Graphics;
using System;
using System.Diagnostics;
namespace RhythmBullet.Zer01HD.Utilities.ScreenSystem
{
- class LoadingScreen : Screen, ITransition
+ public class LoadingScreen : Screen, ITransition
{
private const float ENTER_TIME = 2f;
private const float EXIT_TIME = 1f;
+ Game game;
readonly Texture2D texture;
Color color;
Rectangle textureBounds;
@@ -22,12 +24,14 @@ namespace RhythmBullet.Zer01HD.Utilities.ScreenSystem
readonly bool rotate;
Vector2 origin;
- public LoadingScreen(Texture2D texture, float proportion, bool rotate = false) : base(true)
+ public LoadingScreen(Game game, Texture2D screenImage, float proportion, bool rotate = false) : base(true)
{
- this.texture = texture;
+ this.game = game;
+ this.texture = screenImage;
this.proportion = proportion;
this.rotate = rotate;
Transitions.Add(this);
+ game.IsMouseVisible = false;
}
public void InitiateTransition(Rectangle dimensions)
diff --git a/RhythmBullet/Zer01HD/Utilities/ScreenSystem/ScreenManager.cs b/RhythmBullet/Zer01HD/Utilities/ScreenSystem/ScreenManager.cs
index 47683cf..0c7d364 100644
--- a/RhythmBullet/Zer01HD/Utilities/ScreenSystem/ScreenManager.cs
+++ b/RhythmBullet/Zer01HD/Utilities/ScreenSystem/ScreenManager.cs
@@ -10,16 +10,17 @@ using System.Threading.Tasks;
namespace RhythmBullet.Zer01HD.Utilities.ScreenSystem
{
- public delegate void RequireNextScreen(Screen screen);
+ public delegate void FirstScreenChange(Screen screen);
public class ScreenManager : IDisposable
{
- public event RequireNextScreen RequireNextScreenEvent;
+ public event FirstScreenChange RequireNextScreenEvent;
private GraphicsDeviceManager graphics;
private Screen previousScreen;
private RenderTarget2D previousScreenRenderTarget;
private Screen currentScreen;
private Camera2D camera;
+ private bool firstScreenChangeComplete;
public Screen Screen
{
get
@@ -42,7 +43,6 @@ namespace RhythmBullet.Zer01HD.Utilities.ScreenSystem
graphics.GraphicsDevice.Clear(Color.Black);
Debug.WriteLine("Showing " + value.GetType().Name);
- Debug.WriteLine("Previous screen is " + previousScreen?.GetType().Name);
Screen.Show();
}
}
@@ -67,9 +67,10 @@ namespace RhythmBullet.Zer01HD.Utilities.ScreenSystem
case ScreenState.ExitTransition:
if (Screen.UseRenderTargetForExitTransition || Screen.UpdateTransition(gameTime.ElapsedGameTime.TotalSeconds, assetsDone))
{
- if (Screen.NextScreen == null)
+ if (!firstScreenChangeComplete)
{
- OnRequireNextScreen(Screen);
+ firstScreenChangeComplete = true;
+ OnFirstScreenChange(Screen);
}
if (Screen.NextScreen != null)
{
@@ -109,10 +110,10 @@ namespace RhythmBullet.Zer01HD.Utilities.ScreenSystem
spriteBatch.End();
}
- public void Resize(Texture2D loadingScreenSymbol)
+ public void Resize(LoadingScreen loadingScreen)
{
Screen.AssetLoadStateChange(true);
- Screen = new LoadingScreen(loadingScreenSymbol, 0.3f, true);
+ Screen = loadingScreen;
previousScreenRenderTarget.Dispose();
previousScreenRenderTarget = null;
}
@@ -122,7 +123,7 @@ namespace RhythmBullet.Zer01HD.Utilities.ScreenSystem
Screen.AssetLoadStateChange(false);
}
- public void OnRequireNextScreen(Screen screen)
+ public void OnFirstScreenChange(Screen screen)
{
RequireNextScreenEvent?.Invoke(screen);
}