summaryrefslogtreecommitdiff
path: root/src/setup/multiplayer.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/setup/multiplayer.c')
-rw-r--r--src/setup/multiplayer.c39
1 files changed, 34 insertions, 5 deletions
diff --git a/src/setup/multiplayer.c b/src/setup/multiplayer.c
index d4235f87..2552d9a6 100644
--- a/src/setup/multiplayer.c
+++ b/src/setup/multiplayer.c
@@ -50,10 +50,14 @@ typedef enum
WARP_MAPxy,
} warptype_t;
-// Fallback IWAD if none are found to be installed
+// Fallback IWADs to use if no IWADs are detected.
-static iwad_t fallback_iwad = { "doom2.wad", doom2, commercial, "Doom II" };
-static iwad_t *fallback_iwad_list[2] = { &fallback_iwad, NULL };
+static iwad_t fallback_iwads[] = {
+ { "doom.wad", doom, commercial, "Doom" },
+ { "heretic.wad", heretic, retail, "Heretic" },
+ { "hexen.wad", hexen, commercial, "Hexen" },
+ { "strife1.wad", strife, commercial, "Strife" },
+};
// Array of IWADs found to be installed
@@ -520,6 +524,31 @@ static void UpdateWarpType(TXT_UNCAST_ARG(widget), TXT_UNCAST_ARG(unused))
UpdateSkillButton();
}
+// Get an IWAD list with a default fallback IWAD that is appropriate
+// for the game we are configuring (matches gamemission global variable).
+
+static iwad_t **GetFallbackIwadList(void)
+{
+ static iwad_t *fallback_iwad_list[2];
+ unsigned int i;
+
+ // Default to use if we don't find something better.
+
+ fallback_iwad_list[0] = &fallback_iwads[0];
+ fallback_iwad_list[1] = NULL;
+
+ for (i = 0; i < arrlen(fallback_iwads); ++i)
+ {
+ if (gamemission == fallback_iwads[i].mission)
+ {
+ fallback_iwad_list[0] = &fallback_iwads[i];
+ break;
+ }
+ }
+
+ return fallback_iwad_list;
+}
+
static txt_widget_t *IWADSelector(void)
{
txt_dropdown_list_t *dropdown;
@@ -528,7 +557,7 @@ static txt_widget_t *IWADSelector(void)
unsigned int i;
// Find out what WADs are installed
-
+
found_iwads = GetIwads();
// Build a list of the descriptions for all installed IWADs
@@ -546,7 +575,7 @@ static txt_widget_t *IWADSelector(void)
if (num_iwads == 0)
{
- found_iwads = fallback_iwad_list;
+ found_iwads = GetFallbackIwadList();
num_iwads = 1;
}