Skip to content

Commit

Permalink
libcommon: Continued cleaning up logical episode and/or map number usage
Browse files Browse the repository at this point in the history
The goal being a straight map from URI to logical [episode &] map
number(s), allowing for dynamic reindexing of maps at runtime.

Todo: Presently, the "raw" logical numbers are still used by/for:
- G_NewGame(), G_DeferredNewGame() (need update API)
- Map specific playsim behavior (need generalize, expose via MapInfo)
- Save info header (switch to URI)
- Networked game state comms (need update protocol)
  • Loading branch information
danij-deng committed Feb 1, 2014
1 parent 2a4968a commit 298e450
Show file tree
Hide file tree
Showing 16 changed files with 40 additions and 227 deletions.
6 changes: 6 additions & 0 deletions doomsday/plugins/common/include/g_common.h
Expand Up @@ -133,9 +133,15 @@ dd_bool G_ValidateMap(uint *episode, uint *map);
*/
uint G_GetNextMap(uint episode, uint map, dd_bool secretExit);

/// @return Logical map number.
uint G_NextLogicalMapNumber(dd_bool secretExit);

/// @return Logical map number.
uint G_LogicalMapNumber(uint episode, uint map);

/// @return Logical map number.
uint G_CurrentLogicalMapNumber(void);

AutoStr *G_GenerateSaveGameName(void);

D_CMD( CCmdMakeLocal );
Expand Down
12 changes: 11 additions & 1 deletion doomsday/plugins/common/src/g_game.c
Expand Up @@ -2444,7 +2444,7 @@ void G_DoMapCompleted(void)
# endif

// Determine the next map.
nextMap = G_GetNextMap(gameEpisode, gameMap, secretExit);
nextMap = G_NextLogicalMapNumber(secretExit);
#endif

// Time for an intermission.
Expand Down Expand Up @@ -3125,6 +3125,11 @@ uint G_LogicalMapNumber(uint episode, uint map)
#endif
}

uint G_CurrentLogicalMapNumber(void)
{
return G_LogicalMapNumber(gameEpisode, gameMap);
}

Uri *G_ComposeMapUri(uint episode, uint map)
{
lumpname_t mapId;
Expand Down Expand Up @@ -3346,6 +3351,11 @@ uint G_GetNextMap(uint episode, uint map, dd_bool secretExit)
#endif
}

uint G_NextLogicalMapNumber(dd_bool secretExit)
{
return G_GetNextMap(gameEpisode, gameMap, secretExit);
}

/**
* Print a list of maps and the WAD files where they are from.
*/
Expand Down
2 changes: 1 addition & 1 deletion doomsday/plugins/common/src/p_tick.c
Expand Up @@ -104,7 +104,7 @@ void P_DoTick(void)
{
if(!--timerGame)
{
G_LeaveMap(G_GetNextMap(gameEpisode, gameMap, false), 0, false);
G_LeaveMap(G_NextLogicalMapNumber(false), 0, false);
}
}

Expand Down
4 changes: 2 additions & 2 deletions doomsday/plugins/common/src/p_xgline.c
Expand Up @@ -1763,7 +1763,7 @@ int C_DECL XLTrav_LeaveMap(Line* line, dd_bool dummy, void* context,
// Is this a secret exit?
if(info->iparm[0] > 0)
{
G_LeaveMap(G_GetNextMap(gameEpisode, gameMap, true), 0, true);
G_LeaveMap(G_NextLogicalMapNumber(true), 0, true);
return false;
}

Expand Down Expand Up @@ -1800,7 +1800,7 @@ int C_DECL XLTrav_LeaveMap(Line* line, dd_bool dummy, void* context,
}
else
{
map = G_GetNextMap(gameEpisode, gameMap, false);
map = G_NextLogicalMapNumber(false);
}

G_LeaveMap(map, 0, false);
Expand Down
2 changes: 1 addition & 1 deletion doomsday/plugins/doom/src/m_cheat.c
Expand Up @@ -719,6 +719,6 @@ D_CMD(CheatLeaveMap)
return true;
}

