public void InitializeGame() { health = new Healthbar(graphicsDevice); health.Initialize(); floor = new Floor(graphicsDevice); floor.Initialize(); ExplosionManager.Initialize(graphicsDevice); EntityManager.Add(Ship.Instance); camera = new Camera(graphicsDevice); }
public void Update(GameTime gameTime) { if ((health == 0) && (ending == false)) { ending = true; Game1.Explode.Play(0.4f, Game1.NextFloat(rand, 0.4f, 0.4f), 0); ExplosionManager.Add(new Explosion(Ship.Instance.Position, 0, 63)); Ship.Instance.IsExpired = true; } if (ending == true) { if (endtime <= 3.0f) { endtime += (float)gameTime.ElapsedGameTime.TotalSeconds; } } }
public void Draw() { if (gameState == 0) { MainMenu.Begin(); MainMenu.Draw(MainBack, new Rectangle(0, 0, 800, 900), Color.White); MainMenu.Draw(MainHeader, new Rectangle(0, 0, 800, 200), Color.White); MainMenu.Draw(MainButton, new Rectangle(200, 250, 400, 100), Color.White); MainMenu.DrawString(MainButtonName, "Level 1", new Vector2(230, 265), Color.Black); MainMenu.Draw(MainButton, new Rectangle(200, 400, 400, 100), Color.White * locked2); MainMenu.DrawString(MainButtonName, "Level 2", new Vector2(230, 415), Color.Black * locked2); MainMenu.Draw(MainButton, new Rectangle(200, 550, 400, 100), Color.White * locked3); MainMenu.DrawString(MainButtonName, "Level 3", new Vector2(230, 565), Color.Black * locked3); MainMenu.Draw(MainButton, new Rectangle(200, 700, 400, 100), Color.White); MainMenu.DrawString(MainButtonName, "Credits", new Vector2(230, 715), Color.Black); MainMenu.End(); graphicsDevice.BlendState = BlendState.Opaque; graphicsDevice.DepthStencilState = DepthStencilState.Default; } else if (gameState == 1) { MainMenu.Begin(); MainMenu.Draw(MainBack, new Rectangle(0, 0, 800, 900), Color.White); MainMenu.Draw(MainHeader, new Rectangle(0, 0, 800, 200), Color.White); MainMenu.Draw(MainButton, new Rectangle(200, 700, 400, 100), Color.White); MainMenu.DrawString(MainButtonName, "Credits:", new Vector2(200, 265), Color.Black); MainMenu.DrawString(CreditsText, "Explosion Texture: \r\n\r\nhttps://opengameart.org/content/explosion-sheet", new Vector2(200, 365), Color.Black * locked2); MainMenu.DrawString(CreditsText, "Music and Sounds: \r\n\r\nhttp://musmus.main.jp/english.html", new Vector2(200, 515), Color.Black * locked2); MainMenu.DrawString(MainButtonName, "Back", new Vector2(230, 715), Color.Black); MainMenu.End(); graphicsDevice.BlendState = BlendState.Opaque; graphicsDevice.DepthStencilState = DepthStencilState.Default; } else { EntityManager.Draw(camera); floor.Draw(camera); ExplosionManager.Draw(camera); health.Draw(); } }
static void HandleCollisions() { // handle collisions between bullets and enemy1 for (int i = 0; i < enemy1.Count; i++) { for (int j = 0; j < playerbullets.Count; j++) { if (IsColliding(enemy1[i], playerbullets[j])) { enemy1[i].health--; playerbullets[j].IsExpired = true; Game1.PlayerShoot.Play(0.4f, 0.8f, 0); ExplosionManager.Add(new Explosion(enemy1[i].Position, 0, 2)); if (enemy1[i].health <= 0) { Game1.Explode.Play(0.4f, Game1.NextFloat(rand, 0.4f, 0.4f), 0); ExplosionManager.Add(new Explosion(enemy1[i].Position, 0, 63)); enemy1[i].IsExpired = true; } } } } // handle collisions between bullets and enemy2 for (int i = 0; i < enemy2.Count; i++) { for (int j = 0; j < playerbullets.Count; j++) { if (IsColliding(enemy2[i], playerbullets[j])) { enemy2[i].health--; playerbullets[j].IsExpired = true; Game1.PlayerShoot.Play(0.4f, 0.8f, 0); ExplosionManager.Add(new Explosion(enemy2[i].Position, 0, 2)); if (enemy2[i].health <= 0) { Game1.Explode.Play(0.4f, Game1.NextFloat(rand, 0.4f, 0.4f), 0); ExplosionManager.Add(new Explosion(enemy2[i].Position, 0, 63)); enemy2[i].IsExpired = true; } } } } // handle collisions between bullets and player for (int i = 0; i < enemybullets.Count; i++) { if (IsColliding(Ship.Instance, enemybullets[i])) { Healthbar.Hit(); enemybullets[i].IsExpired = true; Game1.EnemyShoot.Play(0.4f, -0.8f, 0); } } // handle collisions between bullets and boss shield for (int i = 0; i < shield.Count; i++) { for (int j = 0; j < playerbullets.Count; j++) { if (IsColliding(shield[i], playerbullets[j])) { shield[i].health--; boss[0].health--; playerbullets[j].IsExpired = true; Game1.PlayerShoot.Play(0.4f, 0.8f, 0); ExplosionManager.Add(new Explosion(shield[i].Position, 0, 2)); if (shield[i].health <= 0) { Game1.Explode.Play(0.4f, Game1.NextFloat(rand, 0.4f, 0.4f), 0); ExplosionManager.Add(new Explosion(shield[i].Position, 0, 63)); shield[i].IsExpired = true; } } } } // handle collisions between bullets and boss core for (int i = 0; i < core.Count; i++) { for (int j = 0; j < playerbullets.Count; j++) { if (IsColliding(core[i], playerbullets[j])) { core[i].health--; boss[0].health--; playerbullets[j].IsExpired = true; Game1.PlayerShoot.Play(0.4f, 0.8f, 0); ExplosionManager.Add(new Explosion(core[i].Position, 0, 2)); if (core[i].health <= 0) { Game1.Explode.Play(0.4f, Game1.NextFloat(rand, 0.4f, 0.4f), 0); ExplosionManager.Add(new Explosion(core[i].Position, 0, 63)); core[i].IsExpired = true; } } } } //remove boss when cores destroyed if (core.Count > 0) { bossSpawned = true; } else if ((core.Count == 0) && (bossSpawned == true)) { for (int i = 0; i < turret.Count; i++) { turret[i].IsExpired = true; } ExplosionManager.Add(new Explosion(boss[0].Position, 0, 63)); boss[0].IsExpired = true; bossSpawned = false; } }
public void Update(GameTime gameTime) { if ((Mouse.GetState().LeftButton == ButtonState.Pressed) && (gameState < 2)) { clicked = true; } if ((Mouse.GetState().LeftButton == ButtonState.Released) && (gameState < 2) && (clicked == true)) { clicked = false; mousePos = new Point(Mouse.GetState().X, Mouse.GetState().Y); if (Level1.Contains(mousePos)) { InitializeGame(); gameState = 2; game.IsMouseVisible = false; MediaPlayer.Play(Game1.Ingame); Game1.Select.Play(0.2f, 0, 0); } else if ((Level2.Contains(mousePos)) && (locked2 == 1f)) { InitializeGame(); gameState = 3; game.IsMouseVisible = false; MediaPlayer.Play(Game1.Ingame); Game1.Select.Play(0.2f, 0, 0); } else if ((Level3.Contains(mousePos)) && (locked3 == 1f)) { InitializeGame(); gameState = 4; game.IsMouseVisible = false; MediaPlayer.Play(Game1.Boss); Game1.Select.Play(0.2f, 0, 0); } else if (Credits.Contains(mousePos)) { Game1.SelectCredits.Play(0.2f, 0, 0); if (gameState == 0) { gameState = 1; } else { gameState = 0; } } } if (gameState > 1) { EntityManager.Update(gameTime); floor.Update(gameTime); ExplosionManager.Update(gameTime); camera.Update(gameTime); health.Update(gameTime); if (speed == -100) { speed = 3.0f; } else if (speed <= 0.15f) { speed = 0.15f; remain--; } } if (gameState == 2) { if (cooldown <= speed) { cooldown += (float)gameTime.ElapsedGameTime.TotalSeconds; } else { if (remain > 0) { Spawning(0); cooldown = 0; speed -= speed * 0.05f; } else { if (EntityManager.enemy1.Count == 0) { if (ending <= 3.0f) { ending += (float)gameTime.ElapsedGameTime.TotalSeconds; } else { gameState = 0; EntityManager.ResetAll(); locked2 = 1f; ending = 0; } } } } } else if (gameState == 3) { if (cooldown <= speed) { cooldown += (float)gameTime.ElapsedGameTime.TotalSeconds; } else { if (remain > 0) { if (level2spawn > 1) { Spawning(0); level2spawn--; } else { Spawning(1); level2spawn = 3; } cooldown = 0; speed -= speed * 0.05f; } else { if ((EntityManager.enemy1.Count == 0) && (EntityManager.enemy2.Count == 0)) { if (ending <= 3.0f) { ending += (float)gameTime.ElapsedGameTime.TotalSeconds; } else { gameState = 0; EntityManager.ResetAll(); locked3 = 1f; ending = 0; } } } } } else if (gameState == 4) { if (spawnedboss == false) { if (cooldown <= 4.0f) { cooldown += (float)gameTime.ElapsedGameTime.TotalSeconds; } else { EntityManager.Add(new EnemyBoss(new Vector3(90, -40, 20))); cooldown = 0; spawnedboss = true; } } if ((EntityManager.boss.Count == 0) && (spawnedboss == true)) { if (ending <= 3.0f) { ending += (float)gameTime.ElapsedGameTime.TotalSeconds; } else { gameState = 0; EntityManager.ResetAll(); locked3 = 1f; ending = 0; } } } }