Settings has Tabs (pchote: squashed + amended)

This commit is contained in:
alzeih
2010-07-11 14:38:34 +12:00
committed by Paul Chote
parent 89a77f7402
commit c4759b4130
3 changed files with 380 additions and 152 deletions

View File

@@ -8,75 +8,111 @@ namespace OpenRA.Widgets.Delegates
{ {
public class SettingsMenuDelegate : IWidgetDelegate public class SettingsMenuDelegate : IWidgetDelegate
{ {
Widget bg;
public SettingsMenuDelegate() public SettingsMenuDelegate()
{ {
var r = Chrome.rootWidget; bg = Chrome.rootWidget.GetWidget<BackgroundWidget>("SETTINGS_MENU");
var tabs = bg.GetWidget<ContainerWidget>("TAB_CONTAINER");
// Checkboxes //Tabs
tabs.GetWidget<ButtonWidget>("GENERAL").OnMouseUp = mi => FlipToTab("GENERAL_PANE");
tabs.GetWidget<ButtonWidget>("AUDIO").OnMouseUp = mi => FlipToTab("AUDIO_PANE");
tabs.GetWidget<ButtonWidget>("DISPLAY").OnMouseUp = mi => FlipToTab("DISPLAY_PANE");
tabs.GetWidget<ButtonWidget>("DEBUG").OnMouseUp = mi => FlipToTab("DEBUG_PANE");
FlipToTab("GENERAL_PANE");
// Should actually be a listbox; hack with a checkbox for now
r.GetWidget<CheckboxWidget>("CHECKBOX_FULLSCREEN").Checked = () => {return Game.Settings.WindowMode != WindowMode.Windowed;}; // Audio
r.GetWidget("CHECKBOX_FULLSCREEN").OnMouseDown = mi => { var audio = bg.GetWidget("AUDIO_PANE");
var music = audio.GetWidget<CheckboxWidget>("MUSICPLAYER_CHECKBOX");
music.Checked = () => { return Game.Settings.MusicPlayer; };
music.OnMouseDown = mi =>
{
Game.Settings.MusicPlayer ^= true;
Chrome.rootWidget.GetWidget("MUSIC_BG").Visible = Game.Settings.MusicPlayer;
Game.Settings.Save();
return true;
};
// Display
var display = bg.GetWidget("DISPLAY_PANE");
var fullscreen = display.GetWidget<CheckboxWidget>("FULLSCREEN_CHECKBOX");
fullscreen.Checked = () => {return Game.Settings.WindowMode != WindowMode.Windowed;};
fullscreen.OnMouseDown = mi =>
{
Game.Settings.WindowMode = (Game.Settings.WindowMode == WindowMode.Windowed) ? WindowMode.PseudoFullscreen : WindowMode.Windowed; Game.Settings.WindowMode = (Game.Settings.WindowMode == WindowMode.Windowed) ? WindowMode.PseudoFullscreen : WindowMode.Windowed;
Game.Settings.Save(); Game.Settings.Save();
return true; return true;
}; };
r.GetWidget<CheckboxWidget>("SETTINGS_CHECKBOX_UNITDEBUG").Checked = () => {return Game.Settings.UnitDebug;}; // Debug
r.GetWidget("SETTINGS_CHECKBOX_UNITDEBUG").OnMouseDown = mi => { var debug = bg.GetWidget("DEBUG_PANE");
Game.Settings.UnitDebug ^= true; var perfdebug = debug.GetWidget<CheckboxWidget>("PERFDEBUG_CHECKBOX");
Game.Settings.Save(); perfdebug.Checked = () => {return Game.Settings.PerfDebug;};
return true; perfdebug.OnMouseDown = mi =>
}; {
r.GetWidget<CheckboxWidget>("SETTINGS_CHECKBOX_PATHDEBUG").Checked = () => {return Game.Settings.PathDebug;};
r.GetWidget("SETTINGS_CHECKBOX_PATHDEBUG").OnMouseDown = mi => {
Game.Settings.PathDebug ^= true;
Game.Settings.Save();
return true;
};
r.GetWidget<CheckboxWidget>("SETTINGS_CHECKBOX_INDEXDEBUG").Checked = () => {return Game.Settings.IndexDebug;};
r.GetWidget("SETTINGS_CHECKBOX_INDEXDEBUG").OnMouseDown = mi => {
Game.Settings.IndexDebug ^= true;
Game.Settings.Save();
return true;
};
r.GetWidget<CheckboxWidget>("SETTINGS_CHECKBOX_PERFDEBUG").Checked = () => {return Game.Settings.PerfDebug;};
r.GetWidget("SETTINGS_CHECKBOX_PERFDEBUG").OnMouseDown = mi => {
Game.Settings.PerfDebug ^= true; Game.Settings.PerfDebug ^= true;
Game.Settings.Save(); Game.Settings.Save();
return true; return true;
}; };
r.GetWidget<CheckboxWidget>("SETTINGS_CHECKBOX_SYNCREPORTS").Checked = () => { return Game.Settings.RecordSyncReports; }; var syncreports = debug.GetWidget<CheckboxWidget>("SYNCREPORTS_CHECKBOX");
r.GetWidget("SETTINGS_CHECKBOX_SYNCREPORTS").OnMouseDown = mi => syncreports.Checked = () => { return Game.Settings.RecordSyncReports; };
syncreports.OnMouseDown = mi =>
{ {
Game.Settings.RecordSyncReports ^= true; Game.Settings.RecordSyncReports ^= true;
Game.Settings.Save(); Game.Settings.Save();
return true; return true;
}; };
r.GetWidget<CheckboxWidget>("SETTINGS_CHECKBOX_MUSICPLAYER").Checked = () => { return Game.Settings.MusicPlayer; }; var unitdebug = debug.GetWidget<CheckboxWidget>("UNITDEBUG_CHECKBOX");
r.GetWidget("SETTINGS_CHECKBOX_MUSICPLAYER").OnMouseDown = mi => unitdebug.Checked = () => {return Game.Settings.UnitDebug;};
unitdebug.OnMouseDown = mi =>
{ {
Game.Settings.MusicPlayer ^= true; Game.Settings.UnitDebug ^= true;
r.GetWidget("MUSIC_BG").Visible = Game.Settings.MusicPlayer;
Game.Settings.Save();
return true;
};
// Menu Buttons
r.GetWidget("MAINMENU_BUTTON_SETTINGS").OnMouseUp = mi => {
r.OpenWindow("SETTINGS_BG");
return true; return true;
}; };
r.GetWidget("SETTINGS_BUTTON_OK").OnMouseUp = mi => { var pathdebug = debug.GetWidget<CheckboxWidget>("PATHDEBUG_CHECKBOX");
r.CloseWindow(); pathdebug.Checked = () => {return Game.Settings.PathDebug;};
pathdebug.OnMouseDown = mi =>
{
Game.Settings.PathDebug ^= true;
return true; return true;
}; };
var indexdebug = debug.GetWidget<CheckboxWidget>("INDEXDEBUG_CHECKBOX");
indexdebug.Checked = () => {return Game.Settings.IndexDebug;};
indexdebug.OnMouseDown = mi =>
{
Game.Settings.IndexDebug ^= true;
return true;
};
bg.GetWidget("BUTTON_CLOSE").OnMouseUp = mi => {
Chrome.rootWidget.CloseWindow();
return true;
};
// Menu Buttons
Chrome.rootWidget.GetWidget("MAINMENU_BUTTON_SETTINGS").OnMouseUp = mi => {
Chrome.rootWidget.OpenWindow("SETTINGS_MENU");
return true;
};
}
string open = null;
bool FlipToTab(string id)
{
if (open != null)
bg.GetWidget(open).Visible = false;
open = id;
bg.GetWidget(open).Visible = true;
return true;
} }
} }
} }

