/// <summary> /// Initializes the State /// </summary> public override void Initialize() { gTargetState = eGameState.gsGame; eCurrentMap = eMapState.ssMain; mMainMap = new MainMap(); }
/// <summary> /// Changes the current Map State if it's not equal to the target State /// </summary> /// <param name="mState">Map State to be disposed</param> private void DisposeState(MapState mState) { if (eTargetMap != eCurrentMap) { ePreviousMap = eCurrentMap; eCurrentMap = eTargetMap; } }
/// <summary> /// Initializes a Map State when the Map State just changed /// </summary> /// <param name="mState">Map State to be initialized</param> private void InitializeState(MapState mState) { if (ePreviousMap != eCurrentMap) { mState.Initialize(); ePreviousMap = eCurrentMap; } }
/// <summary> /// Updates the State and manages Maps /// </summary> /// <param name="rWindow">Needed to Calculate MousePosition from its origin</param> /// <returns>gTargetState</returns> public override eGameState Update(RenderWindow rWindow) { switch (eCurrentMap) { case eMapState.ssMain: InitializeState(mMainMap); eTargetMap = mMainMap.Update(rWindow); DisposeState(mMainMap); break; } if (Player.GetHealth() <= 0) { gTargetState = eGameState.gsGameOver; } return(gTargetState); }