// 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); }
public override void Execute(float deltaTime) { // Swap Image ((MoveProxy)(this.privGameObject.pProxy)).SwapImage(); TimerManager.getInstance().Add(TimerEvent.Name.SwapImageAnimation, this, deltaTime); }
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(); } }
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); }
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); }
// 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(); } }
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); }
// 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); }