View File

@@ -155,8 +155,8 @@ Container:
Height:25 Height:25
Text:Cancel Text:Cancel
Bold:True Bold:True
Background@SETTINGS_BG: Background@SETTINGS_MENU:
Id:SETTINGS_BG Id:SETTINGS_MENU
Delegate:SettingsMenuDelegate Delegate:SettingsMenuDelegate
X:(WINDOW_RIGHT - WIDTH)/2 X:(WINDOW_RIGHT - WIDTH)/2
Y:(WINDOW_BOTTOM- HEIGHT)/2 Y:(WINDOW_BOTTOM- HEIGHT)/2
@@ -173,63 +173,159 @@ Container:
Text:Settings Text:Settings
Align:Center Align:Center
Bold:True Bold:True
Checkbox@SETTINGS_CHECKBOX_UNITDEBUG: Button@BUTTON_CLOSE:
Id:SETTINGS_CHECKBOX_UNITDEBUG Id:BUTTON_CLOSE
X:100
Y:60
Width:300
Height:20
Text:Show Occupied Cells
Checkbox@SETTINGS_CHECKBOX_PATHDEBUG:
Id:SETTINGS_CHECKBOX_PATHDEBUG
X:100
Y:90
Width:300
Height:20
Text:Show Unit Paths
Checkbox@SETTINGS_CHECKBOX_INDEXDEBUG:
Id:SETTINGS_CHECKBOX_INDEXDEBUG
X:100
Y:120
Width:300
Height:20
Text:Show Spatial Index Debug
Checkbox@SETTINGS_CHECKBOX_PERFDEBUG:
Id:SETTINGS_CHECKBOX_PERFDEBUG
X:100
Y:150
Width:300
Height:20
Text:Show Performance Information
Checkbox@SETTINGS_CHECKBOX_SYNCREPORTS:
Id:SETTINGS_CHECKBOX_SYNCREPORTS
X:100
Y:180
Width:300
Height:20
Text:Collect Sync Reports
Checkbox@SETTINGS_CHECKBOX_MUSICPLAYER:
Id:SETTINGS_CHECKBOX_MUSICPLAYER
X:100
Y:210
Width:300
Height:20
Text:Show Music Player
Checkbox@CHECKBOX_FULLSCREEN:
Id:CHECKBOX_FULLSCREEN
X:100
Y:240
Width:300
Height:20
Text:Fullscreen (Requires restart)
Button@SETTINGS_BUTTON_OK:
Id:SETTINGS_BUTTON_OK
X:PARENT_RIGHT - 180 X:PARENT_RIGHT - 180
Y:PARENT_BOTTOM - 45 Y:PARENT_BOTTOM - 45
Width:160 Width:160
Height:25 Height:25
Text:OK Text:Close
Bold:True Bold:True
Container@TAB_CONTAINER:
Id:TAB_CONTAINER
X:0
Y:50
Width:PARENT_RIGHT
Height:25
Children:
Button@GENERAL:
Id:GENERAL
X:45
Y:0
Width:90
Height:25
Text:General
Bold:True
Button@AUDIO:
Id:AUDIO
X:135
Y:0
Width:90
Height:25
Text:Audio
Bold:True
Button@DISPLAY:
Id:DISPLAY
X:225
Y:0
Width:90
Height:25
Text:Display
Bold:True
Button@DEBUG:
Id:DEBUG
X:315
Y:0
Width:90
Height:25
Text:Debug
Bold:True
Container@GENERAL_PANE:
Id:GENERAL_PANE
X:37
Y:100
Width:PARENT_RIGHT - 37
Height:PARENT_BOTTOM - 100
Visible: true
Children:
Label@SETTINGS_PLAYER_NAME:
Id:SETTINGS_PLAYER_NAME
X:0
Y:0
Text: Player Name
Label@SETTINGS_DOWNLOAD_MAPS:
Id:SETTINGS_DOWNLOAD_MAPS
X:0
Y:30
Text: Download Maps
Container@AUDIO_PANE:
Id:AUDIO_PANE
X:37
Y:100
Width:PARENT_RIGHT - 37
Height:PARENT_BOTTOM - 100
Visible: false
Children:
Label@SOUND_VOLUME_LABEL:
Id:SOUND_VOLUME_LABEL
X:0
Y:0
Text: Sound Volume
Label@MUSIC_VOLUME_LABEL:
Id:MUSIC_VOLUME_LABEL
X:0
Y:30
Text: Music Volume
Checkbox@MUSICPLAYER_CHECKBOX:
Id:MUSICPLAYER_CHECKBOX
X:0
Y:60
Width:300
Height:20
Text:Show Music Player
Container@DISPLAY_PANE:
Id:DISPLAY_PANE
X:37
Y:100
Width:PARENT_RIGHT - 37
Height:PARENT_BOTTOM - 100
Visible: false
Children:
Checkbox@FULLSCREEN_CHECKBOX:
Id:FULLSCREEN_CHECKBOX
X:0
Y:0
Width:300
Height:20
Text:Fullscreen (Requires restart)
Label@RESOLUTION_LABEL:
Id:RESOLUTION_LABEL
X:0
Y:40
Text: Screen Resolution:
Container@DEBUG_PANE:
Id:DEBUG_PANE
X:37
Y:100
Width:PARENT_RIGHT - 37
Height:PARENT_BOTTOM - 100
Visible: false
Children:
Checkbox@PERFDEBUG_CHECKBOX:
Id:PERFDEBUG_CHECKBOX
X:0
Y:0
Width:300
Height:20
Text:Show Performance Information
Checkbox@SYNCREPORTS_CHECKBOX:
Id:SYNCREPORTS_CHECKBOX
X:0
Y:30
Width:300
Height:20
Text:Collect Sync Reports
Checkbox@UNITDEBUG_CHECKBOX:
Id:UNITDEBUG_CHECKBOX
X:0
Y:60
Width:300
Height:20
Text:Show Occupied Cells
Checkbox@PATHDEBUG_CHECKBOX:
Id:PATHDEBUG_CHECKBOX
X:0
Y:90
Width:300
Height:20
Text:Show Unit Paths
Checkbox@INDEXDEBUG_CHECKBOX:
Id:INDEXDEBUG_CHECKBOX
X:0
Y:120
Width:300
Height:20
Text:Show Spatial Index Debug
Background@JOINSERVER_BG: Background@JOINSERVER_BG:
Id:JOINSERVER_BG Id:JOINSERVER_BG
Delegate:ServerBrowserDelegate Delegate:ServerBrowserDelegate

