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

View File

@@ -23,7 +23,7 @@ namespace OpenRA.Mods.RA.Widgets
static float2 radarOpenOrigin = new float2(Game.viewport.Width - 215, 29); static float2 radarOpenOrigin = new float2(Game.viewport.Width - 215, 29);
static float2 radarClosedOrigin = new float2(Game.viewport.Width - 215, -166); static float2 radarClosedOrigin = new float2(Game.viewport.Width - 215, -166);
public static float2 radarOrigin = radarClosedOrigin; float2 radarOrigin = radarClosedOrigin;
float radarMinimapHeight; float radarMinimapHeight;
const int radarSlideAnimationLength = 15; const int radarSlideAnimationLength = 15;
const int radarActivateAnimationLength = 5; const int radarActivateAnimationLength = 5;
@@ -41,6 +41,9 @@ namespace OpenRA.Mods.RA.Widgets
Sprite actorSprite; Sprite actorSprite;
Sprite shroudSprite; Sprite shroudSprite;
/* hack to expose this to other broken widgets which rely on it */
public float2 RadarOrigin { get { return radarOrigin; } }
readonly World world; readonly World world;
[ObjectCreator.UseCtor] [ObjectCreator.UseCtor]
public RadarBinWidget( [ObjectCreator.Param] World world ) public RadarBinWidget( [ObjectCreator.Param] World world )