Skip to content

Commit

Permalink
Refactor|libcommon: Hide the "logical map number" concept behind G_Ma…
Browse files Browse the repository at this point in the history
…pTitlePatch()

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.
  • Loading branch information
danij-deng committed Jul 3, 2014
1 parent 2aedc4e commit 9a9376b
Show file tree
Hide file tree
Showing 14 changed files with 39 additions and 87 deletions.
8 changes: 1 addition & 7 deletions doomsday/plugins/common/include/g_common.h
Expand Up @@ -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.
*
Expand All @@ -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);
Expand Down
37 changes: 3 additions & 34 deletions doomsday/plugins/common/src/g_game.cpp
Expand Up @@ -1540,7 +1540,7 @@ static void runGameAction()
}
#endif
#if __JDOOM__ || __JDOOM64__ || __JHERETIC__
nextMap = G_NextLogicalMapNumber(secretExit);
nextMap = G_NextMapNumber(secretExit);
#endif

G_IntermissionBegin();
Expand Down Expand Up @@ -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);
Expand Down Expand Up @@ -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__
Expand Down
2 changes: 1 addition & 1 deletion doomsday/plugins/common/src/p_tick.cpp
Expand Up @@ -60,7 +60,7 @@ void P_DoTick()
{
if(!--timerGame)
{
G_SetGameActionMapCompleted(G_NextLogicalMapNumber(false), 0, false);
G_SetGameActionMapCompleted(G_NextMapNumber(false), 0, false);
}
}

Expand Down
6 changes: 3 additions & 3 deletions doomsday/plugins/common/src/p_xgline.cpp
Expand Up @@ -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;
}

Expand Down Expand Up @@ -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);
Expand Down
2 changes: 1 addition & 1 deletion doomsday/plugins/doom/src/m_cheat.cpp
Expand Up @@ -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;
}
4 changes: 2 additions & 2 deletions doomsday/plugins/doom/src/p_enemy.c
Expand Up @@ -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)
Expand Down Expand Up @@ -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)
Expand Down
10 changes: 5 additions & 5 deletions doomsday/plugins/doom/src/p_spec.cpp
Expand Up @@ -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:
Expand Down Expand Up @@ -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:
Expand Down Expand Up @@ -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;
}
}
Expand Down Expand Up @@ -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:
Expand Down Expand Up @@ -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:
Expand Down
18 changes: 5 additions & 13 deletions doomsday/plugins/doom/src/wi_stuff.cpp
Expand Up @@ -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);

Expand All @@ -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 <MapName>
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))
Expand Down Expand Up @@ -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);
}
Expand Down
2 changes: 1 addition & 1 deletion doomsday/plugins/doom64/src/m_cheat.cpp
Expand Up @@ -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;
}
4 changes: 2 additions & 2 deletions doomsday/plugins/doom64/src/p_enemy.c
Expand Up @@ -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);
}
}

Expand Down Expand Up @@ -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)
Expand Down
8 changes: 4 additions & 4 deletions doomsday/plugins/doom64/src/p_spec.cpp
Expand Up @@ -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:
Expand Down Expand Up @@ -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:
Expand Down Expand Up @@ -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:
Expand Down Expand Up @@ -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:
Expand Down
15 changes: 6 additions & 9 deletions doomsday/plugins/doom64/src/wi_stuff.cpp
Expand Up @@ -130,11 +130,10 @@ static void drawFinishedTitle(int x = SCREENWIDTH / 2, int y = WI_TITLEY)
FR_LoadDefaultAttrib();

// Draw <MapName>
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!"
Expand Down Expand Up @@ -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);
}
Expand Down
2 changes: 1 addition & 1 deletion doomsday/plugins/heretic/src/m_cheat.cpp
Expand Up @@ -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;
}

Expand Down
8 changes: 4 additions & 4 deletions doomsday/plugins/heretic/src/p_spec.cpp
Expand Up @@ -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:
Expand Down Expand Up @@ -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:
Expand Down Expand Up @@ -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;
Expand Down Expand Up @@ -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;
Expand Down

0 comments on commit 9a9376b

Please sign in to comment.