Beispiel #1
0
        // switch state
        public override void Handle()
        {
            // if not initialied, do nothing
            if (privInstance == null)
            {
                return;
            }

            GlobalPlayerStats.Player2.life--;
            GlobalPlayerStats.reduceLife();
            ProjectileTracker.Reset();

            // if player two is not over, switch to player two
            if (GlobalConfiguration.isTwoPlayers && GlobalPlayerStats.Player1.life > 0)
            {
                TimerManager.SwapInstance();
                ColliPairManager.SwapInstance();
                SpaceInvaders.currentState = ToPlayer1State.getInstance();
            }
            else if (GlobalPlayerStats.Player2.life > 0) // continue play
            {
                SpaceInvaders.currentState = ToPlayer2State.getInstance();
            }
            else // switch to score screen
            {
                SpaceInvaders.currentState = GameOverState.getInstance();
            }
        }
Beispiel #2
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);
        }
Beispiel #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();
            }
        }
Beispiel #4
0
        // Singleton method
        public static ColliPairManager getInstance()
        {
            if (pInstance == null)
            {
                pInstance = new ColliPairManager();
            }

            return(pInstance);
        }
Beispiel #5
0
        public static void SwapInstance()
        {
            ColliPairManager temp;

            temp              = pInstance;
            pInstance         = pIncativeInstance;
            pIncativeInstance = temp;

            Debug.Print("Collision Pair Swapped!");
        }
Beispiel #6
0
        // Up the level
        // --rebuild collision and timer manager
        // --reload alient grid and shield grid
        // --regroup sprites into spritebatch
        public void LevelUp()
        {
            TimerManager.DiscardInstance();
            ColliPairManager.DiscardInstance();
            SpriteBatchManager.getInstance().FindSpriteBatchByName(SpriteBatch.Name.Player1).RecycleNodes();
            SpriteBatchManager.getInstance().FindSpriteBatchByName(SpriteBatch.Name.Player1).Wash();


            this.load();
            GlobalPlayerStats.Player1.alienLeft = 55;
            ProjectileTracker.Reset();

            SpaceInvaders.currentState = ToPlayer1State.getInstance();
        }
Beispiel #7
0
        // switch state
        public override void Handle()
        {
            this.hitcount = 0;

            // if not initialied, do nothing
            if (privInstance == null)
            {
                return;
            }
            else
            {
                GlobalPlayerStats.reset();
                if (GlobalPlayerStats.isPlayer1Playing)
                {
                    PlayerOneState.getInstance().LevelUp();

                    TimerManager.SwapInstance();
                    ColliPairManager.SwapInstance();

                    PlayerTwoState.getInstance().LevelUp();

                    TimerManager.SwapInstance();
                    ColliPairManager.SwapInstance();
                }
                else
                {
                    PlayerTwoState.getInstance().LevelUp();

                    TimerManager.SwapInstance();
                    ColliPairManager.SwapInstance();

                    PlayerOneState.getInstance().LevelUp();
                }

                SpaceInvaders.currentState      = StartScreenState.getInstance();
                GlobalConfiguration.modeChoosed = false;
            }
        }
