// 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); }
// game methods public override void load() { // Score Title FontManager.getInstance().AddFont(Font.Name.Title, SpriteBatch.Name.ScoreBar, "SCORE(P1)", Glyph.Name.Consolas36pt, 20, 1000); FontManager.getInstance().AddFont(Font.Name.Title, SpriteBatch.Name.ScoreBar, "HIGH SCORE", Glyph.Name.Consolas36pt, 350, 1000); FontManager.getInstance().AddFont(Font.Name.Title, SpriteBatch.Name.ScoreBar, "SCORE(P2)", Glyph.Name.Consolas36pt, 700, 1000); // Score Number GlobalPlayerStats.P1_Score = FontManager.getInstance().AddFont(Font.Name.Title, SpriteBatch.Name.ScoreBar, "0000", Glyph.Name.Consolas36pt, 30, 965); GlobalPlayerStats.HighestScore = FontManager.getInstance().AddFont(Font.Name.Title, SpriteBatch.Name.ScoreBar, "0000", Glyph.Name.Consolas36pt, 390, 965); GlobalPlayerStats.P2_Score = FontManager.getInstance().AddFont(Font.Name.Title, SpriteBatch.Name.ScoreBar, "0000", Glyph.Name.Consolas36pt, 750, 965); GlobalPlayerStats.P1_Life = FontManager.getInstance().AddFont(Font.Name.Title, SpriteBatch.Name.ScoreBar, "P1 HP = " + GlobalPlayerStats.Player1.life.ToString(), Glyph.Name.Consolas36pt, 25f, 50f); GlobalPlayerStats.P2_Life = FontManager.getInstance().AddFont(Font.Name.Title, SpriteBatch.Name.ScoreBar, "P2 HP = " + GlobalPlayerStats.Player2.life.ToString(), Glyph.Name.Consolas36pt, 696f, 50f); // Instructions // Game Title FontManager.getInstance().AddFont(Font.Name.Title, SpriteBatch.Name.Instruction, "SPACE INVADERS", Glyph.Name.Consolas36pt, 320, 675); // Score Table GameSprite instrSquid = GameSpriteFactory.Create(GameObject.Category.Squid, GameSprite.Name.Squid_1, 370, 550, Image.Name.Squid_1); GameSprite instrCrab = GameSpriteFactory.Create(GameObject.Category.Crab, GameSprite.Name.Crab_1, 370, 450, Image.Name.Crab_1); GameSprite instrOctopus = GameSpriteFactory.Create(GameObject.Category.Octopus, GameSprite.Name.Octopus_1, 370, 350, Image.Name.Octopus_1); FontManager.getInstance().AddFont(Font.Name.Title, SpriteBatch.Name.Instruction, "= 30 Pts", Glyph.Name.Consolas36pt, 420, 550); FontManager.getInstance().AddFont(Font.Name.Title, SpriteBatch.Name.Instruction, "= 20 Pts", Glyph.Name.Consolas36pt, 420, 450); FontManager.getInstance().AddFont(Font.Name.Title, SpriteBatch.Name.Instruction, "= 10 Pts", Glyph.Name.Consolas36pt, 420, 350); // Player Choice FontManager.getInstance().AddFont(Font.Name.Title, SpriteBatch.Name.Instruction, "1 - 1 Player 2 - 2 Players", Glyph.Name.Consolas36pt, 220, 150); // Add GameSprite to SpriteBatch SpriteBatch sbInstr = SpriteBatchManager.getInstance().AddSpriteBatch(SpriteBatch.Name.Instruction, 1); sbInstr.AddSprite(instrSquid); sbInstr.AddSprite(instrCrab); sbInstr.AddSprite(instrOctopus); }
//----------------------------------------------------------------------------- // 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(); }
public GameObject CreateShield(SpriteBatch.Name sbName, float center_x, float center_y, float brickWidth, float brickHeight) { // create a grid first GameSprite gridSprite = GameSpriteFactory.CreateCompositeSprite(GameObject.Category.Shield , GameObject.CompositeType.Grid, 400f, 400f, Image.Name.Nothing); GameObject grid = gridSprite.pGameObject; // Create column and bricks // Set parameter float start_x = center_x - 3.5f * brickWidth; float start_y = center_y - 5.0f * brickHeight; // Load Images Image imgBrick = ImageManager.getInstance().FindImageByName(Image.Name.Brick); Image imgBrickLeft_Top0 = ImageManager.getInstance().FindImageByName(Image.Name.BrickLeft_Top0); Image imgBrickLeft_Top1 = ImageManager.getInstance().FindImageByName(Image.Name.BrickLeft_Top1); Image imgBrickLeft_Bottom = ImageManager.getInstance().FindImageByName(Image.Name.BrickLeft_Bottom); Image imgBrickRight_Top0 = ImageManager.getInstance().FindImageByName(Image.Name.BrickRight_Top0); Image imgBrickRight_Top1 = ImageManager.getInstance().FindImageByName(Image.Name.BrickRight_Top1); Image imgBrickRight_Bottom = ImageManager.getInstance().FindImageByName(Image.Name.BrickRight_Bottom); // Create column 1/7 (bricks created from bottom to top) GameSprite col_1_Sprite = GameSpriteFactory.CreateCompositeSprite(GameObject.Category.Shield , GameObject.CompositeType.Column, 400f, 400f, Image.Name.Nothing); GameObject col_1 = col_1_Sprite.pGameObject; col_1.AddChild(GameSpriteFactory.CreateShieldSprite(sbName, start_x, start_y + 0 * brickHeight, brickWidth, brickHeight, imgBrick).pGameObject); col_1.AddChild(GameSpriteFactory.CreateShieldSprite(sbName, start_x, start_y + 1 * brickHeight, brickWidth, brickHeight, imgBrick).pGameObject); col_1.AddChild(GameSpriteFactory.CreateShieldSprite(sbName, start_x, start_y + 2 * brickHeight, brickWidth, brickHeight, imgBrick).pGameObject); col_1.AddChild(GameSpriteFactory.CreateShieldSprite(sbName, start_x, start_y + 3 * brickHeight, brickWidth, brickHeight, imgBrick).pGameObject); col_1.AddChild(GameSpriteFactory.CreateShieldSprite(sbName, start_x, start_y + 4 * brickHeight, brickWidth, brickHeight, imgBrick).pGameObject); col_1.AddChild(GameSpriteFactory.CreateShieldSprite(sbName, start_x, start_y + 5 * brickHeight, brickWidth, brickHeight, imgBrick).pGameObject); col_1.AddChild(GameSpriteFactory.CreateShieldSprite(sbName, start_x, start_y + 6 * brickHeight, brickWidth, brickHeight, imgBrick).pGameObject); col_1.AddChild(GameSpriteFactory.CreateShieldSprite(sbName, start_x, start_y + 7 * brickHeight, brickWidth, brickHeight, imgBrick).pGameObject); col_1.AddChild(GameSpriteFactory.CreateShieldSprite(sbName, start_x, start_y + 8 * brickHeight, brickWidth, brickHeight, imgBrickLeft_Top1).pGameObject); col_1.AddChild(GameSpriteFactory.CreateShieldSprite(sbName, start_x, start_y + 9 * brickHeight, brickWidth, brickHeight, imgBrickLeft_Top0).pGameObject); // Create column 2/7 GameSprite col_2_Sprite = GameSpriteFactory.CreateCompositeSprite(GameObject.Category.Shield , GameObject.CompositeType.Column, 400f, 400f, Image.Name.Nothing); GameObject col_2 = col_2_Sprite.pGameObject; col_2.AddChild(GameSpriteFactory.CreateShieldSprite(sbName, start_x + 1 * brickWidth, start_y + 0 * brickHeight, brickWidth, brickHeight, imgBrick).pGameObject); col_2.AddChild(GameSpriteFactory.CreateShieldSprite(sbName, start_x + 1 * brickWidth, start_y + 1 * brickHeight, brickWidth, brickHeight, imgBrick).pGameObject); col_2.AddChild(GameSpriteFactory.CreateShieldSprite(sbName, start_x + 1 * brickWidth, start_y + 2 * brickHeight, brickWidth, brickHeight, imgBrick).pGameObject); col_2.AddChild(GameSpriteFactory.CreateShieldSprite(sbName, start_x + 1 * brickWidth, start_y + 3 * brickHeight, brickWidth, brickHeight, imgBrick).pGameObject); col_2.AddChild(GameSpriteFactory.CreateShieldSprite(sbName, start_x + 1 * brickWidth, start_y + 4 * brickHeight, brickWidth, brickHeight, imgBrick).pGameObject); col_2.AddChild(GameSpriteFactory.CreateShieldSprite(sbName, start_x + 1 * brickWidth, start_y + 5 * brickHeight, brickWidth, brickHeight, imgBrick).pGameObject); col_2.AddChild(GameSpriteFactory.CreateShieldSprite(sbName, start_x + 1 * brickWidth, start_y + 6 * brickHeight, brickWidth, brickHeight, imgBrick).pGameObject); col_2.AddChild(GameSpriteFactory.CreateShieldSprite(sbName, start_x + 1 * brickWidth, start_y + 7 * brickHeight, brickWidth, brickHeight, imgBrick).pGameObject); col_2.AddChild(GameSpriteFactory.CreateShieldSprite(sbName, start_x + 1 * brickWidth, start_y + 8 * brickHeight, brickWidth, brickHeight, imgBrick).pGameObject); col_2.AddChild(GameSpriteFactory.CreateShieldSprite(sbName, start_x + 1 * brickWidth, start_y + 9 * brickHeight, brickWidth, brickHeight, imgBrick).pGameObject); // Create column 3/7 GameSprite col_3_Sprite = GameSpriteFactory.CreateCompositeSprite(GameObject.Category.Shield , GameObject.CompositeType.Column, 400f, 400f, Image.Name.Nothing); GameObject col_3 = col_3_Sprite.pGameObject; col_3.AddChild(GameSpriteFactory.CreateShieldSprite(sbName, start_x + 2 * brickWidth, start_y + 2 * brickHeight, brickWidth, brickHeight, imgBrick).pGameObject); col_3.AddChild(GameSpriteFactory.CreateShieldSprite(sbName, start_x + 2 * brickWidth, start_y + 3 * brickHeight, brickWidth, brickHeight, imgBrick).pGameObject); col_3.AddChild(GameSpriteFactory.CreateShieldSprite(sbName, start_x + 2 * brickWidth, start_y + 4 * brickHeight, brickWidth, brickHeight, imgBrick).pGameObject); col_3.AddChild(GameSpriteFactory.CreateShieldSprite(sbName, start_x + 2 * brickWidth, start_y + 5 * brickHeight, brickWidth, brickHeight, imgBrick).pGameObject); col_3.AddChild(GameSpriteFactory.CreateShieldSprite(sbName, start_x + 2 * brickWidth, start_y + 6 * brickHeight, brickWidth, brickHeight, imgBrick).pGameObject); col_3.AddChild(GameSpriteFactory.CreateShieldSprite(sbName, start_x + 2 * brickWidth, start_y + 7 * brickHeight, brickWidth, brickHeight, imgBrick).pGameObject); col_3.AddChild(GameSpriteFactory.CreateShieldSprite(sbName, start_x + 2 * brickWidth, start_y + 8 * brickHeight, brickWidth, brickHeight, imgBrick).pGameObject); col_3.AddChild(GameSpriteFactory.CreateShieldSprite(sbName, start_x + 2 * brickWidth, start_y + 9 * brickHeight, brickWidth, brickHeight, imgBrick).pGameObject); // Create column 4/7 GameSprite col_4_Sprite = GameSpriteFactory.CreateCompositeSprite(GameObject.Category.Shield , GameObject.CompositeType.Column, 400f, 400f, Image.Name.Nothing); GameObject col_4 = col_4_Sprite.pGameObject; col_4.AddChild(GameSpriteFactory.CreateShieldSprite(sbName, start_x + 3 * brickWidth, start_y + 3 * brickHeight, brickWidth, brickHeight, imgBrick).pGameObject); col_4.AddChild(GameSpriteFactory.CreateShieldSprite(sbName, start_x + 3 * brickWidth, start_y + 4 * brickHeight, brickWidth, brickHeight, imgBrick).pGameObject); col_4.AddChild(GameSpriteFactory.CreateShieldSprite(sbName, start_x + 3 * brickWidth, start_y + 5 * brickHeight, brickWidth, brickHeight, imgBrick).pGameObject); col_4.AddChild(GameSpriteFactory.CreateShieldSprite(sbName, start_x + 3 * brickWidth, start_y + 6 * brickHeight, brickWidth, brickHeight, imgBrick).pGameObject); col_4.AddChild(GameSpriteFactory.CreateShieldSprite(sbName, start_x + 3 * brickWidth, start_y + 7 * brickHeight, brickWidth, brickHeight, imgBrick).pGameObject); col_4.AddChild(GameSpriteFactory.CreateShieldSprite(sbName, start_x + 3 * brickWidth, start_y + 8 * brickHeight, brickWidth, brickHeight, imgBrick).pGameObject); col_4.AddChild(GameSpriteFactory.CreateShieldSprite(sbName, start_x + 3 * brickWidth, start_y + 9 * brickHeight, brickWidth, brickHeight, imgBrick).pGameObject); // Create column 5/7 GameSprite col_5_Sprite = GameSpriteFactory.CreateCompositeSprite(GameObject.Category.Shield , GameObject.CompositeType.Column, 400f, 400f, Image.Name.Nothing); GameObject col_5 = col_5_Sprite.pGameObject; col_5.AddChild(GameSpriteFactory.CreateShieldSprite(sbName, start_x + 4 * brickWidth, start_y + 2 * brickHeight, brickWidth, brickHeight, imgBrick).pGameObject); col_5.AddChild(GameSpriteFactory.CreateShieldSprite(sbName, start_x + 4 * brickWidth, start_y + 3 * brickHeight, brickWidth, brickHeight, imgBrick).pGameObject); col_5.AddChild(GameSpriteFactory.CreateShieldSprite(sbName, start_x + 4 * brickWidth, start_y + 4 * brickHeight, brickWidth, brickHeight, imgBrick).pGameObject); col_5.AddChild(GameSpriteFactory.CreateShieldSprite(sbName, start_x + 4 * brickWidth, start_y + 5 * brickHeight, brickWidth, brickHeight, imgBrick).pGameObject); col_5.AddChild(GameSpriteFactory.CreateShieldSprite(sbName, start_x + 4 * brickWidth, start_y + 6 * brickHeight, brickWidth, brickHeight, imgBrick).pGameObject); col_5.AddChild(GameSpriteFactory.CreateShieldSprite(sbName, start_x + 4 * brickWidth, start_y + 7 * brickHeight, brickWidth, brickHeight, imgBrick).pGameObject); col_5.AddChild(GameSpriteFactory.CreateShieldSprite(sbName, start_x + 4 * brickWidth, start_y + 8 * brickHeight, brickWidth, brickHeight, imgBrick).pGameObject); col_5.AddChild(GameSpriteFactory.CreateShieldSprite(sbName, start_x + 4 * brickWidth, start_y + 9 * brickHeight, brickWidth, brickHeight, imgBrick).pGameObject); // Create column 6/7 GameSprite col_6_Sprite = GameSpriteFactory.CreateCompositeSprite(GameObject.Category.Shield , GameObject.CompositeType.Column, 400f, 400f, Image.Name.Nothing); GameObject col_6 = col_6_Sprite.pGameObject; col_6.AddChild(GameSpriteFactory.CreateShieldSprite(sbName, start_x + 5 * brickWidth, start_y + 0 * brickHeight, brickWidth, brickHeight, imgBrick).pGameObject); col_6.AddChild(GameSpriteFactory.CreateShieldSprite(sbName, start_x + 5 * brickWidth, start_y + 1 * brickHeight, brickWidth, brickHeight, imgBrick).pGameObject); col_6.AddChild(GameSpriteFactory.CreateShieldSprite(sbName, start_x + 5 * brickWidth, start_y + 2 * brickHeight, brickWidth, brickHeight, imgBrick).pGameObject); col_6.AddChild(GameSpriteFactory.CreateShieldSprite(sbName, start_x + 5 * brickWidth, start_y + 3 * brickHeight, brickWidth, brickHeight, imgBrick).pGameObject); col_6.AddChild(GameSpriteFactory.CreateShieldSprite(sbName, start_x + 5 * brickWidth, start_y + 4 * brickHeight, brickWidth, brickHeight, imgBrick).pGameObject); col_6.AddChild(GameSpriteFactory.CreateShieldSprite(sbName, start_x + 5 * brickWidth, start_y + 5 * brickHeight, brickWidth, brickHeight, imgBrick).pGameObject); col_6.AddChild(GameSpriteFactory.CreateShieldSprite(sbName, start_x + 5 * brickWidth, start_y + 6 * brickHeight, brickWidth, brickHeight, imgBrick).pGameObject); col_6.AddChild(GameSpriteFactory.CreateShieldSprite(sbName, start_x + 5 * brickWidth, start_y + 7 * brickHeight, brickWidth, brickHeight, imgBrick).pGameObject); col_6.AddChild(GameSpriteFactory.CreateShieldSprite(sbName, start_x + 5 * brickWidth, start_y + 8 * brickHeight, brickWidth, brickHeight, imgBrick).pGameObject); col_6.AddChild(GameSpriteFactory.CreateShieldSprite(sbName, start_x + 5 * brickWidth, start_y + 9 * brickHeight, brickWidth, brickHeight, imgBrick).pGameObject); // Create column 7/7 GameSprite col_7_Sprite = GameSpriteFactory.CreateCompositeSprite(GameObject.Category.Shield , GameObject.CompositeType.Column, 400f, 400f, Image.Name.Nothing); GameObject col_7 = col_7_Sprite.pGameObject; col_7.AddChild(GameSpriteFactory.CreateShieldSprite(sbName, start_x + 6 * brickWidth, start_y + 0 * brickHeight, brickWidth, brickHeight, imgBrick).pGameObject); col_7.AddChild(GameSpriteFactory.CreateShieldSprite(sbName, start_x + 6 * brickWidth, start_y + 1 * brickHeight, brickWidth, brickHeight, imgBrick).pGameObject); col_7.AddChild(GameSpriteFactory.CreateShieldSprite(sbName, start_x + 6 * brickWidth, start_y + 2 * brickHeight, brickWidth, brickHeight, imgBrick).pGameObject); col_7.AddChild(GameSpriteFactory.CreateShieldSprite(sbName, start_x + 6 * brickWidth, start_y + 3 * brickHeight, brickWidth, brickHeight, imgBrick).pGameObject); col_7.AddChild(GameSpriteFactory.CreateShieldSprite(sbName, start_x + 6 * brickWidth, start_y + 4 * brickHeight, brickWidth, brickHeight, imgBrick).pGameObject); col_7.AddChild(GameSpriteFactory.CreateShieldSprite(sbName, start_x + 6 * brickWidth, start_y + 5 * brickHeight, brickWidth, brickHeight, imgBrick).pGameObject); col_7.AddChild(GameSpriteFactory.CreateShieldSprite(sbName, start_x + 6 * brickWidth, start_y + 6 * brickHeight, brickWidth, brickHeight, imgBrick).pGameObject); col_7.AddChild(GameSpriteFactory.CreateShieldSprite(sbName, start_x + 6 * brickWidth, start_y + 7 * brickHeight, brickWidth, brickHeight, imgBrick).pGameObject); col_7.AddChild(GameSpriteFactory.CreateShieldSprite(sbName, start_x + 6 * brickWidth, start_y + 8 * brickHeight, brickWidth, brickHeight, imgBrickRight_Top1).pGameObject); col_7.AddChild(GameSpriteFactory.CreateShieldSprite(sbName, start_x + 6 * brickWidth, start_y + 9 * brickHeight, brickWidth, brickHeight, imgBrickRight_Top0).pGameObject); // Add Columns to Grid grid.AddChild(col_1); grid.AddChild(col_2); grid.AddChild(col_3); grid.AddChild(col_4); grid.AddChild(col_5); grid.AddChild(col_6); grid.AddChild(col_7); // Add to sprite batch SpriteBatch sb = SpriteBatchManager.getInstance().FindSpriteBatchByName(sbName); sb.AddSprite(gridSprite); sb.AddSprite(col_1_Sprite); sb.AddSprite(col_2_Sprite); sb.AddSprite(col_3_Sprite); sb.AddSprite(col_4_Sprite); sb.AddSprite(col_5_Sprite); sb.AddSprite(col_6_Sprite); sb.AddSprite(col_7_Sprite); return(grid); }
// 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); }