diff --git a/src/Game.cs b/src/Game.cs index 7d31dd2c..835fd8c7 100644 --- a/src/Game.cs +++ b/src/Game.cs @@ -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 moonWorksToRefreshPresentMode = new Dictionary { @@ -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;