remove some more insanity from SPW
This commit is contained in:
@@ -28,6 +28,12 @@ namespace OpenRA.Mods.RA.Widgets
|
|||||||
this.world = world;
|
this.world = world;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool AreMutualAllies(Player a, Player b)
|
||||||
|
{
|
||||||
|
return a.Stances[b] == Stance.Ally &&
|
||||||
|
b.Stances[a] == Stance.Ally;
|
||||||
|
}
|
||||||
|
|
||||||
public override void DrawInner()
|
public override void DrawInner()
|
||||||
{
|
{
|
||||||
if (!Initialised)
|
if (!Initialised)
|
||||||
@@ -41,24 +47,24 @@ namespace OpenRA.Mods.RA.Widgets
|
|||||||
var totalWidth = (svc.Total + svc.TotalCritical)*32;
|
var totalWidth = (svc.Total + svc.TotalCritical)*32;
|
||||||
int curX = -(totalWidth / 2);
|
int curX = -(totalWidth / 2);
|
||||||
|
|
||||||
foreach (var a in world.Actors.Where(a => !a.Destroyed && a.HasTrait<StrategicPoint>() && !a.TraitOrDefault<StrategicPoint>().Critical))
|
foreach (var a in world.ActorsWithTrait<StrategicPoint>().Where(a => a.Trait.Critical))
|
||||||
{
|
{
|
||||||
WidgetUtils.DrawRGBA(ChromeProvider.GetImage("strategic", "unowned"), offset + new float2(RenderBounds.Left + curX, RenderBounds.Top));
|
WidgetUtils.DrawRGBA(ChromeProvider.GetImage("strategic", "unowned"), offset + new float2(RenderBounds.Left + curX, RenderBounds.Top));
|
||||||
|
|
||||||
if (a.Owner == world.LocalPlayer || (a.Owner.Stances[world.LocalPlayer] == Stance.Ally && world.LocalPlayer.Stances[a.Owner] == Stance.Ally))
|
if (a.Actor.Owner == world.LocalPlayer || AreMutualAllies(a.Actor.Owner, world.LocalPlayer))
|
||||||
WidgetUtils.DrawRGBA(ChromeProvider.GetImage("strategic", "player_owned"), offset + new float2(RenderBounds.Left + curX, RenderBounds.Top));
|
WidgetUtils.DrawRGBA(ChromeProvider.GetImage("strategic", "player_owned"), offset + new float2(RenderBounds.Left + curX, RenderBounds.Top));
|
||||||
else if (!a.Owner.NonCombatant)
|
else if (!a.Actor.Owner.NonCombatant)
|
||||||
WidgetUtils.DrawRGBA(ChromeProvider.GetImage("strategic", "enemy_owned"), offset + new float2(RenderBounds.Left + curX, RenderBounds.Top));
|
WidgetUtils.DrawRGBA(ChromeProvider.GetImage("strategic", "enemy_owned"), offset + new float2(RenderBounds.Left + curX, RenderBounds.Top));
|
||||||
curX += 32;
|
curX += 32;
|
||||||
}
|
}
|
||||||
|
|
||||||
foreach (var a in world.Actors.Where(a => !a.Destroyed && a.HasTrait<StrategicPoint>() && a.TraitOrDefault<StrategicPoint>().Critical))
|
foreach (var a in world.ActorsWithTrait<StrategicPoint>().Where(a => !a.Trait.Critical))
|
||||||
{
|
{
|
||||||
WidgetUtils.DrawRGBA(ChromeProvider.GetImage("strategic", "critical_unowned"), offset + new float2(RenderBounds.Left + curX, RenderBounds.Top));
|
WidgetUtils.DrawRGBA(ChromeProvider.GetImage("strategic", "critical_unowned"), offset + new float2(RenderBounds.Left + curX, RenderBounds.Top));
|
||||||
|
|
||||||
if (a.Owner == world.LocalPlayer || (a.Owner.Stances[world.LocalPlayer] == Stance.Ally && world.LocalPlayer.Stances[a.Owner] == Stance.Ally))
|
if (a.Actor.Owner == world.LocalPlayer || AreMutualAllies(a.Actor.Owner, world.LocalPlayer))
|
||||||
WidgetUtils.DrawRGBA(ChromeProvider.GetImage("strategic", "player_owned"), offset + new float2(RenderBounds.Left + curX, RenderBounds.Top));
|
WidgetUtils.DrawRGBA(ChromeProvider.GetImage("strategic", "player_owned"), offset + new float2(RenderBounds.Left + curX, RenderBounds.Top));
|
||||||
else if (!a.Owner.NonCombatant)
|
else if (!a.Actor.Owner.NonCombatant)
|
||||||
WidgetUtils.DrawRGBA(ChromeProvider.GetImage("strategic", "enemy_owned"), offset + new float2(RenderBounds.Left + curX, RenderBounds.Top));
|
WidgetUtils.DrawRGBA(ChromeProvider.GetImage("strategic", "enemy_owned"), offset + new float2(RenderBounds.Left + curX, RenderBounds.Top));
|
||||||
|
|
||||||
curX += 32;
|
curX += 32;
|
||||||
@@ -67,22 +73,22 @@ namespace OpenRA.Mods.RA.Widgets
|
|||||||
|
|
||||||
var pendingWinner = FindFirstWinningPlayer(world);
|
var pendingWinner = FindFirstWinningPlayer(world);
|
||||||
if (pendingWinner == null) return;
|
if (pendingWinner == null) return;
|
||||||
svc = pendingWinner.PlayerActor.TraitOrDefault<StrategicVictoryConditions>();
|
var winnerSvc = pendingWinner.PlayerActor.Trait<StrategicVictoryConditions>();
|
||||||
|
|
||||||
if (world.LocalPlayer != null)
|
if (world.LocalPlayer != null)
|
||||||
{
|
{
|
||||||
var tc = "";
|
var tc = "";
|
||||||
|
|
||||||
if (pendingWinner != world.LocalPlayer && (pendingWinner.Stances[world.LocalPlayer] != Stance.Ally || world.LocalPlayer.Stances[pendingWinner] != Stance.Ally))
|
if (pendingWinner != world.LocalPlayer && !AreMutualAllies(pendingWinner, world.LocalPlayer))
|
||||||
{
|
{
|
||||||
// losing
|
// losing
|
||||||
tc = "Strategic defeat in " +
|
tc = "Strategic defeat in " +
|
||||||
((svc.CriticalTicksLeft > svc.TicksLeft) ? WidgetUtils.FormatTime(svc.CriticalTicksLeft) : WidgetUtils.FormatTime(svc.TicksLeft));
|
((winnerSvc.CriticalTicksLeft > winnerSvc.TicksLeft) ? WidgetUtils.FormatTime(winnerSvc.CriticalTicksLeft) : WidgetUtils.FormatTime(winnerSvc.TicksLeft));
|
||||||
}else
|
}else
|
||||||
{
|
{
|
||||||
// winning
|
// winning
|
||||||
tc = "Strategic victory in " +
|
tc = "Strategic victory in " +
|
||||||
((svc.CriticalTicksLeft > svc.TicksLeft) ? WidgetUtils.FormatTime(svc.CriticalTicksLeft) : WidgetUtils.FormatTime(svc.TicksLeft));
|
((winnerSvc.CriticalTicksLeft > winnerSvc.TicksLeft) ? WidgetUtils.FormatTime(winnerSvc.CriticalTicksLeft) : WidgetUtils.FormatTime(winnerSvc.TicksLeft));
|
||||||
}
|
}
|
||||||
|
|
||||||
var size = Game.Renderer.BoldFont.Measure(tc);
|
var size = Game.Renderer.BoldFont.Measure(tc);
|
||||||
@@ -102,7 +108,7 @@ namespace OpenRA.Mods.RA.Widgets
|
|||||||
|
|
||||||
foreach (var p in world.players.Select(p => p.Value).Where(p => !p.NonCombatant))
|
foreach (var p in world.players.Select(p => p.Value).Where(p => !p.NonCombatant))
|
||||||
{
|
{
|
||||||
var svc = p.PlayerActor.TraitOrDefault<StrategicVictoryConditions>();
|
var svc = p.PlayerActor.Trait<StrategicVictoryConditions>();
|
||||||
|
|
||||||
if (svc.HoldingCritical && svc.CriticalTicksLeft > 0 && svc.CriticalTicksLeft < shortest)
|
if (svc.HoldingCritical && svc.CriticalTicksLeft > 0 && svc.CriticalTicksLeft < shortest)
|
||||||
{
|
{
|
||||||
|
|||||||
Reference in New Issue
Block a user