Example #1
0
        // game methods
        public override void load()
        {
            //---------------------------------------------------------------------------------------------------------
            // Create sprite batch
            //---------------------------------------------------------------------------------------------------------
            SpriteBatchManager.getInstance().AddSpriteBatch(SpriteBatch.Name.Player2, 2);

            //---------------------------------------------------------------------------------------------------------
            // Create game sprites
            //---------------------------------------------------------------------------------------------------------
            GameObject alienGrid = GameSpriteFactory.CreateAlienGrid(SpriteBatch.Name.Player2, 50f, 800f);

            TimerManager.getInstance().Add(new TimerEvent(TimerEvent.Name.ReleaseUFOCommand, new ReleaseUFOCommand(), 0.5f));

            // PA6 Create shield
            ShieldFactory shieldFactory = new ShieldFactory();

            GameObject shieldGrid_1 = shieldFactory.CreateShield(SpriteBatch.Name.Player2, 150f, 300f, 15f, 7.5f);
            GameObject shieldGrid_2 = shieldFactory.CreateShield(SpriteBatch.Name.Player2, 350f, 300f, 15f, 7.5f);
            GameObject shieldGrid_3 = shieldFactory.CreateShield(SpriteBatch.Name.Player2, 550f, 300f, 15f, 7.5f);
            GameObject shieldGrid_4 = shieldFactory.CreateShield(SpriteBatch.Name.Player2, 750f, 300f, 15f, 7.5f);

            // Collision Pair setup
            ColliPairManager.getInstance().AddCollisionPair(CollisionPair.Name.WallAlien, ProjectileTracker.pLeftWall, alienGrid);
            ColliPairManager.getInstance().AddCollisionPair(CollisionPair.Name.WallAlien, ProjectileTracker.pRightWall, alienGrid);
            ColliPairManager.getInstance().AddCollisionPair(CollisionPair.Name.WallMissile, ProjectileTracker.pTopWall, ProjectileTracker.pMissile);
            ColliPairManager.getInstance().AddCollisionPair(CollisionPair.Name.AlienMissile, alienGrid, ProjectileTracker.pMissile);
            ColliPairManager.getInstance().AddCollisionPair(CollisionPair.Name.ShieldMissile, shieldGrid_1, ProjectileTracker.pMissile);
            ColliPairManager.getInstance().AddCollisionPair(CollisionPair.Name.ShieldMissile, shieldGrid_2, ProjectileTracker.pMissile);
            ColliPairManager.getInstance().AddCollisionPair(CollisionPair.Name.ShieldMissile, shieldGrid_3, ProjectileTracker.pMissile);
            ColliPairManager.getInstance().AddCollisionPair(CollisionPair.Name.ShieldMissile, shieldGrid_4, ProjectileTracker.pMissile);


            ColliPairManager.getInstance().AddCollisionPair(CollisionPair.Name.ShieldBomb, shieldGrid_1, ProjectileTracker.pDaggerBomb);
            ColliPairManager.getInstance().AddCollisionPair(CollisionPair.Name.ShieldBomb, shieldGrid_1, ProjectileTracker.pZigZagBomb);
            ColliPairManager.getInstance().AddCollisionPair(CollisionPair.Name.ShieldBomb, shieldGrid_1, ProjectileTracker.pRollingBomb);
            ColliPairManager.getInstance().AddCollisionPair(CollisionPair.Name.ShieldBomb, shieldGrid_2, ProjectileTracker.pDaggerBomb);
            ColliPairManager.getInstance().AddCollisionPair(CollisionPair.Name.ShieldBomb, shieldGrid_2, ProjectileTracker.pZigZagBomb);
            ColliPairManager.getInstance().AddCollisionPair(CollisionPair.Name.ShieldBomb, shieldGrid_2, ProjectileTracker.pRollingBomb);
            ColliPairManager.getInstance().AddCollisionPair(CollisionPair.Name.ShieldBomb, shieldGrid_3, ProjectileTracker.pDaggerBomb);
            ColliPairManager.getInstance().AddCollisionPair(CollisionPair.Name.ShieldBomb, shieldGrid_3, ProjectileTracker.pZigZagBomb);
            ColliPairManager.getInstance().AddCollisionPair(CollisionPair.Name.ShieldBomb, shieldGrid_3, ProjectileTracker.pRollingBomb);
            ColliPairManager.getInstance().AddCollisionPair(CollisionPair.Name.ShieldBomb, shieldGrid_4, ProjectileTracker.pDaggerBomb);
            ColliPairManager.getInstance().AddCollisionPair(CollisionPair.Name.ShieldBomb, shieldGrid_4, ProjectileTracker.pZigZagBomb);
            ColliPairManager.getInstance().AddCollisionPair(CollisionPair.Name.ShieldBomb, shieldGrid_4, ProjectileTracker.pRollingBomb);

            ColliPairManager.getInstance().AddCollisionPair(CollisionPair.Name.WallBomb, ProjectileTracker.pBottomWall, ProjectileTracker.pDaggerBomb);
            ColliPairManager.getInstance().AddCollisionPair(CollisionPair.Name.WallBomb, ProjectileTracker.pBottomWall, ProjectileTracker.pZigZagBomb);
            ColliPairManager.getInstance().AddCollisionPair(CollisionPair.Name.WallBomb, ProjectileTracker.pBottomWall, ProjectileTracker.pRollingBomb);

            ColliPairManager.getInstance().AddCollisionPair(CollisionPair.Name.MissileBomb, ProjectileTracker.pMissile, ProjectileTracker.pDaggerBomb);
            ColliPairManager.getInstance().AddCollisionPair(CollisionPair.Name.MissileBomb, ProjectileTracker.pMissile, ProjectileTracker.pZigZagBomb);
            ColliPairManager.getInstance().AddCollisionPair(CollisionPair.Name.MissileBomb, ProjectileTracker.pMissile, ProjectileTracker.pRollingBomb);

            ColliPairManager.getInstance().AddCollisionPair(CollisionPair.Name.ShipBomb, ProjectileTracker.pShip, ProjectileTracker.pDaggerBomb);
            ColliPairManager.getInstance().AddCollisionPair(CollisionPair.Name.ShipBomb, ProjectileTracker.pShip, ProjectileTracker.pZigZagBomb);
            ColliPairManager.getInstance().AddCollisionPair(CollisionPair.Name.ShipBomb, ProjectileTracker.pShip, ProjectileTracker.pRollingBomb);

            ColliPairManager.getInstance().AddCollisionPair(CollisionPair.Name.UFOMissile, ProjectileTracker.pUFO, ProjectileTracker.pMissile);
        }
