Part 2 of 3: Split Settings into logical units.
Syntax for command line overrides is now <section>.<setting>=<value> eg `General.InitialMods=cnc'
This commit is contained in:
@@ -36,29 +36,29 @@ namespace OpenRA.Widgets.Delegates
|
||||
|
||||
var map = Game.modData.AvailableMaps.Keys.FirstOrDefault();
|
||||
|
||||
settings.LastServerTitle = cs.GetWidget<TextFieldWidget>("GAME_TITLE").Text;
|
||||
settings.ListenPort = int.Parse(cs.GetWidget<TextFieldWidget>("LISTEN_PORT").Text);
|
||||
settings.ExternalPort = int.Parse(cs.GetWidget<TextFieldWidget>("EXTERNAL_PORT").Text);
|
||||
settings.Server.LastServerTitle = cs.GetWidget<TextFieldWidget>("GAME_TITLE").Text;
|
||||
settings.Server.ListenPort = int.Parse(cs.GetWidget<TextFieldWidget>("LISTEN_PORT").Text);
|
||||
settings.Server.ExternalPort = int.Parse(cs.GetWidget<TextFieldWidget>("EXTERNAL_PORT").Text);
|
||||
settings.Save();
|
||||
|
||||
Server.Server.ServerMain(Game.modData, settings, map);
|
||||
|
||||
Game.JoinServer(IPAddress.Loopback.ToString(), settings.ListenPort);
|
||||
Game.JoinServer(IPAddress.Loopback.ToString(), settings.Server.ListenPort);
|
||||
return true;
|
||||
};
|
||||
|
||||
cs.GetWidget<TextFieldWidget>("GAME_TITLE").Text = settings.LastServerTitle;
|
||||
cs.GetWidget<TextFieldWidget>("LISTEN_PORT").Text = settings.ListenPort.ToString();
|
||||
cs.GetWidget<TextFieldWidget>("EXTERNAL_PORT").Text = settings.ExternalPort.ToString();
|
||||
cs.GetWidget<CheckboxWidget>("CHECKBOX_ONLINE").Checked = () => settings.AdvertiseOnline;
|
||||
cs.GetWidget<TextFieldWidget>("GAME_TITLE").Text = settings.Server.LastServerTitle;
|
||||
cs.GetWidget<TextFieldWidget>("LISTEN_PORT").Text = settings.Server.ListenPort.ToString();
|
||||
cs.GetWidget<TextFieldWidget>("EXTERNAL_PORT").Text = settings.Server.ExternalPort.ToString();
|
||||
cs.GetWidget<CheckboxWidget>("CHECKBOX_ONLINE").Checked = () => settings.Server.AdvertiseOnline;
|
||||
cs.GetWidget("CHECKBOX_ONLINE").OnMouseDown = mi => {
|
||||
settings.AdvertiseOnline ^= true;
|
||||
settings.Server.AdvertiseOnline ^= true;
|
||||
settings.Save();
|
||||
return true;
|
||||
};
|
||||
cs.GetWidget<CheckboxWidget>("CHECKBOX_CHEATS").Checked = () => settings.AllowCheats;
|
||||
cs.GetWidget<CheckboxWidget>("CHECKBOX_CHEATS").Checked = () => settings.Server.AllowCheats;
|
||||
cs.GetWidget<CheckboxWidget>("CHECKBOX_CHEATS").OnMouseDown = mi => {
|
||||
settings.AllowCheats ^=true;
|
||||
settings.Server.AllowCheats ^=true;
|
||||
settings.Save();
|
||||
return true;
|
||||
};
|
||||
|
||||
@@ -49,7 +49,7 @@ namespace OpenRA.Widgets.Delegates
|
||||
};
|
||||
|
||||
devmodeBG.GetWidget<CheckboxWidget>("SETTINGS_CHECKBOX_UNITDEBUG").Checked =
|
||||
() => Game.Settings.UnitDebug;
|
||||
() => Game.Settings.Debug.UnitDebug;
|
||||
devmodeBG.GetWidget("SETTINGS_CHECKBOX_UNITDEBUG").OnMouseDown = mi =>
|
||||
{
|
||||
Game.IssueOrder(new Order("DevUnitDebug", Game.world.LocalPlayer.PlayerActor));
|
||||
|
||||
@@ -33,8 +33,8 @@ namespace OpenRA.Widgets.Delegates
|
||||
Game.LobbyInfoChanged += UpdateCurrentMap;
|
||||
UpdateCurrentMap();
|
||||
|
||||
CurrentColorPreview1 = Game.Settings.PlayerColor1;
|
||||
CurrentColorPreview2 = Game.Settings.PlayerColor2;
|
||||
CurrentColorPreview1 = Game.Settings.Player.PlayerColor1;
|
||||
CurrentColorPreview2 = Game.Settings.Player.PlayerColor2;
|
||||
|
||||
var r = Widget.RootWidget;
|
||||
var lobby = r.GetWidget("SERVER_LOBBY");
|
||||
@@ -162,8 +162,8 @@ namespace OpenRA.Widgets.Delegates
|
||||
var c1 = ColorFromHSL(hf, sf, lf);
|
||||
var c2 = ColorFromHSL(hf, sf, r*lf);
|
||||
|
||||
Game.Settings.PlayerColor1 = c1;
|
||||
Game.Settings.PlayerColor2 = c2;
|
||||
Game.Settings.Player.PlayerColor1 = c1;
|
||||
Game.Settings.Player.PlayerColor2 = c2;
|
||||
Game.Settings.Save();
|
||||
Game.IssueOrder(Order.Command("color {0},{1},{2},{3},{4},{5}".F(c1.R,c1.G,c1.B,c2.R,c2.G,c2.B)));
|
||||
}
|
||||
@@ -220,15 +220,14 @@ namespace OpenRA.Widgets.Delegates
|
||||
return;
|
||||
hasJoined = true;
|
||||
|
||||
if (Game.LocalClient.Name != Game.Settings.PlayerName)
|
||||
Game.IssueOrder(Order.Command("name " + Game.Settings.PlayerName));
|
||||
if (Game.LocalClient.Name != Game.Settings.Player.PlayerName)
|
||||
Game.IssueOrder(Order.Command("name " + Game.Settings.Player.PlayerName));
|
||||
|
||||
var c1 = Game.Settings.Player.PlayerColor1;
|
||||
var c2 = Game.Settings.Player.PlayerColor2;
|
||||
|
||||
if (Game.LocalClient.Color1 != Game.Settings.PlayerColor1 || Game.LocalClient.Color2 != Game.Settings.PlayerColor2)
|
||||
{
|
||||
var c1 = Game.Settings.PlayerColor1;
|
||||
var c2 = Game.Settings.PlayerColor2;
|
||||
if (Game.LocalClient.Color1 != c1 || Game.LocalClient.Color2 != c2)
|
||||
Game.IssueOrder(Order.Command("color {0},{1},{2},{3},{4},{5}".F(c1.R,c1.G,c1.B,c2.R,c2.G,c2.B)));
|
||||
}
|
||||
}
|
||||
|
||||
void ResetConnectionState()
|
||||
@@ -265,7 +264,7 @@ namespace OpenRA.Widgets.Delegates
|
||||
return true;
|
||||
|
||||
Game.IssueOrder(Order.Command("name " + name.Text));
|
||||
Game.Settings.PlayerName = name.Text;
|
||||
Game.Settings.Player.PlayerName = name.Text;
|
||||
Game.Settings.Save();
|
||||
return true;
|
||||
};
|
||||
|
||||
@@ -18,7 +18,7 @@ namespace OpenRA.Widgets.Delegates
|
||||
{
|
||||
var r = Widget.RootWidget;
|
||||
var perfRoot = r.GetWidget("PERF_BG");
|
||||
perfRoot.IsVisible = () => perfRoot.Visible && Game.Settings.PerfDebug;
|
||||
perfRoot.IsVisible = () => perfRoot.Visible && Game.Settings.Debug.PerfDebug;
|
||||
|
||||
// Perf text
|
||||
var perfText = perfRoot.GetWidget<LabelWidget>("TEXT");
|
||||
|
||||
@@ -41,7 +41,7 @@ namespace OpenRA.Widgets.Delegates
|
||||
bg.Children.RemoveAll(a => GameButtons.Contains(a));
|
||||
GameButtons.Clear();
|
||||
|
||||
MasterServerQuery.Refresh(Game.Settings.MasterServer);
|
||||
MasterServerQuery.Refresh(Game.Settings.Server.MasterServer);
|
||||
|
||||
return true;
|
||||
};
|
||||
@@ -76,7 +76,7 @@ namespace OpenRA.Widgets.Delegates
|
||||
bg.Children.RemoveAll(a => GameButtons.Contains(a));
|
||||
GameButtons.Clear();
|
||||
|
||||
MasterServerQuery.Refresh(Game.Settings.MasterServer);
|
||||
MasterServerQuery.Refresh(Game.Settings.Server.MasterServer);
|
||||
|
||||
return true;
|
||||
};
|
||||
@@ -91,7 +91,7 @@ namespace OpenRA.Widgets.Delegates
|
||||
{
|
||||
r.CloseWindow();
|
||||
|
||||
dc.GetWidget<TextFieldWidget>("SERVER_ADDRESS").Text = Game.Settings.LastServer;
|
||||
dc.GetWidget<TextFieldWidget>("SERVER_ADDRESS").Text = Game.Settings.General.LastServer;
|
||||
r.OpenWindow("DIRECTCONNECT_BG");
|
||||
return true;
|
||||
};
|
||||
@@ -133,7 +133,7 @@ namespace OpenRA.Widgets.Delegates
|
||||
if (cpts.Length != 2)
|
||||
return true;
|
||||
|
||||
Game.Settings.LastServer = address;
|
||||
Game.Settings.General.LastServer = address;
|
||||
Game.Settings.Save();
|
||||
|
||||
r.CloseWindow();
|
||||
|
||||
@@ -34,31 +34,31 @@ namespace OpenRA.Widgets.Delegates
|
||||
var general = bg.GetWidget("GENERAL_PANE");
|
||||
|
||||
var name = general.GetWidget<TextFieldWidget>("NAME");
|
||||
name.Text = Game.Settings.PlayerName;
|
||||
name.Text = Game.Settings.Player.PlayerName;
|
||||
name.OnLoseFocus = () =>
|
||||
{
|
||||
name.Text = name.Text.Trim();
|
||||
|
||||
if (name.Text.Length == 0)
|
||||
name.Text = Game.Settings.PlayerName;
|
||||
name.Text = Game.Settings.Player.PlayerName;
|
||||
else
|
||||
Game.Settings.PlayerName = name.Text;
|
||||
Game.Settings.Player.PlayerName = name.Text;
|
||||
};
|
||||
name.OnEnterKey = () => { name.LoseFocus(); return true; };
|
||||
|
||||
var edgeScroll = general.GetWidget<CheckboxWidget>("EDGE_SCROLL");
|
||||
edgeScroll.Checked = () => Game.Settings.ViewportEdgeScroll;
|
||||
edgeScroll.Checked = () => Game.Settings.General.ViewportEdgeScroll;
|
||||
edgeScroll.OnMouseDown = mi =>
|
||||
{
|
||||
Game.Settings.ViewportEdgeScroll ^= true;
|
||||
Game.Settings.General.ViewportEdgeScroll ^= true;
|
||||
return true;
|
||||
};
|
||||
|
||||
var inverseScroll = general.GetWidget<CheckboxWidget>("INVERSE_SCROLL");
|
||||
inverseScroll.Checked = () => Game.Settings.InverseDragScroll;
|
||||
inverseScroll.Checked = () => Game.Settings.General.InverseDragScroll;
|
||||
inverseScroll.OnMouseDown = mi =>
|
||||
{
|
||||
Game.Settings.InverseDragScroll ^= true;
|
||||
Game.Settings.General.InverseDragScroll ^= true;
|
||||
return true;
|
||||
};
|
||||
|
||||
@@ -77,47 +77,47 @@ namespace OpenRA.Widgets.Delegates
|
||||
// Display
|
||||
var display = bg.GetWidget("DISPLAY_PANE");
|
||||
var fullscreen = display.GetWidget<CheckboxWidget>("FULLSCREEN_CHECKBOX");
|
||||
fullscreen.Checked = () => {return Game.Settings.WindowMode != WindowMode.Windowed;};
|
||||
fullscreen.Checked = () => {return Game.Settings.Graphics.WindowMode != WindowMode.Windowed;};
|
||||
fullscreen.OnMouseDown = mi =>
|
||||
{
|
||||
Game.Settings.WindowMode = (Game.Settings.WindowMode == WindowMode.Windowed) ? WindowMode.PseudoFullscreen : WindowMode.Windowed;
|
||||
Game.Settings.Graphics.WindowMode = (Game.Settings.Graphics.WindowMode == WindowMode.Windowed) ? WindowMode.PseudoFullscreen : WindowMode.Windowed;
|
||||
return true;
|
||||
};
|
||||
|
||||
var width = display.GetWidget<TextFieldWidget>("SCREEN_WIDTH");
|
||||
Game.Settings.WindowedSize.X = (Game.Settings.WindowedSize.X < Game.Settings.MinResolution.X)?
|
||||
Game.Settings.MinResolution.X : Game.Settings.WindowedSize.X;
|
||||
width.Text = Game.Settings.WindowedSize.X.ToString();
|
||||
Game.Settings.Graphics.WindowedSize.X = (Game.Settings.Graphics.WindowedSize.X < Game.Settings.Graphics.MinResolution.X)?
|
||||
Game.Settings.Graphics.MinResolution.X : Game.Settings.Graphics.WindowedSize.X;
|
||||
width.Text = Game.Settings.Graphics.WindowedSize.X.ToString();
|
||||
width.OnLoseFocus = () =>
|
||||
{
|
||||
try {
|
||||
var w = int.Parse(width.Text);
|
||||
if (w > Game.Settings.MinResolution.X && w <= Screen.PrimaryScreen.Bounds.Size.Width)
|
||||
Game.Settings.WindowedSize = new int2(w, Game.Settings.WindowedSize.Y);
|
||||
if (w > Game.Settings.Graphics.MinResolution.X && w <= Screen.PrimaryScreen.Bounds.Size.Width)
|
||||
Game.Settings.Graphics.WindowedSize = new int2(w, Game.Settings.Graphics.WindowedSize.Y);
|
||||
else
|
||||
width.Text = Game.Settings.WindowedSize.X.ToString();
|
||||
width.Text = Game.Settings.Graphics.WindowedSize.X.ToString();
|
||||
}
|
||||
catch (FormatException) {
|
||||
width.Text = Game.Settings.WindowedSize.X.ToString();
|
||||
width.Text = Game.Settings.Graphics.WindowedSize.X.ToString();
|
||||
}
|
||||
};
|
||||
width.OnEnterKey = () => { width.LoseFocus(); return true; };
|
||||
|
||||
var height = display.GetWidget<TextFieldWidget>("SCREEN_HEIGHT");
|
||||
Game.Settings.WindowedSize.Y = (Game.Settings.WindowedSize.Y < Game.Settings.MinResolution.Y)?
|
||||
Game.Settings.MinResolution.Y : Game.Settings.WindowedSize.Y;
|
||||
height.Text = Game.Settings.WindowedSize.Y.ToString();
|
||||
Game.Settings.Graphics.WindowedSize.Y = (Game.Settings.Graphics.WindowedSize.Y < Game.Settings.Graphics.MinResolution.Y)?
|
||||
Game.Settings.Graphics.MinResolution.Y : Game.Settings.Graphics.WindowedSize.Y;
|
||||
height.Text = Game.Settings.Graphics.WindowedSize.Y.ToString();
|
||||
height.OnLoseFocus = () =>
|
||||
{
|
||||
try {
|
||||
var h = int.Parse(height.Text);
|
||||
if (h > Game.Settings.MinResolution.Y && h <= Screen.PrimaryScreen.Bounds.Size.Height)
|
||||
Game.Settings.WindowedSize = new int2(Game.Settings.WindowedSize.X, h);
|
||||
if (h > Game.Settings.Graphics.MinResolution.Y && h <= Screen.PrimaryScreen.Bounds.Size.Height)
|
||||
Game.Settings.Graphics.WindowedSize = new int2(Game.Settings.Graphics.WindowedSize.X, h);
|
||||
else
|
||||
height.Text = Game.Settings.WindowedSize.Y.ToString();
|
||||
height.Text = Game.Settings.Graphics.WindowedSize.Y.ToString();
|
||||
}
|
||||
catch (FormatException) {
|
||||
height.Text = Game.Settings.WindowedSize.Y.ToString();
|
||||
height.Text = Game.Settings.Graphics.WindowedSize.Y.ToString();
|
||||
}
|
||||
};
|
||||
height.OnEnterKey = () => { height.LoseFocus(); return true; };
|
||||
@@ -125,26 +125,26 @@ namespace OpenRA.Widgets.Delegates
|
||||
// Debug
|
||||
var debug = bg.GetWidget("DEBUG_PANE");
|
||||
var perfdebug = debug.GetWidget<CheckboxWidget>("PERFDEBUG_CHECKBOX");
|
||||
perfdebug.Checked = () => {return Game.Settings.PerfDebug;};
|
||||
perfdebug.Checked = () => {return Game.Settings.Debug.PerfDebug;};
|
||||
perfdebug.OnMouseDown = mi =>
|
||||
{
|
||||
Game.Settings.PerfDebug ^= true;
|
||||
Game.Settings.Debug.PerfDebug ^= true;
|
||||
return true;
|
||||
};
|
||||
|
||||
var syncreports = debug.GetWidget<CheckboxWidget>("SYNCREPORTS_CHECKBOX");
|
||||
syncreports.Checked = () => { return Game.Settings.RecordSyncReports; };
|
||||
syncreports.Checked = () => { return Game.Settings.Debug.RecordSyncReports; };
|
||||
syncreports.OnMouseDown = mi =>
|
||||
{
|
||||
Game.Settings.RecordSyncReports ^= true;
|
||||
Game.Settings.Debug.RecordSyncReports ^= true;
|
||||
return true;
|
||||
};
|
||||
|
||||
var timedebug = debug.GetWidget<CheckboxWidget>("GAMETIME_CHECKBOX");
|
||||
timedebug.Checked = () => {return Game.Settings.ShowGameTimer;};
|
||||
timedebug.Checked = () => {return Game.Settings.Debug.ShowGameTimer;};
|
||||
timedebug.OnMouseDown = mi =>
|
||||
{
|
||||
Game.Settings.ShowGameTimer ^= true;
|
||||
Game.Settings.Debug.ShowGameTimer ^= true;
|
||||
return true;
|
||||
};
|
||||
|
||||
|
||||
Reference in New Issue
Block a user