Include Armament and Barrel in INotifyAttack.
This commit is contained in:
@@ -124,7 +124,6 @@ namespace OpenRA.Traits
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public interface INotifyAttack { void Attacking(Actor self, Target target); }
|
|
||||||
public interface IRenderModifier { IEnumerable<IRenderable> ModifyRender(Actor self, WorldRenderer wr, IEnumerable<IRenderable> r); }
|
public interface IRenderModifier { IEnumerable<IRenderable> ModifyRender(Actor self, WorldRenderer wr, IEnumerable<IRenderable> 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(); }
|
||||||
|
|||||||
@@ -74,7 +74,8 @@ 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, Target.FromCell(self.Location));
|
if (limitedAmmo != null)
|
||||||
|
limitedAmmo.TakeAmmo();
|
||||||
|
|
||||||
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
|
||||||
|
|||||||
@@ -151,7 +151,7 @@ namespace OpenRA.Mods.RA
|
|||||||
});
|
});
|
||||||
|
|
||||||
foreach (var na in self.TraitsImplementing<INotifyAttack>())
|
foreach (var na in self.TraitsImplementing<INotifyAttack>())
|
||||||
na.Attacking(self, target);
|
na.Attacking(self, target, this, barrel);
|
||||||
|
|
||||||
Recoil = Info.Recoil;
|
Recoil = Info.Recoil;
|
||||||
|
|
||||||
|
|||||||
@@ -40,7 +40,7 @@ namespace OpenRA.Mods.RA
|
|||||||
base.Tick( self );
|
base.Tick( self );
|
||||||
}
|
}
|
||||||
|
|
||||||
public void Attacking(Actor self, Target target)
|
public void Attacking(Actor self, Target target, Armament a, Barrel barrel)
|
||||||
{
|
{
|
||||||
--charges;
|
--charges;
|
||||||
timeToRecharge = self.Info.Traits.Get<AttackTeslaInfo>().ReloadTime;
|
timeToRecharge = self.Info.Traits.Get<AttackTeslaInfo>().ReloadTime;
|
||||||
|
|||||||
@@ -56,7 +56,7 @@ namespace OpenRA.Mods.RA
|
|||||||
remainingTime = Math.Max(remainingTime, time);
|
remainingTime = Math.Max(remainingTime, time);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void Attacking(Actor self, Target target) { Uncloak(); }
|
public void Attacking(Actor self, Target target, Armament a, Barrel barrel) { Uncloak(); }
|
||||||
|
|
||||||
public bool Cloaked { get { return remainingTime <= 0; } }
|
public bool Cloaked { get { return remainingTime <= 0; } }
|
||||||
|
|
||||||
|
|||||||
@@ -44,6 +44,7 @@ namespace OpenRA.Mods.RA
|
|||||||
++ammo;
|
++ammo;
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
public bool TakeAmmo()
|
public bool TakeAmmo()
|
||||||
{
|
{
|
||||||
if (ammo <= 0) return false;
|
if (ammo <= 0) return false;
|
||||||
@@ -53,7 +54,7 @@ namespace OpenRA.Mods.RA
|
|||||||
|
|
||||||
public int ReloadTimePerAmmo() { return Info.ReloadTicks; }
|
public int ReloadTimePerAmmo() { return Info.ReloadTicks; }
|
||||||
|
|
||||||
public void Attacking(Actor self, Target target) { TakeAmmo(); }
|
public void Attacking(Actor self, Target target, Armament a, Barrel barrel) { TakeAmmo(); }
|
||||||
|
|
||||||
public IEnumerable<PipType> GetPips(Actor self)
|
public IEnumerable<PipType> GetPips(Actor self)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -74,6 +74,11 @@ namespace OpenRA.Mods.RA.Render
|
|||||||
anim.PlayThen(NormalizeInfantrySequence(self, "heal"), () => State = AnimationState.Idle);
|
anim.PlayThen(NormalizeInfantrySequence(self, "heal"), () => State = AnimationState.Idle);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void Attacking(Actor self, Target target, Armament a, Barrel barrel)
|
||||||
|
{
|
||||||
|
Attacking(self, target);
|
||||||
|
}
|
||||||
|
|
||||||
public override void Tick(Actor self)
|
public override void Tick(Actor self)
|
||||||
{
|
{
|
||||||
base.Tick(self);
|
base.Tick(self);
|
||||||
|
|||||||
@@ -52,7 +52,7 @@ namespace OpenRA.Mods.RA.Render
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public void Attacking(Actor self, Target target)
|
public void Attacking(Actor self, Target target, Armament a, Barrel barrel)
|
||||||
{
|
{
|
||||||
isShowing = true;
|
isShowing = true;
|
||||||
foreach( var mf in muzzleFlashes.Values )
|
foreach( var mf in muzzleFlashes.Values )
|
||||||
|
|||||||
@@ -67,7 +67,7 @@ namespace OpenRA.Mods.RA
|
|||||||
Panic();
|
Panic();
|
||||||
}
|
}
|
||||||
|
|
||||||
public void Attacking(Actor self, Target target)
|
public void Attacking(Actor self, Target target, Armament a, Barrel barrel)
|
||||||
{
|
{
|
||||||
if (self.World.SharedRandom.Next(100 / Info.AttackPanicChance) == 0)
|
if (self.World.SharedRandom.Next(100 / Info.AttackPanicChance) == 0)
|
||||||
Panic();
|
Panic();
|
||||||
|
|||||||
@@ -137,7 +137,7 @@ namespace OpenRA.Mods.RA
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* lose our disguise if we attack anything */
|
/* lose our disguise if we attack anything */
|
||||||
public void Attacking(Actor self, Target target) { DropDisguise(); }
|
public void Attacking(Actor self, Target target, Armament a, Barrel barrel) { DropDisguise(); }
|
||||||
}
|
}
|
||||||
|
|
||||||
class IgnoresDisguiseInfo : TraitInfo<IgnoresDisguise> {}
|
class IgnoresDisguiseInfo : TraitInfo<IgnoresDisguise> {}
|
||||||
|
|||||||
@@ -10,6 +10,7 @@
|
|||||||
|
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using OpenRA.Mods.RA.Activities;
|
using OpenRA.Mods.RA.Activities;
|
||||||
|
using OpenRA.Traits;
|
||||||
|
|
||||||
namespace OpenRA.Mods.RA
|
namespace OpenRA.Mods.RA
|
||||||
{
|
{
|
||||||
@@ -46,4 +47,5 @@ namespace OpenRA.Mods.RA
|
|||||||
public interface INotifyParachuteLanded { void OnLanded(); }
|
public interface INotifyParachuteLanded { void OnLanded(); }
|
||||||
public interface INotifyTransform { void OnTransform(Actor self); }
|
public interface INotifyTransform { void OnTransform(Actor self); }
|
||||||
public interface INotifyTransformed { void OnTransformed(Actor toActor); }
|
public interface INotifyTransformed { void OnTransformed(Actor toActor); }
|
||||||
|
public interface INotifyAttack { void Attacking(Actor self, Target target, Armament a, Barrel barrel); }
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user