Example #2
0
        public override void Execute(float deltaTime)
        {
            // Swap Image
            ((MoveProxy)(this.privGameObject.pProxy)).SwapImage();

            TimerManager.getInstance().Add(TimerEvent.Name.SwapImageAnimation, this, deltaTime);
        }
Example #3
0
        public override void update()
        {
            if (GlobalTimer.player2 == -1f)
            {
                GlobalTimer.player2Delta = GlobalTimer.currentTime;
            }

            GlobalTimer.player2 = GlobalTimer.currentTime - GlobalTimer.player1Delta;


            // update shared objects
            SpriteBatchManager.getInstance().FindSpriteBatchByName(SpriteBatch.Name.Shared).UpdateAllNodes();

            // update score bar
            SpriteBatchManager.getInstance().FindSpriteBatchByName(SpriteBatch.Name.ScoreBar).UpdateAllNodes();
            // update current player
            SpriteBatchManager.getInstance().FindSpriteBatchByName(SpriteBatch.Name.Player2).UpdateAllNodes();

            // update timer events
            TimerManager.getInstance().Update(GlobalTimer.currentTime);
            // update observers
            SubjectManager.getInstance().UpdateSubjects();
            // update collision
            ColliPairManager.getInstance().Process();

            // level up logic

            if (GlobalPlayerStats.Player2.alienLeft == 0)
            {
                this.LevelUp();
            }
        }
