Make player stance colours universally respected
This commit is contained in:
committed by
Matthias Mailänder
parent
2f331548e1
commit
5fc36bd45f
@@ -18,13 +18,19 @@ namespace OpenRA.Mods.Common.Widgets.Logic.Ingame
|
||||
[ChromeLogicArgsHotkeys("TogglePlayerStanceColorKey")]
|
||||
public class TogglePlayerStanceColorHotkeyLogic : SingleHotkeyBaseLogic
|
||||
{
|
||||
readonly World world;
|
||||
|
||||
[ObjectCreator.UseCtor]
|
||||
public TogglePlayerStanceColorHotkeyLogic(Widget widget, ModData modData, Dictionary<string, MiniYaml> logicArgs)
|
||||
: base(widget, modData, "TogglePlayerStanceColorKey", "WORLD_KEYHANDLER", logicArgs) { }
|
||||
public TogglePlayerStanceColorHotkeyLogic(Widget widget, World world, ModData modData, Dictionary<string, MiniYaml> logicArgs)
|
||||
: base(widget, modData, "TogglePlayerStanceColorKey", "WORLD_KEYHANDLER", logicArgs)
|
||||
{
|
||||
this.world = world;
|
||||
}
|
||||
|
||||
protected override bool OnHotkeyActivated(KeyInput e)
|
||||
{
|
||||
Game.Settings.Game.UsePlayerStanceColors ^= true;
|
||||
Player.SetupRelationshipColors(world.Players, world.LocalPlayer);
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
@@ -515,8 +515,9 @@ namespace OpenRA.Mods.Common.Widgets.Logic
|
||||
|
||||
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 hoverColor = Color.FromArgb(192, player.Color.R, player.Color.G, player.Color.B);
|
||||
var pColor = player.Color;
|
||||
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));
|
||||
|
||||
|
||||
@@ -69,6 +69,9 @@ namespace OpenRA.Mods.Common.Widgets.Logic
|
||||
o = viewport.ActorTooltip.Owner;
|
||||
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);
|
||||
labelText = viewport.ActorTooltip.TooltipInfo.TooltipForPlayerStance(stance);
|
||||
break;
|
||||
@@ -79,6 +82,9 @@ namespace OpenRA.Mods.Common.Widgets.Logic
|
||||
o = viewport.FrozenActorTooltip.TooltipOwner;
|
||||
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);
|
||||
labelText = viewport.FrozenActorTooltip.TooltipInfo.TooltipForPlayerStance(stance);
|
||||
break;
|
||||
@@ -107,7 +113,6 @@ namespace OpenRA.Mods.Common.Widgets.Logic
|
||||
{
|
||||
flagFaction = o.Faction.InternalName;
|
||||
ownerName = o.PlayerName;
|
||||
ownerColor = o.Color;
|
||||
widget.Bounds.Height = doubleHeight;
|
||||
widget.Bounds.Width = Math.Max(widget.Bounds.Width,
|
||||
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 gs = Game.Settings.Game;
|
||||
var world = worldRenderer.World;
|
||||
var scrollPanel = panel.Get<ScrollPanelWidget>("SETTINGS_SCROLLPANEL");
|
||||
|
||||
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.BindIntSliderPref(panel, "FRAME_LIMIT_SLIDER", ds, "MaxFramerate");
|
||||
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)
|
||||
SettingsUtils.BindCheckboxPref(panel, "PAUSE_SHELLMAP_CHECKBOX", gs, "PauseShellmap");
|
||||
|
||||
@@ -208,7 +218,7 @@ namespace OpenRA.Mods.Common.Widgets.Logic
|
||||
|
||||
var minResolution = viewportSizes.MinEffectiveResolution;
|
||||
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.Height * ds.UIScale < 1.25f * minResolution.Height;
|
||||
|
||||
@@ -240,7 +250,7 @@ namespace OpenRA.Mods.Common.Widgets.Logic
|
||||
|
||||
var escPressed = false;
|
||||
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.OnLoseFocus = () =>
|
||||
{
|
||||
@@ -272,7 +282,7 @@ namespace OpenRA.Mods.Common.Widgets.Logic
|
||||
var colorManager = modData.DefaultRules.Actors[SystemActors.World].TraitInfo<IColorPickerManagerInfo>();
|
||||
|
||||
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 =>
|
||||
{
|
||||
ps.Color = color;
|
||||
|
||||
@@ -61,8 +61,7 @@ namespace OpenRA.Mods.Common.Widgets
|
||||
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 playerColor = Game.Settings.Game.UsePlayerStanceColors ? Player.PlayerRelationshipColor(self) : self.Owner.Color;
|
||||
var color = !p.Ready || Game.LocalTick % 50 < 25 ? playerColor : Color.White;
|
||||
var color = !p.Ready || Game.LocalTick % 50 < 25 ? self.OwnerColor() : Color.White;
|
||||
|
||||
return (text, color);
|
||||
}).ToArray();
|
||||
|
||||
Reference in New Issue
Block a user