public override void Atack(Player player, GameTime gameTime) { if (!IsReloading) { MissileBase missile = new MissileBase(player, AtackPoints, Random.NextDouble() <= Accuracy, new Point((int)(2 * (500 - PosX) * (1.5 - (double)player.PlayerID) + 500), (int)Force.PosY + (int)(170 * 0.2)), new Point((int)(2 * (500 - player.PlayerBase.PosX) * ((double)player.PlayerID - 1.5) + 500), (int)Force.PosY + (int)(170 * 0.2))); MissileBase missile2 = new MissileBase(player, AtackPoints, Random.NextDouble() <= Accuracy, new Point((int)(2 * (500 - PosX) * (1.5 - (double)player.PlayerID) + 500), (int)Force.PosY + (int)(170 * 0.2)), new Point((int)(2 * (500 - player.PlayerBase.PosX) * ((double)player.PlayerID - 1.5) + 500), (int)Force.PosY + (int)(170 * 0.2))); MissileBase missile3 = new MissileBase(player, AtackPoints, Random.NextDouble() <= Accuracy, new Point((int)(2 * (500 - PosX) * (1.5 - (double)player.PlayerID) + 500), (int)Force.PosY + (int)(170 * 0.2)), new Point((int)(2 * (500 - player.PlayerBase.PosX) * ((double)player.PlayerID - 1.5) + 500), (int)Force.PosY + (int)(170 * 0.2))); GameEffectsEngine.Add(missile); GameEventEngine.Add(new GameEventDelayed(() => { GameEffectsEngine.Add(missile2); }, 0.04)); GameEventEngine.Add(new GameEventDelayed(() => { GameEffectsEngine.Add(missile3); }, 0.08)); GameEventEngine.Add(new GameEventDelayed(() => { IsReloading = false; }, ReloadTime)); IsReloading = true; } }
public void DestroyNoHp(Player opponent) { if (ListOfForces.Count > 0) { Force force = ListOfForces[0]; if (force.Hp <= 0) { opponent.Cash += CashPack.ForceCashReceived[(int)force.Id]; Explosion explosion = new Explosion(force, this); GameEffectsEngine.Add(explosion); ListOfForces.RemoveAt(0); } } }
public virtual void Atack(Player player, Force enemyForce, GameTime gameTime) { if (!IsReloading) { Missile missile = new Missile(player, enemyForce, AtackPoints, Random.NextDouble() <= Accuracy, new Point((int)(2 * (500 - PosX) * (1.5 - (double)player.PlayerID) + 500), (int)Force.PosY + (int)(170 * 0.2)), new Point((int)(2 * (500 - enemyForce.PosX) * ((double)player.PlayerID - 1.5) + 500), (int)Force.PosY + (int)(170 * 0.2))); GameEffectsEngine.Add(missile); GameEventEngine.Add(new GameEventDelayed(() => { IsReloading = false; }, ReloadTime)); IsReloading = true; } }
/// <summary> /// This is called when the game should draw itself. /// </summary> /// <param name="gameTime">Provides a snapshot of timing values.</param> protected override void Draw(GameTime gameTime) { GraphicsDevice.Clear(Color.CornflowerBlue); //Drawing code //some temporary background spriteBatch.Begin(); spriteBatch.Draw(TexturePack.background, new Rectangle(0, 0, 1000, 480), Color.White); spriteBatch.End(); GameEffectsEngine.Draw(spriteBatch); player1.Draw(spriteBatch); player2.Draw(spriteBatch); userInterface.Draw(spriteBatch, Winner, player1.PlayerBase.Hp, player2.PlayerBase.Hp); base.Draw(gameTime); }
/// <summary> /// Allows the game to run logic such as updating the world, /// checking for collisions, gathering input, and playing audio. /// </summary> /// <param name="gameTime">Provides a snapshot of timing values.</param> protected override void Update(GameTime gameTime) { if (GamePad.GetState(PlayerIndex.One).Buttons.Back == ButtonState.Pressed || Keyboard.GetState().IsKeyDown(Keys.Escape)) { Exit(); } GameEventEngine.Update(gameTime); GameEffectsEngine.Update(gameTime); //Interface class update userInterface.Update(gameTime, bot); //Player update logic player1.Update(player2, gameTime); player2.Update(player1, gameTime); player1.DestroyNoHp(player2); player2.DestroyNoHp(player1); player1.AddCash(gameTime); player2.AddCash(gameTime); //Win condition Winner = win.CheckWin(player1, player2); //Bot decisions logic (comment to play player vs player) if (bot.IsStarted == true) { bot.Proceed(bot.Decision(player1, player2), player1, player2, gameTime); } if (Winner != 0) { GameEventEngine.Add(new GameEventDelayed(() => { Exit(); }, 10)); } base.Update(gameTime); }