View File

@@ -155,8 +155,8 @@ Container:
Height:25 Height:25
Text:Cancel Text:Cancel
Bold:True Bold:True
Background@SETTINGS_BG: Background@SETTINGS_MENU:
Id:SETTINGS_BG Id:SETTINGS_MENU
Delegate:SettingsMenuDelegate Delegate:SettingsMenuDelegate
X:(WINDOW_RIGHT - WIDTH)/2 X:(WINDOW_RIGHT - WIDTH)/2
Y:(WINDOW_BOTTOM- HEIGHT)/2 Y:(WINDOW_BOTTOM- HEIGHT)/2
@@ -173,63 +173,159 @@ Container:
Text:Settings Text:Settings
Align:Center Align:Center
Bold:True Bold:True
Checkbox@SETTINGS_CHECKBOX_UNITDEBUG: Button@BUTTON_CLOSE:
Id:SETTINGS_CHECKBOX_UNITDEBUG Id:BUTTON_CLOSE
X:100
Y:60
Width:300
Height:20
Text:Show Occupied Cells
Checkbox@SETTINGS_CHECKBOX_PATHDEBUG:
Id:SETTINGS_CHECKBOX_PATHDEBUG
X:100
Y:90
Width:300
Height:20
Text:Show Unit Paths
Checkbox@SETTINGS_CHECKBOX_INDEXDEBUG:
Id:SETTINGS_CHECKBOX_INDEXDEBUG
X:100
Y:120
Width:300
Height:20
Text:Show Spatial Index Debug
Checkbox@SETTINGS_CHECKBOX_PERFDEBUG:
Id:SETTINGS_CHECKBOX_PERFDEBUG
X:100
Y:150
Width:300
Height:20
Text:Show Performance Information
Checkbox@SETTINGS_CHECKBOX_SYNCREPORTS:
Id:SETTINGS_CHECKBOX_SYNCREPORTS
X:100
Y:180
Width:300
Height:20
Text:Collect Sync Reports
Checkbox@SETTINGS_CHECKBOX_MUSICPLAYER:
Id:SETTINGS_CHECKBOX_MUSICPLAYER
X:100
Y:210
Width:300
Height:20
Text:Show Music Player
Checkbox@CHECKBOX_FULLSCREEN:
Id:CHECKBOX_FULLSCREEN
X:100
Y:240
Width:300
Height:20
Text:Fullscreen (Requires restart)
Button@SETTINGS_BUTTON_OK:
Id:SETTINGS_BUTTON_OK
X:PARENT_RIGHT - 180 X:PARENT_RIGHT - 180
Y:PARENT_BOTTOM - 45 Y:PARENT_BOTTOM - 45
Width:160 Width:160
Height:25 Height:25
Text:OK Text:Close
Bold:True Bold:True
Container@TAB_CONTAINER:
Id:TAB_CONTAINER
X:0
Y:50
Width:PARENT_RIGHT
Height:25
Children:
Button@GENERAL:
Id:GENERAL
X:45
Y:0
Width:90
Height:25
Text:General
Bold:True
Button@AUDIO:
Id:AUDIO
X:135
Y:0
Width:90
Height:25
Text:Audio
Bold:True
Button@DISPLAY:
Id:DISPLAY
X:225
Y:0
Width:90
Height:25
Text:Display
Bold:True
Button@DEBUG:
Id:DEBUG
X:315
Y:0
Width:90
Height:25
Text:Debug
Bold:True
Container@GENERAL_PANE:
Id:GENERAL_PANE
X:37
Y:100
Width:PARENT_RIGHT - 37
Height:PARENT_BOTTOM - 100
Visible: true
Children:
Label@SETTINGS_PLAYER_NAME:
Id:SETTINGS_PLAYER_NAME
X:0
Y:0
Text: Player Name
Label@SETTINGS_DOWNLOAD_MAPS:
Id:SETTINGS_DOWNLOAD_MAPS
X:0
Y:30
Text: Download Maps
Container@AUDIO_PANE:
Id:AUDIO_PANE
X:37
Y:100
Width:PARENT_RIGHT - 37
Height:PARENT_BOTTOM - 100
Visible: false
Children:
Label@SOUND_VOLUME_LABEL:
Id:SOUND_VOLUME_LABEL
X:0
Y:0
Text: Sound Volume
Label@MUSIC_VOLUME_LABEL:
Id:MUSIC_VOLUME_LABEL
X:0
Y:30
Text: Music Volume
Checkbox@MUSICPLAYER_CHECKBOX:
Id:MUSICPLAYER_CHECKBOX
X:0
Y:60
Width:300
Height:20
Text:Show Music Player
Container@DISPLAY_PANE:
Id:DISPLAY_PANE
X:37
Y:100
Width:PARENT_RIGHT - 37
Height:PARENT_BOTTOM - 100
Visible: false
Children:
Checkbox@FULLSCREEN_CHECKBOX:
Id:FULLSCREEN_CHECKBOX
X:0
Y:0
Width:300
Height:20
Text:Fullscreen (Requires restart)
Label@RESOLUTION_LABEL:
Id:RESOLUTION_LABEL
X:0
Y:40
Text: Screen Resolution:
Container@DEBUG_PANE:
Id:DEBUG_PANE
X:37
Y:100
Width:PARENT_RIGHT - 37
Height:PARENT_BOTTOM - 100
Visible: false
Children:
Checkbox@PERFDEBUG_CHECKBOX:
Id:PERFDEBUG_CHECKBOX
X:0
Y:0
Width:300
Height:20
Text:Show Performance Information
Checkbox@SYNCREPORTS_CHECKBOX:
Id:SYNCREPORTS_CHECKBOX
X:0
Y:30
Width:300
Height:20
Text:Collect Sync Reports
Checkbox@UNITDEBUG_CHECKBOX:
Id:UNITDEBUG_CHECKBOX
X:0
Y:60
Width:300
Height:20
Text:Show Occupied Cells
Checkbox@PATHDEBUG_CHECKBOX:
Id:PATHDEBUG_CHECKBOX
X:0
Y:90
Width:300
Height:20
Text:Show Unit Paths
Checkbox@INDEXDEBUG_CHECKBOX:
Id:INDEXDEBUG_CHECKBOX
X:0
Y:120
Width:300
Height:20
Text:Show Spatial Index Debug
Background@JOINSERVER_BG: Background@JOINSERVER_BG:
Id:JOINSERVER_BG Id:JOINSERVER_BG
Delegate:ServerBrowserDelegate Delegate:ServerBrowserDelegate