Remove bs settings state tracking
This commit is contained in:
@@ -27,11 +27,6 @@ namespace OpenRA.Mods.Cnc.Widgets.Logic
|
|||||||
}
|
}
|
||||||
|
|
||||||
PanelType Settings = PanelType.General;
|
PanelType Settings = PanelType.General;
|
||||||
ColorRamp playerColor;
|
|
||||||
Modifiers groupAddModifier;
|
|
||||||
MouseScrollType mouseScroll;
|
|
||||||
WindowMode windowMode;
|
|
||||||
|
|
||||||
CncColorPickerPaletteModifier playerPalettePreview;
|
CncColorPickerPaletteModifier playerPalettePreview;
|
||||||
World world;
|
World world;
|
||||||
|
|
||||||
@@ -51,69 +46,68 @@ namespace OpenRA.Mods.Cnc.Widgets.Logic
|
|||||||
var generalPane = panel.GetWidget("GENERAL_CONTROLS");
|
var generalPane = panel.GetWidget("GENERAL_CONTROLS");
|
||||||
generalPane.IsVisible = () => Settings == PanelType.General;
|
generalPane.IsVisible = () => Settings == PanelType.General;
|
||||||
|
|
||||||
|
var gameSettings = Game.Settings.Game;
|
||||||
|
var playerSettings = Game.Settings.Player;
|
||||||
|
var debugSettings = Game.Settings.Debug;
|
||||||
|
var graphicsSettings = Game.Settings.Graphics;
|
||||||
|
var soundSettings = Game.Settings.Sound;
|
||||||
|
var keyboardSettings = Game.Settings.Keyboard;
|
||||||
|
|
||||||
// Player profile
|
// Player profile
|
||||||
var nameTextfield = generalPane.GetWidget<TextFieldWidget>("NAME_TEXTFIELD");
|
var nameTextfield = generalPane.GetWidget<TextFieldWidget>("NAME_TEXTFIELD");
|
||||||
nameTextfield.Text = Game.Settings.Player.Name;
|
nameTextfield.Text = playerSettings.Name;
|
||||||
|
|
||||||
playerColor = Game.Settings.Player.ColorRamp;
|
|
||||||
playerPalettePreview = world.WorldActor.Trait<CncColorPickerPaletteModifier>();
|
playerPalettePreview = world.WorldActor.Trait<CncColorPickerPaletteModifier>();
|
||||||
playerPalettePreview.Ramp = playerColor;
|
playerPalettePreview.Ramp = playerSettings.ColorRamp;
|
||||||
|
|
||||||
var colorDropdown = generalPane.GetWidget<DropDownButtonWidget>("COLOR_DROPDOWN");
|
var colorDropdown = generalPane.GetWidget<DropDownButtonWidget>("COLOR_DROPDOWN");
|
||||||
colorDropdown.OnMouseDown = _ => ShowColorPicker(colorDropdown);
|
colorDropdown.OnMouseDown = _ => ShowColorPicker(colorDropdown, playerSettings);
|
||||||
colorDropdown.GetWidget<ColorBlockWidget>("COLORBLOCK").GetColor = () => playerColor.GetColor(0);
|
colorDropdown.GetWidget<ColorBlockWidget>("COLORBLOCK").GetColor = () => playerSettings.ColorRamp.GetColor(0);
|
||||||
|
|
||||||
// Debug
|
// Debug
|
||||||
var perftext = Game.Settings.Debug.PerfText;
|
|
||||||
var perftextCheckbox = generalPane.GetWidget<CheckboxWidget>("PERFTEXT_CHECKBOX");
|
var perftextCheckbox = generalPane.GetWidget<CheckboxWidget>("PERFTEXT_CHECKBOX");
|
||||||
perftextCheckbox.IsChecked = () => perftext;
|
perftextCheckbox.IsChecked = () => debugSettings.PerfText;
|
||||||
perftextCheckbox.OnClick = () => perftext ^= true;
|
perftextCheckbox.OnClick = () => debugSettings.PerfText ^= true;
|
||||||
|
|
||||||
var perfgraph = Game.Settings.Debug.PerfGraph;
|
|
||||||
var perfgraphCheckbox = generalPane.GetWidget<CheckboxWidget>("PERFGRAPH_CHECKBOX");
|
var perfgraphCheckbox = generalPane.GetWidget<CheckboxWidget>("PERFGRAPH_CHECKBOX");
|
||||||
perfgraphCheckbox.IsChecked = () => perfgraph;
|
perfgraphCheckbox.IsChecked = () => debugSettings.PerfGraph;
|
||||||
perfgraphCheckbox.OnClick = () => perfgraph ^= true;
|
perfgraphCheckbox.OnClick = () => debugSettings.PerfGraph ^= true;
|
||||||
|
|
||||||
var matchtimer = Game.Settings.Game.MatchTimer;
|
|
||||||
var matchtimerCheckbox = generalPane.GetWidget<CheckboxWidget>("MATCHTIME_CHECKBOX");
|
var matchtimerCheckbox = generalPane.GetWidget<CheckboxWidget>("MATCHTIME_CHECKBOX");
|
||||||
matchtimerCheckbox.IsChecked = () => matchtimer;
|
matchtimerCheckbox.IsChecked = () => gameSettings.MatchTimer;
|
||||||
matchtimerCheckbox.OnClick = () => matchtimer ^= true;
|
matchtimerCheckbox.OnClick = () => gameSettings.MatchTimer ^= true;
|
||||||
|
|
||||||
var checkunsynced = Game.Settings.Debug.SanityCheckUnsyncedCode;
|
|
||||||
var checkunsyncedCheckbox = generalPane.GetWidget<CheckboxWidget>("CHECKUNSYNCED_CHECKBOX");
|
var checkunsyncedCheckbox = generalPane.GetWidget<CheckboxWidget>("CHECKUNSYNCED_CHECKBOX");
|
||||||
checkunsyncedCheckbox.IsChecked = () => checkunsynced;
|
checkunsyncedCheckbox.IsChecked = () => debugSettings.SanityCheckUnsyncedCode;
|
||||||
checkunsyncedCheckbox.OnClick = () => checkunsynced ^= true;
|
checkunsyncedCheckbox.OnClick = () => debugSettings.SanityCheckUnsyncedCode ^= true;
|
||||||
|
|
||||||
// Video
|
// Video
|
||||||
windowMode = Game.Settings.Graphics.Mode;
|
|
||||||
var windowModeDropdown = generalPane.GetWidget<DropDownButtonWidget>("MODE_DROPDOWN");
|
var windowModeDropdown = generalPane.GetWidget<DropDownButtonWidget>("MODE_DROPDOWN");
|
||||||
windowModeDropdown.OnMouseDown = _ => ShowWindowModeDropdown(windowModeDropdown);
|
windowModeDropdown.OnMouseDown = _ => ShowWindowModeDropdown(windowModeDropdown, graphicsSettings);
|
||||||
windowModeDropdown.GetText = () => windowMode == WindowMode.Windowed ? "Windowed" : windowMode == WindowMode.Fullscreen ? "Fullscreen" : "Pseudo-Fullscreen";
|
windowModeDropdown.GetText = () => graphicsSettings.Mode == WindowMode.Windowed ?
|
||||||
|
"Windowed" : graphicsSettings.Mode == WindowMode.Fullscreen ? "Fullscreen" : "Pseudo-Fullscreen";
|
||||||
|
|
||||||
generalPane.GetWidget("WINDOW_RESOLUTION").IsVisible = () => windowMode == WindowMode.Windowed;
|
generalPane.GetWidget("WINDOW_RESOLUTION").IsVisible = () => graphicsSettings.Mode == WindowMode.Windowed;
|
||||||
var windowWidth = generalPane.GetWidget<TextFieldWidget>("WINDOW_WIDTH");
|
var windowWidth = generalPane.GetWidget<TextFieldWidget>("WINDOW_WIDTH");
|
||||||
windowWidth.Text = Game.Settings.Graphics.WindowedSize.X.ToString();
|
windowWidth.Text = graphicsSettings.WindowedSize.X.ToString();
|
||||||
|
|
||||||
var windowHeight = generalPane.GetWidget<TextFieldWidget>("WINDOW_HEIGHT");
|
var windowHeight = generalPane.GetWidget<TextFieldWidget>("WINDOW_HEIGHT");
|
||||||
windowHeight.Text = Game.Settings.Graphics.WindowedSize.Y.ToString();
|
windowHeight.Text = graphicsSettings.WindowedSize.Y.ToString();
|
||||||
|
|
||||||
// Audio
|
// Audio
|
||||||
var soundVolume = Game.Settings.Sound.SoundVolume;
|
|
||||||
var soundSlider = generalPane.GetWidget<SliderWidget>("SOUND_SLIDER");
|
var soundSlider = generalPane.GetWidget<SliderWidget>("SOUND_SLIDER");
|
||||||
soundSlider.OnChange += x => { soundVolume = x; Sound.SoundVolume = x;};
|
soundSlider.OnChange += x => { soundSettings.SoundVolume = x; Sound.SoundVolume = x;};
|
||||||
soundSlider.GetOffset = () => { return soundVolume; };
|
soundSlider.GetOffset = () => { return soundSettings.SoundVolume; };
|
||||||
soundSlider.SetOffset(soundVolume);
|
soundSlider.SetOffset(soundSettings.SoundVolume);
|
||||||
|
|
||||||
var musicVolume = Game.Settings.Sound.MusicVolume;
|
|
||||||
var musicSlider = generalPane.GetWidget<SliderWidget>("MUSIC_SLIDER");
|
var musicSlider = generalPane.GetWidget<SliderWidget>("MUSIC_SLIDER");
|
||||||
musicSlider.OnChange += x => { musicVolume = x; Sound.MusicVolume = x; };
|
musicSlider.OnChange += x => { soundSettings.MusicVolume = x; Sound.MusicVolume = x; };
|
||||||
musicSlider.GetOffset = () => { return musicVolume; };
|
musicSlider.GetOffset = () => { return soundSettings.MusicVolume; };
|
||||||
musicSlider.SetOffset(musicVolume);
|
musicSlider.SetOffset(soundSettings.MusicVolume);
|
||||||
|
|
||||||
var shellmapMusic = Game.Settings.Game.ShellmapMusic;
|
|
||||||
var shellmapMusicCheckbox = generalPane.GetWidget<CheckboxWidget>("SHELLMAP_MUSIC");
|
var shellmapMusicCheckbox = generalPane.GetWidget<CheckboxWidget>("SHELLMAP_MUSIC");
|
||||||
shellmapMusicCheckbox.IsChecked = () => shellmapMusic;
|
shellmapMusicCheckbox.IsChecked = () => gameSettings.ShellmapMusic;
|
||||||
shellmapMusicCheckbox.OnClick = () => shellmapMusic ^= true;
|
shellmapMusicCheckbox.OnClick = () => gameSettings.ShellmapMusic ^= true;
|
||||||
|
|
||||||
|
|
||||||
// Input pane
|
// Input pane
|
||||||
@@ -126,80 +120,45 @@ namespace OpenRA.Mods.Cnc.Widgets.Logic
|
|||||||
|
|
||||||
inputPane.GetWidget<CheckboxWidget>("CLASSICORDERS_CHECKBOX").IsDisabled = () => true;
|
inputPane.GetWidget<CheckboxWidget>("CLASSICORDERS_CHECKBOX").IsDisabled = () => true;
|
||||||
|
|
||||||
var scrollStrength = Game.Settings.Game.ViewportEdgeScrollStep;
|
|
||||||
var scrollSlider = inputPane.GetWidget<SliderWidget>("SCROLLSPEED_SLIDER");
|
var scrollSlider = inputPane.GetWidget<SliderWidget>("SCROLLSPEED_SLIDER");
|
||||||
scrollSlider.OnChange += x => scrollStrength = scrollSlider.GetOffset();
|
scrollSlider.OnChange += x => gameSettings.ViewportEdgeScrollStep = scrollSlider.GetOffset();
|
||||||
scrollSlider.SetOffset(scrollStrength);
|
scrollSlider.SetOffset(gameSettings.ViewportEdgeScrollStep);
|
||||||
|
|
||||||
var edgescroll = Game.Settings.Game.ViewportEdgeScroll;
|
|
||||||
var edgescrollCheckbox = inputPane.GetWidget<CheckboxWidget>("EDGESCROLL_CHECKBOX");
|
var edgescrollCheckbox = inputPane.GetWidget<CheckboxWidget>("EDGESCROLL_CHECKBOX");
|
||||||
edgescrollCheckbox.IsChecked = () => edgescroll;
|
edgescrollCheckbox.IsChecked = () => gameSettings.ViewportEdgeScroll;
|
||||||
edgescrollCheckbox.OnClick = () => edgescroll ^= true;
|
edgescrollCheckbox.OnClick = () => gameSettings.ViewportEdgeScroll ^= true;
|
||||||
|
|
||||||
mouseScroll = Game.Settings.Game.MouseScroll;
|
|
||||||
var mouseScrollDropdown = inputPane.GetWidget<DropDownButtonWidget>("MOUSE_SCROLL");
|
var mouseScrollDropdown = inputPane.GetWidget<DropDownButtonWidget>("MOUSE_SCROLL");
|
||||||
mouseScrollDropdown.OnMouseDown = _ => ShowMouseScrollDropdown(mouseScrollDropdown);
|
mouseScrollDropdown.OnMouseDown = _ => ShowMouseScrollDropdown(mouseScrollDropdown, gameSettings);
|
||||||
mouseScrollDropdown.GetText = () => mouseScroll.ToString();
|
mouseScrollDropdown.GetText = () => gameSettings.MouseScroll.ToString();
|
||||||
|
|
||||||
var teamchat = Game.Settings.Game.TeamChatToggle;
|
|
||||||
var teamchatCheckbox = inputPane.GetWidget<CheckboxWidget>("TEAMCHAT_CHECKBOX");
|
var teamchatCheckbox = inputPane.GetWidget<CheckboxWidget>("TEAMCHAT_CHECKBOX");
|
||||||
teamchatCheckbox.IsChecked = () => teamchat;
|
teamchatCheckbox.IsChecked = () => gameSettings.TeamChatToggle;
|
||||||
teamchatCheckbox.OnClick = () => teamchat ^= true;
|
teamchatCheckbox.OnClick = () => gameSettings.TeamChatToggle ^= true;
|
||||||
|
|
||||||
groupAddModifier = Game.Settings.Keyboard.ControlGroupModifier;
|
|
||||||
var groupModifierDropdown = inputPane.GetWidget<DropDownButtonWidget>("GROUPADD_MODIFIER");
|
var groupModifierDropdown = inputPane.GetWidget<DropDownButtonWidget>("GROUPADD_MODIFIER");
|
||||||
groupModifierDropdown.OnMouseDown = _ => ShowGroupModifierDropdown(groupModifierDropdown);
|
groupModifierDropdown.OnMouseDown = _ => ShowGroupModifierDropdown(groupModifierDropdown, keyboardSettings);
|
||||||
groupModifierDropdown.GetText = () => groupAddModifier.ToString();
|
groupModifierDropdown.GetText = () => keyboardSettings.ControlGroupModifier.ToString();
|
||||||
|
|
||||||
|
|
||||||
panel.GetWidget<ButtonWidget>("CANCEL_BUTTON").OnClick = () =>
|
panel.GetWidget<ButtonWidget>("BACK_BUTTON").OnClick = () =>
|
||||||
{
|
{
|
||||||
Widget.CloseWindow();
|
playerSettings.Name = nameTextfield.Text;
|
||||||
onExit();
|
int x = graphicsSettings.WindowedSize.X, y = graphicsSettings.WindowedSize.Y;
|
||||||
};
|
|
||||||
|
|
||||||
panel.GetWidget<ButtonWidget>("SAVE_BUTTON").OnClick = () =>
|
|
||||||
{
|
|
||||||
var s = Game.Settings;
|
|
||||||
s.Player.Name = nameTextfield.Text;
|
|
||||||
s.Player.ColorRamp = playerColor;
|
|
||||||
|
|
||||||
s.Debug.PerfText = perftext;
|
|
||||||
s.Debug.PerfGraph = perfgraph;
|
|
||||||
s.Game.MatchTimer = matchtimer;
|
|
||||||
s.Debug.SanityCheckUnsyncedCode = checkunsynced;
|
|
||||||
|
|
||||||
s.Graphics.Mode = windowMode;
|
|
||||||
|
|
||||||
int x = s.Graphics.WindowedSize.X, y = s.Graphics.WindowedSize.Y;
|
|
||||||
int.TryParse(windowWidth.Text, out x);
|
int.TryParse(windowWidth.Text, out x);
|
||||||
int.TryParse(windowHeight.Text, out y);
|
int.TryParse(windowHeight.Text, out y);
|
||||||
s.Graphics.WindowedSize = new int2(x,y);
|
graphicsSettings.WindowedSize = new int2(x,y);
|
||||||
|
Game.Settings.Save();
|
||||||
s.Sound.SoundVolume = soundVolume;
|
|
||||||
Sound.SoundVolume = soundVolume;
|
|
||||||
s.Sound.MusicVolume = musicVolume;
|
|
||||||
Sound.MusicVolume = musicVolume;
|
|
||||||
s.Game.ShellmapMusic = shellmapMusic;
|
|
||||||
|
|
||||||
|
|
||||||
s.Game.ViewportEdgeScrollStep = scrollStrength;
|
|
||||||
s.Game.ViewportEdgeScroll = edgescroll;
|
|
||||||
s.Game.MouseScroll = mouseScroll;
|
|
||||||
|
|
||||||
s.Game.TeamChatToggle = teamchat;
|
|
||||||
s.Keyboard.ControlGroupModifier = groupAddModifier;
|
|
||||||
s.Save();
|
|
||||||
Widget.CloseWindow();
|
Widget.CloseWindow();
|
||||||
onExit();
|
onExit();
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
bool ShowColorPicker(DropDownButtonWidget color)
|
bool ShowColorPicker(DropDownButtonWidget color, PlayerSettings s)
|
||||||
{
|
{
|
||||||
Action<ColorRamp> onSelect = c =>
|
Action<ColorRamp> onSelect = c =>
|
||||||
{
|
{
|
||||||
playerColor = c;
|
s.ColorRamp = c;
|
||||||
color.RemovePanel();
|
color.RemovePanel();
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -212,14 +171,14 @@ namespace OpenRA.Mods.Cnc.Widgets.Logic
|
|||||||
{
|
{
|
||||||
{ "onSelect", onSelect },
|
{ "onSelect", onSelect },
|
||||||
{ "onChange", onChange },
|
{ "onChange", onChange },
|
||||||
{ "initialRamp", playerColor }
|
{ "initialRamp", s.ColorRamp }
|
||||||
});
|
});
|
||||||
|
|
||||||
color.AttachPanel(colorChooser);
|
color.AttachPanel(colorChooser);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool ShowGroupModifierDropdown(DropDownButtonWidget dropdown)
|
bool ShowGroupModifierDropdown(DropDownButtonWidget dropdown, KeyboardSettings s)
|
||||||
{
|
{
|
||||||
var options = new Dictionary<string, Modifiers>()
|
var options = new Dictionary<string, Modifiers>()
|
||||||
{
|
{
|
||||||
@@ -233,8 +192,8 @@ namespace OpenRA.Mods.Cnc.Widgets.Logic
|
|||||||
Func<string, ScrollItemWidget, ScrollItemWidget> setupItem = (o, itemTemplate) =>
|
Func<string, ScrollItemWidget, ScrollItemWidget> setupItem = (o, itemTemplate) =>
|
||||||
{
|
{
|
||||||
var item = ScrollItemWidget.Setup(itemTemplate,
|
var item = ScrollItemWidget.Setup(itemTemplate,
|
||||||
() => groupAddModifier == options[o],
|
() => s.ControlGroupModifier == options[o],
|
||||||
() => groupAddModifier = options[o]);
|
() => s.ControlGroupModifier = options[o]);
|
||||||
item.GetWidget<LabelWidget>("LABEL").GetText = () => o;
|
item.GetWidget<LabelWidget>("LABEL").GetText = () => o;
|
||||||
return item;
|
return item;
|
||||||
};
|
};
|
||||||
@@ -243,7 +202,7 @@ namespace OpenRA.Mods.Cnc.Widgets.Logic
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool ShowWindowModeDropdown(DropDownButtonWidget dropdown)
|
bool ShowWindowModeDropdown(DropDownButtonWidget dropdown, GraphicSettings s)
|
||||||
{
|
{
|
||||||
var options = new Dictionary<string, WindowMode>()
|
var options = new Dictionary<string, WindowMode>()
|
||||||
{
|
{
|
||||||
@@ -255,8 +214,8 @@ namespace OpenRA.Mods.Cnc.Widgets.Logic
|
|||||||
Func<string, ScrollItemWidget, ScrollItemWidget> setupItem = (o, itemTemplate) =>
|
Func<string, ScrollItemWidget, ScrollItemWidget> setupItem = (o, itemTemplate) =>
|
||||||
{
|
{
|
||||||
var item = ScrollItemWidget.Setup(itemTemplate,
|
var item = ScrollItemWidget.Setup(itemTemplate,
|
||||||
() => windowMode == options[o],
|
() => s.Mode == options[o],
|
||||||
() => windowMode = options[o]);
|
() => s.Mode = options[o]);
|
||||||
item.GetWidget<LabelWidget>("LABEL").GetText = () => o;
|
item.GetWidget<LabelWidget>("LABEL").GetText = () => o;
|
||||||
return item;
|
return item;
|
||||||
};
|
};
|
||||||
@@ -266,7 +225,7 @@ namespace OpenRA.Mods.Cnc.Widgets.Logic
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
bool ShowMouseScrollDropdown(DropDownButtonWidget dropdown)
|
bool ShowMouseScrollDropdown(DropDownButtonWidget dropdown, GameSettings s)
|
||||||
{
|
{
|
||||||
var options = new Dictionary<string, MouseScrollType>()
|
var options = new Dictionary<string, MouseScrollType>()
|
||||||
{
|
{
|
||||||
@@ -278,8 +237,8 @@ namespace OpenRA.Mods.Cnc.Widgets.Logic
|
|||||||
Func<string, ScrollItemWidget, ScrollItemWidget> setupItem = (o, itemTemplate) =>
|
Func<string, ScrollItemWidget, ScrollItemWidget> setupItem = (o, itemTemplate) =>
|
||||||
{
|
{
|
||||||
var item = ScrollItemWidget.Setup(itemTemplate,
|
var item = ScrollItemWidget.Setup(itemTemplate,
|
||||||
() => mouseScroll == options[o],
|
() => s.MouseScroll == options[o],
|
||||||
() => mouseScroll = options[o]);
|
() => s.MouseScroll = options[o]);
|
||||||
item.GetWidget<LabelWidget>("LABEL").GetText = () => o;
|
item.GetWidget<LabelWidget>("LABEL").GetText = () => o;
|
||||||
return item;
|
return item;
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -345,19 +345,11 @@ Container@SETTINGS_PANEL:
|
|||||||
Width:140
|
Width:140
|
||||||
Height:35
|
Height:35
|
||||||
Text:Input
|
Text:Input
|
||||||
Button@CANCEL_BUTTON:
|
|
||||||
Id:CANCEL_BUTTON
|
|
||||||
Key:escape
|
|
||||||
X:450
|
|
||||||
Y:249
|
|
||||||
Width:140
|
|
||||||
Height:35
|
|
||||||
Text:Cancel
|
|
||||||
Button@SAVE_BUTTON:
|
Button@SAVE_BUTTON:
|
||||||
Id:SAVE_BUTTON
|
Id:BACK_BUTTON
|
||||||
Key:return
|
Key:escape
|
||||||
X:600
|
X:600
|
||||||
Y:249
|
Y:249
|
||||||
Width:140
|
Width:140
|
||||||
Height:35
|
Height:35
|
||||||
Text:Save
|
Text:Back
|
||||||
Reference in New Issue
Block a user