Example #4
0
        public override void Execute(float deltaTime)
        {
            float newtime = deltaTime;

            if (!ProjectileTracker.DaggerFlying && privGameObject.dropID == ProjectileTracker.pDaggerBomb.dropID)
            {
                float x = privGameObject.colliRect.x;
                float y = privGameObject.colliRect.y - privGameObject.colliRect.height / 2f;

                if (y < 150f)
                {
                    y = 160f;
                }

                //Debug.Print("Dagger Drop ID: " + privGameObject.dropID.ToString());

                ((FlyProxy)(ProjectileTracker.pDaggerBomb.pProxy)).Drop(x, y, level);
            }
            else if (!ProjectileTracker.RollingFlying && privGameObject.dropID == ProjectileTracker.pRollingBomb.dropID)
            {
                float x = privGameObject.colliRect.x;
                float y = privGameObject.colliRect.y - privGameObject.colliRect.height / 2f;

                if (y < 150f)
                {
                    y = 160f;
                }

                //Debug.Print("Rolling Drop ID: " + privGameObject.dropID.ToString());

                ((FlyProxy)(ProjectileTracker.pRollingBomb.pProxy)).Drop(x, y, level);

                newtime *= 0.98f;
            }
            else if (!ProjectileTracker.ZigzagFlying && privGameObject.dropID == ProjectileTracker.pZigZagBomb.dropID)
            {
                float x = privGameObject.colliRect.x;
                float y = privGameObject.colliRect.y - privGameObject.colliRect.height / 2f;

                if (y < 150f)
                {
                    y = 160f;
                }

                //Debug.Print("ZigZag Drop ID: " + privGameObject.dropID.ToString());

                ((FlyProxy)(ProjectileTracker.pZigZagBomb.pProxy)).Drop(x, y, level);

                newtime *= 0.96f;
            }



            //Debug.Print("(" + this.privGameObject.pProxy.x.ToString() + ", " + this.privGameObject.pProxy.y.ToString() + ")");

            TimerManager.getInstance().Add(TimerEvent.Name.SwapImageAnimation, this, newtime);
        }
Example #5
0
        public override void Execute(float deltaTime)
        {
            ProjectileTracker.UFOFlying = true;

            float nextDelta = this.deltaTime + new Random().Next(5, 20);


            //Debug.Print("(" + this.privGameObject.pProxy.x.ToString() + ", " + this.privGameObject.pProxy.y.ToString() + ")");

            TimerManager.getInstance().Add(TimerEvent.Name.SwapImageAnimation, this, nextDelta);
        }
Example #6
0
        // switch state
        public override void Handle()
        {
            this.hitcount = 0;

            // if not initialied, do nothing
            if (privInstance == null)
            {
                return;
            }
            else
            {
                GlobalPlayerStats.isPlayer1Playing = true;
                TimerManager.getInstance().RefreshTimer();
                ProjectileTracker.Reset();
                SpaceInvaders.currentState = PlayerOneState.getInstance();
            }
        }
Example #7
0
        public override void Execute(float deltaTime)
        {
            // Swap Image
            ((MoveProxy)(this.privGameObject.pProxy)).SwapImage();

            int alienShoot;

            if (GlobalPlayerStats.isPlayer1Playing)
            {
                alienShoot = 55 - GlobalPlayerStats.Player1.alienLeft;
            }
            else
            {
                alienShoot = 55 - GlobalPlayerStats.Player2.alienLeft;
            }

            TimerManager.getInstance().Add(TimerEvent.Name.SwapImageAnimation, this, this.deltaTime - 0.005f * alienShoot);
        }
        public override void Execute(float deltaTime)
        {
            this.privGameObject.CompositeMove();
            //Debug.Print("(" + this.privGameObject.pProxy.x.ToString() + ", " + this.privGameObject.pProxy.y.ToString() + ")");

            SoundUtility.getInstance().Advancing();

            int alienShoot;

            if (GlobalPlayerStats.isPlayer1Playing)
            {
                alienShoot = 55 - GlobalPlayerStats.Player1.alienLeft;
            }
            else
            {
                alienShoot = 55 - GlobalPlayerStats.Player2.alienLeft;
            }


            TimerManager.getInstance().Add(TimerEvent.Name.SwapImageAnimation, this, this.deltaTime - 0.005f * alienShoot);
        }
