Clean up AttackCharge.
This commit is contained in:
@@ -8,8 +8,8 @@
|
|||||||
*/
|
*/
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
using OpenRA.Mods.RA.Activities;
|
|
||||||
using OpenRA.FileFormats;
|
using OpenRA.FileFormats;
|
||||||
|
using OpenRA.Mods.RA.Activities;
|
||||||
using OpenRA.Mods.RA.Render;
|
using OpenRA.Mods.RA.Render;
|
||||||
using OpenRA.Traits;
|
using OpenRA.Traits;
|
||||||
|
|
||||||
@@ -29,34 +29,36 @@ namespace OpenRA.Mods.RA
|
|||||||
|
|
||||||
class AttackCharge : AttackOmni, ITick, INotifyAttack, ISync
|
class AttackCharge : AttackOmni, ITick, INotifyAttack, ISync
|
||||||
{
|
{
|
||||||
|
readonly AttackChargeInfo aci;
|
||||||
|
|
||||||
[Sync] int charges;
|
[Sync] int charges;
|
||||||
[Sync] int timeToRecharge;
|
[Sync] int timeToRecharge;
|
||||||
|
|
||||||
public AttackCharge(Actor self)
|
public AttackCharge(Actor self)
|
||||||
: base(self)
|
: base(self)
|
||||||
{
|
{
|
||||||
charges = self.Info.Traits.Get<AttackChargeInfo>().MaxCharges;
|
aci = self.Info.Traits.Get<AttackChargeInfo>();
|
||||||
|
charges = aci.MaxCharges;
|
||||||
}
|
}
|
||||||
|
|
||||||
public override void Tick( Actor self )
|
public override void Tick(Actor self)
|
||||||
{
|
{
|
||||||
if( --timeToRecharge <= 0 )
|
if (--timeToRecharge <= 0)
|
||||||
charges = self.Info.Traits.Get<AttackChargeInfo>().MaxCharges;
|
charges = aci.MaxCharges;
|
||||||
|
|
||||||
base.Tick( self );
|
base.Tick(self);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void Attacking(Actor self, Target target, Armament a, Barrel barrel)
|
public void Attacking(Actor self, Target target, Armament a, Barrel barrel)
|
||||||
{
|
{
|
||||||
--charges;
|
--charges;
|
||||||
timeToRecharge = self.Info.Traits.Get<AttackChargeInfo>().ReloadTime;
|
timeToRecharge = aci.ReloadTime;
|
||||||
}
|
}
|
||||||
|
|
||||||
public override Activity GetAttackActivity(Actor self, Target newTarget, bool allowMove)
|
public override Activity GetAttackActivity(Actor self, Target newTarget, bool allowMove)
|
||||||
{
|
{
|
||||||
return new ChargeAttack(newTarget);
|
return new ChargeAttack(newTarget);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
public override void ResolveOrder(Actor self, Order order)
|
public override void ResolveOrder(Actor self, Order order)
|
||||||
{
|
{
|
||||||
@@ -82,7 +84,7 @@ namespace OpenRA.Mods.RA
|
|||||||
var initDelay = self.Info.Traits.Get<AttackChargeInfo>().InitialChargeDelay;
|
var initDelay = self.Info.Traits.Get<AttackChargeInfo>().InitialChargeDelay;
|
||||||
|
|
||||||
var attack = self.Trait<AttackCharge>();
|
var attack = self.Trait<AttackCharge>();
|
||||||
if(attack.charges == 0 || !attack.CanAttack(self, target))
|
if (attack.charges == 0 || !attack.CanAttack(self, target))
|
||||||
return this;
|
return this;
|
||||||
|
|
||||||
self.Trait<RenderBuildingCharge>().PlayCharge(self);
|
self.Trait<RenderBuildingCharge>().PlayCharge(self);
|
||||||
@@ -106,7 +108,7 @@ namespace OpenRA.Mods.RA
|
|||||||
var chargeDelay = self.Info.Traits.Get<AttackChargeInfo>().ChargeDelay;
|
var chargeDelay = self.Info.Traits.Get<AttackChargeInfo>().ChargeDelay;
|
||||||
|
|
||||||
var attack = self.Trait<AttackCharge>();
|
var attack = self.Trait<AttackCharge>();
|
||||||
if(attack.charges == 0)
|
if (attack.charges == 0)
|
||||||
return NextActivity;
|
return NextActivity;
|
||||||
|
|
||||||
attack.DoAttack(self, target);
|
attack.DoAttack(self, target);
|
||||||
|
|||||||
Reference in New Issue
Block a user