G_LeaveMap(G_GetNextMap(gameEpisode, gameMap, false), 0, false);
G_LeaveMap(G_NextLogicalMapNumber(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_LeaveMap(G_LogicalMapNumber(gameEpisode, gameMap), 0, false);
G_LeaveMap(G_CurrentLogicalMapNumber(), 0, false);
}

void C_DECL A_Hoof(mobj_t *mo)
Expand Down Expand Up @@ -1833,7 +1833,7 @@ void C_DECL A_BrainExplode(mobj_t *mo)

void C_DECL A_BrainDie(mobj_t* mo)
{
G_LeaveMap(G_LogicalMapNumber(gameEpisode, gameMap), 0, false);
G_LeaveMap(G_CurrentLogicalMapNumber(), 0, false);
}

void C_DECL A_BrainSpit(mobj_t* mo)
Expand Down
10 changes: 5 additions & 5 deletions doomsday/plugins/doom/src/p_spec.c
Expand Up @@ -468,7 +468,7 @@ static void crossSpecialLine(Line* line, int side, mobj_t* thing)

case 52:
// EXIT!
G_LeaveMap(G_LogicalMapNumber(gameEpisode, gameMap), 0, false);
G_LeaveMap(G_CurrentLogicalMapNumber(), 0, false);
break;

case 53:
Expand Down Expand Up @@ -551,7 +551,7 @@ static void crossSpecialLine(Line* line, int side, mobj_t* thing)

case 124:
// Secret EXIT.
G_LeaveMap(G_LogicalMapNumber(gameEpisode, gameMap), 0, true);
G_LeaveMap(G_CurrentLogicalMapNumber(), 0, true);
break;

case 125:
Expand Down Expand Up @@ -839,7 +839,7 @@ void P_PlayerInSpecialSector(player_t *player)
P_DamageMobj(player->plr->mo, NULL, NULL, 20, false);

if(player->health <= 10)
G_LeaveMap(G_LogicalMapNumber(gameEpisode, gameMap), 0, false);
G_LeaveMap(G_CurrentLogicalMapNumber(), 0, false);
break;
}
}
Expand Down Expand Up @@ -1011,7 +1011,7 @@ dd_bool P_UseSpecialLine2(mobj_t* mo, Line* line, int side)

P_ToggleSwitch(P_GetPtrp(line, DMU_FRONT), SFX_NONE, false, 0);
xline->special = 0;
G_LeaveMap(G_LogicalMapNumber(gameEpisode, gameMap), 0, false);
G_LeaveMap(G_CurrentLogicalMapNumber(), 0, false);
break;

case 14:
Expand Down Expand Up @@ -1127,7 +1127,7 @@ dd_bool P_UseSpecialLine2(mobj_t* mo, Line* line, int side)

P_ToggleSwitch(P_GetPtrp(line, DMU_FRONT), SFX_NONE, false, 0);
xline->special = 0;
G_LeaveMap(G_LogicalMapNumber(gameEpisode, gameMap), 0, true);
G_LeaveMap(G_CurrentLogicalMapNumber(), 0, true);
break;

case 55:
Expand Down
56 changes: 0 additions & 56 deletions doomsday/plugins/doom/src/st_stuff.c
Expand Up @@ -2463,61 +2463,6 @@ void Secrets_UpdateGeometry(uiwidget_t* obj)
.5f + textSize.height * cfg.hudCheatCounterScale);
}

#if 0
void MapName_Drawer(uiwidget_t* obj, const Point2Raw* offset)
{
const float scale = .75f;
const float textAlpha = uiRendState->pageAlpha;
const patchid_t patch = P_FindMapTitlePatch(gameEpisode, gameMap);
const char* text = Hu_ChoosePatchReplacement2(PRM_ALLOW_TEXT, patch, P_CurrentMapTitle());
assert(obj->type == GUI_MAPNAME);

if(!text && 0 == patch) return;

DGL_MatrixMode(DGL_MODELVIEW);
DGL_PushMatrix();
if(offset) DGL_Translatef(offset->x, offset->y, 0);
DGL_Scalef(scale, scale, 1);

DGL_Enable(DGL_TEXTURE_2D);
DGL_Color4f(1, 1, 1, textAlpha);
FR_SetFont(obj->font);
FR_SetColorAndAlpha(cfg.hudColor[0], cfg.hudColor[1], cfg.hudColor[2], textAlpha);

WI_DrawPatchXY3(patch, text, 0, 0, ALIGN_TOPLEFT, 0, DTF_NO_EFFECTS);

DGL_Disable(DGL_TEXTURE_2D);
DGL_MatrixMode(DGL_MODELVIEW);
DGL_PopMatrix();
}

void MapName_UpdateGeometry(uiwidget_t* obj)
{
const patchid_t patch = P_FindMapTitlePatch(gameEpisode, gameMap);
const char* text = Hu_ChoosePatchReplacement2(PRM_ALLOW_TEXT, patch, P_CurrentMapTitle());
const float scale = .75f;
patchinfo_t info;
assert(obj && obj->type == GUI_MAPNAME);

Rect_SetWidthHeight(obj->geometry, 0, 0);

if(!text && 0 == patch) return;

if(text)
{
Size2Raw textSize;
FR_SetFont(obj->font);
FR_TextSize(&textSize, text);
Rect_SetWidthHeight(obj->geometry, textSize.width * scale, textSize.height * scale);
return;
}

R_GetPatchInfo(patch, &info);
Rect_SetWidthHeight(obj->geometry, info.geometry.size.width * scale,
info.geometry.size.height * scale);
}
#endif

