ref: b8d2d8bb8b3cf1b5475e8c9be292248f140b2126
parent: 4fba2ab2ddda75a05c70ac95531504edfafdf8c8
author: Simon Howard <[email protected]>
date: Tue Sep 20 16:48:09 EDT 2011
Display a warning message when trying to join a server playing a game that we don't have the IWAD for. Subversion-branch: /branches/v2-branch Subversion-revision: 2389
--- a/src/d_iwad.c
+++ b/src/d_iwad.c
@@ -759,3 +759,33 @@
return "unknown.wad";
}
+char *D_SuggestIWADName(GameMission_t mission, GameMode_t mode)
+{
+ int i;
+
+ for (i = 0; i < arrlen(iwads); ++i)
+ {
+ if (iwads[i].mission == mission && iwads[i].mode == mode)
+ {
+ return iwads[i].name;
+ }
+ }
+
+ return "unknown.wad";
+}
+
+char *D_SuggestGameName(GameMission_t mission, GameMode_t mode)
+{
+ int i;
+
+ for (i = 0; i < arrlen(iwads); ++i)
+ {
+ if (iwads[i].mission == mission && iwads[i].mode == mode)
+ {
+ return iwads[i].description;
+ }
+ }
+
+ return "Unknown game?";
+}
+
--- a/src/d_iwad.h
+++ b/src/d_iwad.h
@@ -50,6 +50,8 @@
char *D_FindIWAD(int mask, GameMission_t *mission);
iwad_t **D_FindAllIWADs(int mask);
char *D_SaveGameIWADName(GameMission_t gamemission);
+char *D_SuggestIWADName(GameMission_t mission, GameMode_t mode);
+char *D_SuggestGameName(GameMission_t mission, GameMode_t mode);
#endif
--- a/src/setup/multiplayer.c
+++ b/src/setup/multiplayer.c
@@ -783,8 +783,7 @@
// Auto-choose IWAD if there is already a player connected.
- if (querydata->num_players > 0
- && !(querydata->gamemission == doom && querydata->gamemode == shareware))
+ if (querydata->num_players > 0)
{
for (i = 0; found_iwads[i] != NULL; ++i)
{
@@ -794,6 +793,22 @@
found_iwad_selected = i;
break;
}
+ }
+
+ if (found_iwads[i] == NULL)
+ {
+ TXT_MessageBox(NULL,
+ "The game on this server seems to be:\n"
+ "\n"
+ " %s\n"
+ "\n"
+ "but the IWAD file %s is not found!\n"
+ "Without the required IWAD file, it may not be\n"
+ "possible to join this game.",
+ D_SuggestGameName(querydata->gamemission,
+ querydata->gamemode),
+ D_SuggestIWADName(querydata->gamemission,
+ querydata->gamemode));
}
}