Cache the *Infos in ProductionItem.
This commit is contained in:
@@ -118,12 +118,6 @@ namespace OpenRA.Mods.Common.Traits
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
public override int GetBuildTime(string unitString)
|
|
||||||
{
|
|
||||||
var actorInfo = self.World.Map.Rules.Actors[unitString];
|
|
||||||
return GetBuildTime(actorInfo, actorInfo.TraitInfo<BuildableInfo>());
|
|
||||||
}
|
|
||||||
|
|
||||||
public override int GetBuildTime(ActorInfo unit, BuildableInfo bi)
|
public override int GetBuildTime(ActorInfo unit, BuildableInfo bi)
|
||||||
{
|
{
|
||||||
if (developerMode.FastBuild)
|
if (developerMode.FastBuild)
|
||||||
|
|||||||
@@ -309,12 +309,6 @@ namespace OpenRA.Mods.Common.Traits
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public virtual int GetBuildTime(string unitString)
|
|
||||||
{
|
|
||||||
var actorInfo = self.World.Map.Rules.Actors[unitString];
|
|
||||||
return GetBuildTime(actorInfo, actorInfo.TraitInfo<BuildableInfo>());
|
|
||||||
}
|
|
||||||
|
|
||||||
public virtual int GetBuildTime(ActorInfo unit, BuildableInfo bi)
|
public virtual int GetBuildTime(ActorInfo unit, BuildableInfo bi)
|
||||||
{
|
{
|
||||||
if (developerMode.FastBuild)
|
if (developerMode.FastBuild)
|
||||||
@@ -423,6 +417,8 @@ namespace OpenRA.Mods.Common.Traits
|
|||||||
public bool Started { get; private set; }
|
public bool Started { get; private set; }
|
||||||
public int Slowdown { get; private set; }
|
public int Slowdown { get; private set; }
|
||||||
|
|
||||||
|
readonly ActorInfo ai;
|
||||||
|
readonly BuildableInfo bi;
|
||||||
readonly PowerManager pm;
|
readonly PowerManager pm;
|
||||||
|
|
||||||
public ProductionItem(ProductionQueue queue, string item, int cost, PowerManager pm, Action onComplete)
|
public ProductionItem(ProductionQueue queue, string item, int cost, PowerManager pm, Action onComplete)
|
||||||
@@ -433,13 +429,15 @@ namespace OpenRA.Mods.Common.Traits
|
|||||||
OnComplete = onComplete;
|
OnComplete = onComplete;
|
||||||
Queue = queue;
|
Queue = queue;
|
||||||
this.pm = pm;
|
this.pm = pm;
|
||||||
|
ai = Queue.Actor.World.Map.Rules.Actors[Item];
|
||||||
|
bi = ai.TraitInfo<BuildableInfo>();
|
||||||
}
|
}
|
||||||
|
|
||||||
public void Tick(PlayerResources pr)
|
public void Tick(PlayerResources pr)
|
||||||
{
|
{
|
||||||
if (!Started)
|
if (!Started)
|
||||||
{
|
{
|
||||||
var time = Queue.GetBuildTime(Item);
|
var time = Queue.GetBuildTime(ai, bi);
|
||||||
if (time > 0)
|
if (time > 0)
|
||||||
RemainingTime = TotalTime = time;
|
RemainingTime = TotalTime = time;
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user