forked from MoonsideGames/MoonWorks
game state now changes on next update
parent
9862bfd0a0
commit
0e8188682e
14
src/Game.cs
14
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<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;
|
||||
|
|
Loading…
Reference in New Issue