ref: a9a3ca3c0d8cea7fe24724a8f9bc17aa3c367677
parent: 161e0658735ca627df80ad8dd610049c174e5f94
author: Simon Howard <fraggle@soulsphere.org>
date: Fri Jul 10 20:16:59 EDT 2015
setup: Clean up multiplayer dialog code. Use multi-columned windows instead of inner tables.
--- a/src/setup/multiplayer.c
+++ b/src/setup/multiplayer.c
@@ -389,7 +389,6 @@
static void LevelSelectDialog(TXT_UNCAST_ARG(widget), TXT_UNCAST_ARG(user_data))
{
txt_window_t *window;
- txt_table_t *table;
txt_button_t *button;
const iwad_t *iwad;
char buf[10];
@@ -404,7 +403,7 @@
if (warptype == WARP_ExMy)
{
episodes = D_GetNumEpisodes(iwad->mission, iwad->mode);
- table = TXT_NewTable(episodes);
+ TXT_SetTableColumns(window, episodes);
// ExMy levels
@@ -419,7 +418,7 @@
if (!D_ValidEpisodeMap(iwad->mission, iwad->mode, x, y))
{
- TXT_AddWidget(table, NULL);
+ TXT_AddWidget(window, NULL);
continue;
}
@@ -429,11 +428,11 @@
SetExMyWarp, (void *) (x * 10 + y));
TXT_SignalConnect(button, "pressed",
CloseLevelSelectDialog, window);
- TXT_AddWidget(table, button);
+ TXT_AddWidget(window, button);
if (warpepisode == x && warpmap == y)
{
- TXT_SelectWidget(table, button);
+ TXT_SelectWidget(window, button);
}
}
}
@@ -440,7 +439,7 @@
}
else
{
- table = TXT_NewTable(6);
+ TXT_SetTableColumns(window, 6);
for (i=0; i<60; ++i)
{
@@ -451,7 +450,7 @@
if (!D_ValidEpisodeMap(iwad->mission, iwad->mode, 1, l))
{
- TXT_AddWidget(table, NULL);
+ TXT_AddWidget(window, NULL);
continue;
}
@@ -461,16 +460,14 @@
SetMAPxyWarp, (void *) l);
TXT_SignalConnect(button, "pressed",
CloseLevelSelectDialog, window);
- TXT_AddWidget(table, button);
+ TXT_AddWidget(window, button);
if (warpmap == l)
{
- TXT_SelectWidget(table, button);
+ TXT_SelectWidget(window, button);
}
}
}
-
- TXT_AddWidget(window, table);
}
static void IWADSelected(TXT_UNCAST_ARG(widget), TXT_UNCAST_ARG(unused))
@@ -711,11 +708,11 @@
static void StartGameMenu(char *window_title, int multiplayer)
{
txt_window_t *window;
- txt_table_t *gameopt_table;
- txt_table_t *advanced_table;
txt_widget_t *iwad_selector;
window = TXT_NewWindow(window_title);
+ TXT_SetTableColumns(window, 2);
+ TXT_SetColumnWidths(window, 12, 6);
if (multiplayer)
{
@@ -726,30 +723,18 @@
TXT_SetWindowHelpURL(window, LEVEL_WARP_HELP_URL);
}
- TXT_AddWidgets(window,
- gameopt_table = TXT_NewTable(2),
- TXT_NewSeparator("Monster options"),
- TXT_NewInvertedCheckBox("Monsters enabled", &nomonsters),
- TXT_NewCheckBox("Fast monsters", &fast),
- TXT_NewCheckBox("Respawning monsters", &respawn),
- TXT_NewSeparator("Advanced"),
- advanced_table = TXT_NewTable(2),
- NULL);
-
TXT_SetWindowAction(window, TXT_HORIZ_CENTER, WadWindowAction());
TXT_SetWindowAction(window, TXT_HORIZ_RIGHT, StartGameAction(multiplayer));
- TXT_SetColumnWidths(gameopt_table, 12, 6);
+ TXT_AddWidgets(window,
+ TXT_NewLabel("Game"),
+ iwad_selector = IWADSelector(),
+ NULL);
- TXT_AddWidgets(gameopt_table,
- TXT_NewLabel("Game"),
- iwad_selector = IWADSelector(),
- NULL);
-
if (gamemission == hexen)
{
txt_dropdown_list_t *cc_dropdown;
- TXT_AddWidgets(gameopt_table,
+ TXT_AddWidgets(window,
TXT_NewLabel("Character class "),
cc_dropdown = TXT_NewDropdownList(&character_class,
character_classes, 3),
@@ -760,16 +745,16 @@
TXT_SignalConnect(cc_dropdown, "changed", UpdateWarpType, NULL);
}
- TXT_AddWidgets(gameopt_table,
- TXT_NewLabel("Skill"),
- skillbutton = TXT_NewDropdownList(&skill, doom_skills, 5),
- TXT_NewLabel("Level warp"),
- warpbutton = TXT_NewButton2("????", LevelSelectDialog, NULL),
- NULL);
+ TXT_AddWidgets(window,
+ TXT_NewLabel("Skill"),
+ skillbutton = TXT_NewDropdownList(&skill, doom_skills, 5),
+ TXT_NewLabel("Level warp"),
+ warpbutton = TXT_NewButton2("?", LevelSelectDialog, NULL),
+ NULL);
if (multiplayer)
{
- TXT_AddWidgets(gameopt_table,
+ TXT_AddWidgets(window,
TXT_NewLabel("Game type"),
GameTypeDropdown(),
TXT_NewLabel("Time limit"),
@@ -777,23 +762,36 @@
TXT_NewLabel("minutes"),
NULL),
NULL);
+ }
- TXT_AddWidget(window,
- TXT_NewInvertedCheckBox("Register with master server",
- &privateserver));
+ TXT_AddWidgets(window,
+ TXT_NewSeparator("Monster options"),
+ TXT_NewInvertedCheckBox("Monsters enabled", &nomonsters),
+ TXT_TABLE_OVERFLOW_RIGHT,
+ TXT_NewCheckBox("Fast monsters", &fast),
+ TXT_TABLE_OVERFLOW_RIGHT,
+ TXT_NewCheckBox("Respawning monsters", &respawn),
+ TXT_TABLE_OVERFLOW_RIGHT,
+ NULL);
- TXT_AddWidgets(advanced_table,
+ if (multiplayer)
+ {
+ TXT_AddWidgets(window,
+ TXT_NewSeparator("Advanced"),
TXT_NewLabel("UDP port"),
TXT_NewIntInputBox(&udpport, 5),
+ TXT_NewInvertedCheckBox("Register with master server",
+ &privateserver),
+ TXT_TABLE_OVERFLOW_RIGHT,
NULL);
}
- TXT_AddWidget(window,
- TXT_NewButton2("Add extra parameters...",
- OpenExtraParamsWindow, NULL));
+ TXT_AddWidgets(window,
+ TXT_NewButton2("Add extra parameters...",
+ OpenExtraParamsWindow, NULL),
+ TXT_TABLE_OVERFLOW_RIGHT,
+ NULL);
- TXT_SetColumnWidths(advanced_table, 12, 6);
-
TXT_SignalConnect(iwad_selector, "changed", UpdateWarpType, NULL);
UpdateWarpType(NULL, NULL);
@@ -994,24 +992,15 @@
void JoinMultiGame(void)
{
txt_window_t *window;
- txt_table_t *gameopt_table;
- txt_table_t *serveropt_table;
txt_inputbox_t *address_box;
window = TXT_NewWindow("Join multiplayer game");
+ TXT_SetTableColumns(window, 2);
+ TXT_SetColumnWidths(window, 12, 12);
+
TXT_SetWindowHelpURL(window, MULTI_JOIN_HELP_URL);
- TXT_AddWidgets(window,
- gameopt_table = TXT_NewTable(2),
- TXT_NewSeparator("Server"),
- serveropt_table = TXT_NewTable(1),
- TXT_NewStrut(0, 1),
- TXT_NewButton2("Add extra parameters...", OpenExtraParamsWindow, NULL),
- NULL);
-
- TXT_SetColumnWidths(gameopt_table, 12, 12);
-
- TXT_AddWidgets(gameopt_table,
+ TXT_AddWidgets(window,
TXT_NewLabel("Game"),
IWADSelector(),
NULL);
@@ -1018,7 +1007,7 @@
if (gamemission == hexen)
{
- TXT_AddWidgets(gameopt_table,
+ TXT_AddWidgets(window,
TXT_NewLabel("Character class "),
TXT_NewDropdownList(&character_class,
character_classes, 3),
@@ -1025,15 +1014,21 @@
NULL);
}
- TXT_AddWidgets(serveropt_table,
- TXT_NewHorizBox(
- TXT_NewLabel("Connect to address: "),
- address_box = TXT_NewInputBox(&connect_address, 30),
- NULL),
+ TXT_AddWidgets(window,
+ TXT_NewSeparator("Server"),
+ TXT_NewLabel("Connect to address: "),
+ address_box = TXT_NewInputBox(&connect_address, 30),
+
TXT_NewButton2("Find server on Internet...",
FindInternetServer, NULL),
+ TXT_TABLE_OVERFLOW_RIGHT,
TXT_NewButton2("Find server on local network...",
FindLANServer, NULL),
+ TXT_TABLE_OVERFLOW_RIGHT,
+ TXT_NewStrut(0, 1),
+ TXT_TABLE_OVERFLOW_RIGHT,
+ TXT_NewButton2("Add extra parameters...",
+ OpenExtraParamsWindow, NULL),
NULL);
TXT_SelectWidget(window, address_box);
@@ -1110,7 +1105,7 @@
window = TXT_NewWindow("Multiplayer Configuration");
TXT_SetWindowHelpURL(window, MULTI_CONFIG_HELP_URL);
- TXT_AddWidgets(window,
+ TXT_AddWidgets(window,
TXT_NewStrut(0, 1),
TXT_NewHorizBox(TXT_NewLabel("Player name: "),
TXT_NewInputBox(&net_player_name, 25),
@@ -1133,7 +1128,7 @@
TXT_NewInputBox(&chat_macros[(i + 1) % 10], 40),
NULL);
}
-
+
TXT_AddWidget(window, table);
}