game state now changes on next update

main
cosmonaut 2022-05-23 19:12:27 -07:00
parent 9862bfd0a0
commit 0e8188682e
1 changed files with 11 additions and 3 deletions

View File

@ -31,7 +31,9 @@ namespace MoonWorks
public AudioDevice AudioDevice { get; }
public Inputs Inputs { get; }
// FIXME: maybe the user should just manage this stuff
private GameState GameState = null;
private GameState NextState = null;
private Dictionary<PresentMode, RefreshCS.Refresh.PresentMode> moonWorksToRefreshPresentMode = new Dictionary<PresentMode, RefreshCS.Refresh.PresentMode>
{
@ -80,7 +82,7 @@ namespace MoonWorks
public void Run()
{
#if DEBUG
if (GameState == null)
if (NextState == null)
{
throw new NullReferenceException("Must call SetState before Run!");
}
@ -100,8 +102,7 @@ namespace MoonWorks
public void SetState(GameState gameState)
{
GameState = gameState;
GameState.Start();
NextState = gameState;
}
private void Tick()
@ -149,6 +150,13 @@ namespace MoonWorks
Inputs.Update();
AudioDevice.Update();
if (NextState != null)
{
GameState = NextState;
GameState.Start();
NextState = null;
}
GameState.Update(timestep);
accumulatedElapsedTime -= timestep;