Merge pull request #6682 from Mailaender/player-settings-ui
Added player name and color selection to Settings menu
This commit is contained in:
@@ -127,6 +127,7 @@
|
|||||||
<Compile Include="SpriteLoaders\TmpRALoader.cs" />
|
<Compile Include="SpriteLoaders\TmpRALoader.cs" />
|
||||||
<Compile Include="SpriteLoaders\TmpTDLoader.cs" />
|
<Compile Include="SpriteLoaders\TmpTDLoader.cs" />
|
||||||
<Compile Include="SpriteLoaders\ShpD2Loader.cs" />
|
<Compile Include="SpriteLoaders\ShpD2Loader.cs" />
|
||||||
|
<Compile Include="Widgets\Logic\SettingsLogic.cs" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
|
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
|
||||||
<PropertyGroup>
|
<PropertyGroup>
|
||||||
|
|||||||
@@ -103,7 +103,7 @@ namespace OpenRA.Mods.Common.Widgets.Logic
|
|||||||
if (colorDropdown != null)
|
if (colorDropdown != null)
|
||||||
{
|
{
|
||||||
colorDropdown.IsDisabled = () => currentPalette != colorPreview.PaletteName;
|
colorDropdown.IsDisabled = () => currentPalette != colorPreview.PaletteName;
|
||||||
colorDropdown.OnMouseDown = _ => ShowColorDropDown(colorDropdown, colorPreview, world);
|
colorDropdown.OnMouseDown = _ => ColorPickerLogic.ShowColorDropDown(colorDropdown, colorPreview, world);
|
||||||
panel.Get<ColorBlockWidget>("COLORBLOCK").GetColor = () => Game.Settings.Player.Color.RGB;
|
panel.Get<ColorBlockWidget>("COLORBLOCK").GetColor = () => Game.Settings.Player.Color.RGB;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -376,26 +376,5 @@ namespace OpenRA.Mods.Common.Widgets.Logic
|
|||||||
dropdown.ShowDropDown("LABEL_DROPDOWN_TEMPLATE", 280, palettes, setupItem);
|
dropdown.ShowDropDown("LABEL_DROPDOWN_TEMPLATE", 280, palettes, setupItem);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void ShowColorDropDown(DropDownButtonWidget color, ColorPreviewManagerWidget preview, World world)
|
|
||||||
{
|
|
||||||
Action onExit = () =>
|
|
||||||
{
|
|
||||||
Game.Settings.Player.Color = preview.Color;
|
|
||||||
Game.Settings.Save();
|
|
||||||
};
|
|
||||||
|
|
||||||
color.RemovePanel();
|
|
||||||
|
|
||||||
Action<HSLColor> onChange = c => preview.Color = c;
|
|
||||||
|
|
||||||
var colorChooser = Game.LoadWidget(world, "COLOR_CHOOSER", null, new WidgetArgs()
|
|
||||||
{
|
|
||||||
{ "onChange", onChange },
|
|
||||||
{ "initialColor", Game.Settings.Player.Color }
|
|
||||||
});
|
|
||||||
|
|
||||||
color.AttachPanel(colorChooser, onExit);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -52,6 +52,27 @@ namespace OpenRA.Mods.Common.Widgets.Logic
|
|||||||
hueSlider.Value = initialColor.H / 255f;
|
hueSlider.Value = initialColor.H / 255f;
|
||||||
onChange(mixer.Color);
|
onChange(mixer.Color);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static void ShowColorDropDown(DropDownButtonWidget color, ColorPreviewManagerWidget preview, World world)
|
||||||
|
{
|
||||||
|
Action onExit = () =>
|
||||||
|
{
|
||||||
|
Game.Settings.Player.Color = preview.Color;
|
||||||
|
Game.Settings.Save();
|
||||||
|
};
|
||||||
|
|
||||||
|
color.RemovePanel();
|
||||||
|
|
||||||
|
Action<HSLColor> onChange = c => preview.Color = c;
|
||||||
|
|
||||||
|
var colorChooser = Game.LoadWidget(world, "COLOR_CHOOSER", null, new WidgetArgs()
|
||||||
|
{
|
||||||
|
{ "onChange", onChange },
|
||||||
|
{ "initialColor", Game.Settings.Player.Color }
|
||||||
|
});
|
||||||
|
|
||||||
|
color.AttachPanel(colorChooser, onExit);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -13,10 +13,9 @@ using System;
|
|||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
using OpenRA.Graphics;
|
using OpenRA.Graphics;
|
||||||
using OpenRA.Mods.Common.Widgets;
|
|
||||||
using OpenRA.Widgets;
|
using OpenRA.Widgets;
|
||||||
|
|
||||||
namespace OpenRA.Mods.RA.Widgets.Logic
|
namespace OpenRA.Mods.Common.Widgets.Logic
|
||||||
{
|
{
|
||||||
public class SettingsLogic
|
public class SettingsLogic
|
||||||
{
|
{
|
||||||
@@ -196,6 +195,21 @@ namespace OpenRA.Mods.RA.Widgets.Logic
|
|||||||
frameLimitTextfield.OnEnterKey = () => { frameLimitTextfield.YieldKeyboardFocus(); return true; };
|
frameLimitTextfield.OnEnterKey = () => { frameLimitTextfield.YieldKeyboardFocus(); return true; };
|
||||||
frameLimitTextfield.IsDisabled = () => !ds.CapFramerate;
|
frameLimitTextfield.IsDisabled = () => !ds.CapFramerate;
|
||||||
|
|
||||||
|
// Player profile
|
||||||
|
var ps = Game.Settings.Player;
|
||||||
|
|
||||||
|
var nameTextfield = panel.Get<TextFieldWidget>("PLAYERNAME");
|
||||||
|
nameTextfield.Text = ps.Name;
|
||||||
|
nameTextfield.OnEnterKey = () => { nameTextfield.YieldKeyboardFocus(); return true; };
|
||||||
|
nameTextfield.OnLoseFocus = () => { ps.Name = nameTextfield.Text; };
|
||||||
|
|
||||||
|
var colorPreview = panel.Get<ColorPreviewManagerWidget>("COLOR_MANAGER");
|
||||||
|
colorPreview.Color = ps.Color;
|
||||||
|
|
||||||
|
var colorDropdown = panel.Get<DropDownButtonWidget>("PLAYERCOLOR");
|
||||||
|
colorDropdown.OnMouseDown = _ => ColorPickerLogic.ShowColorDropDown(colorDropdown, colorPreview, worldRenderer.world);
|
||||||
|
colorDropdown.Get<ColorBlockWidget>("COLORBLOCK").GetColor = () => ps.Color.RGB;
|
||||||
|
|
||||||
return () =>
|
return () =>
|
||||||
{
|
{
|
||||||
int x, y;
|
int x, y;
|
||||||
@@ -203,6 +217,7 @@ namespace OpenRA.Mods.RA.Widgets.Logic
|
|||||||
Exts.TryParseIntegerInvariant(windowHeight.Text, out y);
|
Exts.TryParseIntegerInvariant(windowHeight.Text, out y);
|
||||||
ds.WindowedSize = new int2(x, y);
|
ds.WindowedSize = new int2(x, y);
|
||||||
frameLimitTextfield.YieldKeyboardFocus();
|
frameLimitTextfield.YieldKeyboardFocus();
|
||||||
|
nameTextfield.YieldKeyboardFocus();
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -210,8 +225,10 @@ namespace OpenRA.Mods.RA.Widgets.Logic
|
|||||||
{
|
{
|
||||||
var ds = Game.Settings.Graphics;
|
var ds = Game.Settings.Graphics;
|
||||||
var gs = Game.Settings.Game;
|
var gs = Game.Settings.Game;
|
||||||
|
var ps = Game.Settings.Player;
|
||||||
var dds = new GraphicSettings();
|
var dds = new GraphicSettings();
|
||||||
var dgs = new GameSettings();
|
var dgs = new GameSettings();
|
||||||
|
var dps = new PlayerSettings();
|
||||||
return () =>
|
return () =>
|
||||||
{
|
{
|
||||||
gs.ShowShellmap = dgs.ShowShellmap;
|
gs.ShowShellmap = dgs.ShowShellmap;
|
||||||
@@ -225,6 +242,9 @@ namespace OpenRA.Mods.RA.Widgets.Logic
|
|||||||
ds.PixelDouble = dds.PixelDouble;
|
ds.PixelDouble = dds.PixelDouble;
|
||||||
ds.CursorDouble = dds.CursorDouble;
|
ds.CursorDouble = dds.CursorDouble;
|
||||||
worldRenderer.Viewport.Zoom = ds.PixelDouble ? 2 : 1;
|
worldRenderer.Viewport.Zoom = ds.PixelDouble ? 2 : 1;
|
||||||
|
|
||||||
|
ps.Color = dps.Color;
|
||||||
|
ps.Name = dps.Name;
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -419,7 +419,6 @@
|
|||||||
<Compile Include="Widgets\Logic\InstallLogic.cs" />
|
<Compile Include="Widgets\Logic\InstallLogic.cs" />
|
||||||
<Compile Include="CombatDebugOverlay.cs" />
|
<Compile Include="CombatDebugOverlay.cs" />
|
||||||
<Compile Include="World\PathfinderDebugOverlay.cs" />
|
<Compile Include="World\PathfinderDebugOverlay.cs" />
|
||||||
<Compile Include="Widgets\Logic\SettingsLogic.cs" />
|
|
||||||
<Compile Include="AttackBomber.cs" />
|
<Compile Include="AttackBomber.cs" />
|
||||||
<Compile Include="ShroudRenderer.cs" />
|
<Compile Include="ShroudRenderer.cs" />
|
||||||
<Compile Include="Render\WithCrateBody.cs" />
|
<Compile Include="Render\WithCrateBody.cs" />
|
||||||
|
|||||||
@@ -47,7 +47,7 @@ Container@SETTINGS_PANEL:
|
|||||||
Y: 20
|
Y: 20
|
||||||
Width: PARENT_RIGHT
|
Width: PARENT_RIGHT
|
||||||
Font: Bold
|
Font: Bold
|
||||||
Text: Graphics
|
Text: Display
|
||||||
Align: Center
|
Align: Center
|
||||||
Label@MODE_LABEL:
|
Label@MODE_LABEL:
|
||||||
X: 120
|
X: 120
|
||||||
@@ -152,6 +152,29 @@ Container@SETTINGS_PANEL:
|
|||||||
Height: 20
|
Height: 20
|
||||||
Font: Regular
|
Font: Regular
|
||||||
Text: Show Shellmap
|
Text: Show Shellmap
|
||||||
|
Label@PLAYER:
|
||||||
|
Text: Player:
|
||||||
|
X: 15
|
||||||
|
Y: 215
|
||||||
|
TextField@PLAYERNAME:
|
||||||
|
Text: Name
|
||||||
|
X: 65
|
||||||
|
Y: 205
|
||||||
|
Width: 145
|
||||||
|
Height: 25
|
||||||
|
MaxLength: 16
|
||||||
|
ColorPreviewManager@COLOR_MANAGER:
|
||||||
|
DropDownButton@PLAYERCOLOR:
|
||||||
|
X: 215
|
||||||
|
Y: 205
|
||||||
|
Width: 70
|
||||||
|
Height: 25
|
||||||
|
Children:
|
||||||
|
ColorBlock@COLORBLOCK:
|
||||||
|
X: 5
|
||||||
|
Y: 6
|
||||||
|
Width: PARENT_RIGHT-35
|
||||||
|
Height: PARENT_BOTTOM-12
|
||||||
Checkbox@ALWAYS_SHOW_STATUS_BARS_CHECKBOX:
|
Checkbox@ALWAYS_SHOW_STATUS_BARS_CHECKBOX:
|
||||||
X: 310
|
X: 310
|
||||||
Y: 205
|
Y: 205
|
||||||
|
|||||||
@@ -165,6 +165,29 @@ Background@SETTINGS_PANEL:
|
|||||||
Height: 20
|
Height: 20
|
||||||
Font: Regular
|
Font: Regular
|
||||||
Text: Show Shellmap
|
Text: Show Shellmap
|
||||||
|
Label@PLAYER:
|
||||||
|
Text: Player:
|
||||||
|
X: 15
|
||||||
|
Y: 215
|
||||||
|
TextField@PLAYERNAME:
|
||||||
|
Text: Name
|
||||||
|
X: 65
|
||||||
|
Y: 205
|
||||||
|
Width: 145
|
||||||
|
Height: 25
|
||||||
|
MaxLength: 16
|
||||||
|
ColorPreviewManager@COLOR_MANAGER:
|
||||||
|
DropDownButton@PLAYERCOLOR:
|
||||||
|
X: 215
|
||||||
|
Y: 205
|
||||||
|
Width: 70
|
||||||
|
Height: 25
|
||||||
|
Children:
|
||||||
|
ColorBlock@COLORBLOCK:
|
||||||
|
X: 5
|
||||||
|
Y: 6
|
||||||
|
Width: PARENT_RIGHT-35
|
||||||
|
Height: PARENT_BOTTOM-12
|
||||||
Checkbox@ALWAYS_SHOW_STATUS_BARS_CHECKBOX:
|
Checkbox@ALWAYS_SHOW_STATUS_BARS_CHECKBOX:
|
||||||
X: 310
|
X: 310
|
||||||
Y: 205
|
Y: 205
|
||||||
|
|||||||
Reference in New Issue
Block a user