summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSimon Howard2011-09-20 20:48:09 +0000
committerSimon Howard2011-09-20 20:48:09 +0000
commitb8d2d8bb8b3cf1b5475e8c9be292248f140b2126 (patch)
treeef75665f65c1124eac8169f6e5583b8010fbe933
parent4fba2ab2ddda75a05c70ac95531504edfafdf8c8 (diff)
downloadchocolate-doom-b8d2d8bb8b3cf1b5475e8c9be292248f140b2126.tar.gz
chocolate-doom-b8d2d8bb8b3cf1b5475e8c9be292248f140b2126.tar.bz2
chocolate-doom-b8d2d8bb8b3cf1b5475e8c9be292248f140b2126.zip
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
-rw-r--r--src/d_iwad.c30
-rw-r--r--src/d_iwad.h2
-rw-r--r--src/setup/multiplayer.c19
3 files changed, 49 insertions, 2 deletions
diff --git a/src/d_iwad.c b/src/d_iwad.c
index d0bfe692..9e7cd5ea 100644
--- a/src/d_iwad.c
+++ b/src/d_iwad.c
@@ -759,3 +759,33 @@ char *D_SaveGameIWADName(GameMission_t gamemission)
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?";
+}
+
diff --git a/src/d_iwad.h b/src/d_iwad.h
index a7cdf932..c0f7e9c0 100644
--- a/src/d_iwad.h
+++ b/src/d_iwad.h
@@ -50,6 +50,8 @@ char *D_TryFindWADByName(char *filename);
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
diff --git a/src/setup/multiplayer.c b/src/setup/multiplayer.c
index 91335c6c..5b3e8da0 100644
--- a/src/setup/multiplayer.c
+++ b/src/setup/multiplayer.c
@@ -783,8 +783,7 @@ static void SelectQueryAddress(TXT_UNCAST_ARG(button),
// 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)
{
@@ -795,6 +794,22 @@ static void SelectQueryAddress(TXT_UNCAST_ARG(button),
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));
+ }
}
// Finished with search.