fix phantom radarbin
This commit is contained in:
@@ -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++)
|
||||||
|
|||||||
@@ -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 )
|
||||||
|
|||||||
Reference in New Issue
Block a user