Exemple #1
0
        public bool UpdateWorld(float DT)
        {
            mPrevInput = mInput;
                mInput = Keyboard.GetState();
                if (mInput.IsKeyDown(Keys.P) && mPrevInput.IsKeyUp(Keys.P) && !isPaused && !Player.IsDead() || mInput.IsKeyDown(Keys.Escape) && mPrevInput.IsKeyUp(Keys.Escape) && !isPaused && !Player.IsDead())
                {
                    isPaused = true;
                    aaDisplay.aaGame.IsMouseVisible = true;
                    PausedPlaque = new UIElement_StaticMenuElement(aaDisplay, this, mKit_Paused.ASSET_NAME, 540, 320, (int)mKit_Paused.ORIGIN.X, (int)mKit_Paused.ORIGIN.Y, Constants.LAYER_UI_FRONT, mKit_Paused.SRC_RECTX, mKit_Paused.SRC_RECTY, mKit_Paused.SRC_RECTWIDTH, mKit_Paused.SRC_RECTHEIGHT, 0.0f);
                    aaDisplay.AddMenuUIElement(PausedPlaque);
                }
                else if (mInput.IsKeyDown(Keys.P) && mPrevInput.IsKeyUp(Keys.P) && isPaused || mInput.IsKeyDown(Keys.Escape) && mPrevInput.IsKeyUp(Keys.Escape) && isPaused)
                {
                    isPaused = false;
                    aaDisplay.aaGame.IsMouseVisible = false;
                    PausedPlaque.MenuDestroy();
                    PausedPlaque = null;
                }

                if (!isPaused)
                {
                    mAiDirector.Update(DT);

                    if (mAiDirector.DoneSpawning() && mAiDirector.mTotalEnemies <= mEnemiesKilled)
                    {
                        if (!waveResting)
                        {
                            waveResting = true;
                        }

                        if (waveResting)
                        {
                            waveRested += DT;
                        }

                        if (waveRested >= waveRestDuration)
                        {
                            waveIndicator.Show();
                            waveResting = false;
                            waveRested = 0.0f;
                            mEnemiesKilled = 0;
                            mCurrentWave++;
                            mAiDirector.StartWave(mCurrentWave);
                        }
                    }

                    foreach (Entity e in mToSpawnEntityList)
                    {
                        mEntityList.Add(e);
                    }
                    mToSpawnEntityList.Clear();

                    foreach (Entity e in mEntityList)
                    {
                        e.Update(DT);
                    }

                    foreach (Projectile p in mProjectileList)
                    {
                        p.Update(DT);
                    }

                    foreach (Projectile p in mProjDeadList)
                    {
                        if (!mProjectileList.Remove(p))
                        {
                            if (mProjectileList.Contains(p))
                            {
                                // Console.WriteLine("But the projectile list contains p");
                            }
                        }
                        mRemovedProjectileList.Add(p);

                        if (p.mCollisionType == CollisionType.Point)
                        {
                            CollisionShapes_Points.Remove(p.mCollision as PointCollision);
                        }
                        else if (p.mCollisionType == CollisionType.Circle)
                        {
                            CollisionShapes_Circle.Remove(p.mCollision as CircleCollision);
                        }

                        p.mDispObject.Hide();
                        /*
                        if (p.mDispObject != null)
                        {
                            Console.WriteLine("Display object not null, removing it");
                            p.mDispObject.Destroy();
                            aaDisplay.mDisplayObjects.Remove(p.mDispObject);
                            p.mDispObject = null;
                        }
                        p.aaGameWorld.aaDisplay.mDisplayObjects.Remove(p.mDispObject);*/
                    }
                    mProjDeadList.Clear();

                    foreach (Entity e in mEntityDeadList)
                    {
                        if (e != null)
                        {
                            if (e is Ship)
                            {
                                Ship s = e as Ship;

                                if (!Player.IsDead())
                                {
                                    mPoints += s.mKit.POINTS;
                                }
                                if (s.mTeam == Constants.ENEMY_TEAM)
                                {
                                    mEnemiesKilled++;
                                    if (s.mType == "Grunt_Boss" || s.mType == "Tank_Boss" || s.mType == "Bomb_Boss")
                                    {
                                        if (Player.FireBullet as Ability_FireBullet != null)
                                        {
                                            AssetKit_Tier2Pickup mAssetKit = new AssetKit_Tier2Pickup();
                                            mPickups.Add(new DualShotPickup(aaDisplay, this, mAssetKit.ASSET_NAME, new Vector2(s.mXPos, s.mYPos), mAssetKit.ORIGIN, Constants.LAYER_ENTITY_DEPTH, new Rectangle(mAssetKit.SRC_RECTX, mAssetKit.SRC_RECTY, mAssetKit.SRC_RECTWIDTH, mAssetKit.SRC_RECTHEIGHT), 0));
                                        }
                                        else if (Player.FireBullet as Ability_ShootTier2 != null)
                                        {
                                            AssetKit_Tier3Pickup mAssetKit = new AssetKit_Tier3Pickup();
                                            mPickups.Add(new TriShotPickup(aaDisplay, this, mAssetKit.ASSET_NAME, new Vector2(s.mXPos, s.mYPos), mAssetKit.ORIGIN, Constants.LAYER_ENTITY_DEPTH, new Rectangle(mAssetKit.SRC_RECTX, mAssetKit.SRC_RECTY, mAssetKit.SRC_RECTWIDTH, mAssetKit.SRC_RECTHEIGHT), 0));
                                        }
                                        else if (Player.FireBullet as Ability_ShootTier3 != null)
                                        {
                                            AssetKit_Tier4Pickup mAssetKit = new AssetKit_Tier4Pickup();
                                            mPickups.Add(new QuadShotPickup(aaDisplay, this, mAssetKit.ASSET_NAME, new Vector2(s.mXPos, s.mYPos), mAssetKit.ORIGIN, Constants.LAYER_ENTITY_DEPTH, new Rectangle(mAssetKit.SRC_RECTX, mAssetKit.SRC_RECTY, mAssetKit.SRC_RECTWIDTH, mAssetKit.SRC_RECTHEIGHT), 0));
                                        }
                                    }
                                    else
                                    {
                                        if (mRand.NextDouble() <= 0.02)
                                        {
                                            AssetKit_HealthPickup mAssetKit = new AssetKit_HealthPickup();
                                            mPickups.Add(new HealthPickup(aaDisplay, this, mAssetKit.ASSET_NAME, new Vector2(s.mXPos, s.mYPos), mAssetKit.ORIGIN, Constants.LAYER_ENTITY_DEPTH, new Rectangle(mAssetKit.SRC_RECTX, mAssetKit.SRC_RECTY, mAssetKit.SRC_RECTWIDTH, mAssetKit.SRC_RECTHEIGHT), 0));
                                        }
                                    }
                                }
                                s.Destroy();
                            }

                            aaDisplay.mDisplayObjects.Remove(e.mDispObj);
                            mEntityList.Remove(e);
                        }
                    }
                    mEntityDeadList.Clear();

                    ResolveWorldCollisions();

                    aaGFXHandler.Update(DT);

                    aaDisplay.aaCamera.ChangeFocus(Player.mXPos, Player.mYPos);
                    aaDisplay.aaCamera.Update(DT);

                    foreach (UIElement e in aaDisplay.mUIElements)
                    {
                        e.Update(DT);
                    }
                    foreach (UIElement e in aaDisplay.mMenuUIElements)
                    {
                        e.Update(DT);
                    }

                    if (Player.IsDead())
                    {
                        aaDisplay.aaGame.IsMouseVisible = true;

                        if (ScoreTextBox == null)
                        {
                            ScoreTextBox = new UIElement_ScoreTextBox(aaDisplay, this, 340, 315);
                        }
                        if (UnlockText == null)
                        {
                            UnlockText = new UIElement_Text(aaDisplay, this, aaDisplay.aaGame.mTextboxFont, 480, 230, Color.White, "");
                            aaDisplay.AddMenuUIElement(UnlockText);
                        }
                        if (FinalScoreText == null)
                        {
                            FinalScoreText = new UIElement_Text(aaDisplay, this, aaDisplay.aaGame.mTextboxFont, 640 - (int)(aaDisplay.aaGame.mTextboxFont.MeasureString(mPoints.ToString()).X / 2), 260, Color.White, mPoints.ToString());
                            aaDisplay.AddMenuUIElement(FinalScoreText);
                        }
                        aaDisplay.AddMenuUIElement(GameOverPlaque);
                        ScoreTextBox.Show();
                        FinalScoreText.Show();
                        ScoreTextBox.Update(DT);

                        if (((UIElement_ScoreTextBox)ScoreTextBox).AcceptClicked() || Keyboard.GetState().IsKeyDown(Keys.Enter))
                        {
                            aaDisplay.aaGame.aaHSManager.AddScore(((UIElement_ScoreTextBox)ScoreTextBox).GetText(), mPoints, mCurrentWave);
                            aaDisplay.aaGame.aaHSManager.SaveScores();
                            GameOverPlaque.MenuDestroy();
                            GameOverPlaque = null;
                            FinalScoreText.MenuDestroy();
                            FinalScoreText = null;
                            ScoreTextBox.Destroy();
                            ScoreTextBox = null;
                            aaDisplay.aaGame.mManager.ChangeState(aaDisplay.aaGame.mHighScoreMenu);
                        }
                        else if (((UIElement_ScoreTextBox)ScoreTextBox).CancelClicked() || Keyboard.GetState().IsKeyDown(Keys.Escape))
                        {
                            aaDisplay.aaGame.mManager.ChangeState(aaDisplay.aaGame.mHighScoreMenu);
                            GameOverPlaque.MenuDestroy();
                            GameOverPlaque = null;
                            FinalScoreText.MenuDestroy();
                            FinalScoreText = null;
                            ScoreTextBox.Destroy();
                            ScoreTextBox = null;
                        }

                        //Manage unlocked ships and abilities
                        if ((aaDisplay.aaGame.mShipMenu as State_Menu_Ship).shipCount == 0)
                        {
                            if (mCurrentWave >= 10 && (aaDisplay.aaGame.mShipMenu as State_Menu_Ship).Abilitydata.mUnlocks[0] == 0)
                            {
                                (aaDisplay.aaGame.mShipMenu as State_Menu_Ship).Abilitydata.mUnlocks[0] = 2736;
                                UnlockText.mText = "NEW ABILITY UNLOCKED";
                            }
                            if (mCurrentWave >= 20 && (aaDisplay.aaGame.mShipMenu as State_Menu_Ship).Abilitydata.mUnlocks[1] == 0)
                            {
                                (aaDisplay.aaGame.mShipMenu as State_Menu_Ship).Abilitydata.mUnlocks[1] = 1967;
                                UnlockText.mText = "NEW ABILITY UNLOCKED";
                            }
                            if (mCurrentWave >= 30 && (aaDisplay.aaGame.mShipMenu as State_Menu_Ship).Abilitydata.mUnlocks[2] == 0)
                            {
                                (aaDisplay.aaGame.mShipMenu as State_Menu_Ship).Abilitydata.mUnlocks[2] = 8913;
                                UnlockText.mText = "NEW ABILITY UNLOCKED";
                            }
                        }
                        else if ((aaDisplay.aaGame.mShipMenu as State_Menu_Ship).shipCount == 1)
                        {
                            if (mCurrentWave >= 10 && (aaDisplay.aaGame.mShipMenu as State_Menu_Ship).Abilitydata.mUnlocks[3] == 0)
                            {
                                (aaDisplay.aaGame.mShipMenu as State_Menu_Ship).Abilitydata.mUnlocks[3] = 8432;
                                UnlockText.mText = "NEW ABILITY UNLOCKED";
                            }
                            if (mCurrentWave >= 20 && (aaDisplay.aaGame.mShipMenu as State_Menu_Ship).Abilitydata.mUnlocks[4] == 0)
                            {
                                (aaDisplay.aaGame.mShipMenu as State_Menu_Ship).Abilitydata.mUnlocks[4] = 6874;
                                UnlockText.mText = "NEW ABILITY UNLOCKED";
                            }
                            if (mCurrentWave >= 30 && (aaDisplay.aaGame.mShipMenu as State_Menu_Ship).Abilitydata.mUnlocks[5] == 0)
                            {
                                (aaDisplay.aaGame.mShipMenu as State_Menu_Ship).Abilitydata.mUnlocks[5] = 8794;
                                UnlockText.mText = "NEW ABILITY UNLOCKED";
                            }
                        }
                        else if ((aaDisplay.aaGame.mShipMenu as State_Menu_Ship).shipCount == 2)
                        {
                            if (mCurrentWave >= 10 && (aaDisplay.aaGame.mShipMenu as State_Menu_Ship).Abilitydata.mUnlocks[6] == 0)
                            {
                                (aaDisplay.aaGame.mShipMenu as State_Menu_Ship).Abilitydata.mUnlocks[6] = 3252;
                                UnlockText.mText = "NEW ABILITY UNLOCKED";
                            }
                            if (mCurrentWave >= 20 && (aaDisplay.aaGame.mShipMenu as State_Menu_Ship).Abilitydata.mUnlocks[7] == 0)
                            {
                                (aaDisplay.aaGame.mShipMenu as State_Menu_Ship).Abilitydata.mUnlocks[7] = 3248;
                                UnlockText.mText = "NEW ABILITY UNLOCKED";
                            }
                            if (mCurrentWave >= 30 && (aaDisplay.aaGame.mShipMenu as State_Menu_Ship).Abilitydata.mUnlocks[8] == 0)
                            {
                                (aaDisplay.aaGame.mShipMenu as State_Menu_Ship).Abilitydata.mUnlocks[8] = 8942;
                                UnlockText.mText = "NEW ABILITY UNLOCKED";
                            }
                        }
                        (aaDisplay.aaGame.mShipMenu as State_Menu_Ship).SaveData();
                    }

                    foreach (SoundEffectInstance sfx in aaDisplay.aaGame.mGameSoundFX)
                    {
                        if (sfx.State == SoundState.Stopped)
                        {
                            sfx.Dispose();
                            aaDisplay.aaGame.mGameSoundFXRemove.Add(sfx);
                        }
                    }

                    foreach (SoundEffectInstance sfx in aaDisplay.aaGame.mGameSoundFXRemove)
                    {
                        aaDisplay.aaGame.mGameSoundFX.Remove(sfx);
                    }
                    aaDisplay.aaGame.mGameSoundFXRemove.Clear();
                }

                return true;
        }
        public override void LeaveState()
        {
            base.LeaveState();

            shipselectKit = null;
            aiconKit = null;
            ticonKit = null;
            ciconKit = null;
            ShipSelect.MenuDestroy();
            ShipSelect = null;

            leftButtonKit = null;
            leftButton.MenuDestroy();
            leftButton = null;

            rightButtonKit = null;
            rightButton.MenuDestroy();
            rightButton = null;

            backButtonKit = null;
            backButton.MenuDestroy();
            backButton = null;

            mAbilityBox.MenuDestroy();
            mAbilityBox = null;

            mGameReference.aaDisplay.mMenuUIElements.Clear();
        }
        public override void EnterState()
        {
            base.EnterState();

            Abilitydata = mGameReference.aaDisplay.aaGame.aaHSManager.Abilitydata;

            lockedKit = new AssetKit_Ability_Locked();
            quickturnKit = new AssetKit_Ability_QuickTurn();
            warpdriveKit = new AssetKit_Ability_WarpDrive();
            gunoverchargeKit = new AssetKit_Ability_GunOvercharge();
            bulletstarKit = new AssetKit_Ability_BulletStar();
            bulletfurryKit = new AssetKit_Ability_BulletFurry();
            dualwieldKit = new AssetKit_Ability_DualWield();
            missileflurryKit = new AssetKit_Ability_MissileFlurry();
            overchargeenginesKit = new AssetKit_Ability_OverchargeEngines();
            tighterturnsKit = new AssetKit_Ability_TighterTurns();
            energyshieldKit = new AssetKit_Ability_EnergyShield();
            shotgunblastKit = new AssetKit_Ability_ShotgunBlast();
            reargunsKit = new AssetKit_Ability_RearGuns();
            antibulletsKit = new AssetKit_Ability_AntiBullets();
            satelliteKit = new AssetKit_Ability_Satellite();
            mineKit = new AssetKit_Ability_Mine();
            fullshieldKit = new AssetKit_Ability_FullShield();
            DefaultAbility1 = new UIElement_StaticMenuElement(mGameReference.aaDisplay, mGameReference.aaGameWorld, quickturnKit.ASSET_NAME, 633, 335, (int)quickturnKit.ORIGIN.X, (int)quickturnKit.ORIGIN.Y, Constants.LAYER_ENTITY_DEPTH, quickturnKit.SRC_RECTX, quickturnKit.SRC_RECTY, quickturnKit.SRC_RECTWIDTH, quickturnKit.SRC_RECTHEIGHT, 0.0f);
            DefaultAbility2 = new UIElement_StaticMenuElement(mGameReference.aaDisplay, mGameReference.aaGameWorld, warpdriveKit.ASSET_NAME, 705, 335, (int)warpdriveKit.ORIGIN.X, (int)warpdriveKit.ORIGIN.Y, Constants.LAYER_ENTITY_DEPTH, warpdriveKit.SRC_RECTX, warpdriveKit.SRC_RECTY, warpdriveKit.SRC_RECTWIDTH, warpdriveKit.SRC_RECTHEIGHT, 0.0f);
            DefaultAbility3 = new UIElement_StaticMenuElement(mGameReference.aaDisplay, mGameReference.aaGameWorld, gunoverchargeKit.ASSET_NAME, 779, 335, (int)gunoverchargeKit.ORIGIN.X, (int)gunoverchargeKit.ORIGIN.Y, Constants.LAYER_ENTITY_DEPTH, gunoverchargeKit.SRC_RECTX, gunoverchargeKit.SRC_RECTY, gunoverchargeKit.SRC_RECTWIDTH, gunoverchargeKit.SRC_RECTHEIGHT, 0.0f);
            DefaultAbility4 = new UIElement_StaticMenuElement(mGameReference.aaDisplay, mGameReference.aaGameWorld, bulletstarKit.ASSET_NAME, 849, 335, (int)bulletstarKit.ORIGIN.X, (int)bulletstarKit.ORIGIN.Y, Constants.LAYER_ENTITY_DEPTH, bulletstarKit.SRC_RECTX, bulletstarKit.SRC_RECTY, bulletstarKit.SRC_RECTWIDTH, bulletstarKit.SRC_RECTHEIGHT, 0.0f);
            SpecialAbility1 = new UIElement_StaticMenuElement(mGameReference.aaDisplay, mGameReference.aaGameWorld, lockedKit.ASSET_NAME, 633, 482, (int)lockedKit.ORIGIN.X, (int)lockedKit.ORIGIN.Y, Constants.LAYER_ENTITY_DEPTH - 0.1f, lockedKit.SRC_RECTX, lockedKit.SRC_RECTY, lockedKit.SRC_RECTWIDTH, lockedKit.SRC_RECTHEIGHT, 0.0f);
            SpecialAbility2 = new UIElement_StaticMenuElement(mGameReference.aaDisplay, mGameReference.aaGameWorld, lockedKit.ASSET_NAME, 705, 482, (int)lockedKit.ORIGIN.X, (int)lockedKit.ORIGIN.Y, Constants.LAYER_ENTITY_DEPTH - 0.1f, lockedKit.SRC_RECTX, lockedKit.SRC_RECTY, lockedKit.SRC_RECTWIDTH, lockedKit.SRC_RECTHEIGHT, 0.0f);
            SpecialAbility3 = new UIElement_StaticMenuElement(mGameReference.aaDisplay, mGameReference.aaGameWorld, lockedKit.ASSET_NAME, 779, 482, (int)lockedKit.ORIGIN.X, (int)lockedKit.ORIGIN.Y, Constants.LAYER_ENTITY_DEPTH - 0.1f, lockedKit.SRC_RECTX, lockedKit.SRC_RECTY, lockedKit.SRC_RECTWIDTH, lockedKit.SRC_RECTHEIGHT, 0.0f);
            SpecialAbility4 = new UIElement_StaticMenuElement(mGameReference.aaDisplay, mGameReference.aaGameWorld, lockedKit.ASSET_NAME, 849, 482, (int)lockedKit.ORIGIN.X, (int)lockedKit.ORIGIN.Y, Constants.LAYER_ENTITY_DEPTH - 0.1f, lockedKit.SRC_RECTX, lockedKit.SRC_RECTY, lockedKit.SRC_RECTWIDTH, lockedKit.SRC_RECTHEIGHT, 0.0f);
            mGameReference.aaDisplay.AddMenuUIElement(DefaultAbility1);
            mGameReference.aaDisplay.AddMenuUIElement(DefaultAbility2);
            mGameReference.aaDisplay.AddMenuUIElement(DefaultAbility3);
            mGameReference.aaDisplay.AddMenuUIElement(DefaultAbility4);
            mGameReference.aaDisplay.AddMenuUIElement(SpecialAbility1);
            mGameReference.aaDisplay.AddMenuUIElement(SpecialAbility2);
            mGameReference.aaDisplay.AddMenuUIElement(SpecialAbility3);
            mGameReference.aaDisplay.AddMenuUIElement(SpecialAbility4);

            abilitykit = new AssetKit_AbilityButton();
            ability1Button = new UIElement_MenuButton(mGameReference.aaDisplay, mGameReference.aaGameWorld, abilitykit.ASSET_NAME, 639, 206, (int)abilitykit.ORIGIN.X, (int)abilitykit.ORIGIN.Y, Constants.LAYER_ENTITY_DEPTH - 0.2f, abilitykit.SRC_RECTX, abilitykit.SRC_RECTY, abilitykit.SRC_RECTWIDTH, abilitykit.SRC_RECTHEIGHT, 0.0f);
            ability2Button = new UIElement_MenuButton(mGameReference.aaDisplay, mGameReference.aaGameWorld, abilitykit.ASSET_NAME, 711, 206, (int)abilitykit.ORIGIN.X, (int)abilitykit.ORIGIN.Y, Constants.LAYER_ENTITY_DEPTH - 0.2f, abilitykit.SRC_RECTX, abilitykit.SRC_RECTY, abilitykit.SRC_RECTWIDTH, abilitykit.SRC_RECTHEIGHT, 0.0f);
            ability3Button = new UIElement_MenuButton(mGameReference.aaDisplay, mGameReference.aaGameWorld, abilitykit.ASSET_NAME, 785, 206, (int)abilitykit.ORIGIN.X, (int)abilitykit.ORIGIN.Y, Constants.LAYER_ENTITY_DEPTH - 0.2f, abilitykit.SRC_RECTX, abilitykit.SRC_RECTY, abilitykit.SRC_RECTWIDTH, abilitykit.SRC_RECTHEIGHT, 0.0f);
            ability4Button = new UIElement_MenuButton(mGameReference.aaDisplay, mGameReference.aaGameWorld, abilitykit.ASSET_NAME, 855, 206, (int)abilitykit.ORIGIN.X, (int)abilitykit.ORIGIN.Y, Constants.LAYER_ENTITY_DEPTH - 0.2f, abilitykit.SRC_RECTX, abilitykit.SRC_RECTY, abilitykit.SRC_RECTWIDTH, abilitykit.SRC_RECTHEIGHT, 0.0f);
            default1Button = new UIElement_MenuButton(mGameReference.aaDisplay, mGameReference.aaGameWorld, abilitykit.ASSET_NAME, 639, 341, (int)abilitykit.ORIGIN.X, (int)abilitykit.ORIGIN.Y, Constants.LAYER_ENTITY_DEPTH - 0.2f, abilitykit.SRC_RECTX, abilitykit.SRC_RECTY, abilitykit.SRC_RECTWIDTH, abilitykit.SRC_RECTHEIGHT, 0.0f);
            default2Button = new UIElement_MenuButton(mGameReference.aaDisplay, mGameReference.aaGameWorld, abilitykit.ASSET_NAME, 711, 341, (int)abilitykit.ORIGIN.X, (int)abilitykit.ORIGIN.Y, Constants.LAYER_ENTITY_DEPTH - 0.2f, abilitykit.SRC_RECTX, abilitykit.SRC_RECTY, abilitykit.SRC_RECTWIDTH, abilitykit.SRC_RECTHEIGHT, 0.0f);
            default3Button = new UIElement_MenuButton(mGameReference.aaDisplay, mGameReference.aaGameWorld, abilitykit.ASSET_NAME, 785, 341, (int)abilitykit.ORIGIN.X, (int)abilitykit.ORIGIN.Y, Constants.LAYER_ENTITY_DEPTH - 0.2f, abilitykit.SRC_RECTX, abilitykit.SRC_RECTY, abilitykit.SRC_RECTWIDTH, abilitykit.SRC_RECTHEIGHT, 0.0f);
            default4Button = new UIElement_MenuButton(mGameReference.aaDisplay, mGameReference.aaGameWorld, abilitykit.ASSET_NAME, 855, 341, (int)abilitykit.ORIGIN.X, (int)abilitykit.ORIGIN.Y, Constants.LAYER_ENTITY_DEPTH - 0.2f, abilitykit.SRC_RECTX, abilitykit.SRC_RECTY, abilitykit.SRC_RECTWIDTH, abilitykit.SRC_RECTHEIGHT, 0.0f);
            special1Button = new UIElement_MenuButton(mGameReference.aaDisplay, mGameReference.aaGameWorld, abilitykit.ASSET_NAME, 639, 488, (int)abilitykit.ORIGIN.X, (int)abilitykit.ORIGIN.Y, Constants.LAYER_ENTITY_DEPTH - 0.2f, abilitykit.SRC_RECTX, abilitykit.SRC_RECTY, abilitykit.SRC_RECTWIDTH, abilitykit.SRC_RECTHEIGHT, 0.0f);
            special2Button = new UIElement_MenuButton(mGameReference.aaDisplay, mGameReference.aaGameWorld, abilitykit.ASSET_NAME, 711, 488, (int)abilitykit.ORIGIN.X, (int)abilitykit.ORIGIN.Y, Constants.LAYER_ENTITY_DEPTH - 0.2f, abilitykit.SRC_RECTX, abilitykit.SRC_RECTY, abilitykit.SRC_RECTWIDTH, abilitykit.SRC_RECTHEIGHT, 0.0f);
            special3Button = new UIElement_MenuButton(mGameReference.aaDisplay, mGameReference.aaGameWorld, abilitykit.ASSET_NAME, 785, 488, (int)abilitykit.ORIGIN.X, (int)abilitykit.ORIGIN.Y, Constants.LAYER_ENTITY_DEPTH - 0.2f, abilitykit.SRC_RECTX, abilitykit.SRC_RECTY, abilitykit.SRC_RECTWIDTH, abilitykit.SRC_RECTHEIGHT, 0.0f);
            special4Button = new UIElement_MenuButton(mGameReference.aaDisplay, mGameReference.aaGameWorld, abilitykit.ASSET_NAME, 855, 488, (int)abilitykit.ORIGIN.X, (int)abilitykit.ORIGIN.Y, Constants.LAYER_ENTITY_DEPTH - 0.2f, abilitykit.SRC_RECTX, abilitykit.SRC_RECTY, abilitykit.SRC_RECTWIDTH, abilitykit.SRC_RECTHEIGHT, 0.0f);
            ability1Button.highlightDisabled = true;
            ability2Button.highlightDisabled = true;
            ability3Button.highlightDisabled = true;
            ability4Button.highlightDisabled = true;
            mGameReference.aaDisplay.AddMenuUIElement(ability1Button);
            mGameReference.aaDisplay.AddMenuUIElement(ability2Button);
            mGameReference.aaDisplay.AddMenuUIElement(ability3Button);
            mGameReference.aaDisplay.AddMenuUIElement(ability4Button);
            mGameReference.aaDisplay.AddMenuUIElement(default1Button);
            mGameReference.aaDisplay.AddMenuUIElement(default2Button);
            mGameReference.aaDisplay.AddMenuUIElement(default3Button);
            mGameReference.aaDisplay.AddMenuUIElement(default4Button);
            mGameReference.aaDisplay.AddMenuUIElement(special1Button);
            mGameReference.aaDisplay.AddMenuUIElement(special2Button);
            mGameReference.aaDisplay.AddMenuUIElement(special3Button);
            mGameReference.aaDisplay.AddMenuUIElement(special4Button);

            backButtonKit = new AssetKit_Menu_BackButton();
            backButton = new UIElement_MenuButton(mGameReference.aaDisplay, mGameReference.aaGameWorld, backButtonKit.ASSET_NAME, 1060, 370, (int)backButtonKit.ORIGIN.X, (int)backButtonKit.ORIGIN.Y, Constants.LAYER_ENTITY_DEPTH, backButtonKit.SRC_RECTX, backButtonKit.SRC_RECTY, backButtonKit.SRC_RECTWIDTH, backButtonKit.SRC_RECTHEIGHT, 0.0f);
            mGameReference.aaDisplay.AddMenuUIElement(backButton);

            rightButtonKit = new AssetKit_RightArrowButton();
            rightButton = new UIElement_MenuButton(mGameReference.aaDisplay, mGameReference.aaGameWorld, rightButtonKit.ASSET_NAME, 325, 90, (int)rightButtonKit.ORIGIN.X, (int)rightButtonKit.ORIGIN.Y, Constants.LAYER_ENTITY_DEPTH - 0.1f, rightButtonKit.SRC_RECTX, rightButtonKit.SRC_RECTY, rightButtonKit.SRC_RECTWIDTH, rightButtonKit.SRC_RECTHEIGHT, 0.0f);
            mGameReference.aaDisplay.AddMenuUIElement(rightButton);

            leftButtonKit = new AssetKit_LeftArrowButton();
            leftButton = new UIElement_MenuButton(mGameReference.aaDisplay, mGameReference.aaGameWorld, leftButtonKit.ASSET_NAME, 180, 90, (int)leftButtonKit.ORIGIN.X, (int)leftButtonKit.ORIGIN.Y, Constants.LAYER_ENTITY_DEPTH - 0.1f, leftButtonKit.SRC_RECTX, leftButtonKit.SRC_RECTY, leftButtonKit.SRC_RECTWIDTH, leftButtonKit.SRC_RECTHEIGHT, 0.0f);
            mGameReference.aaDisplay.AddMenuUIElement(leftButton);

            playButtonKit = new AssetKit_PlayButton();
            playButton = new UIElement_MenuButton(mGameReference.aaDisplay, mGameReference.aaGameWorld, playButtonKit.ASSET_NAME, 1060, 270, (int)playButtonKit.ORIGIN.X, (int)playButtonKit.ORIGIN.Y, Constants.LAYER_ENTITY_DEPTH - 0.1f, playButtonKit.SRC_RECTX, playButtonKit.SRC_RECTY, playButtonKit.SRC_RECTWIDTH, playButtonKit.SRC_RECTHEIGHT, 0.0f);
            mGameReference.aaDisplay.AddMenuUIElement(playButton);

            aiconKit = new AssetKit_AgilityIcon();
            ticonKit = new AssetKit_TankIcon();
            ciconKit = new AssetKit_CommandoIcon();
            ShipIcon = new UIElement_StaticMenuElement(mGameReference.aaDisplay, mGameReference.aaGameWorld, aiconKit.ASSET_NAME, 235, 85, (int)aiconKit.ORIGIN.X, (int)aiconKit.ORIGIN.Y, Constants.LAYER_ENTITY_DEPTH - 0.1f, aiconKit.SRC_RECTX, aiconKit.SRC_RECTY, aiconKit.SRC_RECTWIDTH, aiconKit.SRC_RECTHEIGHT, 0.0f);
            mGameReference.aaDisplay.AddMenuUIElement(ShipIcon);

            shipselectKit = new AssetKit_ShipSelect();
            ShipSelect = new UIElement_StaticMenuElement(mGameReference.aaDisplay, mGameReference.aaGameWorld, shipselectKit.ASSET_NAME, 20, 10, (int)shipselectKit.ORIGIN.X, (int)shipselectKit.ORIGIN.Y, Constants.LAYER_ENTITY_DEPTH, shipselectKit.SRC_RECTX, shipselectKit.SRC_RECTY, shipselectKit.SRC_RECTWIDTH, shipselectKit.SRC_RECTHEIGHT, 0.0f);
            mGameReference.aaDisplay.AddMenuUIElement(ShipSelect);

            helpKit = new AssetKit_ShipMenu_Help();
            HelpPlaque = new UIElement_StaticMenuElement(mGameReference.aaDisplay, mGameReference.aaGameWorld, helpKit.ASSET_NAME, 20, 365, (int)helpKit.ORIGIN.X, (int)helpKit.ORIGIN.Y, Constants.LAYER_ENTITY_DEPTH, helpKit.SRC_RECTX, helpKit.SRC_RECTY, helpKit.SRC_RECTWIDTH, helpKit.SRC_RECTHEIGHT, 0.0f);
            mGameReference.aaDisplay.AddMenuUIElement(HelpPlaque);

            abilityselectKit = new AssetKit_AbilitySelect();
            AbilitySelect = new UIElement_StaticMenuElement(mGameReference.aaDisplay, mGameReference.aaGameWorld, abilityselectKit.ASSET_NAME, 535, 60, (int)abilityselectKit.ORIGIN.X, (int)abilityselectKit.ORIGIN.Y, Constants.LAYER_ENTITY_DEPTH, abilityselectKit.SRC_RECTX, abilityselectKit.SRC_RECTY, abilityselectKit.SRC_RECTWIDTH, abilityselectKit.SRC_RECTHEIGHT, 0.0f);
            mGameReference.aaDisplay.AddMenuUIElement(AbilitySelect);

            mAbilityBox = new UIElement_Text(mGameReference.aaDisplay, mGameReference.aaGameWorld, mGameReference.mTextboxFont, 900 - (int)(textSize.X / 2), 560, Color.White, "");
            mDescriptionBox = new UIElement_Text(mGameReference.aaDisplay, mGameReference.aaGameWorld, mGameReference.mDescriptionFont, 935 - (int)(textSize.X / 2), 600, Color.White, "");
            mGameReference.aaDisplay.AddMenuUIElement(mAbilityBox);
            mGameReference.aaDisplay.AddMenuUIElement(mDescriptionBox);

            mShipName = new UIElement_Text(mGameReference.aaDisplay, mGameReference.aaGameWorld, mGameReference.mTextboxFont, 270 - (int)(textSize.X / 2), 185, Color.White, shipname);
            mHealth = new UIElement_Text(mGameReference.aaDisplay, mGameReference.aaGameWorld, mGameReference.mDescription2Font, 131, 230, Color.White, "Health: " + health);
            mMaxThrust = new UIElement_Text(mGameReference.aaDisplay, mGameReference.aaGameWorld, mGameReference.mDescription2Font, 132, 260, Color.White, "Max Thrust: " + maxthrust);
            mTurnSpeed = new UIElement_Text(mGameReference.aaDisplay, mGameReference.aaGameWorld, mGameReference.mDescription2Font, 130, 290, Color.White, "Turn Speed: " + turnspeed);

            slot1Kit = new AssetKit_Ability_Slot1();
            slot2Kit = new AssetKit_Ability_Slot2();
            slot3Kit = new AssetKit_Ability_Slot3();
            slot4Kit = new AssetKit_Ability_Slot4();
            Ability1 = new UIElement_StaticMenuElement(mGameReference.aaDisplay, mGameReference.aaGameWorld, slot1Kit.ASSET_NAME, 633, 200, (int)slot1Kit.ORIGIN.X, (int)slot1Kit.ORIGIN.Y, Constants.LAYER_ENTITY_DEPTH - 0.1f, slot1Kit.SRC_RECTX, slot1Kit.SRC_RECTY, slot1Kit.SRC_RECTWIDTH, slot1Kit.SRC_RECTHEIGHT, 0.0f);
            Ability2 = new UIElement_StaticMenuElement(mGameReference.aaDisplay, mGameReference.aaGameWorld, slot1Kit.ASSET_NAME, 705, 200, (int)slot1Kit.ORIGIN.X, (int)slot1Kit.ORIGIN.Y, Constants.LAYER_ENTITY_DEPTH - 0.1f, slot1Kit.SRC_RECTX, slot1Kit.SRC_RECTY, slot1Kit.SRC_RECTWIDTH, slot1Kit.SRC_RECTHEIGHT, 0.0f);
            Ability3 = new UIElement_StaticMenuElement(mGameReference.aaDisplay, mGameReference.aaGameWorld, slot1Kit.ASSET_NAME, 779, 200, (int)slot1Kit.ORIGIN.X, (int)slot1Kit.ORIGIN.Y, Constants.LAYER_ENTITY_DEPTH - 0.1f, slot1Kit.SRC_RECTX, slot1Kit.SRC_RECTY, slot1Kit.SRC_RECTWIDTH, slot1Kit.SRC_RECTHEIGHT, 0.0f);
            Ability4 = new UIElement_StaticMenuElement(mGameReference.aaDisplay, mGameReference.aaGameWorld, slot1Kit.ASSET_NAME, 849, 200, (int)slot1Kit.ORIGIN.X, (int)slot1Kit.ORIGIN.Y, Constants.LAYER_ENTITY_DEPTH - 0.1f, slot1Kit.SRC_RECTX, slot1Kit.SRC_RECTY, slot1Kit.SRC_RECTWIDTH, slot1Kit.SRC_RECTHEIGHT, 0.0f);
            mGameReference.aaDisplay.AddMenuUIElement(Ability1);
            mGameReference.aaDisplay.AddMenuUIElement(Ability2);
            mGameReference.aaDisplay.AddMenuUIElement(Ability3);
            mGameReference.aaDisplay.AddMenuUIElement(Ability4);

            ShipChangeUpdate();
        }
        public override void EnterState()
        {
            base.EnterState();

            data = mGameReference.aaDisplay.aaGame.aaHSManager.Scoredata;

            highscoreKit = new AssetKit_HighScore_Plaque();
            highscorePlaque = new UIElement_StaticMenuElement(mGameReference.aaDisplay, mGameReference.aaGameWorld, highscoreKit.ASSET_NAME, 640, 360, (int)highscoreKit.ORIGIN.X, (int)highscoreKit.ORIGIN.Y, Constants.LAYER_ENTITY_DEPTH, highscoreKit.SRC_RECTX, highscoreKit.SRC_RECTY, highscoreKit.SRC_RECTWIDTH, highscoreKit.SRC_RECTHEIGHT, 0.0f);
            mGameReference.aaDisplay.AddMenuUIElement(highscorePlaque);

            oneName = new UIElement_Text(mGameReference.aaDisplay, mGameReference.aaGameWorld, mGameReference.aaDisplay.aaGame.mScoreFont, 415, 290, Color.White, data.mName[0] + "");
            mGameReference.aaDisplay.AddMenuUIElement(oneName);
            twoName = new UIElement_Text(mGameReference.aaDisplay, mGameReference.aaGameWorld, mGameReference.aaDisplay.aaGame.mScoreFont, 415, 330, Color.White, data.mName[1] + "");
            mGameReference.aaDisplay.AddMenuUIElement(twoName);
            threeName = new UIElement_Text(mGameReference.aaDisplay, mGameReference.aaGameWorld, mGameReference.aaDisplay.aaGame.mScoreFont, 415, 370, Color.White, data.mName[2] + "");
            mGameReference.aaDisplay.AddMenuUIElement(threeName);
            fourName = new UIElement_Text(mGameReference.aaDisplay, mGameReference.aaGameWorld, mGameReference.aaDisplay.aaGame.mScoreFont, 415, 410, Color.White, data.mName[3] + "");
            mGameReference.aaDisplay.AddMenuUIElement(fourName);
            fiveName = new UIElement_Text(mGameReference.aaDisplay, mGameReference.aaGameWorld, mGameReference.aaDisplay.aaGame.mScoreFont, 415, 450, Color.White, data.mName[4] + "");
            mGameReference.aaDisplay.AddMenuUIElement(fiveName);

            if(data.mScore[0] != 0 && data.mWave[0] != 0)
            {
                oneScore = new UIElement_Text(mGameReference.aaDisplay, mGameReference.aaGameWorld, mGameReference.aaDisplay.aaGame.mScoreFont, 620, 290, Color.White, data.mScore[0] + "");
                mGameReference.aaDisplay.AddMenuUIElement(oneScore);
                oneWave = new UIElement_Text(mGameReference.aaDisplay, mGameReference.aaGameWorld, mGameReference.aaDisplay.aaGame.mScoreFont, 810, 290, Color.White, data.mWave[0] + "");
                mGameReference.aaDisplay.AddMenuUIElement(oneWave);
            }
            if (data.mScore[1] != 0 && data.mWave[1] != 0)
            {
                twoScore = new UIElement_Text(mGameReference.aaDisplay, mGameReference.aaGameWorld, mGameReference.aaDisplay.aaGame.mScoreFont, 620, 330, Color.White, data.mScore[1] + "");
                mGameReference.aaDisplay.AddMenuUIElement(twoScore);
                twoWave = new UIElement_Text(mGameReference.aaDisplay, mGameReference.aaGameWorld, mGameReference.aaDisplay.aaGame.mScoreFont, 810, 330, Color.White, data.mWave[1] + "");
                mGameReference.aaDisplay.AddMenuUIElement(twoWave);
            }
            if (data.mScore[2] != 0 && data.mWave[2] != 0)
            {
                threeScore = new UIElement_Text(mGameReference.aaDisplay, mGameReference.aaGameWorld, mGameReference.aaDisplay.aaGame.mScoreFont, 620, 370, Color.White, data.mScore[2] + "");
                mGameReference.aaDisplay.AddMenuUIElement(threeScore);
                threeWave = new UIElement_Text(mGameReference.aaDisplay, mGameReference.aaGameWorld, mGameReference.aaDisplay.aaGame.mScoreFont, 810, 370, Color.White, data.mWave[2] + "");
                mGameReference.aaDisplay.AddMenuUIElement(threeWave);
            }
            if (data.mScore[3] != 0 && data.mWave[3] != 0)
            {
                fourScore = new UIElement_Text(mGameReference.aaDisplay, mGameReference.aaGameWorld, mGameReference.aaDisplay.aaGame.mScoreFont, 620, 410, Color.White, data.mScore[3] + "");
                mGameReference.aaDisplay.AddMenuUIElement(fourScore);
                fourWave = new UIElement_Text(mGameReference.aaDisplay, mGameReference.aaGameWorld, mGameReference.aaDisplay.aaGame.mScoreFont, 810, 410, Color.White, data.mWave[3] + "");
                mGameReference.aaDisplay.AddMenuUIElement(fourWave);
            }
            if (data.mScore[4] != 0 && data.mWave[4] != 0)
            {
                fiveScore = new UIElement_Text(mGameReference.aaDisplay, mGameReference.aaGameWorld, mGameReference.aaDisplay.aaGame.mScoreFont, 620, 450, Color.White, data.mScore[4] + "");
                mGameReference.aaDisplay.AddMenuUIElement(fiveScore);
                fiveWave = new UIElement_Text(mGameReference.aaDisplay, mGameReference.aaGameWorld, mGameReference.aaDisplay.aaGame.mScoreFont, 810, 450, Color.White, data.mWave[4] + "");
                mGameReference.aaDisplay.AddMenuUIElement(fiveWave);
            }

            backButtonKit = new AssetKit_Menu_BackButton();
            backButton = new UIElement_MenuButton(mGameReference.aaDisplay, mGameReference.aaGameWorld, backButtonKit.ASSET_NAME, 15, 625, (int)backButtonKit.ORIGIN.X, (int)backButtonKit.ORIGIN.Y, Constants.LAYER_ENTITY_DEPTH, backButtonKit.SRC_RECTX, backButtonKit.SRC_RECTY, backButtonKit.SRC_RECTWIDTH, backButtonKit.SRC_RECTHEIGHT, 0.0f);
            mGameReference.aaDisplay.AddMenuUIElement(backButton);
        }
        public override void Update(float DT)
        {
            backButton.Update(DT);
            leftButton.Update(DT);
            rightButton.Update(DT);
            playButton.Update(DT);
            ability1Button.Update(DT);
            ability2Button.Update(DT);
            ability3Button.Update(DT);
            ability4Button.Update(DT);
            default1Button.Update(DT);
            default2Button.Update(DT);
            default3Button.Update(DT);
            default4Button.Update(DT);
            special1Button.Update(DT);
            special2Button.Update(DT);
            special3Button.Update(DT);
            special4Button.Update(DT);

            base.Update(DT);

            if (backButton.CheckButtonClick())
            {
                mGameReference.mManager.ChangeState(mGameReference.mMainMenu);
                SaveData();
            }
            else if (playButton.CheckButtonClick())
            {
                if (!(Abilitydata.mAbility1[shipCount] < 0) && !(Abilitydata.mAbility2[shipCount] < 0) && !(Abilitydata.mAbility3[shipCount] < 0) && !(Abilitydata.mAbility4[shipCount] < 0))
                {
                    mGameReference.mManager.ChangeState(mGameReference.mGame);
                    mGameReference.aaDisplay.aaGame.aaHSManager.Abilitydata = Abilitydata;
                    mGameReference.aaHSManager.SaveAbilities();
                }
                else
                {
                    UIElement errorText = new UIElement_Text(mGameReference.aaDisplay, mGameReference.aaGameWorld, mGameReference.mDescription2Font, 570, 265, Color.Red, "You must fill all ability slots");
                    mGameReference.aaDisplay.AddMenuUIElement(errorText);
                }
            }
            else if (leftButton.CheckButtonClick())
            {
                shipCount--;
                FixShipCount();
                ShipChangeUpdate();
            }
            else if (rightButton.CheckButtonClick())
            {
                shipCount++;
                FixShipCount();
                ShipChangeUpdate();
            }
            else if (default1Button.CheckButtonClick())
            {
                UnhighlightAbilities();
                HighlightAbilities();
                default1Button.forceHighlight = true;
                selectedAbility = 0;
                placingAbility = true;
            }
            else if (default2Button.CheckButtonClick())
            {
                UnhighlightAbilities();
                HighlightAbilities();
                default2Button.forceHighlight = true;
                selectedAbility = 1;
                placingAbility = true;
            }
            else if (default3Button.CheckButtonClick())
            {
                UnhighlightAbilities();
                HighlightAbilities();
                default3Button.forceHighlight = true;
                selectedAbility = 2;
                placingAbility = true;
            }
            else if (default4Button.CheckButtonClick())
            {
                UnhighlightAbilities();
                HighlightAbilities();
                default4Button.forceHighlight = true;
                selectedAbility = 3;
                placingAbility = true;
            }
            else if (special1Button.CheckButtonClick() && special1ID >= 0)
            {
                UnhighlightAbilities();
                HighlightAbilities();
                special1Button.forceHighlight = true;
                selectedAbility = special1ID;
                placingAbility = true;
            }
            else if (special2Button.CheckButtonClick() && special2ID >= 0)
            {
                UnhighlightAbilities();
                HighlightAbilities();
                special2Button.forceHighlight = true;
                selectedAbility = special2ID;
                placingAbility = true;
            }
            else if (special3Button.CheckButtonClick() && special3ID >= 0)
            {
                UnhighlightAbilities();
                HighlightAbilities();
                special3Button.forceHighlight = true;
                selectedAbility = special3ID;
                placingAbility = true;
            }
            else if (special4Button.CheckButtonClick() && special4ID >= 0)
            {
                UnhighlightAbilities();
                HighlightAbilities();
                special4Button.forceHighlight = true;
                selectedAbility = special4ID;
                placingAbility = true;
            }

            if (default1Button.CheckButtonHover())
                UpdateDescriptionText(0);
            else if (default2Button.CheckButtonHover())
                UpdateDescriptionText(1);
            else if (default3Button.CheckButtonHover())
                UpdateDescriptionText(2);
            else if (default4Button.CheckButtonHover())
                UpdateDescriptionText(3);
            else if (special1Button.CheckButtonHover())
                UpdateDescriptionText(special1ID);
            else if (special2Button.CheckButtonHover())
                UpdateDescriptionText(special2ID);
            else if (special3Button.CheckButtonHover())
                UpdateDescriptionText(special3ID);
            else if (special4Button.CheckButtonHover())
                UpdateDescriptionText(special4ID);

            if (placingAbility)
            {
                if (ability1Button.CheckButtonClick() && selectedAbility >= 0)
                {
                    CheckExistance(selectedAbility, 1);
                    selectedAbility = -1;
                    UnhighlightAbilities();
                    ShipChangeUpdate();
                }
                else if (ability2Button.CheckButtonClick() && selectedAbility >= 0)
                {
                    CheckExistance(selectedAbility, 2);
                    selectedAbility = -1;
                    UnhighlightAbilities();
                    ShipChangeUpdate();
                }
                else if (ability3Button.CheckButtonClick() && selectedAbility >= 0)
                {
                    CheckExistance(selectedAbility, 3);
                    selectedAbility = -1;
                    UnhighlightAbilities();
                    ShipChangeUpdate();
                }
                else if (ability4Button.CheckButtonClick() && selectedAbility >= 0)
                {
                    CheckExistance(selectedAbility, 4);
                    selectedAbility = -1;
                    UnhighlightAbilities();
                    ShipChangeUpdate();
                }
            }

            if (Keyboard.GetState().IsKeyDown(Keys.Escape))
            {
                mGameReference.mManager.ChangeState(mGameReference.mMainMenu);
            }
        }
