bring back the player name and color to the settings menu

closes #6380
This commit is contained in:
Matthias Mailänder
2014-10-05 18:54:41 +02:00
parent cfbdebc371
commit 1bed876540
7 changed files with 91 additions and 25 deletions

View File

@@ -121,6 +121,7 @@
<Compile Include="SpriteLoaders\TmpRALoader.cs" />
<Compile Include="SpriteLoaders\TmpTDLoader.cs" />
<Compile Include="SpriteLoaders\ShpD2Loader.cs" />
<Compile Include="Widgets\Logic\SettingsLogic.cs" />
</ItemGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
<PropertyGroup>

View File

@@ -103,7 +103,7 @@ namespace OpenRA.Mods.Common.Widgets.Logic
if (colorDropdown != null)
{
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;
}
@@ -376,26 +376,5 @@ namespace OpenRA.Mods.Common.Widgets.Logic
dropdown.ShowDropDown("LABEL_DROPDOWN_TEMPLATE", 280, palettes, setupItem);
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;
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.Linq;
using OpenRA.Graphics;
using OpenRA.Mods.Common.Widgets;
using OpenRA.Widgets;
namespace OpenRA.Mods.RA.Widgets.Logic
namespace OpenRA.Mods.Common.Widgets.Logic
{
public class SettingsLogic
{
@@ -196,6 +195,21 @@ namespace OpenRA.Mods.RA.Widgets.Logic
frameLimitTextfield.OnEnterKey = () => { frameLimitTextfield.YieldKeyboardFocus(); return true; };
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 () =>
{
int x, y;
@@ -203,6 +217,7 @@ namespace OpenRA.Mods.RA.Widgets.Logic
Exts.TryParseIntegerInvariant(windowHeight.Text, out y);
ds.WindowedSize = new int2(x, y);
frameLimitTextfield.YieldKeyboardFocus();
nameTextfield.YieldKeyboardFocus();
};
}
@@ -210,8 +225,10 @@ namespace OpenRA.Mods.RA.Widgets.Logic
{
var ds = Game.Settings.Graphics;
var gs = Game.Settings.Game;
var ps = Game.Settings.Player;
var dds = new GraphicSettings();
var dgs = new GameSettings();
var dps = new PlayerSettings();
return () =>
{
gs.ShowShellmap = dgs.ShowShellmap;
@@ -225,6 +242,9 @@ namespace OpenRA.Mods.RA.Widgets.Logic
ds.PixelDouble = dds.PixelDouble;
ds.CursorDouble = dds.CursorDouble;
worldRenderer.Viewport.Zoom = ds.PixelDouble ? 2 : 1;
ps.Color = dps.Color;
ps.Name = dps.Name;
};
}

View File

@@ -420,7 +420,6 @@
<Compile Include="Widgets\Logic\InstallLogic.cs" />
<Compile Include="CombatDebugOverlay.cs" />
<Compile Include="World\PathfinderDebugOverlay.cs" />
<Compile Include="Widgets\Logic\SettingsLogic.cs" />
<Compile Include="AttackBomber.cs" />
<Compile Include="ShroudRenderer.cs" />
<Compile Include="Render\WithCrateBody.cs" />

View File

@@ -152,6 +152,29 @@ Container@SETTINGS_PANEL:
Height: 20
Font: Regular
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:
X: 310
Y: 205

View File

@@ -165,6 +165,29 @@ Background@SETTINGS_PANEL:
Height: 20
Font: Regular
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:
X: 310
Y: 205