Route the power check for support powers via the tech tree

This commit is contained in:
Paul Chote
2010-09-18 20:42:32 +12:00
parent 2a10af2007
commit 652f06f604
10 changed files with 42 additions and 45 deletions

View File

@@ -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();
}
}
}

View File

@@ -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>();
}

View File

@@ -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 ;
}
}

View File

@@ -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>();
}

View File

@@ -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);

View File

@@ -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);