public MetaProjectile(Projectile projectile) : this() { Projectile = projectile; MillisecondsUntilExpiration = (projectile.Data.Range / Projectile.Data.TerminalVelocity)*1000; MillisecondsSoFar = 0; Position = projectile.StartingPosition; }
public void InvokeOnProjectileFired(int projectileID, int ownerID, int projectileTypeId, VTankObject.Point projectilePosition) { Player owner = Game.GetPlayerByID(ownerID); if (owner != null) { double angle = Math.Atan2(owner.Position.y - projectilePosition.y, owner.Position.x - projectilePosition.x); Projectile projectile = new Projectile( projectileID, owner.Weapon.ProjectileID, projectilePosition, angle); ProjectileFiredEventArgs args = new ProjectileFiredEventArgs( owner, projectile); Game.AddProjectile(projectile); OnProjectileFired(args); args.Dispose(); } }
/// <summary> /// Adds a projectile to the game. The projectile is automatically removed from /// the game later. /// </summary> /// <param name="projectile"></param> public void AddProjectile(Projectile projectile) { if (projectiles.ContainsKey(projectile.ID)) { // Do not add duplicates. return; } //projectiles[projectile.ID] = new MetaProjectile(projectile); // We currently do not track projectiles. }
public override void Dispose() { PlayerWhoFired = null; Projectile = null; }
/// <summary> /// /// </summary> /// <param name="playerWhoFired"></param> /// <param name="projectile"></param> public ProjectileFiredEventArgs(Player playerWhoFired, Projectile projectile) { PlayerWhoFired = playerWhoFired; Projectile = projectile; }