From 9a9376b74fb00c5bcdeed5f1b6d7ea1b732cb501 Mon Sep 17 00:00:00 2001 From: danij Date: Thu, 3 Jul 2014 07:08:28 +0100 Subject: [PATCH] Refactor|libcommon: Hide the "logical map number" concept behind G_MapTitlePatch() This is now the only place where this map indexing method is used and as such can be removed entirely once the map title patch is defined through a better, user-customizable mechanism. --- doomsday/plugins/common/include/g_common.h | 8 +---- doomsday/plugins/common/src/g_game.cpp | 37 ++-------------------- doomsday/plugins/common/src/p_tick.cpp | 2 +- doomsday/plugins/common/src/p_xgline.cpp | 6 ++-- doomsday/plugins/doom/src/m_cheat.cpp | 2 +- doomsday/plugins/doom/src/p_enemy.c | 4 +-- doomsday/plugins/doom/src/p_spec.cpp | 10 +++--- doomsday/plugins/doom/src/wi_stuff.cpp | 18 +++-------- doomsday/plugins/doom64/src/m_cheat.cpp | 2 +- doomsday/plugins/doom64/src/p_enemy.c | 4 +-- doomsday/plugins/doom64/src/p_spec.cpp | 8 ++--- doomsday/plugins/doom64/src/wi_stuff.cpp | 15 ++++----- doomsday/plugins/heretic/src/m_cheat.cpp | 2 +- doomsday/plugins/heretic/src/p_spec.cpp | 8 ++--- 14 files changed, 39 insertions(+), 87 deletions(-) diff --git a/doomsday/plugins/common/include/g_common.h b/doomsday/plugins/common/include/g_common.h index a80e9704d2..a84659aaa3 100644 --- a/doomsday/plugins/common/include/g_common.h +++ b/doomsday/plugins/common/include/g_common.h @@ -202,9 +202,6 @@ uint G_EpisodeNumberFor(de::Uri const &mapUri); */ uint G_MapNumberFor(de::Uri const &mapUri); -/// @todo Refactor away. -uint G_LogicalMapNumberFor(de::Uri const &mapUri); - /** * Compose a Uri for the identified @a episode and @a map combination. * @@ -223,10 +220,7 @@ extern "C" { * * @param secretExit @c true= choose the map assigned to the secret exit. */ -uint G_NextLogicalMapNumber(dd_bool secretExit); - -/// @return Logical map number. -uint G_CurrentLogicalMapNumber(void); +uint G_NextMapNumber(dd_bool secretExit); uint G_CurrentEpisodeNumber(void); uint G_CurrentMapNumber(void); diff --git a/doomsday/plugins/common/src/g_game.cpp b/doomsday/plugins/common/src/g_game.cpp index 0ee6c017a6..0a61255688 100644 --- a/doomsday/plugins/common/src/g_game.cpp +++ b/doomsday/plugins/common/src/g_game.cpp @@ -1540,7 +1540,7 @@ static void runGameAction() } #endif #if __JDOOM__ || __JDOOM64__ || __JHERETIC__ - nextMap = G_NextLogicalMapNumber(secretExit); + nextMap = G_NextMapNumber(secretExit); #endif G_IntermissionBegin(); @@ -2377,36 +2377,6 @@ uint G_MapNumberFor(de::Uri const &mapUri) return 0; } -static uint logicalMapNumber(uint episode, uint map) -{ -#if __JHEXEN__ - return P_TranslateMap(map); - DENG_UNUSED(episode); -#elif __JDOOM64__ - return map; - DENG_UNUSED(episode); -#else -# if __JDOOM__ - if(gameModeBits & (GM_ANY_DOOM2|GM_DOOM_CHEX)) - return map; - else -# endif - { - return map + episode * 9; // maps per episode. - } -#endif -} - -uint G_LogicalMapNumberFor(de::Uri const &mapUri) -{ - return logicalMapNumber(G_EpisodeNumberFor(mapUri), G_MapNumberFor(mapUri)); -} - -uint G_CurrentLogicalMapNumber() -{ - return G_LogicalMapNumberFor(gameMapUri); -} - uint G_CurrentEpisodeNumber() { return G_EpisodeNumberFor(gameMapUri); @@ -2437,11 +2407,10 @@ de::Uri G_ComposeMapUri(uint episode, uint map) return de::Uri("Maps", mapId); } -uint G_NextLogicalMapNumber(dd_bool secretExit) +uint G_NextMapNumber(dd_bool secretExit) { #if __JHEXEN__ - return logicalMapNumber(G_EpisodeNumberFor(gameMapUri), P_MapInfo(&gameMapUri)->nextMap); - + return P_TranslateMap(P_MapInfo(&gameMapUri)->nextMap); DENG2_UNUSED(secretExit); #elif __JDOOM64__ diff --git a/doomsday/plugins/common/src/p_tick.cpp b/doomsday/plugins/common/src/p_tick.cpp index b661e52e55..042c4b276f 100644 --- a/doomsday/plugins/common/src/p_tick.cpp +++ b/doomsday/plugins/common/src/p_tick.cpp @@ -60,7 +60,7 @@ void P_DoTick() { if(!--timerGame) { - G_SetGameActionMapCompleted(G_NextLogicalMapNumber(false), 0, false); + G_SetGameActionMapCompleted(G_NextMapNumber(false), 0, false); } } diff --git a/doomsday/plugins/common/src/p_xgline.cpp b/doomsday/plugins/common/src/p_xgline.cpp index 8689ead8ab..4e583f9b2a 100644 --- a/doomsday/plugins/common/src/p_xgline.cpp +++ b/doomsday/plugins/common/src/p_xgline.cpp @@ -2107,7 +2107,7 @@ int XLTrav_LeaveMap(Line *line, dd_bool /*ceiling*/, void * /*context*/, // Is this a secret exit? if(info->iparm[0] > 0) { - G_SetGameActionMapCompleted(G_NextLogicalMapNumber(true), 0, true); + G_SetGameActionMapCompleted(G_NextMapNumber(true), 0, true); return false; } @@ -2141,11 +2141,11 @@ int XLTrav_LeaveMap(Line *line, dd_bool /*ceiling*/, void * /*context*/, if(mapSpecified) { XG_Dev("XLTrav_LeaveMap: Next map set to %u", map+1); - map = G_LogicalMapNumberFor(G_ComposeMapUri(G_EpisodeNumberFor(gameMapUri), map)); + map = G_MapNumberFor(G_ComposeMapUri(G_EpisodeNumberFor(gameMapUri), map)); } else { - map = G_NextLogicalMapNumber(false); + map = G_NextMapNumber(false); } G_SetGameActionMapCompleted(map, 0, false); diff --git a/doomsday/plugins/doom/src/m_cheat.cpp b/doomsday/plugins/doom/src/m_cheat.cpp index 4914e4f4ef..cac75e1cf5 100644 --- a/doomsday/plugins/doom/src/m_cheat.cpp +++ b/doomsday/plugins/doom/src/m_cheat.cpp @@ -743,6 +743,6 @@ D_CMD(CheatLeaveMap) return true; } - G_SetGameActionMapCompleted(G_NextLogicalMapNumber(false), 0, false); + G_SetGameActionMapCompleted(G_NextMapNumber(false), 0, false); return true; } diff --git a/doomsday/plugins/doom/src/p_enemy.c b/doomsday/plugins/doom/src/p_enemy.c index d34e18a642..dfc17a2288 100644 --- a/doomsday/plugins/doom/src/p_enemy.c +++ b/doomsday/plugins/doom/src/p_enemy.c @@ -1696,7 +1696,7 @@ void C_DECL A_BossDeath(mobj_t *mo) } } - G_SetGameActionMapCompleted(G_NextLogicalMapNumber(false), 0, false); + G_SetGameActionMapCompleted(G_NextMapNumber(false), 0, false); } void C_DECL A_Hoof(mobj_t *mo) @@ -1791,7 +1791,7 @@ void C_DECL A_BrainExplode(mobj_t *mo) void C_DECL A_BrainDie(mobj_t *mo) { DENG_UNUSED(mo); - G_SetGameActionMapCompleted(G_NextLogicalMapNumber(false), 0, false); + G_SetGameActionMapCompleted(G_NextMapNumber(false), 0, false); } void C_DECL A_BrainSpit(mobj_t* mo) diff --git a/doomsday/plugins/doom/src/p_spec.cpp b/doomsday/plugins/doom/src/p_spec.cpp index 8a63894cdf..30fc9496e3 100644 --- a/doomsday/plugins/doom/src/p_spec.cpp +++ b/doomsday/plugins/doom/src/p_spec.cpp @@ -255,7 +255,7 @@ static void crossSpecialLine(Line *line, int side, mobj_t *thing) case 52: // EXIT! - G_SetGameActionMapCompleted(G_NextLogicalMapNumber(false), 0, false); + G_SetGameActionMapCompleted(G_NextMapNumber(false), 0, false); break; case 53: @@ -338,7 +338,7 @@ static void crossSpecialLine(Line *line, int side, mobj_t *thing) case 124: // Secret EXIT. - G_SetGameActionMapCompleted(G_NextLogicalMapNumber(true), 0, true); + G_SetGameActionMapCompleted(G_NextMapNumber(true), 0, true); break; case 125: @@ -626,7 +626,7 @@ void P_PlayerInSpecialSector(player_t *player) P_DamageMobj(player->plr->mo, NULL, NULL, 20, false); if(player->health <= 10) - G_SetGameActionMapCompleted(G_NextLogicalMapNumber(false), 0, false); + G_SetGameActionMapCompleted(G_NextMapNumber(false), 0, false); break; } } @@ -793,7 +793,7 @@ dd_bool P_UseSpecialLine2(mobj_t *mo, Line *line, int side) P_ToggleSwitch((Side *)P_GetPtrp(line, DMU_FRONT), SFX_NONE, false, 0); xline->special = 0; - G_SetGameActionMapCompleted(G_NextLogicalMapNumber(false), 0, false); + G_SetGameActionMapCompleted(G_NextMapNumber(false), 0, false); break; case 14: @@ -909,7 +909,7 @@ dd_bool P_UseSpecialLine2(mobj_t *mo, Line *line, int side) P_ToggleSwitch((Side *)P_GetPtrp(line, DMU_FRONT), SFX_NONE, false, 0); xline->special = 0; - G_SetGameActionMapCompleted(G_NextLogicalMapNumber(true), 0, true); + G_SetGameActionMapCompleted(G_NextMapNumber(true), 0, true); break; case 55: diff --git a/doomsday/plugins/doom/src/wi_stuff.cpp b/doomsday/plugins/doom/src/wi_stuff.cpp index 07a59234ad..d25f444122 100644 --- a/doomsday/plugins/doom/src/wi_stuff.cpp +++ b/doomsday/plugins/doom/src/wi_stuff.cpp @@ -256,12 +256,6 @@ static void drawBackground() static void drawFinishedTitle(int x = SCREENWIDTH / 2, int y = WI_TITLEY) { - uint mapNum = G_LogicalMapNumberFor(wbs->currentMap); - /*if(gameModeBits & (GM_ANY_DOOM2|GM_DOOM_CHEX)) - mapNum = wbs->currentMap; - else - mapNum = (wbs->episode * 9) + wbs->currentMap;*/ - DGL_Enable(DGL_TEXTURE_2D); DGL_Color4f(1, 1, 1, 1); @@ -270,8 +264,8 @@ static void drawFinishedTitle(int x = SCREENWIDTH / 2, int y = WI_TITLEY) FR_SetColorAndAlpha(defFontRGB[CR], defFontRGB[CG], defFontRGB[CB], 1); // Draw - patchid_t const patchId = (mapNum < pMapNamesSize? pMapNames[mapNum] : 0); - de::String const mapTitle = G_MapTitle(); // current map + patchid_t const patchId = G_MapTitlePatch(&wbs->currentMap); + de::String const mapTitle = G_MapTitle(&wbs->currentMap); WI_DrawPatchXY3(patchId, patchReplacementText(patchId, mapTitle.toUtf8().constData()), x, y, ALIGN_TOP, 0, DTF_NO_TYPEIN); patchinfo_t info; if(R_GetPatchInfo(patchId, &info)) @@ -323,16 +317,14 @@ static void drawEnteringTitle(int x = SCREENWIDTH / 2, int y = WI_TITLEY) // Draw "Entering" WI_DrawPatchXY3(pEntering, patchReplacementText(pEntering), x, y, ALIGN_TOP, 0, DTF_NO_TYPEIN); - uint const mapNum = G_LogicalMapNumberFor(wbs->nextMap); - patchinfo_t info; - if(R_GetPatchInfo(pMapNames[mapNum], &info)) + patchid_t const mapTitlePatch = G_MapTitlePatch(&wbs->nextMap); + if(R_GetPatchInfo(mapTitlePatch, &info)) y += (5 * info.geometry.size.height) / 4; // Draw map. - patchid_t const patchId = (mapNum < pMapNamesSize? pMapNames[mapNum] : 0); FR_SetColorAndAlpha(defFontRGB[CR], defFontRGB[CG], defFontRGB[CB], 1); - WI_DrawPatchXY3(patchId, patchReplacementText(patchId, mapName), x, y, ALIGN_TOP, 0, DTF_NO_TYPEIN); + WI_DrawPatchXY3(mapTitlePatch, patchReplacementText(mapTitlePatch, mapName), x, y, ALIGN_TOP, 0, DTF_NO_TYPEIN); DGL_Disable(DGL_TEXTURE_2D); } diff --git a/doomsday/plugins/doom64/src/m_cheat.cpp b/doomsday/plugins/doom64/src/m_cheat.cpp index ec199ef10e..a07a5b8e2c 100644 --- a/doomsday/plugins/doom64/src/m_cheat.cpp +++ b/doomsday/plugins/doom64/src/m_cheat.cpp @@ -606,6 +606,6 @@ D_CMD(CheatLeaveMap) return true; } - G_SetGameActionMapCompleted(G_NextLogicalMapNumber(false), 0, false); + G_SetGameActionMapCompleted(G_NextMapNumber(false), 0, false); return true; } diff --git a/doomsday/plugins/doom64/src/p_enemy.c b/doomsday/plugins/doom64/src/p_enemy.c index e180ebfe8a..f6253a7617 100644 --- a/doomsday/plugins/doom64/src/p_enemy.c +++ b/doomsday/plugins/doom64/src/p_enemy.c @@ -1944,7 +1944,7 @@ void C_DECL A_CyberDeath(mobj_t* actor) } else if(G_CurrentMapNumber() == 34) { - G_SetGameActionMapCompleted(G_NextLogicalMapNumber(false), 0, false); + G_SetGameActionMapCompleted(G_NextMapNumber(false), 0, false); } } @@ -2067,7 +2067,7 @@ void C_DECL A_BossDeath(mobj_t* mo) return; } - G_SetGameActionMapCompleted(G_NextLogicalMapNumber(false), 0, false); + G_SetGameActionMapCompleted(G_NextMapNumber(false), 0, false); } void C_DECL A_Hoof(mobj_t *mo) diff --git a/doomsday/plugins/doom64/src/p_spec.cpp b/doomsday/plugins/doom64/src/p_spec.cpp index 6caa7559d0..ec88c784f6 100644 --- a/doomsday/plugins/doom64/src/p_spec.cpp +++ b/doomsday/plugins/doom64/src/p_spec.cpp @@ -327,7 +327,7 @@ static void P_CrossSpecialLine(Line *line, int side, mobj_t *thing) case 52: // EXIT! - G_SetGameActionMapCompleted(G_NextLogicalMapNumber(false), 0, false); + G_SetGameActionMapCompleted(G_NextMapNumber(false), 0, false); break; case 53: @@ -410,7 +410,7 @@ static void P_CrossSpecialLine(Line *line, int side, mobj_t *thing) case 124: // Secret EXIT - G_SetGameActionMapCompleted(G_NextLogicalMapNumber(true), 0, true); + G_SetGameActionMapCompleted(G_NextMapNumber(true), 0, true); break; case 125: @@ -940,7 +940,7 @@ dd_bool P_UseSpecialLine2(mobj_t *mo, Line *line, int side) P_ToggleSwitch((Side *)P_GetPtrp(line, DMU_FRONT), SFX_SWTCHX, false, 0); xline->special = 0; - G_SetGameActionMapCompleted(G_NextLogicalMapNumber(false), 0, false); + G_SetGameActionMapCompleted(G_NextMapNumber(false), 0, false); break; case 14: @@ -1056,7 +1056,7 @@ dd_bool P_UseSpecialLine2(mobj_t *mo, Line *line, int side) P_ToggleSwitch((Side *)P_GetPtrp(line, DMU_FRONT), SFX_NONE, false, 0); xline->special = 0; - G_SetGameActionMapCompleted(G_NextLogicalMapNumber(true), 0, true); + G_SetGameActionMapCompleted(G_NextMapNumber(true), 0, true); break; case 55: diff --git a/doomsday/plugins/doom64/src/wi_stuff.cpp b/doomsday/plugins/doom64/src/wi_stuff.cpp index 6d3eb94cb2..7d5d3044a8 100644 --- a/doomsday/plugins/doom64/src/wi_stuff.cpp +++ b/doomsday/plugins/doom64/src/wi_stuff.cpp @@ -130,11 +130,10 @@ static void drawFinishedTitle(int x = SCREENWIDTH / 2, int y = WI_TITLEY) FR_LoadDefaultAttrib(); // Draw - uint const mapNum = G_LogicalMapNumberFor(wbs->currentMap); - patchid_t patchId = (mapNum < pMapNamesSize? pMapNames[mapNum] : 0); - WI_DrawPatchXY3(patchId, patchReplacementText(patchId, mapTitle.toUtf8().constData()), x, y, ALIGN_TOP, 0, DTF_NO_TYPEIN); + patchid_t const mapTitlePatch = G_MapTitlePatch(&wbs->currentMap); + WI_DrawPatchXY3(mapTitlePatch, patchReplacementText(mapTitlePatch, mapTitle.toUtf8().constData()), x, y, ALIGN_TOP, 0, DTF_NO_TYPEIN); patchinfo_t info; - if(R_GetPatchInfo(patchId, &info)) + if(R_GetPatchInfo(mapTitlePatch, &info)) y += (5 * info.geometry.size.height) / 4; // Draw "Finished!" @@ -172,15 +171,13 @@ static void drawEnteringTitle(int x = SCREENWIDTH / 2, int y = WI_TITLEY) // Draw "Entering" WI_DrawPatchXY2(pEntering, patchReplacementText(pEntering), x, y, ALIGN_TOP); - uint const mapNum = G_LogicalMapNumberFor(wbs->nextMap); - patchinfo_t info; - if(R_GetPatchInfo(pMapNames[mapNum], &info)) + patchid_t const mapTitlePatch = G_MapTitlePatch(&wbs->nextMap); + if(R_GetPatchInfo(mapTitlePatch, &info)) y += (5 * info.geometry.size.height) / 4; // Draw map. - patchid_t const patchId = (mapNum < pMapNamesSize? pMapNames[mapNum] : 0); - WI_DrawPatchXY2(patchId, patchReplacementText(patchId, mapName), x, y, ALIGN_TOP); + WI_DrawPatchXY2(mapTitlePatch, patchReplacementText(mapTitlePatch, mapName), x, y, ALIGN_TOP); DGL_Disable(DGL_TEXTURE_2D); } diff --git a/doomsday/plugins/heretic/src/m_cheat.cpp b/doomsday/plugins/heretic/src/m_cheat.cpp index ad3be4dec5..e4daa6b0c3 100644 --- a/doomsday/plugins/heretic/src/m_cheat.cpp +++ b/doomsday/plugins/heretic/src/m_cheat.cpp @@ -725,7 +725,7 @@ D_CMD(CheatLeaveMap) return true; } - G_SetGameActionMapCompleted(G_NextLogicalMapNumber(false), 0, false); + G_SetGameActionMapCompleted(G_NextMapNumber(false), 0, false); return true; } diff --git a/doomsday/plugins/heretic/src/p_spec.cpp b/doomsday/plugins/heretic/src/p_spec.cpp index 5f108d9899..ef24850524 100644 --- a/doomsday/plugins/heretic/src/p_spec.cpp +++ b/doomsday/plugins/heretic/src/p_spec.cpp @@ -389,7 +389,7 @@ static void P_CrossSpecialLine(Line *line, int side, mobj_t *thing) case 52: // EXIT! - G_SetGameActionMapCompleted(G_NextLogicalMapNumber(false), 0, false); + G_SetGameActionMapCompleted(G_NextMapNumber(false), 0, false); break; case 53: @@ -436,7 +436,7 @@ static void P_CrossSpecialLine(Line *line, int side, mobj_t *thing) case 105: // Secret EXIT - G_SetGameActionMapCompleted(G_NextLogicalMapNumber(true), 0, true); + G_SetGameActionMapCompleted(G_NextMapNumber(true), 0, true); break; case 106: @@ -995,7 +995,7 @@ dd_bool P_UseSpecialLine2(mobj_t *mo, Line *line, int /*side*/) if(cyclingMaps && mapCycleNoExit) break; - G_SetGameActionMapCompleted(G_NextLogicalMapNumber(false), 0, false); + G_SetGameActionMapCompleted(G_NextMapNumber(false), 0, false); P_ToggleSwitch((Side *)P_GetPtrp(line, DMU_FRONT), SFX_NONE, false, 0); xline->special = 0; break; @@ -1092,7 +1092,7 @@ dd_bool P_UseSpecialLine2(mobj_t *mo, Line *line, int /*side*/) if(cyclingMaps && mapCycleNoExit) break; - G_SetGameActionMapCompleted(G_NextLogicalMapNumber(true), 0, true); + G_SetGameActionMapCompleted(G_NextMapNumber(true), 0, true); P_ToggleSwitch((Side *)P_GetPtrp(line, DMU_FRONT), SFX_NONE, false, 0); xline->special = 0; break;