Exemple #6
0
        public bool UpdateWorld(float DT)
        {
            mPrevInput = mInput;
            mInput     = Keyboard.GetState();
            if (mInput.IsKeyDown(Keys.P) && mPrevInput.IsKeyUp(Keys.P) && !isPaused && !Player.IsDead() || mInput.IsKeyDown(Keys.Escape) && mPrevInput.IsKeyUp(Keys.Escape) && !isPaused && !Player.IsDead())
            {
                isPaused = true;
                aaDisplay.aaGame.IsMouseVisible = true;
                PausedPlaque = new UIElement_StaticMenuElement(aaDisplay, this, mKit_Paused.ASSET_NAME, 540, 320, (int)mKit_Paused.ORIGIN.X, (int)mKit_Paused.ORIGIN.Y, Constants.LAYER_UI_FRONT, mKit_Paused.SRC_RECTX, mKit_Paused.SRC_RECTY, mKit_Paused.SRC_RECTWIDTH, mKit_Paused.SRC_RECTHEIGHT, 0.0f);
                aaDisplay.AddMenuUIElement(PausedPlaque);
            }
            else if (mInput.IsKeyDown(Keys.P) && mPrevInput.IsKeyUp(Keys.P) && isPaused || mInput.IsKeyDown(Keys.Escape) && mPrevInput.IsKeyUp(Keys.Escape) && isPaused)
            {
                isPaused = false;
                aaDisplay.aaGame.IsMouseVisible = false;
                PausedPlaque.MenuDestroy();
                PausedPlaque = null;
            }

            if (!isPaused)
            {
                mAiDirector.Update(DT);

                if (mAiDirector.DoneSpawning() && mAiDirector.mTotalEnemies <= mEnemiesKilled)
                {
                    if (!waveResting)
                    {
                        waveResting = true;
                    }

                    if (waveResting)
                    {
                        waveRested += DT;
                    }

                    if (waveRested >= waveRestDuration)
                    {
                        waveIndicator.Show();
                        waveResting    = false;
                        waveRested     = 0.0f;
                        mEnemiesKilled = 0;
                        mCurrentWave++;
                        mAiDirector.StartWave(mCurrentWave);
                    }
                }

                foreach (Entity e in mToSpawnEntityList)
                {
                    mEntityList.Add(e);
                }
                mToSpawnEntityList.Clear();

                foreach (Entity e in mEntityList)
                {
                    e.Update(DT);
                }

                foreach (Projectile p in mProjectileList)
                {
                    p.Update(DT);
                }

                foreach (Projectile p in mProjDeadList)
                {
                    if (!mProjectileList.Remove(p))
                    {
                        if (mProjectileList.Contains(p))
                        {
                            // Console.WriteLine("But the projectile list contains p");
                        }
                    }
                    mRemovedProjectileList.Add(p);

                    if (p.mCollisionType == CollisionType.Point)
                    {
                        CollisionShapes_Points.Remove(p.mCollision as PointCollision);
                    }
                    else if (p.mCollisionType == CollisionType.Circle)
                    {
                        CollisionShapes_Circle.Remove(p.mCollision as CircleCollision);
                    }

                    p.mDispObject.Hide();

                    /*
                     * if (p.mDispObject != null)
                     * {
                     *  Console.WriteLine("Display object not null, removing it");
                     *  p.mDispObject.Destroy();
                     *  aaDisplay.mDisplayObjects.Remove(p.mDispObject);
                     *  p.mDispObject = null;
                     * }
                     * p.aaGameWorld.aaDisplay.mDisplayObjects.Remove(p.mDispObject);*/
                }
                mProjDeadList.Clear();

                foreach (Entity e in mEntityDeadList)
                {
                    if (e != null)
                    {
                        if (e is Ship)
                        {
                            Ship s = e as Ship;

                            if (!Player.IsDead())
                            {
                                mPoints += s.mKit.POINTS;
                            }
                            if (s.mTeam == Constants.ENEMY_TEAM)
                            {
                                mEnemiesKilled++;
                                if (s.mType == "Grunt_Boss" || s.mType == "Tank_Boss" || s.mType == "Bomb_Boss")
                                {
                                    if (Player.FireBullet as Ability_FireBullet != null)
                                    {
                                        AssetKit_Tier2Pickup mAssetKit = new AssetKit_Tier2Pickup();
                                        mPickups.Add(new DualShotPickup(aaDisplay, this, mAssetKit.ASSET_NAME, new Vector2(s.mXPos, s.mYPos), mAssetKit.ORIGIN, Constants.LAYER_ENTITY_DEPTH, new Rectangle(mAssetKit.SRC_RECTX, mAssetKit.SRC_RECTY, mAssetKit.SRC_RECTWIDTH, mAssetKit.SRC_RECTHEIGHT), 0));
                                    }
                                    else if (Player.FireBullet as Ability_ShootTier2 != null)
                                    {
                                        AssetKit_Tier3Pickup mAssetKit = new AssetKit_Tier3Pickup();
                                        mPickups.Add(new TriShotPickup(aaDisplay, this, mAssetKit.ASSET_NAME, new Vector2(s.mXPos, s.mYPos), mAssetKit.ORIGIN, Constants.LAYER_ENTITY_DEPTH, new Rectangle(mAssetKit.SRC_RECTX, mAssetKit.SRC_RECTY, mAssetKit.SRC_RECTWIDTH, mAssetKit.SRC_RECTHEIGHT), 0));
                                    }
                                    else if (Player.FireBullet as Ability_ShootTier3 != null)
                                    {
                                        AssetKit_Tier4Pickup mAssetKit = new AssetKit_Tier4Pickup();
                                        mPickups.Add(new QuadShotPickup(aaDisplay, this, mAssetKit.ASSET_NAME, new Vector2(s.mXPos, s.mYPos), mAssetKit.ORIGIN, Constants.LAYER_ENTITY_DEPTH, new Rectangle(mAssetKit.SRC_RECTX, mAssetKit.SRC_RECTY, mAssetKit.SRC_RECTWIDTH, mAssetKit.SRC_RECTHEIGHT), 0));
                                    }
                                }
                                else
                                {
                                    if (mRand.NextDouble() <= 0.02)
                                    {
                                        AssetKit_HealthPickup mAssetKit = new AssetKit_HealthPickup();
                                        mPickups.Add(new HealthPickup(aaDisplay, this, mAssetKit.ASSET_NAME, new Vector2(s.mXPos, s.mYPos), mAssetKit.ORIGIN, Constants.LAYER_ENTITY_DEPTH, new Rectangle(mAssetKit.SRC_RECTX, mAssetKit.SRC_RECTY, mAssetKit.SRC_RECTWIDTH, mAssetKit.SRC_RECTHEIGHT), 0));
                                    }
                                }
                            }
                            s.Destroy();
                        }

                        aaDisplay.mDisplayObjects.Remove(e.mDispObj);
                        mEntityList.Remove(e);
                    }
                }
                mEntityDeadList.Clear();

                ResolveWorldCollisions();

                aaGFXHandler.Update(DT);

                aaDisplay.aaCamera.ChangeFocus(Player.mXPos, Player.mYPos);
                aaDisplay.aaCamera.Update(DT);

                foreach (UIElement e in aaDisplay.mUIElements)
                {
                    e.Update(DT);
                }
                foreach (UIElement e in aaDisplay.mMenuUIElements)
                {
                    e.Update(DT);
                }


                if (Player.IsDead())
                {
                    aaDisplay.aaGame.IsMouseVisible = true;

                    if (ScoreTextBox == null)
                    {
                        ScoreTextBox = new UIElement_ScoreTextBox(aaDisplay, this, 340, 315);
                    }
                    if (UnlockText == null)
                    {
                        UnlockText = new UIElement_Text(aaDisplay, this, aaDisplay.aaGame.mTextboxFont, 480, 230, Color.White, "");
                        aaDisplay.AddMenuUIElement(UnlockText);
                    }
                    if (FinalScoreText == null)
                    {
                        FinalScoreText = new UIElement_Text(aaDisplay, this, aaDisplay.aaGame.mTextboxFont, 640 - (int)(aaDisplay.aaGame.mTextboxFont.MeasureString(mPoints.ToString()).X / 2), 260, Color.White, mPoints.ToString());
                        aaDisplay.AddMenuUIElement(FinalScoreText);
                    }
                    aaDisplay.AddMenuUIElement(GameOverPlaque);
                    ScoreTextBox.Show();
                    FinalScoreText.Show();
                    ScoreTextBox.Update(DT);

                    if (((UIElement_ScoreTextBox)ScoreTextBox).AcceptClicked() || Keyboard.GetState().IsKeyDown(Keys.Enter))
                    {
                        aaDisplay.aaGame.aaHSManager.AddScore(((UIElement_ScoreTextBox)ScoreTextBox).GetText(), mPoints, mCurrentWave);
                        aaDisplay.aaGame.aaHSManager.SaveScores();
                        GameOverPlaque.MenuDestroy();
                        GameOverPlaque = null;
                        FinalScoreText.MenuDestroy();
                        FinalScoreText = null;
                        ScoreTextBox.Destroy();
                        ScoreTextBox = null;
                        aaDisplay.aaGame.mManager.ChangeState(aaDisplay.aaGame.mHighScoreMenu);
                    }
                    else if (((UIElement_ScoreTextBox)ScoreTextBox).CancelClicked() || Keyboard.GetState().IsKeyDown(Keys.Escape))
                    {
                        aaDisplay.aaGame.mManager.ChangeState(aaDisplay.aaGame.mHighScoreMenu);
                        GameOverPlaque.MenuDestroy();
                        GameOverPlaque = null;
                        FinalScoreText.MenuDestroy();
                        FinalScoreText = null;
                        ScoreTextBox.Destroy();
                        ScoreTextBox = null;
                    }

                    //Manage unlocked ships and abilities
                    if ((aaDisplay.aaGame.mShipMenu as State_Menu_Ship).shipCount == 0)
                    {
                        if (mCurrentWave >= 10 && (aaDisplay.aaGame.mShipMenu as State_Menu_Ship).Abilitydata.mUnlocks[0] == 0)
                        {
                            (aaDisplay.aaGame.mShipMenu as State_Menu_Ship).Abilitydata.mUnlocks[0] = 2736;
                            UnlockText.mText = "NEW ABILITY UNLOCKED";
                        }
                        if (mCurrentWave >= 20 && (aaDisplay.aaGame.mShipMenu as State_Menu_Ship).Abilitydata.mUnlocks[1] == 0)
                        {
                            (aaDisplay.aaGame.mShipMenu as State_Menu_Ship).Abilitydata.mUnlocks[1] = 1967;
                            UnlockText.mText = "NEW ABILITY UNLOCKED";
                        }
                        if (mCurrentWave >= 30 && (aaDisplay.aaGame.mShipMenu as State_Menu_Ship).Abilitydata.mUnlocks[2] == 0)
                        {
                            (aaDisplay.aaGame.mShipMenu as State_Menu_Ship).Abilitydata.mUnlocks[2] = 8913;
                            UnlockText.mText = "NEW ABILITY UNLOCKED";
                        }
                    }
                    else if ((aaDisplay.aaGame.mShipMenu as State_Menu_Ship).shipCount == 1)
                    {
                        if (mCurrentWave >= 10 && (aaDisplay.aaGame.mShipMenu as State_Menu_Ship).Abilitydata.mUnlocks[3] == 0)
                        {
                            (aaDisplay.aaGame.mShipMenu as State_Menu_Ship).Abilitydata.mUnlocks[3] = 8432;
                            UnlockText.mText = "NEW ABILITY UNLOCKED";
                        }
                        if (mCurrentWave >= 20 && (aaDisplay.aaGame.mShipMenu as State_Menu_Ship).Abilitydata.mUnlocks[4] == 0)
                        {
                            (aaDisplay.aaGame.mShipMenu as State_Menu_Ship).Abilitydata.mUnlocks[4] = 6874;
                            UnlockText.mText = "NEW ABILITY UNLOCKED";
                        }
                        if (mCurrentWave >= 30 && (aaDisplay.aaGame.mShipMenu as State_Menu_Ship).Abilitydata.mUnlocks[5] == 0)
                        {
                            (aaDisplay.aaGame.mShipMenu as State_Menu_Ship).Abilitydata.mUnlocks[5] = 8794;
                            UnlockText.mText = "NEW ABILITY UNLOCKED";
                        }
                    }
                    else if ((aaDisplay.aaGame.mShipMenu as State_Menu_Ship).shipCount == 2)
                    {
                        if (mCurrentWave >= 10 && (aaDisplay.aaGame.mShipMenu as State_Menu_Ship).Abilitydata.mUnlocks[6] == 0)
                        {
                            (aaDisplay.aaGame.mShipMenu as State_Menu_Ship).Abilitydata.mUnlocks[6] = 3252;
                            UnlockText.mText = "NEW ABILITY UNLOCKED";
                        }
                        if (mCurrentWave >= 20 && (aaDisplay.aaGame.mShipMenu as State_Menu_Ship).Abilitydata.mUnlocks[7] == 0)
                        {
                            (aaDisplay.aaGame.mShipMenu as State_Menu_Ship).Abilitydata.mUnlocks[7] = 3248;
                            UnlockText.mText = "NEW ABILITY UNLOCKED";
                        }
                        if (mCurrentWave >= 30 && (aaDisplay.aaGame.mShipMenu as State_Menu_Ship).Abilitydata.mUnlocks[8] == 0)
                        {
                            (aaDisplay.aaGame.mShipMenu as State_Menu_Ship).Abilitydata.mUnlocks[8] = 8942;
                            UnlockText.mText = "NEW ABILITY UNLOCKED";
                        }
                    }
                    (aaDisplay.aaGame.mShipMenu as State_Menu_Ship).SaveData();
                }

                foreach (SoundEffectInstance sfx in aaDisplay.aaGame.mGameSoundFX)
                {
                    if (sfx.State == SoundState.Stopped)
                    {
                        sfx.Dispose();
                        aaDisplay.aaGame.mGameSoundFXRemove.Add(sfx);
                    }
                }

                foreach (SoundEffectInstance sfx in aaDisplay.aaGame.mGameSoundFXRemove)
                {
                    aaDisplay.aaGame.mGameSoundFX.Remove(sfx);
                }
                aaDisplay.aaGame.mGameSoundFXRemove.Clear();
            }

            return(true);
        }