示例#1
0
        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();
        }
示例#2
0
        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();
            }
        }
示例#3
0
        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();
            }
        }
示例#6
0
        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();
                }
            }
        }