Example #9
0
        // create 5 * 11 alien grid for given player at given location
        public static GameObject CreateAlienGrid(SpriteBatch.Name sbName, float x, float y)
        {
            // squid
            // crab
            // octopus
            GameSprite alienGridSprite = GameSpriteFactory.CreateCompositeSprite(GameObject.Category.AlienGrid, GameObject.CompositeType.Grid
                                                                                 , x, y, Image.Name.Nothing);

            Image explosionImage = ImageManager.getInstance().FindImageByName(Image.Name.AlienExplosion);


            GlobalPlayerStats.playerstats pStats;

            if (sbName == SpriteBatch.Name.Player1)
            {
                pStats = GlobalPlayerStats.Player1;
            }
            else
            {
                pStats = GlobalPlayerStats.Player2;
            }

            GameObject alienGrid = alienGridSprite.pGameObject;

            // 11 columns
            for (int i = 0; i < 11; i++)
            {
                GameSprite.Name gName;
                Image.Name      imgName;
                Image.Name      altImgName;

                GameSprite       gs;
                SwapImgAnimation swapAni;

                GameSprite alienCol = GameSpriteFactory.CreateCompositeSprite(GameObject.Category.AlienCol, GameObject.CompositeType.Column
                                                                              , x, y, Image.Name.Nothing);

                // 5 rows
                for (int j = 0; j < 5; j++)
                {
                    if (j == 0)
                    {
                        gName      = GameSprite.Name.Squid;
                        imgName    = Image.Name.Squid_1;
                        altImgName = Image.Name.Squid_2;
                    }
                    else if (j < 3)
                    {
                        gName      = GameSprite.Name.Crab;
                        imgName    = Image.Name.Crab_1;
                        altImgName = Image.Name.Crab_2;
                    }
                    else
                    {
                        gName      = GameSprite.Name.Octopus;
                        imgName    = Image.Name.Octopus_1;
                        altImgName = Image.Name.Octopus_2;
                    }

                    gs = CreateGameSprite(GameObject.Category.Alien, gName, sbName, x + i * 60f, y - j * 55f, 40.0f, 40.0f, imgName);
                    gs.addImage(altImgName);
                    gs.pExplosionImage = explosionImage;

                    // Add SwapImage animations
                    swapAni = new SwapImgAnimation(gs.pGameObject, 1.0f - 0.05f * pStats.currentLevel);
                    TimerManager.getInstance().Add(TimerEvent.Name.SwapImageAnimation, swapAni, 1.0f - 0.05f * pStats.currentLevel);

                    // Add Sprite to column
                    alienCol.pGameObject.AddChild(gs.pGameObject);
                }

                // Set Bomb Dropping logic
                alienCol.pGameObject.dropID = i;
                BombDropCommand dropCmd = new BombDropCommand(alienCol.pGameObject, pStats.currentLevel);
                TimerManager.getInstance().Add(TimerEvent.Name.DropBombCommand, dropCmd, 3.0f - 0.2f * pStats.currentLevel);

                // --add col to the batch
                SpriteBatchManager.getInstance().FindSpriteBatchByName(sbName).AddSprite(alienCol);

                alienGrid.AddChild(alienCol.pGameObject);
            }

            // Configure alien advance animation
            alienGrid.CompositeSetDelta(20.0f);
            AlienAdvanceAnimation alienAdv = new AlienAdvanceAnimation(alienGrid, 1.0f - 0.05f * pStats.currentLevel);

            TimerManager.getInstance().Add(TimerEvent.Name.AlienAdvanceAnimation, alienAdv, 1.0f - 0.1f * pStats.currentLevel);
            // -- add grid to the batch
            if (GlobalConfiguration.showCollisionRect)
            {
                SpriteBatchManager.getInstance().FindSpriteBatchByName(sbName).AddSprite(alienGrid.colliRect.box);
            }

            SpriteBatchManager.getInstance().FindSpriteBatchByName(sbName).AddSprite(alienGridSprite);

            return(alienGrid);
        }