refactor and better screen mechanism (probably)
This commit is contained in:
parent
8377bb5ae8
commit
1195b8228a
@ -700,3 +700,15 @@
|
|||||||
/processorParam:TextureFormat=Color
|
/processorParam:TextureFormat=Color
|
||||||
/build:loading_ring.png
|
/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
|
||||||
|
|
||||||
|
BIN
RhythmBullet/Content/cursor.png
Normal file
BIN
RhythmBullet/Content/cursor.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 82 KiB |
@ -47,8 +47,8 @@
|
|||||||
<AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects>
|
<AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<Compile Include="Zer01HD\Game\Screens\MainMenu\MainPage.cs" />
|
<Compile Include="Zer01HD\Screens\MainMenu\MainPage.cs" />
|
||||||
<Compile Include="Zer01HD\Game\Screens\Transitions\FadeAwayTransition.cs" />
|
<Compile Include="Zer01HD\Screens\Transitions\FadeAwayTransition.cs" />
|
||||||
<Compile Include="Zer01HD\Utilities\Camera\Camera2D.cs" />
|
<Compile Include="Zer01HD\Utilities\Camera\Camera2D.cs" />
|
||||||
<Compile Include="Zer01HD\Utilities\ContentSystem\NormalContentResolver.cs" />
|
<Compile Include="Zer01HD\Utilities\ContentSystem\NormalContentResolver.cs" />
|
||||||
<Compile Include="Zer01HD\Utilities\Input\IInputListener.cs" />
|
<Compile Include="Zer01HD\Utilities\Input\IInputListener.cs" />
|
||||||
@ -59,7 +59,7 @@
|
|||||||
<Compile Include="Zer01HD\Utilities\UI\Interactive\BasicButton.cs" />
|
<Compile Include="Zer01HD\Utilities\UI\Interactive\BasicButton.cs" />
|
||||||
<Compile Include="Zer01HD\Utilities\ScreenSystem\ITransition.cs" />
|
<Compile Include="Zer01HD\Utilities\ScreenSystem\ITransition.cs" />
|
||||||
<Compile Include="Zer01HD\Utilities\ScreenSystem\LoadingScreen.cs" />
|
<Compile Include="Zer01HD\Utilities\ScreenSystem\LoadingScreen.cs" />
|
||||||
<Compile Include="Zer01HD\Game\Screens\MainMenu\MainScreen.cs" />
|
<Compile Include="Zer01HD\Screens\MainMenu\MainScreen.cs" />
|
||||||
<Compile Include="Zer01HD\Utilities\UI\Modular\Modules\Image.cs" />
|
<Compile Include="Zer01HD\Utilities\UI\Modular\Modules\Image.cs" />
|
||||||
<Compile Include="Zer01HD\Utilities\UI\Modular\UIModule.cs" />
|
<Compile Include="Zer01HD\Utilities\UI\Modular\UIModule.cs" />
|
||||||
<Compile Include="Zer01HD\Utilities\UI\Modular\UIModuleGroup.cs" />
|
<Compile Include="Zer01HD\Utilities\UI\Modular\UIModuleGroup.cs" />
|
||||||
@ -71,13 +71,13 @@
|
|||||||
<Compile Include="Zer01HD\Utilities\UI\Modular\Modules\Text.cs" />
|
<Compile Include="Zer01HD\Utilities\UI\Modular\Modules\Text.cs" />
|
||||||
<Compile Include="Zer01HD\Utilities\ScreenSystem\Screen.cs" />
|
<Compile Include="Zer01HD\Utilities\ScreenSystem\Screen.cs" />
|
||||||
<Compile Include="Zer01HD\Utilities\ContentSystem\ContentLoad.cs" />
|
<Compile Include="Zer01HD\Utilities\ContentSystem\ContentLoad.cs" />
|
||||||
<Compile Include="Zer01HD\Game\ContentResolvers\FontContentResolver.cs" />
|
<Compile Include="Zer01HD\ContentResolvers\FontContentResolver.cs" />
|
||||||
<Compile Include="Zer01HD\Game\ContentResolvers\ResolutionContentResolver.cs" />
|
<Compile Include="Zer01HD\ContentResolvers\ResolutionContentResolver.cs" />
|
||||||
<Compile Include="Zer01HD\Utilities\ContentSystem\ContentSystem.cs" />
|
<Compile Include="Zer01HD\Utilities\ContentSystem\ContentManagerController.cs" />
|
||||||
<Compile Include="Zer01HD\Utilities\ContentSystem\IContentPathModifier.cs" />
|
<Compile Include="Zer01HD\Utilities\ContentSystem\IContentPathModifier.cs" />
|
||||||
<Compile Include="Zer01HD\Utilities\ParticleSystem\Particle.cs" />
|
<Compile Include="Zer01HD\Utilities\ParticleSystem\Particle.cs" />
|
||||||
<Compile Include="Zer01HD\Game\Preferences\Controls.cs" />
|
<Compile Include="Zer01HD\Preferences\Controls.cs" />
|
||||||
<Compile Include="Zer01HD\Game\Preferences\General.cs" />
|
<Compile Include="Zer01HD\Preferences\General.cs" />
|
||||||
<Compile Include="Zer01HD\Utilities\Persistence\PreferencesManager.cs" />
|
<Compile Include="Zer01HD\Utilities\Persistence\PreferencesManager.cs" />
|
||||||
<Compile Include="Zer01HD\Utilities\DataTypes\Resolution.cs" />
|
<Compile Include="Zer01HD\Utilities\DataTypes\Resolution.cs" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
@ -1,14 +1,15 @@
|
|||||||
using Microsoft.Xna.Framework;
|
using Microsoft.Xna.Framework;
|
||||||
using Microsoft.Xna.Framework.Graphics;
|
using Microsoft.Xna.Framework.Graphics;
|
||||||
using Microsoft.Xna.Framework.Input;
|
using Microsoft.Xna.Framework.Input;
|
||||||
using RhythmBullet.Zer01HD.Game.ContentResolvers;
|
using RhythmBullet.Zer01HD.ContentResolvers;
|
||||||
using RhythmBullet.Zer01HD.Game.Preferences;
|
using RhythmBullet.Zer01HD.Preferences;
|
||||||
using RhythmBullet.Zer01HD.Game.Screens.MainMenu;
|
using RhythmBullet.Zer01HD.Screens.MainMenu;
|
||||||
using RhythmBullet.Zer01HD.Utilities;
|
using RhythmBullet.Zer01HD.Utilities;
|
||||||
using RhythmBullet.Zer01HD.Utilities.Camera;
|
using RhythmBullet.Zer01HD.Utilities.Camera;
|
||||||
using RhythmBullet.Zer01HD.Utilities.ContentSystem;
|
using RhythmBullet.Zer01HD.Utilities.ContentSystem;
|
||||||
using RhythmBullet.Zer01HD.Utilities.DataTypes;
|
using RhythmBullet.Zer01HD.Utilities.DataTypes;
|
||||||
using RhythmBullet.Zer01HD.Utilities.Input;
|
using RhythmBullet.Zer01HD.Utilities.Input;
|
||||||
|
using RhythmBullet.Zer01HD.Utilities.Persistence;
|
||||||
using RhythmBullet.Zer01HD.Utilities.ScreenSystem;
|
using RhythmBullet.Zer01HD.Utilities.ScreenSystem;
|
||||||
using System;
|
using System;
|
||||||
using System.Diagnostics;
|
using System.Diagnostics;
|
||||||
@ -26,18 +27,19 @@ namespace RhythmBullet
|
|||||||
|
|
||||||
GraphicsDeviceManager graphics;
|
GraphicsDeviceManager graphics;
|
||||||
SpriteBatch spriteBatch;
|
SpriteBatch spriteBatch;
|
||||||
public readonly ContentSystem Assets;
|
public readonly ContentManagerController Assets;
|
||||||
readonly ResolutionContentResolver resolutionContentResolver;
|
readonly ResolutionContentResolver resolutionContentResolver;
|
||||||
public PreferencesManager preferencesManager;
|
public PreferencesManager preferencesManager;
|
||||||
private ScreenManager screenManager;
|
private ScreenManager screenManager;
|
||||||
public Camera2D Camera { get; private set; }
|
public Camera2D Camera { get; private set; }
|
||||||
private bool resizing;
|
private bool resizing;
|
||||||
|
private bool initialLoadComplete;
|
||||||
|
private MainScreen mainScreen;
|
||||||
public RhythmBulletGame()
|
public RhythmBulletGame()
|
||||||
{
|
{
|
||||||
graphics = new GraphicsDeviceManager(this);
|
graphics = new GraphicsDeviceManager(this);
|
||||||
Content.RootDirectory = "Content";
|
Content.RootDirectory = "Content";
|
||||||
Assets = new ContentSystem(Content);
|
Assets = new ContentManagerController(Content);
|
||||||
|
|
||||||
resolutionContentResolver = new ResolutionContentResolver();
|
resolutionContentResolver = new ResolutionContentResolver();
|
||||||
FontContentResolver fcr = new FontContentResolver(resolutionContentResolver);
|
FontContentResolver fcr = new FontContentResolver(resolutionContentResolver);
|
||||||
@ -77,9 +79,9 @@ namespace RhythmBullet
|
|||||||
spriteBatch = new SpriteBatch(GraphicsDevice);
|
spriteBatch = new SpriteBatch(GraphicsDevice);
|
||||||
Camera = new Camera2D(graphics.GraphicsDevice);
|
Camera = new Camera2D(graphics.GraphicsDevice);
|
||||||
screenManager = new ScreenManager(graphics, Camera);
|
screenManager = new ScreenManager(graphics, Camera);
|
||||||
screenManager.RequireNextScreenEvent += ExitTransitionComplete;
|
screenManager.RequireNextScreenEvent += RequireNextScreen;
|
||||||
QueueContent();
|
QueueContent();
|
||||||
screenManager.Screen = new LoadingScreen(Content.Load<Texture2D>("RhythmBullet"), 0.7f);
|
screenManager.Screen = new LoadingScreen(this, Content.Load<Texture2D>("RhythmBullet"), 0.7f);
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
@ -106,6 +108,11 @@ namespace RhythmBullet
|
|||||||
{
|
{
|
||||||
resizing = false;
|
resizing = false;
|
||||||
PostResize();
|
PostResize();
|
||||||
|
} else if (!initialLoadComplete)
|
||||||
|
{
|
||||||
|
Console.WriteLine("Initial load complete.");
|
||||||
|
initialLoadComplete = true;
|
||||||
|
mainScreen = new MainScreen(Assets);
|
||||||
}
|
}
|
||||||
|
|
||||||
screenManager.UpdateCurrentScreen(gameTime, Assets.Done);
|
screenManager.UpdateCurrentScreen(gameTime, Assets.Done);
|
||||||
@ -135,7 +142,7 @@ namespace RhythmBullet
|
|||||||
resizing = true;
|
resizing = true;
|
||||||
Assets.UnloadAll();
|
Assets.UnloadAll();
|
||||||
QueueContent();
|
QueueContent();
|
||||||
screenManager.Resize(Content.Load<Texture2D>("loading_ring"));
|
screenManager.Resize(new LoadingScreen(this, Content.Load<Texture2D>("loading_ring"), 0.4f));
|
||||||
}
|
}
|
||||||
|
|
||||||
private void PostResize()
|
private void PostResize()
|
||||||
@ -146,14 +153,15 @@ namespace RhythmBullet
|
|||||||
|
|
||||||
private void QueueContent()
|
private void QueueContent()
|
||||||
{
|
{
|
||||||
|
Assets.Queue<Texture2D>("cursor", false);
|
||||||
Assets.Queue<Texture2D>("title");
|
Assets.Queue<Texture2D>("title");
|
||||||
Assets.Queue<Texture2D>("default_cover", false);
|
Assets.Queue<Texture2D>("default_cover", false);
|
||||||
Assets.Queue<Texture2D>("backgrounds/mainBG");
|
Assets.Queue<Texture2D>("backgrounds/mainBG");
|
||||||
}
|
}
|
||||||
|
|
||||||
private void ExitTransitionComplete(Screen Screen)
|
private void RequireNextScreen(Screen Screen)
|
||||||
{
|
{
|
||||||
Screen.NextScreen = new MainScreen(Assets);
|
Screen.NextScreen = mainScreen;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -5,7 +5,7 @@ using System.Linq;
|
|||||||
using System.Text;
|
using System.Text;
|
||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
namespace RhythmBullet.Zer01HD.Game.ContentResolvers
|
namespace RhythmBullet.Zer01HD.ContentResolvers
|
||||||
{
|
{
|
||||||
class FontContentResolver : IContentPathModifier
|
class FontContentResolver : IContentPathModifier
|
||||||
{
|
{
|
@ -1,4 +1,4 @@
|
|||||||
using RhythmBullet.Zer01HD.Game.Preferences;
|
using RhythmBullet.Zer01HD.Preferences;
|
||||||
using RhythmBullet.Zer01HD.Utilities;
|
using RhythmBullet.Zer01HD.Utilities;
|
||||||
using RhythmBullet.Zer01HD.Utilities.ContentSystem;
|
using RhythmBullet.Zer01HD.Utilities.ContentSystem;
|
||||||
using RhythmBullet.Zer01HD.Utilities.DataTypes;
|
using RhythmBullet.Zer01HD.Utilities.DataTypes;
|
||||||
@ -8,7 +8,7 @@ using System.Linq;
|
|||||||
using System.Text;
|
using System.Text;
|
||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
namespace RhythmBullet.Zer01HD.Game.ContentResolvers
|
namespace RhythmBullet.Zer01HD.ContentResolvers
|
||||||
{
|
{
|
||||||
class ResolutionContentResolver : IContentPathModifier
|
class ResolutionContentResolver : IContentPathModifier
|
||||||
{
|
{
|
@ -1,7 +1,7 @@
|
|||||||
using Microsoft.Xna.Framework.Input;
|
using Microsoft.Xna.Framework.Input;
|
||||||
using RhythmBullet.Zer01HD.Utilities.Persistence;
|
using RhythmBullet.Zer01HD.Utilities.Persistence;
|
||||||
|
|
||||||
namespace RhythmBullet.Zer01HD.Game.Preferences
|
namespace RhythmBullet.Zer01HD.Preferences
|
||||||
{
|
{
|
||||||
public class Controls : Utilities.Persistence.Preferences
|
public class Controls : Utilities.Persistence.Preferences
|
||||||
{
|
{
|
@ -3,7 +3,7 @@ using System.Xml.Serialization;
|
|||||||
using RhythmBullet.Zer01HD.Utilities.DataTypes;
|
using RhythmBullet.Zer01HD.Utilities.DataTypes;
|
||||||
using RhythmBullet.Zer01HD.Utilities.Persistence;
|
using RhythmBullet.Zer01HD.Utilities.Persistence;
|
||||||
|
|
||||||
namespace RhythmBullet.Zer01HD.Game.Preferences
|
namespace RhythmBullet.Zer01HD.Preferences
|
||||||
{
|
{
|
||||||
public class General : Utilities.Persistence.Preferences
|
public class General : Utilities.Persistence.Preferences
|
||||||
{
|
{
|
@ -4,12 +4,12 @@ using RhythmBullet.Zer01HD.UI.Book;
|
|||||||
using RhythmBullet.Zer01HD.Utilities.ContentSystem;
|
using RhythmBullet.Zer01HD.Utilities.ContentSystem;
|
||||||
using RhythmBullet.Zer01HD.Utilities.UI.Modular.Modules;
|
using RhythmBullet.Zer01HD.Utilities.UI.Modular.Modules;
|
||||||
|
|
||||||
namespace RhythmBullet.Zer01HD.Game.Screens.MainMenu
|
namespace RhythmBullet.Zer01HD.Screens.MainMenu
|
||||||
{
|
{
|
||||||
internal class MainPage : Page
|
internal class MainPage : Page
|
||||||
{
|
{
|
||||||
Image title;
|
Image title;
|
||||||
internal MainPage(ContentSystem assets) : base(0, 0)
|
internal MainPage(ContentManagerController assets) : base(0, 0)
|
||||||
{
|
{
|
||||||
title = new Image(assets.Get<Texture2D>("title"));
|
title = new Image(assets.Get<Texture2D>("title"));
|
||||||
AddModule(title);
|
AddModule(title);
|
@ -1,29 +1,28 @@
|
|||||||
using Microsoft.Xna.Framework;
|
|
||||||
|
|
||||||
|
using Microsoft.Xna.Framework;
|
||||||
using Microsoft.Xna.Framework.Graphics;
|
using Microsoft.Xna.Framework.Graphics;
|
||||||
using RhythmBullet.Zer01HD.Game.Screens.Transitions;
|
using Microsoft.Xna.Framework.Input;
|
||||||
using RhythmBullet.Zer01HD.UI;
|
using RhythmBullet.Zer01HD.Screens.Transitions;
|
||||||
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 RhythmBullet.Zer01HD.UI.Book;
|
using RhythmBullet.Zer01HD.UI.Book;
|
||||||
using RhythmBullet.Zer01HD.Utilities.Camera;
|
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
|
class MainScreen : Screen
|
||||||
{
|
{
|
||||||
|
ContentManagerController assets;
|
||||||
FadeAwayTransition fat;
|
FadeAwayTransition fat;
|
||||||
Texture2D background;
|
Texture2D background;
|
||||||
Book book;
|
Book book;
|
||||||
MainPage mainPage;
|
MainPage mainPage;
|
||||||
public MainScreen(ContentSystem assets) : base(true)
|
|
||||||
|
public MainScreen(ContentManagerController assets) : base(true)
|
||||||
{
|
{
|
||||||
|
this.assets = assets;
|
||||||
background = assets.Get<Texture2D>("backgrounds/mainBG");
|
background = assets.Get<Texture2D>("backgrounds/mainBG");
|
||||||
fat = new FadeAwayTransition(1.5f);
|
fat = new FadeAwayTransition(1.5f);
|
||||||
book = new Book();
|
book = new Book();
|
||||||
@ -39,13 +38,13 @@ namespace RhythmBullet.Zer01HD.Game.Screens.MainMenu
|
|||||||
|
|
||||||
public override void Show()
|
public override void Show()
|
||||||
{
|
{
|
||||||
|
Mouse.SetCursor(MouseCursor.FromTexture2D(assets.Get<Texture2D>("cursor"), 256, 256));
|
||||||
Transitions.Add(fat);
|
Transitions.Add(fat);
|
||||||
base.Show();
|
base.Show();
|
||||||
}
|
}
|
||||||
|
|
||||||
public override void Draw(SpriteBatch spriteBatch)
|
public override void Draw(SpriteBatch spriteBatch)
|
||||||
{
|
{
|
||||||
|
|
||||||
spriteBatch.Draw(background, ScreenSize, Color.White);
|
spriteBatch.Draw(background, ScreenSize, Color.White);
|
||||||
book.Draw(spriteBatch);
|
book.Draw(spriteBatch);
|
||||||
base.Draw(spriteBatch);
|
base.Draw(spriteBatch);
|
@ -9,7 +9,7 @@ using System.Linq;
|
|||||||
using System.Text;
|
using System.Text;
|
||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
namespace RhythmBullet.Zer01HD.Game.Screens.Transitions
|
namespace RhythmBullet.Zer01HD.Screens.Transitions
|
||||||
{
|
{
|
||||||
internal class FadeAwayTransition : IDisposable, ITransition
|
internal class FadeAwayTransition : IDisposable, ITransition
|
||||||
{
|
{
|
@ -11,18 +11,17 @@ using System.Threading.Tasks;
|
|||||||
|
|
||||||
namespace RhythmBullet.Zer01HD.Utilities.ContentSystem
|
namespace RhythmBullet.Zer01HD.Utilities.ContentSystem
|
||||||
{
|
{
|
||||||
public delegate void ContentSystemUpdate(String fileName, float completed);
|
public class ContentManagerController
|
||||||
|
|
||||||
public class ContentSystem
|
|
||||||
{
|
{
|
||||||
public event ContentSystemUpdate ContentSystemListeners;
|
|
||||||
Thread thread;
|
Thread thread;
|
||||||
readonly ContentManager contentManager;
|
readonly ContentManager contentManager;
|
||||||
readonly Queue<LoadableContent> queue;
|
readonly Queue<LoadableContent> queue;
|
||||||
Dictionary<string, IDisposable> assets;
|
Dictionary<string, IDisposable> assets;
|
||||||
public readonly Dictionary<Type, IContentPathModifier> contentPathModifier;
|
public readonly Dictionary<Type, IContentPathModifier> contentPathModifier;
|
||||||
volatile float progress;
|
volatile float progress;
|
||||||
public ContentSystem(ContentManager contentManager)
|
volatile bool running;
|
||||||
|
|
||||||
|
public ContentManagerController(ContentManager contentManager)
|
||||||
{
|
{
|
||||||
this.contentManager = contentManager;
|
this.contentManager = contentManager;
|
||||||
assets = new Dictionary<string, IDisposable>();
|
assets = new Dictionary<string, IDisposable>();
|
||||||
@ -46,6 +45,7 @@ namespace RhythmBullet.Zer01HD.Utilities.ContentSystem
|
|||||||
|
|
||||||
public T Get<T>(string assetName)
|
public T Get<T>(string assetName)
|
||||||
{
|
{
|
||||||
|
Console.WriteLine("Attempt get");
|
||||||
lock (queue)
|
lock (queue)
|
||||||
{
|
{
|
||||||
return (T)assets[assetName];
|
return (T)assets[assetName];
|
||||||
@ -83,6 +83,7 @@ namespace RhythmBullet.Zer01HD.Utilities.ContentSystem
|
|||||||
|
|
||||||
private void LoadBatch()
|
private void LoadBatch()
|
||||||
{
|
{
|
||||||
|
running = true;
|
||||||
int totalTasks = queue.Count;
|
int totalTasks = queue.Count;
|
||||||
int tasksCompleted = 0;
|
int tasksCompleted = 0;
|
||||||
while (queue.Count != 0)
|
while (queue.Count != 0)
|
||||||
@ -93,9 +94,9 @@ namespace RhythmBullet.Zer01HD.Utilities.ContentSystem
|
|||||||
Load(content.assetName, content.type, content.usePathModifier);
|
Load(content.assetName, content.type, content.usePathModifier);
|
||||||
tasksCompleted++;
|
tasksCompleted++;
|
||||||
progress = (float)tasksCompleted / totalTasks;
|
progress = (float)tasksCompleted / totalTasks;
|
||||||
OnProgress(content.assetName, progress);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
running = false;
|
||||||
}
|
}
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Removes the asset from the list of assets in the system.
|
/// Removes the asset from the list of assets in the system.
|
||||||
@ -143,15 +144,10 @@ namespace RhythmBullet.Zer01HD.Utilities.ContentSystem
|
|||||||
{
|
{
|
||||||
get
|
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
|
public float Progress
|
||||||
{
|
{
|
||||||
get
|
get
|
@ -1,14 +1,11 @@
|
|||||||
using RhythmBullet.Zer01HD.Utilities.Persistence;
|
using RhythmBullet.Zer01HD.Preferences;
|
||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Diagnostics;
|
using System.Diagnostics;
|
||||||
using System.IO;
|
using System.IO;
|
||||||
using System.Linq;
|
|
||||||
using System.Text;
|
|
||||||
using System.Threading.Tasks;
|
|
||||||
using System.Xml.Serialization;
|
using System.Xml.Serialization;
|
||||||
|
|
||||||
namespace RhythmBullet.Zer01HD.Utilities
|
namespace RhythmBullet.Zer01HD.Utilities.Persistence
|
||||||
{
|
{
|
||||||
public class PreferencesManager
|
public class PreferencesManager
|
||||||
{
|
{
|
||||||
@ -21,12 +18,13 @@ namespace RhythmBullet.Zer01HD.Utilities
|
|||||||
this.savePath = savePath;
|
this.savePath = savePath;
|
||||||
Directory.CreateDirectory(savePath);
|
Directory.CreateDirectory(savePath);
|
||||||
preferenceList = new Dictionary<Type, Preferences>();
|
preferenceList = new Dictionary<Type, Preferences>();
|
||||||
|
Debug.WriteLine("Preference manager setting up...");
|
||||||
Type[] preferenceTypes = new Type[preferences.Length];
|
Type[] preferenceTypes = new Type[preferences.Length];
|
||||||
for (int prefID = 0; prefID < preferences.Length; prefID++)
|
for (int prefID = 0; prefID < preferences.Length; prefID++)
|
||||||
{
|
{
|
||||||
preferenceList.Add(preferences[prefID].GetType(), preferences[prefID]);
|
preferenceList.Add(preferences[prefID].GetType(), preferences[prefID]);
|
||||||
preferenceTypes[prefID] = preferences[prefID].GetType();
|
preferenceTypes[prefID] = preferences[prefID].GetType();
|
||||||
|
Debug.WriteLine(preferences[prefID] + " added to list of preferences");
|
||||||
}
|
}
|
||||||
|
|
||||||
xmlSerializer = new XmlSerializer(typeof(Preferences), preferenceTypes);
|
xmlSerializer = new XmlSerializer(typeof(Preferences), preferenceTypes);
|
||||||
|
@ -1,15 +1,17 @@
|
|||||||
|
|
||||||
using Microsoft.Xna.Framework;
|
using Microsoft.Xna.Framework;
|
||||||
|
using Microsoft.Xna.Framework.Content;
|
||||||
using Microsoft.Xna.Framework.Graphics;
|
using Microsoft.Xna.Framework.Graphics;
|
||||||
using System;
|
using System;
|
||||||
using System.Diagnostics;
|
using System.Diagnostics;
|
||||||
|
|
||||||
namespace RhythmBullet.Zer01HD.Utilities.ScreenSystem
|
namespace RhythmBullet.Zer01HD.Utilities.ScreenSystem
|
||||||
{
|
{
|
||||||
class LoadingScreen : Screen, ITransition
|
public class LoadingScreen : Screen, ITransition
|
||||||
{
|
{
|
||||||
private const float ENTER_TIME = 2f;
|
private const float ENTER_TIME = 2f;
|
||||||
private const float EXIT_TIME = 1f;
|
private const float EXIT_TIME = 1f;
|
||||||
|
Game game;
|
||||||
readonly Texture2D texture;
|
readonly Texture2D texture;
|
||||||
Color color;
|
Color color;
|
||||||
Rectangle textureBounds;
|
Rectangle textureBounds;
|
||||||
@ -22,12 +24,14 @@ namespace RhythmBullet.Zer01HD.Utilities.ScreenSystem
|
|||||||
readonly bool rotate;
|
readonly bool rotate;
|
||||||
Vector2 origin;
|
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.proportion = proportion;
|
||||||
this.rotate = rotate;
|
this.rotate = rotate;
|
||||||
Transitions.Add(this);
|
Transitions.Add(this);
|
||||||
|
game.IsMouseVisible = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void InitiateTransition(Rectangle dimensions)
|
public void InitiateTransition(Rectangle dimensions)
|
||||||
|
@ -10,16 +10,17 @@ using System.Threading.Tasks;
|
|||||||
|
|
||||||
namespace RhythmBullet.Zer01HD.Utilities.ScreenSystem
|
namespace RhythmBullet.Zer01HD.Utilities.ScreenSystem
|
||||||
{
|
{
|
||||||
public delegate void RequireNextScreen(Screen screen);
|
public delegate void FirstScreenChange(Screen screen);
|
||||||
|
|
||||||
public class ScreenManager : IDisposable
|
public class ScreenManager : IDisposable
|
||||||
{
|
{
|
||||||
public event RequireNextScreen RequireNextScreenEvent;
|
public event FirstScreenChange RequireNextScreenEvent;
|
||||||
private GraphicsDeviceManager graphics;
|
private GraphicsDeviceManager graphics;
|
||||||
private Screen previousScreen;
|
private Screen previousScreen;
|
||||||
private RenderTarget2D previousScreenRenderTarget;
|
private RenderTarget2D previousScreenRenderTarget;
|
||||||
private Screen currentScreen;
|
private Screen currentScreen;
|
||||||
private Camera2D camera;
|
private Camera2D camera;
|
||||||
|
private bool firstScreenChangeComplete;
|
||||||
public Screen Screen
|
public Screen Screen
|
||||||
{
|
{
|
||||||
get
|
get
|
||||||
@ -42,7 +43,6 @@ namespace RhythmBullet.Zer01HD.Utilities.ScreenSystem
|
|||||||
graphics.GraphicsDevice.Clear(Color.Black);
|
graphics.GraphicsDevice.Clear(Color.Black);
|
||||||
|
|
||||||
Debug.WriteLine("Showing " + value.GetType().Name);
|
Debug.WriteLine("Showing " + value.GetType().Name);
|
||||||
Debug.WriteLine("Previous screen is " + previousScreen?.GetType().Name);
|
|
||||||
Screen.Show();
|
Screen.Show();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -67,9 +67,10 @@ namespace RhythmBullet.Zer01HD.Utilities.ScreenSystem
|
|||||||
case ScreenState.ExitTransition:
|
case ScreenState.ExitTransition:
|
||||||
if (Screen.UseRenderTargetForExitTransition || Screen.UpdateTransition(gameTime.ElapsedGameTime.TotalSeconds, assetsDone))
|
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)
|
if (Screen.NextScreen != null)
|
||||||
{
|
{
|
||||||
@ -109,10 +110,10 @@ namespace RhythmBullet.Zer01HD.Utilities.ScreenSystem
|
|||||||
spriteBatch.End();
|
spriteBatch.End();
|
||||||
}
|
}
|
||||||
|
|
||||||
public void Resize(Texture2D loadingScreenSymbol)
|
public void Resize(LoadingScreen loadingScreen)
|
||||||
{
|
{
|
||||||
Screen.AssetLoadStateChange(true);
|
Screen.AssetLoadStateChange(true);
|
||||||
Screen = new LoadingScreen(loadingScreenSymbol, 0.3f, true);
|
Screen = loadingScreen;
|
||||||
previousScreenRenderTarget.Dispose();
|
previousScreenRenderTarget.Dispose();
|
||||||
previousScreenRenderTarget = null;
|
previousScreenRenderTarget = null;
|
||||||
}
|
}
|
||||||
@ -122,7 +123,7 @@ namespace RhythmBullet.Zer01HD.Utilities.ScreenSystem
|
|||||||
Screen.AssetLoadStateChange(false);
|
Screen.AssetLoadStateChange(false);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void OnRequireNextScreen(Screen screen)
|
public void OnFirstScreenChange(Screen screen)
|
||||||
{
|
{
|
||||||
RequireNextScreenEvent?.Invoke(screen);
|
RequireNextScreenEvent?.Invoke(screen);
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user