Make player stance colours universally respected
This commit is contained in:
committed by
Matthias Mailänder
parent
2f331548e1
commit
5fc36bd45f
@@ -22,6 +22,16 @@ namespace OpenRA
|
|||||||
{
|
{
|
||||||
public static class Exts
|
public static class Exts
|
||||||
{
|
{
|
||||||
|
/// <summary>Returns <see cref="Color"/> of the <paramref name="actor"/>, taking <see cref="Actor.EffectiveOwner"/> into account.</summary>
|
||||||
|
public static Color OwnerColor(this Actor actor)
|
||||||
|
{
|
||||||
|
var effectiveOwner = actor.EffectiveOwner;
|
||||||
|
if (effectiveOwner != null && effectiveOwner.Disguised && actor.World.RenderPlayer != null)
|
||||||
|
return effectiveOwner.Owner.Color;
|
||||||
|
|
||||||
|
return actor.Owner.Color;
|
||||||
|
}
|
||||||
|
|
||||||
public static string FormatInvariant(this string format, params object[] args)
|
public static string FormatInvariant(this string format, params object[] args)
|
||||||
{
|
{
|
||||||
return string.Format(CultureInfo.InvariantCulture, format, args);
|
return string.Format(CultureInfo.InvariantCulture, format, args);
|
||||||
|
|||||||
@@ -122,7 +122,7 @@ namespace OpenRA
|
|||||||
FactionId = runtimePlayer.Faction.InternalName,
|
FactionId = runtimePlayer.Faction.InternalName,
|
||||||
DisplayFactionName = runtimePlayer.DisplayFaction.Name,
|
DisplayFactionName = runtimePlayer.DisplayFaction.Name,
|
||||||
DisplayFactionId = runtimePlayer.DisplayFaction.InternalName,
|
DisplayFactionId = runtimePlayer.DisplayFaction.InternalName,
|
||||||
Color = runtimePlayer.Color,
|
Color = OpenRA.Player.GetColor(runtimePlayer),
|
||||||
Team = client.Team,
|
Team = client.Team,
|
||||||
Handicap = client.Handicap,
|
Handicap = client.Handicap,
|
||||||
SpawnPoint = runtimePlayer.SpawnPoint,
|
SpawnPoint = runtimePlayer.SpawnPoint,
|
||||||
|
|||||||
@@ -65,6 +65,8 @@ namespace OpenRA.Graphics
|
|||||||
foreach (var p in world.Players)
|
foreach (var p in world.Players)
|
||||||
UpdatePalettesForPlayer(p.InternalName, p.Color, false);
|
UpdatePalettesForPlayer(p.InternalName, p.Color, false);
|
||||||
|
|
||||||
|
Player.SetupRelationshipColors(world.Players, world.LocalPlayer);
|
||||||
|
|
||||||
palette.Initialize();
|
palette.Initialize();
|
||||||
|
|
||||||
TerrainLighting = world.WorldActor.TraitOrDefault<ITerrainLighting>();
|
TerrainLighting = world.WorldActor.TraitOrDefault<ITerrainLighting>();
|
||||||
|
|||||||
@@ -38,8 +38,6 @@ namespace OpenRA
|
|||||||
public class Player : IScriptBindable, IScriptNotifyBind, ILuaTableBinding, ILuaEqualityBinding, ILuaToStringBinding
|
public class Player : IScriptBindable, IScriptNotifyBind, ILuaTableBinding, ILuaEqualityBinding, ILuaToStringBinding
|
||||||
{
|
{
|
||||||
public readonly Actor PlayerActor;
|
public readonly Actor PlayerActor;
|
||||||
public readonly Color Color;
|
|
||||||
|
|
||||||
public readonly string PlayerName;
|
public readonly string PlayerName;
|
||||||
public readonly string InternalName;
|
public readonly string InternalName;
|
||||||
public readonly FactionInfo Faction;
|
public readonly FactionInfo Faction;
|
||||||
@@ -54,6 +52,11 @@ namespace OpenRA
|
|||||||
public readonly Shroud Shroud;
|
public readonly Shroud Shroud;
|
||||||
public readonly FrozenActorLayer FrozenActorLayer;
|
public readonly FrozenActorLayer FrozenActorLayer;
|
||||||
|
|
||||||
|
readonly Color color;
|
||||||
|
|
||||||
|
/// <summary>Returns player color with relationship colors applied.</summary>
|
||||||
|
public Color Color { get; private set; }
|
||||||
|
|
||||||
/// <summary>The faction (including Random, etc.) that was selected in the lobby.</summary>
|
/// <summary>The faction (including Random, etc.) that was selected in the lobby.</summary>
|
||||||
public readonly FactionInfo DisplayFaction;
|
public readonly FactionInfo DisplayFaction;
|
||||||
|
|
||||||
@@ -152,7 +155,8 @@ namespace OpenRA
|
|||||||
if (client != null)
|
if (client != null)
|
||||||
{
|
{
|
||||||
ClientIndex = client.Index;
|
ClientIndex = client.Index;
|
||||||
Color = client.Color;
|
color = client.Color;
|
||||||
|
Color = color;
|
||||||
PlayerName = ResolvePlayerName(client, world.LobbyInfo.Clients, world.Map.Rules.Actors[SystemActors.Player].TraitInfos<IBotInfo>());
|
PlayerName = ResolvePlayerName(client, world.LobbyInfo.Clients, world.Map.Rules.Actors[SystemActors.Player].TraitInfos<IBotInfo>());
|
||||||
|
|
||||||
BotType = client.Bot;
|
BotType = client.Bot;
|
||||||
@@ -170,6 +174,7 @@ namespace OpenRA
|
|||||||
{
|
{
|
||||||
// Map player
|
// Map player
|
||||||
ClientIndex = world.LobbyInfo.Clients.FirstOrDefault(c => c.IsAdmin)?.Index ?? 0; // Owned by the host (TODO: fix this)
|
ClientIndex = world.LobbyInfo.Clients.FirstOrDefault(c => c.IsAdmin)?.Index ?? 0; // Owned by the host (TODO: fix this)
|
||||||
|
color = pr.Color;
|
||||||
Color = pr.Color;
|
Color = pr.Color;
|
||||||
PlayerName = pr.Name;
|
PlayerName = pr.Name;
|
||||||
NonCombatant = pr.NonCombatant;
|
NonCombatant = pr.NonCombatant;
|
||||||
@@ -244,28 +249,30 @@ namespace OpenRA
|
|||||||
return RelationshipWith(p) == PlayerRelationship.Ally;
|
return RelationshipWith(p) == PlayerRelationship.Ally;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static Color PlayerRelationshipColor(Actor a)
|
/// <summary>Returns <see cref="color"/>, ignoring player relationship colors.</summary>
|
||||||
|
public static Color GetColor(Player p) => p.color;
|
||||||
|
|
||||||
|
public static void SetupRelationshipColors(Player[] players, Player viewer)
|
||||||
{
|
{
|
||||||
var renderPlayer = a.World.RenderPlayer;
|
foreach (var p in players)
|
||||||
var player = renderPlayer ?? a.World.LocalPlayer;
|
p.Color = PlayerRelationshipColor(p, viewer);
|
||||||
if (player != null && !player.Spectating)
|
}
|
||||||
{
|
|
||||||
var effectiveOwner = a.EffectiveOwner;
|
|
||||||
var apparentOwner = a.Owner;
|
|
||||||
if (effectiveOwner != null && effectiveOwner.Disguised && !a.Owner.IsAlliedWith(renderPlayer))
|
|
||||||
apparentOwner = effectiveOwner.Owner;
|
|
||||||
|
|
||||||
if (apparentOwner == player)
|
public static Color PlayerRelationshipColor(Player player, Player viewer)
|
||||||
return ChromeMetrics.Get<Color>("PlayerStanceColorSelf");
|
{
|
||||||
|
if (!Game.Settings.Game.UsePlayerStanceColors || viewer == null || viewer.Spectating)
|
||||||
|
return player.color;
|
||||||
|
|
||||||
if (apparentOwner.IsAlliedWith(player))
|
if (viewer == player)
|
||||||
return ChromeMetrics.Get<Color>("PlayerStanceColorAllies");
|
return ChromeMetrics.Get<Color>("PlayerStanceColorSelf");
|
||||||
|
|
||||||
if (!apparentOwner.NonCombatant)
|
if (player.IsAlliedWith(viewer))
|
||||||
return ChromeMetrics.Get<Color>("PlayerStanceColorEnemies");
|
return ChromeMetrics.Get<Color>("PlayerStanceColorAllies");
|
||||||
}
|
|
||||||
|
|
||||||
return ChromeMetrics.Get<Color>("PlayerStanceColorNeutrals");
|
if (player.NonCombatant)
|
||||||
|
return ChromeMetrics.Get<Color>("PlayerStanceColorNeutrals");
|
||||||
|
|
||||||
|
return ChromeMetrics.Get<Color>("PlayerStanceColorEnemies");
|
||||||
}
|
}
|
||||||
|
|
||||||
internal void PlayerDisconnected(Player p)
|
internal void PlayerDisconnected(Player p)
|
||||||
|
|||||||
@@ -99,7 +99,7 @@ namespace OpenRA.Mods.Cnc.Traits
|
|||||||
public override object Create(ActorInitializer init) { return new Disguise(init.Self, this); }
|
public override object Create(ActorInitializer init) { return new Disguise(init.Self, this); }
|
||||||
}
|
}
|
||||||
|
|
||||||
sealed class Disguise : IEffectiveOwner, IIssueOrder, IResolveOrder, IOrderVoice, IRadarColorModifier, INotifyAttack,
|
sealed class Disguise : IEffectiveOwner, IIssueOrder, IResolveOrder, IOrderVoice, INotifyAttack,
|
||||||
INotifyDamage, INotifyLoadCargo, INotifyUnloadCargo, INotifyDemolition, INotifyInfiltration, ITick
|
INotifyDamage, INotifyLoadCargo, INotifyUnloadCargo, INotifyDemolition, INotifyInfiltration, ITick
|
||||||
{
|
{
|
||||||
public ActorInfo AsActor { get; private set; }
|
public ActorInfo AsActor { get; private set; }
|
||||||
@@ -158,14 +158,6 @@ namespace OpenRA.Mods.Cnc.Traits
|
|||||||
return order.OrderString == "Disguise" ? info.Voice : null;
|
return order.OrderString == "Disguise" ? info.Voice : null;
|
||||||
}
|
}
|
||||||
|
|
||||||
Color IRadarColorModifier.RadarColorOverride(Actor self, Color color)
|
|
||||||
{
|
|
||||||
if (!Disguised || self.Owner.IsAlliedWith(self.World.RenderPlayer))
|
|
||||||
return color;
|
|
||||||
|
|
||||||
return Game.Settings.Game.UsePlayerStanceColors ? Player.PlayerRelationshipColor(self) : AsPlayer.Color;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void DisguiseAs(Actor target)
|
public void DisguiseAs(Actor target)
|
||||||
{
|
{
|
||||||
var oldEffectiveActor = AsActor;
|
var oldEffectiveActor = AsActor;
|
||||||
|
|||||||
@@ -94,7 +94,7 @@ namespace OpenRA.Mods.Cnc.Traits
|
|||||||
TextNotificationsManager.AddTransientLine(infiltrator.Owner, info.InfiltrationTextNotification);
|
TextNotificationsManager.AddTransientLine(infiltrator.Owner, info.InfiltrationTextNotification);
|
||||||
|
|
||||||
if (info.ShowTicks)
|
if (info.ShowTicks)
|
||||||
self.World.AddFrameEndTask(w => w.Add(new FloatingText(self.CenterPosition, infiltrator.Owner.Color, FloatingText.FormatCashTick(toGive), 30)));
|
self.World.AddFrameEndTask(w => w.Add(new FloatingText(self.CenterPosition, infiltrator.OwnerColor(), FloatingText.FormatCashTick(toGive), 30)));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -74,7 +74,7 @@ namespace OpenRA.Mods.Cnc.Traits
|
|||||||
{
|
{
|
||||||
var temp = currentDisplayValue;
|
var temp = currentDisplayValue;
|
||||||
if (self.Owner.IsAlliedWith(self.World.RenderPlayer))
|
if (self.Owner.IsAlliedWith(self.World.RenderPlayer))
|
||||||
self.World.AddFrameEndTask(w => w.Add(new FloatingText(self.CenterPosition, self.Owner.Color, FloatingText.FormatCashTick(temp), Info.TickLifetime)));
|
self.World.AddFrameEndTask(w => w.Add(new FloatingText(self.CenterPosition, self.OwnerColor(), FloatingText.FormatCashTick(temp), Info.TickLifetime)));
|
||||||
|
|
||||||
currentDisplayTick = Info.TickRate;
|
currentDisplayTick = Info.TickRate;
|
||||||
currentDisplayValue = 0;
|
currentDisplayValue = 0;
|
||||||
|
|||||||
@@ -38,7 +38,7 @@ namespace OpenRA.Mods.Common.Activities
|
|||||||
exp.GiveExperience(playerExperience);
|
exp.GiveExperience(playerExperience);
|
||||||
|
|
||||||
if (self.Owner.IsAlliedWith(self.World.RenderPlayer))
|
if (self.Owner.IsAlliedWith(self.World.RenderPlayer))
|
||||||
self.World.AddFrameEndTask(w => w.Add(new FloatingText(targetActor.CenterPosition, targetOwner.Color, FloatingText.FormatCashTick(donated), 30)));
|
self.World.AddFrameEndTask(w => w.Add(new FloatingText(targetActor.CenterPosition, targetActor.OwnerColor(), FloatingText.FormatCashTick(donated), 30)));
|
||||||
|
|
||||||
foreach (var nct in targetActor.TraitsImplementing<INotifyCashTransfer>())
|
foreach (var nct in targetActor.TraitsImplementing<INotifyCashTransfer>())
|
||||||
nct.OnAcceptingCash(targetActor, self);
|
nct.OnAcceptingCash(targetActor, self);
|
||||||
|
|||||||
@@ -46,7 +46,7 @@ namespace OpenRA.Mods.Common.Activities
|
|||||||
ns.Sold(self);
|
ns.Sold(self);
|
||||||
|
|
||||||
if (showTicks && refund > 0 && self.Owner.IsAlliedWith(self.World.RenderPlayer))
|
if (showTicks && refund > 0 && self.Owner.IsAlliedWith(self.World.RenderPlayer))
|
||||||
self.World.AddFrameEndTask(w => w.Add(new FloatingText(self.CenterPosition, self.Owner.Color, FloatingText.FormatCashTick(refund), 30)));
|
self.World.AddFrameEndTask(w => w.Add(new FloatingText(self.CenterPosition, self.OwnerColor(), FloatingText.FormatCashTick(refund), 30)));
|
||||||
|
|
||||||
Game.Sound.PlayNotification(self.World.Map.Rules, self.Owner, "Speech", sellableInfo.Notification, self.Owner.Faction.InternalName);
|
Game.Sound.PlayNotification(self.World.Map.Rules, self.Owner, "Speech", sellableInfo.Notification, self.Owner.Faction.InternalName);
|
||||||
TextNotificationsManager.AddTransientLine(self.Owner, sellableInfo.TextNotification);
|
TextNotificationsManager.AddTransientLine(self.Owner, sellableInfo.TextNotification);
|
||||||
|
|||||||
@@ -129,7 +129,7 @@ namespace OpenRA.Mods.Common.Effects
|
|||||||
{
|
{
|
||||||
var targetLine = new[] { prev, pos };
|
var targetLine = new[] { prev, pos };
|
||||||
prev = pos;
|
prev = pos;
|
||||||
yield return new TargetLineRenderable(targetLine, building.Owner.Color, rp.Info.LineWidth, 1);
|
yield return new TargetLineRenderable(targetLine, building.OwnerColor(), rp.Info.LineWidth, 1);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -77,7 +77,7 @@ namespace OpenRA.Mods.Common.Projectiles
|
|||||||
|
|
||||||
public IProjectile Create(ProjectileArgs args)
|
public IProjectile Create(ProjectileArgs args)
|
||||||
{
|
{
|
||||||
var c = UsePlayerColor ? args.SourceActor.Owner.Color : Color;
|
var c = UsePlayerColor ? args.SourceActor.OwnerColor() : Color;
|
||||||
return new AreaBeam(this, args, c);
|
return new AreaBeam(this, args, c);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -201,8 +201,8 @@ namespace OpenRA.Mods.Common.Projectiles
|
|||||||
|
|
||||||
if (info.ContrailLength > 0)
|
if (info.ContrailLength > 0)
|
||||||
{
|
{
|
||||||
var startcolor = info.ContrailStartColorUsePlayerColor ? Color.FromArgb(info.ContrailStartColorAlpha, args.SourceActor.Owner.Color) : Color.FromArgb(info.ContrailStartColorAlpha, info.ContrailStartColor);
|
var startcolor = info.ContrailStartColorUsePlayerColor ? Color.FromArgb(info.ContrailStartColorAlpha, Player.ActorColor(args.SourceActor)) : Color.FromArgb(info.ContrailStartColorAlpha, info.ContrailStartColor);
|
||||||
var endcolor = info.ContrailEndColorUsePlayerColor ? Color.FromArgb(info.ContrailEndColorAlpha, args.SourceActor.Owner.Color) : Color.FromArgb(info.ContrailEndColorAlpha, info.ContrailEndColor ?? startcolor);
|
var endcolor = info.ContrailEndColorUsePlayerColor ? Color.FromArgb(info.ContrailEndColorAlpha, Player.ActorColor(args.SourceActor)) : Color.FromArgb(info.ContrailEndColorAlpha, info.ContrailEndColor ?? startcolor);
|
||||||
contrail = new ContrailRenderable(world, startcolor, endcolor, info.ContrailStartWidth, info.ContrailEndWidth ?? info.ContrailStartWidth, info.ContrailLength, info.ContrailDelay, info.ContrailZOffset);
|
contrail = new ContrailRenderable(world, startcolor, endcolor, info.ContrailStartWidth, info.ContrailEndWidth ?? info.ContrailStartWidth, info.ContrailLength, info.ContrailDelay, info.ContrailZOffset);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -98,7 +98,7 @@ namespace OpenRA.Mods.Common.Projectiles
|
|||||||
|
|
||||||
public IProjectile Create(ProjectileArgs args)
|
public IProjectile Create(ProjectileArgs args)
|
||||||
{
|
{
|
||||||
var c = UsePlayerColor ? args.SourceActor.Owner.Color : Color;
|
var c = UsePlayerColor ? args.SourceActor.OwnerColor() : Color;
|
||||||
return new LaserZap(this, args, c);
|
return new LaserZap(this, args, c);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -126,7 +126,7 @@ namespace OpenRA.Mods.Common.Projectiles
|
|||||||
this.args = args;
|
this.args = args;
|
||||||
this.info = info;
|
this.info = info;
|
||||||
this.color = color;
|
this.color = color;
|
||||||
secondaryColor = info.SecondaryBeamUsePlayerColor ? args.SourceActor.Owner.Color : info.SecondaryBeamColor;
|
secondaryColor = info.SecondaryBeamUsePlayerColor ? args.SourceActor.OwnerColor() : info.SecondaryBeamColor;
|
||||||
target = args.PassiveTarget;
|
target = args.PassiveTarget;
|
||||||
source = args.Source;
|
source = args.Source;
|
||||||
|
|
||||||
|
|||||||
@@ -285,8 +285,8 @@ namespace OpenRA.Mods.Common.Projectiles
|
|||||||
|
|
||||||
if (info.ContrailLength > 0)
|
if (info.ContrailLength > 0)
|
||||||
{
|
{
|
||||||
var startcolor = info.ContrailStartColorUsePlayerColor ? Color.FromArgb(info.ContrailStartColorAlpha, args.SourceActor.Owner.Color) : Color.FromArgb(info.ContrailStartColorAlpha, info.ContrailStartColor);
|
var startcolor = info.ContrailStartColorUsePlayerColor ? Color.FromArgb(info.ContrailStartColorAlpha, Player.ActorColor(args.SourceActor)) : Color.FromArgb(info.ContrailStartColorAlpha, info.ContrailStartColor);
|
||||||
var endcolor = info.ContrailEndColorUsePlayerColor ? Color.FromArgb(info.ContrailEndColorAlpha, args.SourceActor.Owner.Color) : Color.FromArgb(info.ContrailEndColorAlpha, info.ContrailEndColor ?? startcolor);
|
var endcolor = info.ContrailEndColorUsePlayerColor ? Color.FromArgb(info.ContrailEndColorAlpha, Player.ActorColor(args.SourceActor)) : Color.FromArgb(info.ContrailEndColorAlpha, info.ContrailEndColor ?? startcolor);
|
||||||
contrail = new ContrailRenderable(world, startcolor, endcolor, info.ContrailStartWidth, info.ContrailEndWidth ?? info.ContrailStartWidth, info.ContrailLength, info.ContrailDelay, info.ContrailZOffset);
|
contrail = new ContrailRenderable(world, startcolor, endcolor, info.ContrailStartWidth, info.ContrailEndWidth ?? info.ContrailStartWidth, info.ContrailLength, info.ContrailDelay, info.ContrailZOffset);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -95,8 +95,8 @@ namespace OpenRA.Mods.Common.Projectiles
|
|||||||
|
|
||||||
public IProjectile Create(ProjectileArgs args)
|
public IProjectile Create(ProjectileArgs args)
|
||||||
{
|
{
|
||||||
var bc = BeamPlayerColor ? Color.FromArgb(BeamColor.A, args.SourceActor.Owner.Color) : BeamColor;
|
var bc = BeamPlayerColor ? Color.FromArgb(BeamColor.A, args.SourceActor.OwnerColor()) : BeamColor;
|
||||||
var hc = HelixPlayerColor ? Color.FromArgb(HelixColor.A, args.SourceActor.Owner.Color) : HelixColor;
|
var hc = HelixPlayerColor ? Color.FromArgb(HelixColor.A, args.SourceActor.OwnerColor()) : HelixColor;
|
||||||
return new Railgun(args, this, bc, hc);
|
return new Railgun(args, this, bc, hc);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -31,7 +31,7 @@ namespace OpenRA.Mods.Common.Scripting
|
|||||||
public string Name => Player.PlayerName;
|
public string Name => Player.PlayerName;
|
||||||
|
|
||||||
[Desc("The player's color.")]
|
[Desc("The player's color.")]
|
||||||
public Color Color => Player.Color;
|
public Color Color => Player.GetColor(Player);
|
||||||
|
|
||||||
[Desc("The player's faction.")]
|
[Desc("The player's faction.")]
|
||||||
public string Faction => Player.Faction.InternalName;
|
public string Faction => Player.Faction.InternalName;
|
||||||
|
|||||||
@@ -96,7 +96,7 @@ namespace OpenRA.Mods.Common.Traits
|
|||||||
{
|
{
|
||||||
var temp = currentDisplayValue;
|
var temp = currentDisplayValue;
|
||||||
if (self.Owner.IsAlliedWith(self.World.RenderPlayer))
|
if (self.Owner.IsAlliedWith(self.World.RenderPlayer))
|
||||||
self.World.AddFrameEndTask(w => w.Add(new FloatingText(self.CenterPosition, self.Owner.Color, FloatingText.FormatCashTick(temp), 30)));
|
self.World.AddFrameEndTask(w => w.Add(new FloatingText(self.CenterPosition, self.OwnerColor(), FloatingText.FormatCashTick(temp), 30)));
|
||||||
currentDisplayTick = info.TickRate;
|
currentDisplayTick = info.TickRate;
|
||||||
currentDisplayValue = 0;
|
currentDisplayValue = 0;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -91,7 +91,7 @@ namespace OpenRA.Mods.Common.Traits
|
|||||||
void AddCashTick(Actor self, int amount)
|
void AddCashTick(Actor self, int amount)
|
||||||
{
|
{
|
||||||
self.World.AddFrameEndTask(w => w.Add(
|
self.World.AddFrameEndTask(w => w.Add(
|
||||||
new FloatingText(self.CenterPosition, self.Owner.Color, FloatingText.FormatCashTick(amount), info.DisplayDuration)));
|
new FloatingText(self.CenterPosition, self.OwnerColor(), FloatingText.FormatCashTick(amount), info.DisplayDuration)));
|
||||||
}
|
}
|
||||||
|
|
||||||
void ModifyCash(Actor self, int amount)
|
void ModifyCash(Actor self, int amount)
|
||||||
|
|||||||
@@ -132,7 +132,7 @@ namespace OpenRA.Mods.Common.Traits
|
|||||||
var maxHP = healthInfo.MaxHP > 0 ? healthInfo.MaxHP : 1;
|
var maxHP = healthInfo.MaxHP > 0 ? healthInfo.MaxHP : 1;
|
||||||
var damageText = $"{-e.Damage.Value} ({e.Damage.Value * 100 / maxHP}%)";
|
var damageText = $"{-e.Damage.Value} ({e.Damage.Value * 100 / maxHP}%)";
|
||||||
|
|
||||||
self.World.AddFrameEndTask(w => w.Add(new FloatingText(self.CenterPosition, e.Attacker.Owner.Color, damageText, 30)));
|
self.World.AddFrameEndTask(w => w.Add(new FloatingText(self.CenterPosition, e.Attacker.OwnerColor(), damageText, 30)));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -41,7 +41,7 @@ namespace OpenRA.Mods.Common.Traits
|
|||||||
var amount = collector.Owner.PlayerActor.Trait<PlayerResources>().ChangeCash(info.Amount);
|
var amount = collector.Owner.PlayerActor.Trait<PlayerResources>().ChangeCash(info.Amount);
|
||||||
|
|
||||||
if (info.UseCashTick)
|
if (info.UseCashTick)
|
||||||
w.Add(new FloatingText(collector.CenterPosition, collector.Owner.Color, FloatingText.FormatCashTick(amount), 30));
|
w.Add(new FloatingText(collector.CenterPosition, collector.OwnerColor(), FloatingText.FormatCashTick(amount), 30));
|
||||||
});
|
});
|
||||||
|
|
||||||
base.Activate(collector);
|
base.Activate(collector);
|
||||||
|
|||||||
@@ -61,7 +61,7 @@ namespace OpenRA.Mods.Common.Traits
|
|||||||
{
|
{
|
||||||
foreach (var exitCell in exitCells)
|
foreach (var exitCell in exitCells)
|
||||||
{
|
{
|
||||||
var color = self.Owner.Color;
|
var color = self.OwnerColor();
|
||||||
var vec = exitCell - self.Location;
|
var vec = exitCell - self.Location;
|
||||||
var center = wr.World.Map.CenterOfCell(exitCell);
|
var center = wr.World.Map.CenterOfCell(exitCell);
|
||||||
yield return new TextAnnotationRenderable(manager.Font, center, 0, color, vec.ToString());
|
yield return new TextAnnotationRenderable(manager.Font, center, 0, color, vec.ToString());
|
||||||
@@ -96,7 +96,7 @@ namespace OpenRA.Mods.Common.Traits
|
|||||||
continue;
|
continue;
|
||||||
|
|
||||||
var exitCellCenter = self.World.Map.CenterOfCell(exitCells[i]);
|
var exitCellCenter = self.World.Map.CenterOfCell(exitCells[i]);
|
||||||
yield return new LineAnnotationRenderable(spawnPos, exitCellCenter, 1, self.Owner.Color);
|
yield return new LineAnnotationRenderable(spawnPos, exitCellCenter, 1, self.OwnerColor());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -72,7 +72,7 @@ namespace OpenRA.Mods.Common.Traits
|
|||||||
|
|
||||||
var displayedBounty = GetDisplayedBountyValue(self);
|
var displayedBounty = GetDisplayedBountyValue(self);
|
||||||
if (Info.ShowBounty && self.IsInWorld && displayedBounty != 0 && e.Attacker.Owner.IsAlliedWith(self.World.RenderPlayer))
|
if (Info.ShowBounty && self.IsInWorld && displayedBounty != 0 && e.Attacker.Owner.IsAlliedWith(self.World.RenderPlayer))
|
||||||
e.Attacker.World.AddFrameEndTask(w => w.Add(new FloatingText(self.CenterPosition, e.Attacker.Owner.Color, FloatingText.FormatCashTick(displayedBounty), 30)));
|
e.Attacker.World.AddFrameEndTask(w => w.Add(new FloatingText(self.CenterPosition, e.Attacker.OwnerColor(), FloatingText.FormatCashTick(displayedBounty), 30)));
|
||||||
|
|
||||||
e.Attacker.Owner.PlayerActor.Trait<PlayerResources>().ChangeCash(GetBountyValue(self));
|
e.Attacker.Owner.PlayerActor.Trait<PlayerResources>().ChangeCash(GetBountyValue(self));
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -56,7 +56,7 @@ namespace OpenRA.Mods.Common.Traits
|
|||||||
return;
|
return;
|
||||||
|
|
||||||
self.World.AddFrameEndTask(w => w.Add(
|
self.World.AddFrameEndTask(w => w.Add(
|
||||||
new FloatingText(self.CenterPosition, self.Owner.Color, FloatingText.FormatCashTick(amount), info.DisplayDuration)));
|
new FloatingText(self.CenterPosition, self.OwnerColor(), FloatingText.FormatCashTick(amount), info.DisplayDuration)));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -84,7 +84,7 @@ namespace OpenRA.Mods.Common.Traits
|
|||||||
playerRadarPing = radarPings.Add(
|
playerRadarPing = radarPings.Add(
|
||||||
() => self.Owner.IsAlliedWith(self.World.RenderPlayer),
|
() => self.Owner.IsAlliedWith(self.World.RenderPlayer),
|
||||||
order.Target.CenterPosition,
|
order.Target.CenterPosition,
|
||||||
self.Owner.Color,
|
self.OwnerColor(),
|
||||||
info.Duration);
|
info.Duration);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -47,7 +47,7 @@ namespace OpenRA.Mods.Common.Traits.Radar
|
|||||||
if (IsTraitDisabled || (viewer != null && !Info.ValidRelationships.HasRelationship(self.Owner.RelationshipWith(viewer))))
|
if (IsTraitDisabled || (viewer != null && !Info.ValidRelationships.HasRelationship(self.Owner.RelationshipWith(viewer))))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
var color = Game.Settings.Game.UsePlayerStanceColors ? Player.PlayerRelationshipColor(self) : self.Owner.Color;
|
var color = self.OwnerColor();
|
||||||
if (modifier != null)
|
if (modifier != null)
|
||||||
color = modifier.RadarColorOverride(self, color);
|
color = modifier.RadarColorOverride(self, color);
|
||||||
|
|
||||||
|
|||||||
@@ -75,8 +75,8 @@ namespace OpenRA.Mods.Common.Traits
|
|||||||
{
|
{
|
||||||
this.info = info;
|
this.info = info;
|
||||||
|
|
||||||
startcolor = info.StartColorUsePlayerColor ? Color.FromArgb(info.StartColorAlpha, self.Owner.Color) : Color.FromArgb(info.StartColorAlpha, info.StartColor);
|
startcolor = info.StartColorUsePlayerColor ? Color.FromArgb(info.StartColorAlpha, Player.ActorColor(self)) : Color.FromArgb(info.StartColorAlpha, info.StartColor);
|
||||||
endcolor = info.EndColorUsePlayerColor ? Color.FromArgb(info.EndColorAlpha, self.Owner.Color) : Color.FromArgb(info.EndColorAlpha, info.EndColor ?? startcolor);
|
endcolor = info.EndColorUsePlayerColor ? Color.FromArgb(info.EndColorAlpha, Player.ActorColor(self)) : Color.FromArgb(info.EndColorAlpha, info.EndColor ?? startcolor);
|
||||||
trail = new ContrailRenderable(self.World, startcolor, endcolor, info.StartWidth, info.EndWidth ?? info.StartWidth, info.TrailLength, info.TrailDelay, info.ZOffset);
|
trail = new ContrailRenderable(self.World, startcolor, endcolor, info.StartWidth, info.EndWidth ?? info.StartWidth, info.TrailLength, info.TrailDelay, info.ZOffset);
|
||||||
|
|
||||||
body = self.Trait<BodyOrientation>();
|
body = self.Trait<BodyOrientation>();
|
||||||
|
|||||||
@@ -30,7 +30,6 @@ namespace OpenRA.Mods.Common.Traits.Render
|
|||||||
{
|
{
|
||||||
readonly DebugVisualizations debugVis;
|
readonly DebugVisualizations debugVis;
|
||||||
readonly SpriteFont font;
|
readonly SpriteFont font;
|
||||||
readonly Actor self;
|
|
||||||
readonly WVec offset;
|
readonly WVec offset;
|
||||||
SquadManagerBotModule[] squadManagerModules;
|
SquadManagerBotModule[] squadManagerModules;
|
||||||
|
|
||||||
@@ -43,8 +42,7 @@ namespace OpenRA.Mods.Common.Traits.Render
|
|||||||
var yOffset = buildingInfo?.Dimensions.Y ?? 1;
|
var yOffset = buildingInfo?.Dimensions.Y ?? 1;
|
||||||
offset = new WVec(0, 512 * yOffset, 0);
|
offset = new WVec(0, 512 * yOffset, 0);
|
||||||
|
|
||||||
this.self = self;
|
color = self.OwnerColor();
|
||||||
color = GetColor();
|
|
||||||
font = Game.Renderer.Fonts[info.Font];
|
font = Game.Renderer.Fonts[info.Font];
|
||||||
|
|
||||||
debugVis = self.World.WorldActor.TraitOrDefault<DebugVisualizations>();
|
debugVis = self.World.WorldActor.TraitOrDefault<DebugVisualizations>();
|
||||||
@@ -60,15 +58,7 @@ namespace OpenRA.Mods.Common.Traits.Render
|
|||||||
tagString = self.ToString();
|
tagString = self.ToString();
|
||||||
}
|
}
|
||||||
|
|
||||||
void INotifyOwnerChanged.OnOwnerChanged(Actor self, Player oldOwner, Player newOwner)
|
void INotifyOwnerChanged.OnOwnerChanged(Actor self, Player oldOwner, Player newOwner) => color = self.OwnerColor();
|
||||||
{
|
|
||||||
color = GetColor();
|
|
||||||
}
|
|
||||||
|
|
||||||
Color GetColor()
|
|
||||||
{
|
|
||||||
return self.EffectiveOwner != null && self.EffectiveOwner.Disguised ? self.EffectiveOwner.Owner.Color : self.Owner.Color;
|
|
||||||
}
|
|
||||||
|
|
||||||
IEnumerable<IRenderable> IRenderAnnotationsWhenSelected.RenderAnnotations(Actor self, WorldRenderer wr)
|
IEnumerable<IRenderable> IRenderAnnotationsWhenSelected.RenderAnnotations(Actor self, WorldRenderer wr)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -52,7 +52,7 @@ namespace OpenRA.Mods.Common.Traits.Render
|
|||||||
: base(self, info)
|
: base(self, info)
|
||||||
{
|
{
|
||||||
font = Game.Renderer.Fonts[info.Font];
|
font = Game.Renderer.Fonts[info.Font];
|
||||||
color = info.UsePlayerColor ? self.Owner.Color : info.Color;
|
color = info.UsePlayerColor ? self.OwnerColor() : info.Color;
|
||||||
|
|
||||||
name = self.Owner.PlayerName;
|
name = self.Owner.PlayerName;
|
||||||
if (name.Length > info.MaxLength)
|
if (name.Length > info.MaxLength)
|
||||||
@@ -74,7 +74,7 @@ namespace OpenRA.Mods.Common.Traits.Render
|
|||||||
void INotifyOwnerChanged.OnOwnerChanged(Actor self, Player oldOwner, Player newOwner)
|
void INotifyOwnerChanged.OnOwnerChanged(Actor self, Player oldOwner, Player newOwner)
|
||||||
{
|
{
|
||||||
if (Info.UsePlayerColor)
|
if (Info.UsePlayerColor)
|
||||||
color = newOwner.Color;
|
color = self.OwnerColor();
|
||||||
|
|
||||||
name = self.Owner.PlayerName;
|
name = self.Owner.PlayerName;
|
||||||
if (name.Length > Info.MaxLength)
|
if (name.Length > Info.MaxLength)
|
||||||
|
|||||||
@@ -102,7 +102,7 @@ namespace OpenRA.Mods.Common.Traits.Render
|
|||||||
self.CenterPosition,
|
self.CenterPosition,
|
||||||
Info.Range,
|
Info.Range,
|
||||||
0,
|
0,
|
||||||
Info.UsePlayerColor ? self.Owner.Color : Info.Color,
|
Info.UsePlayerColor ? self.OwnerColor() : Info.Color,
|
||||||
Info.Width,
|
Info.Width,
|
||||||
Info.BorderColor,
|
Info.BorderColor,
|
||||||
Info.BorderWidth);
|
Info.BorderWidth);
|
||||||
|
|||||||
@@ -57,7 +57,7 @@ namespace OpenRA.Mods.Common.Traits.Render
|
|||||||
{
|
{
|
||||||
this.info = info;
|
this.info = info;
|
||||||
font = Game.Renderer.Fonts[info.Font];
|
font = Game.Renderer.Fonts[info.Font];
|
||||||
color = info.UsePlayerColor ? self.Owner.Color : info.Color;
|
color = info.UsePlayerColor ? self.OwnerColor() : info.Color;
|
||||||
|
|
||||||
label = new CachedTransform<int, string>(g => self.World.ControlGroups.Groups[g]);
|
label = new CachedTransform<int, string>(g => self.World.ControlGroups.Groups[g]);
|
||||||
}
|
}
|
||||||
@@ -81,7 +81,7 @@ namespace OpenRA.Mods.Common.Traits.Render
|
|||||||
void INotifyOwnerChanged.OnOwnerChanged(Actor self, Player oldOwner, Player newOwner)
|
void INotifyOwnerChanged.OnOwnerChanged(Actor self, Player oldOwner, Player newOwner)
|
||||||
{
|
{
|
||||||
if (info.UsePlayerColor)
|
if (info.UsePlayerColor)
|
||||||
color = newOwner.Color;
|
color = self.OwnerColor();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -52,7 +52,7 @@ namespace OpenRA.Mods.Common.Traits.Render
|
|||||||
: base(self, info)
|
: base(self, info)
|
||||||
{
|
{
|
||||||
font = Game.Renderer.Fonts[info.Font];
|
font = Game.Renderer.Fonts[info.Font];
|
||||||
color = info.UsePlayerColor ? self.Owner.Color : info.Color;
|
color = info.UsePlayerColor ? self.OwnerColor() : info.Color;
|
||||||
}
|
}
|
||||||
|
|
||||||
protected override IEnumerable<IRenderable> RenderDecoration(Actor self, WorldRenderer wr, int2 screenPos)
|
protected override IEnumerable<IRenderable> RenderDecoration(Actor self, WorldRenderer wr, int2 screenPos)
|
||||||
@@ -70,7 +70,7 @@ namespace OpenRA.Mods.Common.Traits.Render
|
|||||||
void INotifyOwnerChanged.OnOwnerChanged(Actor self, Player oldOwner, Player newOwner)
|
void INotifyOwnerChanged.OnOwnerChanged(Actor self, Player oldOwner, Player newOwner)
|
||||||
{
|
{
|
||||||
if (Info.UsePlayerColor)
|
if (Info.UsePlayerColor)
|
||||||
color = newOwner.Color;
|
color = self.OwnerColor();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -18,13 +18,19 @@ namespace OpenRA.Mods.Common.Widgets.Logic.Ingame
|
|||||||
[ChromeLogicArgsHotkeys("TogglePlayerStanceColorKey")]
|
[ChromeLogicArgsHotkeys("TogglePlayerStanceColorKey")]
|
||||||
public class TogglePlayerStanceColorHotkeyLogic : SingleHotkeyBaseLogic
|
public class TogglePlayerStanceColorHotkeyLogic : SingleHotkeyBaseLogic
|
||||||
{
|
{
|
||||||
|
readonly World world;
|
||||||
|
|
||||||
[ObjectCreator.UseCtor]
|
[ObjectCreator.UseCtor]
|
||||||
public TogglePlayerStanceColorHotkeyLogic(Widget widget, ModData modData, Dictionary<string, MiniYaml> logicArgs)
|
public TogglePlayerStanceColorHotkeyLogic(Widget widget, World world, ModData modData, Dictionary<string, MiniYaml> logicArgs)
|
||||||
: base(widget, modData, "TogglePlayerStanceColorKey", "WORLD_KEYHANDLER", logicArgs) { }
|
: base(widget, modData, "TogglePlayerStanceColorKey", "WORLD_KEYHANDLER", logicArgs)
|
||||||
|
{
|
||||||
|
this.world = world;
|
||||||
|
}
|
||||||
|
|
||||||
protected override bool OnHotkeyActivated(KeyInput e)
|
protected override bool OnHotkeyActivated(KeyInput e)
|
||||||
{
|
{
|
||||||
Game.Settings.Game.UsePlayerStanceColors ^= true;
|
Game.Settings.Game.UsePlayerStanceColors ^= true;
|
||||||
|
Player.SetupRelationshipColors(world.Players, world.LocalPlayer);
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -515,8 +515,9 @@ namespace OpenRA.Mods.Common.Widgets.Logic
|
|||||||
|
|
||||||
static void SetupPlayerColor(Player player, ScrollItemWidget template, ColorBlockWidget colorBlockWidget, GradientColorBlockWidget gradientColorBlockWidget)
|
static void SetupPlayerColor(Player player, ScrollItemWidget template, ColorBlockWidget colorBlockWidget, GradientColorBlockWidget gradientColorBlockWidget)
|
||||||
{
|
{
|
||||||
var color = Color.FromArgb(128, player.Color.R, player.Color.G, player.Color.B);
|
var pColor = player.Color;
|
||||||
var hoverColor = Color.FromArgb(192, player.Color.R, player.Color.G, player.Color.B);
|
var color = Color.FromArgb(128, pColor.R, pColor.G, pColor.B);
|
||||||
|
var hoverColor = Color.FromArgb(192, pColor.R, pColor.G, pColor.B);
|
||||||
|
|
||||||
var isMouseOver = new CachedTransform<Widget, bool>(w => w == template || template.Children.Contains(w));
|
var isMouseOver = new CachedTransform<Widget, bool>(w => w == template || template.Children.Contains(w));
|
||||||
|
|
||||||
|
|||||||
@@ -69,6 +69,9 @@ namespace OpenRA.Mods.Common.Widgets.Logic
|
|||||||
o = viewport.ActorTooltip.Owner;
|
o = viewport.ActorTooltip.Owner;
|
||||||
showOwner = o != null && !o.NonCombatant && viewport.ActorTooltip.TooltipInfo.IsOwnerRowVisible;
|
showOwner = o != null && !o.NonCombatant && viewport.ActorTooltip.TooltipInfo.IsOwnerRowVisible;
|
||||||
|
|
||||||
|
if (showOwner)
|
||||||
|
ownerColor = o.Color;
|
||||||
|
|
||||||
var stance = o == null || world.RenderPlayer == null ? PlayerRelationship.None : o.RelationshipWith(world.RenderPlayer);
|
var stance = o == null || world.RenderPlayer == null ? PlayerRelationship.None : o.RelationshipWith(world.RenderPlayer);
|
||||||
labelText = viewport.ActorTooltip.TooltipInfo.TooltipForPlayerStance(stance);
|
labelText = viewport.ActorTooltip.TooltipInfo.TooltipForPlayerStance(stance);
|
||||||
break;
|
break;
|
||||||
@@ -79,6 +82,9 @@ namespace OpenRA.Mods.Common.Widgets.Logic
|
|||||||
o = viewport.FrozenActorTooltip.TooltipOwner;
|
o = viewport.FrozenActorTooltip.TooltipOwner;
|
||||||
showOwner = o != null && !o.NonCombatant && viewport.FrozenActorTooltip.TooltipInfo.IsOwnerRowVisible;
|
showOwner = o != null && !o.NonCombatant && viewport.FrozenActorTooltip.TooltipInfo.IsOwnerRowVisible;
|
||||||
|
|
||||||
|
if (showOwner)
|
||||||
|
ownerColor = o.Color;
|
||||||
|
|
||||||
var stance = o == null || world.RenderPlayer == null ? PlayerRelationship.None : o.RelationshipWith(world.RenderPlayer);
|
var stance = o == null || world.RenderPlayer == null ? PlayerRelationship.None : o.RelationshipWith(world.RenderPlayer);
|
||||||
labelText = viewport.FrozenActorTooltip.TooltipInfo.TooltipForPlayerStance(stance);
|
labelText = viewport.FrozenActorTooltip.TooltipInfo.TooltipForPlayerStance(stance);
|
||||||
break;
|
break;
|
||||||
@@ -107,7 +113,6 @@ namespace OpenRA.Mods.Common.Widgets.Logic
|
|||||||
{
|
{
|
||||||
flagFaction = o.Faction.InternalName;
|
flagFaction = o.Faction.InternalName;
|
||||||
ownerName = o.PlayerName;
|
ownerName = o.PlayerName;
|
||||||
ownerColor = o.Color;
|
|
||||||
widget.Bounds.Height = doubleHeight;
|
widget.Bounds.Height = doubleHeight;
|
||||||
widget.Bounds.Width = Math.Max(widget.Bounds.Width,
|
widget.Bounds.Width = Math.Max(widget.Bounds.Width,
|
||||||
owner.Bounds.X + ownerFont.Measure(ownerName).X + label.Bounds.X);
|
owner.Bounds.X + ownerFont.Measure(ownerName).X + label.Bounds.X);
|
||||||
|
|||||||
@@ -137,6 +137,7 @@ namespace OpenRA.Mods.Common.Widgets.Logic
|
|||||||
{
|
{
|
||||||
var ds = Game.Settings.Graphics;
|
var ds = Game.Settings.Graphics;
|
||||||
var gs = Game.Settings.Game;
|
var gs = Game.Settings.Game;
|
||||||
|
var world = worldRenderer.World;
|
||||||
var scrollPanel = panel.Get<ScrollPanelWidget>("SETTINGS_SCROLLPANEL");
|
var scrollPanel = panel.Get<ScrollPanelWidget>("SETTINGS_SCROLLPANEL");
|
||||||
|
|
||||||
SettingsUtils.BindCheckboxPref(panel, "CURSORDOUBLE_CHECKBOX", ds, "CursorDouble");
|
SettingsUtils.BindCheckboxPref(panel, "CURSORDOUBLE_CHECKBOX", ds, "CursorDouble");
|
||||||
@@ -145,6 +146,15 @@ namespace OpenRA.Mods.Common.Widgets.Logic
|
|||||||
SettingsUtils.BindCheckboxPref(panel, "FRAME_LIMIT_GAMESPEED_CHECKBOX", ds, "CapFramerateToGameFps");
|
SettingsUtils.BindCheckboxPref(panel, "FRAME_LIMIT_GAMESPEED_CHECKBOX", ds, "CapFramerateToGameFps");
|
||||||
SettingsUtils.BindIntSliderPref(panel, "FRAME_LIMIT_SLIDER", ds, "MaxFramerate");
|
SettingsUtils.BindIntSliderPref(panel, "FRAME_LIMIT_SLIDER", ds, "MaxFramerate");
|
||||||
SettingsUtils.BindCheckboxPref(panel, "PLAYER_STANCE_COLORS_CHECKBOX", gs, "UsePlayerStanceColors");
|
SettingsUtils.BindCheckboxPref(panel, "PLAYER_STANCE_COLORS_CHECKBOX", gs, "UsePlayerStanceColors");
|
||||||
|
|
||||||
|
var cb = panel.Get<CheckboxWidget>("PLAYER_STANCE_COLORS_CHECKBOX");
|
||||||
|
cb.IsChecked = () => gs.UsePlayerStanceColors;
|
||||||
|
cb.OnClick = () =>
|
||||||
|
{
|
||||||
|
gs.UsePlayerStanceColors = cb.IsChecked() ^ true;
|
||||||
|
Player.SetupRelationshipColors(world.Players, world.LocalPlayer);
|
||||||
|
};
|
||||||
|
|
||||||
if (panel.GetOrNull<CheckboxWidget>("PAUSE_SHELLMAP_CHECKBOX") != null)
|
if (panel.GetOrNull<CheckboxWidget>("PAUSE_SHELLMAP_CHECKBOX") != null)
|
||||||
SettingsUtils.BindCheckboxPref(panel, "PAUSE_SHELLMAP_CHECKBOX", gs, "PauseShellmap");
|
SettingsUtils.BindCheckboxPref(panel, "PAUSE_SHELLMAP_CHECKBOX", gs, "PauseShellmap");
|
||||||
|
|
||||||
@@ -208,7 +218,7 @@ namespace OpenRA.Mods.Common.Widgets.Logic
|
|||||||
|
|
||||||
var minResolution = viewportSizes.MinEffectiveResolution;
|
var minResolution = viewportSizes.MinEffectiveResolution;
|
||||||
var resolution = Game.Renderer.Resolution;
|
var resolution = Game.Renderer.Resolution;
|
||||||
var disableUIScale = worldRenderer.World.Type != WorldType.Shellmap ||
|
var disableUIScale = world.Type != WorldType.Shellmap ||
|
||||||
resolution.Width * ds.UIScale < 1.25f * minResolution.Width ||
|
resolution.Width * ds.UIScale < 1.25f * minResolution.Width ||
|
||||||
resolution.Height * ds.UIScale < 1.25f * minResolution.Height;
|
resolution.Height * ds.UIScale < 1.25f * minResolution.Height;
|
||||||
|
|
||||||
@@ -240,7 +250,7 @@ namespace OpenRA.Mods.Common.Widgets.Logic
|
|||||||
|
|
||||||
var escPressed = false;
|
var escPressed = false;
|
||||||
var nameTextfield = panel.Get<TextFieldWidget>("PLAYERNAME");
|
var nameTextfield = panel.Get<TextFieldWidget>("PLAYERNAME");
|
||||||
nameTextfield.IsDisabled = () => worldRenderer.World.Type != WorldType.Shellmap;
|
nameTextfield.IsDisabled = () => world.Type != WorldType.Shellmap;
|
||||||
nameTextfield.Text = Settings.SanitizedPlayerName(ps.Name);
|
nameTextfield.Text = Settings.SanitizedPlayerName(ps.Name);
|
||||||
nameTextfield.OnLoseFocus = () =>
|
nameTextfield.OnLoseFocus = () =>
|
||||||
{
|
{
|
||||||
@@ -272,7 +282,7 @@ namespace OpenRA.Mods.Common.Widgets.Logic
|
|||||||
var colorManager = modData.DefaultRules.Actors[SystemActors.World].TraitInfo<IColorPickerManagerInfo>();
|
var colorManager = modData.DefaultRules.Actors[SystemActors.World].TraitInfo<IColorPickerManagerInfo>();
|
||||||
|
|
||||||
var colorDropdown = panel.Get<DropDownButtonWidget>("PLAYERCOLOR");
|
var colorDropdown = panel.Get<DropDownButtonWidget>("PLAYERCOLOR");
|
||||||
colorDropdown.IsDisabled = () => worldRenderer.World.Type != WorldType.Shellmap;
|
colorDropdown.IsDisabled = () => world.Type != WorldType.Shellmap;
|
||||||
colorDropdown.OnMouseDown = _ => colorManager.ShowColorDropDown(colorDropdown, ps.Color, null, worldRenderer, color =>
|
colorDropdown.OnMouseDown = _ => colorManager.ShowColorDropDown(colorDropdown, ps.Color, null, worldRenderer, color =>
|
||||||
{
|
{
|
||||||
ps.Color = color;
|
ps.Color = color;
|
||||||
|
|||||||
@@ -61,8 +61,7 @@ namespace OpenRA.Mods.Common.Widgets
|
|||||||
var time = WidgetUtils.FormatTime(p.RemainingTicks, false, self.World.Timestep);
|
var time = WidgetUtils.FormatTime(p.RemainingTicks, false, self.World.Timestep);
|
||||||
var text = TranslationProvider.GetString(Format, Translation.Arguments("player", self.Owner.PlayerName, "support-power", p.Name, "time", time));
|
var text = TranslationProvider.GetString(Format, Translation.Arguments("player", self.Owner.PlayerName, "support-power", p.Name, "time", time));
|
||||||
|
|
||||||
var playerColor = Game.Settings.Game.UsePlayerStanceColors ? Player.PlayerRelationshipColor(self) : self.Owner.Color;
|
var color = !p.Ready || Game.LocalTick % 50 < 25 ? self.OwnerColor() : Color.White;
|
||||||
var color = !p.Ready || Game.LocalTick % 50 < 25 ? playerColor : Color.White;
|
|
||||||
|
|
||||||
return (text, color);
|
return (text, color);
|
||||||
}).ToArray();
|
}).ToArray();
|
||||||
|
|||||||
@@ -643,7 +643,7 @@ label-status-bar-dropdown-container-bars = Status Bars:
|
|||||||
|
|
||||||
checkbox-player-stance-colors-container =
|
checkbox-player-stance-colors-container =
|
||||||
.label = Player Relationship Colors
|
.label = Player Relationship Colors
|
||||||
.tooltip = Change minimap and health bar colors based on relationship (own, enemy, ally, neutral)
|
.tooltip = Change player colors based on relationship (own, enemy, ally, neutral)
|
||||||
|
|
||||||
checkbox-ui-feedback-container =
|
checkbox-ui-feedback-container =
|
||||||
.label = Show UI Feedback Notifications
|
.label = Show UI Feedback Notifications
|
||||||
|
|||||||
@@ -468,7 +468,7 @@ label-status-bar-dropdown-container-bars = Status Bars:
|
|||||||
|
|
||||||
checkbox-player-stance-colors-container =
|
checkbox-player-stance-colors-container =
|
||||||
.label = Player Relationship Colors
|
.label = Player Relationship Colors
|
||||||
.tooltip = Change minimap and health bar colors based on relationship (own, enemy, ally, neutral)
|
.tooltip = Change player colors based on relationship (own, enemy, ally, neutral)
|
||||||
|
|
||||||
checkbox-ui-feedback-container =
|
checkbox-ui-feedback-container =
|
||||||
.label = Show UI Feedback Notifications
|
.label = Show UI Feedback Notifications
|
||||||
|
|||||||
Reference in New Issue
Block a user