static void drawUIWidgetsForPlayer(player_t* plr)
{
#define DISPLAY_BORDER (2) /// Units in fixed 320x200 screen space.
Expand Down Expand Up @@ -2983,7 +2928,6 @@ typedef struct {
{ GUI_AMMO, ALIGN_TOPLEFT, UWG_STATUSBAR, GF_INDEX, MaxAmmo_UpdateGeometry, MaxAmmo_Drawer, MaxAmmo_Ticker, &hud->sbarMaxammos[AT_SHELL] },
{ GUI_AMMO, ALIGN_TOPLEFT, UWG_STATUSBAR, GF_INDEX, MaxAmmo_UpdateGeometry, MaxAmmo_Drawer, MaxAmmo_Ticker, &hud->sbarMaxammos[AT_CELL] },
{ GUI_AMMO, ALIGN_TOPLEFT, UWG_STATUSBAR, GF_INDEX, MaxAmmo_UpdateGeometry, MaxAmmo_Drawer, MaxAmmo_Ticker, &hud->sbarMaxammos[AT_MISSILE] },
//{ GUI_MAPNAME, ALIGN_BOTTOMLEFT, UWG_MAPNAME, GF_FONTB, MapName_UpdateGeometry, MapName_Drawer },
{ GUI_BOX, ALIGN_BOTTOMLEFT, UWG_BOTTOMLEFT2, 0, HealthIcon_UpdateGeometry, HealthIcon_Drawer },
{ GUI_HEALTH, ALIGN_BOTTOMLEFT, UWG_BOTTOMLEFT2, GF_FONTB, Health_UpdateGeometry, Health_Drawer, Health_Ticker, &hud->health },
{ GUI_READYAMMOICON, ALIGN_BOTTOMLEFT, UWG_BOTTOMLEFT2, 0, ReadyAmmoIcon_UpdateGeometry, ReadyAmmoIcon_Drawer, ReadyAmmoIcon_Ticker, &hud->readyammoicon },
Expand Down
2 changes: 1 addition & 1 deletion doomsday/plugins/doom64/src/m_cheat.c
Expand Up @@ -626,6 +626,6 @@ D_CMD(CheatLeaveMap)
return true;
}

G_LeaveMap(G_GetNextMap(gameEpisode, gameMap, false), 0, false);
G_LeaveMap(G_NextLogicalMapNumber(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(gameMap == 34)
{
G_LeaveMap(G_GetNextMap(gameEpisode, gameMap, false), 0, false);
G_LeaveMap(G_NextLogicalMapNumber(false), 0, false);
}
}

Expand Down Expand Up @@ -2067,7 +2067,7 @@ void C_DECL A_BossDeath(mobj_t* mo)
return;
}

G_LeaveMap(G_GetNextMap(gameEpisode, gameMap, false), 0, false);
G_LeaveMap(G_NextLogicalMapNumber(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.c
Expand Up @@ -530,7 +530,7 @@ static void P_CrossSpecialLine(Line* line, int side, mobj_t* thing)

case 52:
// EXIT!
G_LeaveMap(G_GetNextMap(gameEpisode, gameMap, false), 0, false);
G_LeaveMap(G_NextLogicalMapNumber(false), 0, false);
break;

case 53:
Expand Down Expand Up @@ -613,7 +613,7 @@ static void P_CrossSpecialLine(Line* line, int side, mobj_t* thing)

case 124:
// Secret EXIT
G_LeaveMap(G_GetNextMap(gameEpisode, gameMap, true), 0, true);
G_LeaveMap(G_NextLogicalMapNumber(true), 0, true);
break;

case 125:
Expand Down Expand Up @@ -1150,7 +1150,7 @@ dd_bool P_UseSpecialLine2(mobj_t* mo, Line* line, int side)

P_ToggleSwitch(P_GetPtrp(line, DMU_FRONT), SFX_SWTCHX, false, 0);
xline->special = 0;
G_LeaveMap(G_GetNextMap(gameEpisode, gameMap, false), 0, false);
G_LeaveMap(G_NextLogicalMapNumber(false), 0, false);
break;

case 14:
Expand Down Expand Up @@ -1266,7 +1266,7 @@ dd_bool P_UseSpecialLine2(mobj_t* mo, Line* line, int side)

P_ToggleSwitch(P_GetPtrp(line, DMU_FRONT), SFX_NONE, false, 0);
xline->special = 0;
G_LeaveMap(G_GetNextMap(gameEpisode, gameMap, true), 0, true);
G_LeaveMap(G_NextLogicalMapNumber(true), 0, true);
break;

case 55:
Expand Down
59 changes: 0 additions & 59 deletions doomsday/plugins/doom64/src/st_stuff.c
Expand Up @@ -523,65 +523,6 @@ Draw_EndZoom();
DGL_PopMatrix();
}

#if 0
void MapName_Drawer(uiwidget_t* obj, int x, int y)
{
assert(obj && obj->type == GUI_MAPNAME);
{
const float scale = .75f;
const float textAlpha = uiRendState->pageAlpha;
const patchid_t patch = P_FindMapTitlePatch(gameEpisode, gameMap);
const char* text = Hu_ChoosePatchReplacement2(PRM_ALLOW_TEXT, patch, P_CurrentMapTitle());

if(!text && 0 == patch) return;

DGL_MatrixMode(DGL_MODELVIEW);
DGL_PushMatrix();
DGL_Translatef(x, y, 0);
DGL_Scalef(scale, scale, 1);

DGL_Enable(DGL_TEXTURE_2D);
DGL_Color4f(1, 1, 1, textAlpha);
FR_SetFont(obj->font);
FR_SetColorAndAlpha(cfg.hudColor[0], cfg.hudColor[1], cfg.hudColor[2], textAlpha);

WI_DrawPatchXY3(patch, text, 0, 0, ALIGN_BOTTOMLEFT, 0, DTF_NO_EFFECTS);

DGL_Disable(DGL_TEXTURE_2D);
DGL_MatrixMode(DGL_MODELVIEW);
DGL_PopMatrix();
}
}

void MapName_UpdateGeometry(uiwidget_t* obj)
{
const patchid_t patch = P_FindMapTitlePatch(gameEpisode, gameMap);
const char* text = Hu_ChoosePatchReplacement2(PRM_ALLOW_TEXT, patch, P_CurrentMapTitle());
const float scale = .75f;
patchinfo_t info;
assert(obj && obj->type == GUI_MAPNAME);

Rect_SetWidthHeight(obj->geometry, 0, 0);

if(!text && 0 == patch) return;

if(text)
{
Size2Raw textSize;
FR_SetFont(obj->font);
FR_TextSize(&textSize, text);
textSize.width *= scale;
textSize.height *= scale;
Rect_SetWidthHeight(obj->geometry, textSize.width, textSize.height);
return;
}

R_GetPatchInfo(patch, &info);
Rect_SetWidthHeight(obj->geometry, info.geometry.size.width * scale,
info.geometry.size.height * scale);
}
#endif

typedef struct {
guiwidgettype_t type;
int group;
Expand Down
2 changes: 1 addition & 1 deletion doomsday/plugins/heretic/src/m_cheat.c
Expand Up @@ -719,7 +719,7 @@ D_CMD(CheatLeaveMap)
return true;
}

G_LeaveMap(G_GetNextMap(gameEpisode, gameMap, false), 0, false);
G_LeaveMap(G_NextLogicalMapNumber(false), 0, false);
return true;
}

Expand Down
8 changes: 4 additions & 4 deletions doomsday/plugins/heretic/src/p_spec.c
Expand Up @@ -583,7 +583,7 @@ static void P_CrossSpecialLine(Line* line, int side, mobj_t* thing)

case 52:
// EXIT!
G_LeaveMap(G_GetNextMap(gameEpisode, gameMap, false), 0, false);
G_LeaveMap(G_NextLogicalMapNumber(false), 0, false);
break;

case 53:
Expand Down Expand Up @@ -630,7 +630,7 @@ static void P_CrossSpecialLine(Line* line, int side, mobj_t* thing)

case 105:
// Secret EXIT
G_LeaveMap(G_GetNextMap(gameEpisode, gameMap, true), 0, true);
G_LeaveMap(G_NextLogicalMapNumber(true), 0, true);
break;

case 106:
Expand Down Expand Up @@ -1199,7 +1199,7 @@ dd_bool P_UseSpecialLine2(mobj_t* mo, Line* line, int side)
if(cyclingMaps && mapCycleNoExit)
break;

G_LeaveMap(G_GetNextMap(gameEpisode, gameMap, false), 0, false);
G_LeaveMap(G_NextLogicalMapNumber(false), 0, false);
P_ToggleSwitch(P_GetPtrp(line, DMU_FRONT), SFX_NONE, false, 0);
xline->special = 0;
break;
Expand Down Expand Up @@ -1296,7 +1296,7 @@ dd_bool P_UseSpecialLine2(mobj_t* mo, Line* line, int side)
if(cyclingMaps && mapCycleNoExit)
break;

G_LeaveMap(G_GetNextMap(gameEpisode, gameMap, true), 0, true);
G_LeaveMap(G_NextLogicalMapNumber(true), 0, true);
P_ToggleSwitch(P_GetPtrp(line, DMU_FRONT), SFX_NONE, false, 0);
xline->special = 0;
break;
Expand Down

0 comments on commit 298e450

Please sign in to comment.