fix phantom radarbin

This commit is contained in:
Chris Forbes
2011-08-21 20:40:32 +12:00
parent 896cbaae39
commit 339d5c3405
2 changed files with 21 additions and 11 deletions

View File

@@ -19,12 +19,15 @@ namespace OpenRA.Mods.RA.Widgets
public class PowerBinWidget : Widget
{
// Power bar
static float2 powerOrigin = new float2(42, 205); // Relative to radarOrigin
static Size powerSize = new Size(138, 5);
float2 powerOrigin = new float2(42, 205); // Relative to radarOrigin
Size powerSize = new Size(138, 5);
float? lastPowerProvidedPos;
float? lastPowerDrainedPos;
string powerCollection;
readonly string RadarBin = "INGAME_RADAR_BIN";
readonly World world;
[ObjectCreator.UseCtor]
public PowerBinWidget( [ObjectCreator.Param] World world )
@@ -32,21 +35,29 @@ namespace OpenRA.Mods.RA.Widgets
this.world = world;
}
static Color GetPowerColor(PowerManager pm)
{
if (pm.PowerState == PowerState.Critical) return Color.Red;
if (pm.PowerState == PowerState.Low) return Color.Orange;
return Color.LimeGreen;
}
public override void Draw()
{
if( world.LocalPlayer == null ) return;
var radarBin = Widget.RootWidget.GetWidget<RadarBinWidget>(RadarBin);
powerCollection = "power-" + world.LocalPlayer.Country.Race;
var power = world.LocalPlayer.PlayerActor.Trait<PowerManager>();
// Nothing to draw
if (power.PowerProvided == 0
&& power.PowerDrained == 0)
if (power.PowerProvided == 0 && power.PowerDrained == 0)
return;
// Draw bar horizontally
var barStart = powerOrigin + RadarBinWidget.radarOrigin;
var barStart = powerOrigin + radarBin.RadarOrigin;
var barEnd = barStart + new float2(powerSize.Width, 0);
float powerScaleBy = 100;
@@ -58,11 +69,7 @@ namespace OpenRA.Mods.RA.Widgets
lastPowerProvidedPos = float2.Lerp(lastPowerProvidedPos.GetValueOrDefault(powerLevelTemp), powerLevelTemp, .3f);
float2 powerLevel = new float2(lastPowerProvidedPos.Value, barStart.Y);
var color = Color.LimeGreen;
if (power.PowerState == PowerState.Low)
color = Color.Orange;
if (power.PowerState == PowerState.Critical)
color = Color.Red;
var color = GetPowerColor(power);
var colorDark = Graphics.Util.Lerp(0.25f, color, Color.Black);
for (int i = 0; i < powerSize.Height; i++)