Beispiel #8
0
        //-----------------------------------------------------------------------------
        // Game::LoadContent()
        //		Allows you to load all content needed for your engine,
        //	    such as objects, graphics, etc.
        //-----------------------------------------------------------------------------

        public override void LoadContent()
        {
            // Load Shared Elements
            TextureManager texMgr = TextureManager.getInstance();
            ImageManager imgMgr = ImageManager.getInstance();

            // Load Textures
            texMgr.AddTexture(Texture.Name.Alien, "Invaders_0.tga");
            texMgr.AddTexture(Texture.Name.Shield, "birds_N_shield.tga");
            texMgr.AddTexture(Texture.Name.Font, "Consolas36pt.tga");

            // Load Glyphs
            GlyphManager.getInstance().AddXml(Glyph.Name.Consolas36pt, "Consolas36pt.xml", Texture.Name.Font);

            // Load Images
            imgMgr.AddImage(Image.Name.Squid_1, Texture.Name.Alien, 610.0f, 25.0f, 119.0f, 122.0f);
            imgMgr.AddImage(Image.Name.Squid_2, Texture.Name.Alien, 610.0f, 173.0f, 119.0f, 122.0f);
            imgMgr.AddImage(Image.Name.Crab_1, Texture.Name.Alien, 316.0f, 25.0f, 166.0f, 119.0f);
            imgMgr.AddImage(Image.Name.Crab_2, Texture.Name.Alien, 316.0f, 180.0f, 166.0f, 119.0f);
            imgMgr.AddImage(Image.Name.Octopus_1, Texture.Name.Alien, 57.0f, 16.0f, 197.0f, 132.0f);
            imgMgr.AddImage(Image.Name.Octopus_2, Texture.Name.Alien, 57.0f, 170.0f, 197.0f, 132.0f);
            imgMgr.AddImage(Image.Name.Ship, Texture.Name.Alien, 50f, 331f, 193f, 126f);
            imgMgr.AddImage(Image.Name.Missile, Texture.Name.Alien, 417f, 698f, 19f, 60f);
            imgMgr.AddImage(Image.Name.Nothing, Texture.Name.Alien, 21f, 480f, 341, 14f);
            imgMgr.AddImage(Image.Name.Brick, Texture.Name.Shield, 20, 210, 10, 5);
            imgMgr.AddImage(Image.Name.BrickLeft_Top0, Texture.Name.Shield, 15, 180, 10, 5);
            imgMgr.AddImage(Image.Name.BrickLeft_Top1, Texture.Name.Shield, 15, 185, 10, 5);
            imgMgr.AddImage(Image.Name.BrickLeft_Bottom, Texture.Name.Shield, 35, 215, 10, 5);
            imgMgr.AddImage(Image.Name.BrickRight_Top0, Texture.Name.Shield, 75, 180, 10, 5);
            imgMgr.AddImage(Image.Name.BrickRight_Top1, Texture.Name.Shield, 75, 185, 10, 5);
            imgMgr.AddImage(Image.Name.BrickRight_Bottom, Texture.Name.Shield, 55, 215, 10, 5);
            imgMgr.AddImage(Image.Name.DaggerBomb, Texture.Name.Alien, 275, 795, 43, 88);
            imgMgr.AddImage(Image.Name.RollingBomb, Texture.Name.Alien, 486, 639, 50, 106);
            imgMgr.AddImage(Image.Name.ZigzagBomb, Texture.Name.Alien, 570, 639, 50, 106);
            imgMgr.AddImage(Image.Name.AlienExplosion, Texture.Name.Alien, 567, 484, 197, 125);
            imgMgr.AddImage(Image.Name.ShipExplosion, Texture.Name.Alien, 558, 334, 228, 120);
            imgMgr.AddImage(Image.Name.MissileExplosion, Texture.Name.Alien, 698, 796, 94, 121);
            imgMgr.AddImage(Image.Name.UFOExplosion, Texture.Name.Alien, 40, 643, 295, 112);
            imgMgr.AddImage(Image.Name.UFO, Texture.Name.Alien, 76, 501, 240, 107);

            
            SpriteBatchManager.getInstance().AddSpriteBatch(SpriteBatch.Name.Shared, 2);

            GameSprite Ship = GameSpriteFactory.CreateGameSprite(GameObject.Category.Ship, GameSprite.Name.Ship, SpriteBatch.Name.Shared, 400f, 150f, 40.0f, 25.0f, Image.Name.Ship);
            GameSprite Missile = GameSpriteFactory.CreateGameSprite(GameObject.Category.Missile, GameSprite.Name.Missile, SpriteBatch.Name.Shared, 400f, -40f, 4f, 10f, Image.Name.Missile);
            GameSprite WallTop = GameSpriteFactory.CreateGameSprite(GameObject.Category.Wall, GameSprite.Name.TopWall, SpriteBatch.Name.Shared, 448f, 940f, 896f, 0.1f, Image.Name.Nothing);
            GameSprite WallBottom = GameSpriteFactory.CreateGameSprite(GameObject.Category.Wall, GameSprite.Name.BottomWall, SpriteBatch.Name.Shared, 448f, 137.5f, 1000f, 0.1f, Image.Name.Nothing);
            GameSprite WallLeft = GameSpriteFactory.CreateGameSprite(GameObject.Category.Wall, GameSprite.Name.LeftWall, SpriteBatch.Name.Shared, 30f, 512f, 0.1f, 1024f, Image.Name.Nothing);
            GameSprite WallRight = GameSpriteFactory.CreateGameSprite(GameObject.Category.Wall, GameSprite.Name.RightWall, SpriteBatch.Name.Shared, 866f, 512f, 0.1f, 1024f, Image.Name.Nothing);

            GameSprite DaggerBomb = GameSpriteFactory.CreateGameSprite(GameObject.Category.Bomb, GameSprite.Name.DaggerBomb, SpriteBatch.Name.Shared, 900f, 800f, 7f, 15f, Image.Name.DaggerBomb);
            GameSprite ZigzagBomb = GameSpriteFactory.CreateGameSprite(GameObject.Category.Bomb, GameSprite.Name.ZigZagBomb, SpriteBatch.Name.Shared, 900f, 800f, 7f, 15f, Image.Name.ZigzagBomb);
            GameSprite RollingBomb = GameSpriteFactory.CreateGameSprite(GameObject.Category.Bomb, GameSprite.Name.RollingBomb, SpriteBatch.Name.Shared, 900f, 800f, 7f, 15f, Image.Name.RollingBomb);
            GameSprite UFO = GameSpriteFactory.CreateGameSprite(GameObject.Category.UFO, GameSprite.Name.UFO, SpriteBatch.Name.Shared, 960f, 900f, 50f, 20f, Image.Name.UFO);

            ProjectileTracker.setMissile(Missile.pGameObject, Ship.pGameObject);
            ProjectileTracker.setBombs(DaggerBomb.pGameObject, ZigzagBomb.pGameObject, RollingBomb.pGameObject);
            ProjectileTracker.setWalls(WallLeft.pGameObject, WallRight.pGameObject, WallTop.pGameObject, WallBottom.pGameObject);
            ProjectileTracker.pUFO = UFO.pGameObject;

            // Bind keys events
            SubjectManager subjectMgr = SubjectManager.getInstance();
            subjectMgr.CreateAllSubjects();
            subjectMgr.FindSubjectByName(Subject.Name.LeftKey).Subscribe(Ship.pGameObject);
            subjectMgr.FindSubjectByName(Subject.Name.RightKey).Subscribe(Ship.pGameObject);
            subjectMgr.FindSubjectByName(Subject.Name.SpaceKey).Subscribe(Missile.pGameObject);


            // Load Start and score screen
            StartScreenState.getInstance().load();
            ToPlayer1State.getInstance().load();
            ToPlayer2State.getInstance().load();
            GameOverState.getInstance().load();

            // Load player1
            PlayerOneState.getInstance().load();
            
            // Swap timer instance to load player2
            TimerManager.SwapInstance();
            ColliPairManager.SwapInstance();

            // Load Player2
            PlayerTwoState.getInstance().load();

            //Swap back to start with player 1
            ColliPairManager.SwapInstance();
            TimerManager.SwapInstance();

            
        }
Beispiel #9
0
 // Called when up the levels
 public static void DiscardInstance()
 {
     pInstance = null;
 }