void game_MouseClick(Element sender, MouseEventArgs e) { if (e.isClicked(MouseButtons.Left)) { //// This code sets of a charge by clicking on the asteroid that contains it, so multiple chargs can be set //// Good for debugging //activeCharge = null; //var bodies = // PhysicsManager.QTbodies.Query( // new Region(e.CurrentPosition.X - Asteroid.MaxRadius, e.CurrentPosition.X + Asteroid.MaxRadius, // e.CurrentPosition.Y - Asteroid.MaxRadius, e.CurrentPosition.Y + Asteroid.MaxRadius)); //foreach (IRigidBody body in bodies) // if (body is Asteroid) // { // var astr = (Asteroid)body; // if (MathUtils.Distance(astr.Position, e.CurrentPosition) < astr.Radius) // { // activeCharge = (Charge)astr.GetDevices().FirstOrDefault<Device>(x => x is Charge); // break; // } // } //// End of above code block if (activeCharge == null) { activeCharge = PlayerProfile.ReleaseCharge(0); if (activeCharge == null) { this.Write("No Charges Left!"); } else { releaseItem(activeCharge); this.Write("Charges Left: {0}", PlayerProfile.ChargesLeft); } } else { activeCharge.Detonate(1 / 1000); activeCharge = null; } } else if (e.isClicked(MouseButtons.Right)) { var sensor = PlayerProfile.ReleaseSensor(0); if (sensor == null) { this.Write("No Sensors Left!"); } else { releaseItem(sensor); this.Write("Sensors Left: {0}", PlayerProfile.SensorsLeft); } } }
public override void Update(GameTime gameTime) { if (fuseOn) { FuseTime -= gameTime.ElapsedGameTime.Milliseconds / 1000f; if (FuseTime <= 0) { _charge.Detonate(damageConstant); } } }