Route the power check for support powers via the tech tree
This commit is contained in:
@@ -22,11 +22,13 @@ namespace OpenRA.Mods.RA
|
||||
[Sync]
|
||||
bool disabled = false;
|
||||
int normalPower = 0;
|
||||
readonly PowerManager PlayerPower;
|
||||
readonly PowerManager PowerManager;
|
||||
readonly TechTree TechTree;
|
||||
|
||||
public CanPowerDown(ActorInitializer init)
|
||||
{
|
||||
PlayerPower = init.self.Owner.PlayerActor.Trait<PowerManager>();
|
||||
PowerManager = init.self.Owner.PlayerActor.Trait<PowerManager>();
|
||||
TechTree = init.self.Owner.PlayerActor.Trait<TechTree>();
|
||||
normalPower = init.self.Info.Traits.Get<BuildingInfo>().Power;
|
||||
}
|
||||
public bool Disabled { get { return disabled; } }
|
||||
@@ -39,7 +41,10 @@ namespace OpenRA.Mods.RA
|
||||
var eva = self.World.WorldActor.Info.Traits.Get<EvaAlertsInfo>();
|
||||
Sound.PlayToPlayer(self.Owner, disabled ? eva.EnablePower : eva.DisablePower);
|
||||
|
||||
PlayerPower.UpdateActor(self, disabled ? 0 : normalPower);
|
||||
PowerManager.UpdateActor(self, disabled ? 0 : normalPower);
|
||||
|
||||
// Rebuild the tech tree; some support powers require active buildings
|
||||
TechTree.Update();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -31,7 +31,6 @@ namespace OpenRA.Mods.RA
|
||||
bool enabled;
|
||||
int ticks;
|
||||
Player p;
|
||||
PlayerResources playerResources;
|
||||
PowerManager playerPower;
|
||||
|
||||
int2 baseCenter;
|
||||
@@ -70,8 +69,6 @@ namespace OpenRA.Mods.RA
|
||||
{
|
||||
this.p = p;
|
||||
enabled = true;
|
||||
|
||||
playerResources = p.PlayerActor.Trait<PlayerResources>();
|
||||
playerPower = p.PlayerActor.Trait<PowerManager>();
|
||||
}
|
||||
|
||||
|
||||
@@ -90,7 +90,7 @@ namespace OpenRA.Mods.RA
|
||||
Ore -= amount;
|
||||
PlayerResources.GiveOre (amount);
|
||||
}
|
||||
nextProcessTime = (PlayerPower.GetPowerState() == PowerState.Normal)?
|
||||
nextProcessTime = (PlayerPower.PowerState == PowerState.Normal)?
|
||||
Info.ProcessTick : Info.LowPowerProcessTick ;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -19,11 +19,9 @@ namespace OpenRA.Mods.RA
|
||||
|
||||
class RequiresPower : IDisable
|
||||
{
|
||||
readonly Actor self;
|
||||
readonly PowerManager power;
|
||||
public RequiresPower( Actor self )
|
||||
{
|
||||
this.self = self;
|
||||
power = self.Owner.PlayerActor.Trait<PowerManager>();
|
||||
}
|
||||
|
||||
|
||||
@@ -454,7 +454,7 @@ namespace OpenRA.Mods.RA.Widgets
|
||||
DrawRightAligned("${0}".F(cost), pos + new int2(-5, 5),
|
||||
(resources.DisplayCash + resources.DisplayOre >= cost ? Color.White : Color.Red ));
|
||||
|
||||
var lowpower = power.GetPowerState() != PowerState.Normal;
|
||||
var lowpower = power.PowerState != PowerState.Normal;
|
||||
var time = CurrentQueue.GetBuildTime(info.Name)
|
||||
* ((lowpower)? CurrentQueue.Info.LowPowerSlowdown : 1);
|
||||
DrawRightAligned(WorldUtils.FormatTime(time), pos + new int2(-5, 35), lowpower ? Color.Red: Color.White);
|
||||
|
||||
@@ -50,9 +50,9 @@ namespace OpenRA.Mods.RA.Widgets
|
||||
float2 powerLevel = new float2(lastPowerProvidedPos.Value, barStart.Y);
|
||||
|
||||
var color = Color.LimeGreen;
|
||||
if (power.GetPowerState() == PowerState.Low)
|
||||
if (power.PowerState == PowerState.Low)
|
||||
color = Color.Orange;
|
||||
if (power.GetPowerState() == PowerState.Critical)
|
||||
if (power.PowerState == PowerState.Critical)
|
||||
color = Color.Red;
|
||||
|
||||
var colorDark = Graphics.Util.Lerp(0.25f, color, Color.Black);
|
||||
|
||||
Reference in New Issue
Block a user