more... Combat.GetSecondaryWeapon() dies, etc

This commit is contained in:
Chris Forbes
2010-07-31 18:04:02 +12:00
parent 449cc4a42d
commit 9fcc739cd5
3 changed files with 8 additions and 17 deletions

View File

@@ -97,7 +97,7 @@ namespace OpenRA.Mods.RA
Weapons.Add(new Weapon(info.PrimaryWeapon,
info.PrimaryOffset, info.PrimaryLocalOffset));
if (self.GetSecondaryWeapon() != null)
if (info.SecondaryWeapon != null)
Weapons.Add(new Weapon(info.SecondaryWeapon,
info.SecondaryOffset ?? info.PrimaryOffset, info.SecondaryLocalOffset));
}
@@ -302,12 +302,12 @@ namespace OpenRA.Mods.RA
protected virtual void QueueAttack(Actor self, Order order)
{
/* todo: choose the appropriate weapon, when only one works against this target */
var weapon = self.GetPrimaryWeapon() ?? self.GetSecondaryWeapon();
var weapon = ChooseWeaponForTarget(Target.FromOrder(order));
self.QueueActivity(
new Activities.Attack(
Target.FromOrder(order),
Math.Max(0, (int)weapon.Range)));
Math.Max(0, (int)weapon.Info.Range)));
}
/* temp hack */
@@ -316,5 +316,7 @@ namespace OpenRA.Mods.RA
public bool HasAnyValidWeapons(Target t) { return Weapons.Any(w => w.IsValidAgainst(t)); }
public float GetMaximumRange() { return Weapons.Max(w => w.Info.Range); }
public Weapon ChooseWeaponForTarget(Target t) { return Weapons.First(w => w.IsValidAgainst(t)); }
}
}