Merge pull request #6682 from Mailaender/player-settings-ui

Added player name and color selection to Settings menu
This commit is contained in:
Paul Chote
2014-11-04 07:54:49 +13:00
7 changed files with 92 additions and 26 deletions

View File

@@ -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>

View File

@@ -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);
}
} }
} }

View File

@@ -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);
}
} }
} }

View File

@@ -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;
}; };
} }

View File

@@ -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" />

View File

@@ -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

View File

@@ -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