Add target param to INotifyAttack. Remove target field from AttackOmni

This commit is contained in:
Bob
2010-11-14 16:03:01 +13:00
parent f8e6245903
commit e7a07ea9c3
10 changed files with 10 additions and 17 deletions

View File

@@ -105,7 +105,7 @@ namespace OpenRA.Traits
} }
} }
public interface INotifyAttack { void Attacking(Actor self); } public interface INotifyAttack { void Attacking(Actor self, Target target); }
public interface IRenderModifier { IEnumerable<Renderable> ModifyRender(Actor self, IEnumerable<Renderable> r); } public interface IRenderModifier { IEnumerable<Renderable> ModifyRender(Actor self, IEnumerable<Renderable> r); }
public interface IDamageModifier { float GetDamageModifier(Actor attacker, WarheadInfo warhead); } public interface IDamageModifier { float GetDamageModifier(Actor attacker, WarheadInfo warhead); }
public interface ISpeedModifier { decimal GetSpeedModifier(); } public interface ISpeedModifier { decimal GetSpeedModifier(); }

View File

@@ -74,7 +74,7 @@ namespace OpenRA.Mods.RA.Activities
void LayMine(Actor self) void LayMine(Actor self)
{ {
var limitedAmmo = self.TraitOrDefault<LimitedAmmo>(); var limitedAmmo = self.TraitOrDefault<LimitedAmmo>();
if (limitedAmmo != null) limitedAmmo.Attacking(self); if (limitedAmmo != null) limitedAmmo.Attacking(self, Target.FromCell(self.Location));
self.World.AddFrameEndTask( self.World.AddFrameEndTask(
w => w.CreateActor(self.Info.Traits.Get<MinelayerInfo>().Mine, new TypeDictionary w => w.CreateActor(self.Info.Traits.Get<MinelayerInfo>().Mine, new TypeDictionary

View File

@@ -28,7 +28,7 @@ namespace OpenRA.Mods.RA.Activities
this.target = target; this.target = target;
initialLocation = self.Trait<Mobile>().PxPosition; initialLocation = self.Trait<Mobile>().PxPosition;
self.Trait<RenderInfantry>().Attacking(self); self.Trait<RenderInfantry>().Attacking(self, target);
Sound.Play("dogg5p.aud", self.CenterLocation); Sound.Play("dogg5p.aud", self.CenterLocation);
} }

View File

@@ -22,7 +22,6 @@ namespace OpenRA.Mods.RA
class AttackOmni : AttackBase, INotifyBuildComplete class AttackOmni : AttackBase, INotifyBuildComplete
{ {
bool buildComplete = false; bool buildComplete = false;
protected Target target;
public void BuildingComplete(Actor self) { buildComplete = true; } public void BuildingComplete(Actor self) { buildComplete = true; }
public AttackOmni(Actor self) : base(self) { } public AttackOmni(Actor self) : base(self) { }
@@ -33,12 +32,6 @@ namespace OpenRA.Mods.RA
return base.CanAttack( self, target ) && !isBuilding; return base.CanAttack( self, target ) && !isBuilding;
} }
public override void Tick(Actor self)
{
base.Tick(self);
DoAttack(self, target);
}
protected override IActivity GetAttackActivity(Actor self, Target newTarget, bool allowMove) protected override IActivity GetAttackActivity(Actor self, Target newTarget, bool allowMove)
{ {
return new SetTarget( newTarget ); return new SetTarget( newTarget );
@@ -54,7 +47,7 @@ namespace OpenRA.Mods.RA
if( IsCanceled || !target.IsValid ) if( IsCanceled || !target.IsValid )
return NextActivity; return NextActivity;
self.Trait<AttackOmni>().target = target; self.Trait<AttackOmni>().DoAttack(self, target);
return this; return this;
} }
} }

View File

@@ -58,7 +58,7 @@ namespace OpenRA.Mods.RA
return target.Actor == previousTarget ? 3 : base.FireDelay(self, target, info); return target.Actor == previousTarget ? 3 : base.FireDelay(self, target, info);
} }
public void Attacking(Actor self) public void Attacking(Actor self, Target target)
{ {
foreach (var w in Weapons) foreach (var w in Weapons)
w.FireDelay = 8; w.FireDelay = 8;

View File

@@ -62,7 +62,7 @@ namespace OpenRA.Mods.RA
remainingTime = Math.Max(remainingTime, (int)(info.CloakDelay * 25)); remainingTime = Math.Max(remainingTime, (int)(info.CloakDelay * 25));
} }
public void Attacking(Actor self) { DoUncloak(); } public void Attacking(Actor self, Target target) { DoUncloak(); }
public void Damaged(Actor self, AttackInfo e) public void Damaged(Actor self, AttackInfo e)
{ {
canCloak = (e.DamageState < DamageState.Critical); canCloak = (e.DamageState < DamageState.Critical);

View File

@@ -42,7 +42,7 @@ namespace OpenRA.Mods.RA
return true; return true;
} }
public void Attacking(Actor self) { --ammo; } public void Attacking(Actor self, Target target) { --ammo; }
public IEnumerable<PipType> GetPips(Actor self) public IEnumerable<PipType> GetPips(Actor self)
{ {

View File

@@ -51,7 +51,7 @@ namespace OpenRA.Mods.RA.Render
return takeCover != null && takeCover.IsProne; return takeCover != null && takeCover.IsProne;
} }
public void Attacking(Actor self) public void Attacking(Actor self, Target target)
{ {
inAttack = true; inAttack = true;

View File

@@ -149,7 +149,7 @@ namespace OpenRA.Mods.RA
}); });
foreach (var na in self.TraitsImplementing<INotifyAttack>()) foreach (var na in self.TraitsImplementing<INotifyAttack>())
na.Attacking(self); na.Attacking(self, target);
FiredShot(); FiredShot();
} }

View File

@@ -45,7 +45,7 @@ namespace OpenRA.Mods.RA
} }
} }
public void Attacking(Actor self) public void Attacking(Actor self, Target target)
{ {
isShowing = true; isShowing = true;
foreach( var mf in muzzleFlashes ) foreach( var mf in muzzleFlashes )