public void SwitchState(SpaceInvaders pGame, GameStateManager.GameState nextState) { // Detach current state input observers pGame.DetachStateInputObservers(); // Queue any Time Events for later TimeEvent pTimeEvent = TimerManager.Pop(); while (pTimeEvent != null) { this.GetQueuedTimeEventManager().Enqueue(pTimeEvent.GetName(), pTimeEvent.GetCommand(), pTimeEvent.GetDeltaTime()); pTimeEvent = TimerManager.Pop(); } // Change game state pGame.SetGameState(nextState); // Load up TimerManager with next state's Time Events QueuedTimeEvent qte = pGame.GetStateQueuedTimeEventManager().Dequeue(); while (qte != null) { TimerManager.Add(qte.GetTimeEventName(), qte.GetCommand(), qte.GetTimeEventDelta()); // Get next queued event qte = pGame.GetStateQueuedTimeEventManager().Dequeue(); } // Attach next state input observers pGame.AttachStateInputObservers(); }
public override void Handle() { //handle is called before entering gamestate loops //fight the wave if (bWaveFinished == false) { Debug.WriteLine("Wave 1"); Debug.WriteLine("-----------------------------------------------------------------"); // De-activate sprite batch SpriteBatch pIntroScreen = SpriteBatchMan.Find(SpriteBatch.Name.IntroScreen); pIntroScreen.bToggle = false; this.bWaveFinished = true; LoadContent(); //Update(); } // wave is finished go to the next one else { Debug.WriteLine("Wave 2"); Debug.WriteLine("-----------------------------------------------------------------"); this.bWaveFinished = false; SpaceInvaders pGame = GameMan.GetGame(); pGame.SetGameState(GameMan.State.LVL2); pGame.GetCurrentState().Handle(); } }
public override void Handle() { //when the person makes the choice we change states // then call the handle() SpaceInvaders pGame = GameMan.GetGame(); pGame.SetGameState(GameMan.State.InGame); pGame.GetCurrentState().Handle(); }
//this will be called if a wave is completed for better or worse public override void Execute(float deltaTime) { SpaceInvaders pGame = GameMan.GetGame(); if (wonOrLost == true) { pGame.GetCurrentState().Handle(); } else { pGame.SetGameState(GameMan.State.GameOver); pGame.GetCurrentState().Handle(); } }
public override void Handle() { //handle is called before entering gamestate loops //fight the wave if (bWaveFinished == false) { this.bWaveFinished = true; LoadContent(); } //wave complete and go to game over screen else { this.bWaveFinished = false; SpaceInvaders pGame = GameMan.GetGame(); pGame.SetGameState(GameMan.State.GameOver); pGame.GetCurrentState().Handle(); } }
public override void Update() { //first time through set a time to change states if (this.bStateToggle == true) { //inititally used the game to get time //Testing timer man //could use Timer Man for current time float curTime = TimerMan.GetCurrentTime(); this.ChangeStateTime = curTime + 10; this.bStateToggle = false; } else { SpaceInvaders pGame = GameMan.GetGame(); //time has elapsed start over if (this.ChangeStateTime <= pGame.GetTime()) { this.bStateToggle = true; SpriteBatch pSB_Intro = SpriteBatchMan.Find(SpriteBatch.Name.IntroScreen); pSB_Intro.bToggle = true; SpriteBatch pGameOverScreen = SpriteBatchMan.Find(SpriteBatch.Name.GameOver); pGameOverScreen.bToggle = false; //SpriteBatch pSB_Splats = SpriteBatchMan.Find(SpriteBatch.Name.Splats); //pSB_Splats.bToggle = false; //---------------------------------------------------------------------------------------------------- //Things we need to reset for the Next game? //---------------------------------------------------------------------------------------------------- // need to remove ship from its root GameObject pShipRoot = GONodeMan.Find(GameObject.Name.ShipRoot); GameObject pShip = (GameObject)pShipRoot.GetFirstChild(); if (pShip != null) { pShip.Remove(); } ShipMan.Destroy(); GraveyardMan.KillAll(); //GraveyardMan.DumpNodes(); GraveyardMan.Destroy(); TimerMan.ClearActiveList(); TimerMan.DumpTimeEvents(); AlienGroup pAlienGroup = (AlienGroup)GONodeMan.Find(GameObject.Name.AlienGrid); pAlienGroup.SetDeltaMove(15.0f); SpriteBatch pSB_Projectiles = SpriteBatchMan.Find(SpriteBatch.Name.Projectiles); pSB_Projectiles.bToggle = false; //---------------------------------------------------------------------------------------------------- pGame.SetGameState(GameMan.State.Intro); pGame.GetCurrentState().Update(); } } }