Move RearmTick to Rearmable
This commit is contained in:
@@ -162,8 +162,8 @@ namespace OpenRA.Mods.Common.Activities
|
|||||||
if (activeResupplyTypes.HasFlag(ResupplyType.Repair))
|
if (activeResupplyTypes.HasFlag(ResupplyType.Repair))
|
||||||
RepairTick(self);
|
RepairTick(self);
|
||||||
|
|
||||||
if (activeResupplyTypes.HasFlag(ResupplyType.Rearm))
|
if (activeResupplyTypes.HasFlag(ResupplyType.Rearm) && rearmable.RearmTick(self))
|
||||||
RearmTick(self);
|
activeResupplyTypes &= ~ResupplyType.Rearm;
|
||||||
|
|
||||||
foreach (var notifyResupply in notifyResupplies)
|
foreach (var notifyResupply in notifyResupplies)
|
||||||
notifyResupply.ResupplyTick(host.Actor, self, activeResupplyTypes);
|
notifyResupply.ResupplyTick(host.Actor, self, activeResupplyTypes);
|
||||||
@@ -303,29 +303,5 @@ namespace OpenRA.Mods.Common.Activities
|
|||||||
else
|
else
|
||||||
--remainingTicks;
|
--remainingTicks;
|
||||||
}
|
}
|
||||||
|
|
||||||
void RearmTick(Actor self)
|
|
||||||
{
|
|
||||||
var rearmComplete = true;
|
|
||||||
foreach (var ammoPool in rearmable.RearmableAmmoPools)
|
|
||||||
{
|
|
||||||
if (!ammoPool.HasFullAmmo)
|
|
||||||
{
|
|
||||||
if (--ammoPool.RemainingTicks <= 0)
|
|
||||||
{
|
|
||||||
ammoPool.RemainingTicks = ammoPool.Info.ReloadDelay;
|
|
||||||
if (!string.IsNullOrEmpty(ammoPool.Info.RearmSound))
|
|
||||||
Game.Sound.PlayToPlayer(SoundType.World, self.Owner, ammoPool.Info.RearmSound, self.CenterPosition);
|
|
||||||
|
|
||||||
ammoPool.GiveAmmo(self, ammoPool.Info.ReloadCount);
|
|
||||||
}
|
|
||||||
|
|
||||||
rearmComplete = false;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (rearmComplete)
|
|
||||||
activeResupplyTypes &= ~ResupplyType.Rearm;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -53,5 +53,27 @@ namespace OpenRA.Mods.Common.Traits
|
|||||||
}
|
}
|
||||||
|
|
||||||
void INotifyDockClient.Undocked(Actor self, Actor dock) { }
|
void INotifyDockClient.Undocked(Actor self, Actor dock) { }
|
||||||
|
|
||||||
|
public bool RearmTick(Actor self)
|
||||||
|
{
|
||||||
|
foreach (var ammoPool in RearmableAmmoPools)
|
||||||
|
{
|
||||||
|
if (!ammoPool.HasFullAmmo)
|
||||||
|
{
|
||||||
|
if (--ammoPool.RemainingTicks <= 0)
|
||||||
|
{
|
||||||
|
ammoPool.RemainingTicks = ammoPool.Info.ReloadDelay;
|
||||||
|
if (!string.IsNullOrEmpty(ammoPool.Info.RearmSound))
|
||||||
|
Game.Sound.PlayToPlayer(SoundType.World, self.Owner, ammoPool.Info.RearmSound, self.CenterPosition);
|
||||||
|
|
||||||
|
ammoPool.GiveAmmo(self, ammoPool.Info.ReloadCount);
|
||||||
|
}
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user