diff --git a/source/core/gamecontrol.cpp b/source/core/gamecontrol.cpp index 9d0596dcb..128803e3a 100644 --- a/source/core/gamecontrol.cpp +++ b/source/core/gamecontrol.cpp @@ -154,6 +154,8 @@ bool pausedWithKey; bool gamesetinput = false; +int PlayClock; + CUSTOM_CVAR(Int, cl_gender, 0, CVAR_ARCHIVE | CVAR_GLOBALCONFIG) { if (self < 0 || self > 3) self = 0; diff --git a/source/core/gamecontrol.h b/source/core/gamecontrol.h index e7709955a..7c5331900 100644 --- a/source/core/gamecontrol.h +++ b/source/core/gamecontrol.h @@ -232,4 +232,5 @@ extern int chatmodeon; extern bool sendPause; extern int lastTic; +extern int PlayClock; diff --git a/source/games/blood/src/actor.cpp b/source/games/blood/src/actor.cpp index 253b86c0e..a3fcf58f5 100644 --- a/source/games/blood/src/actor.cpp +++ b/source/games/blood/src/actor.cpp @@ -2912,7 +2912,7 @@ void actKillDude(int nKillerSprite, spritetype *pSprite, DAMAGE_TYPE damageType, aiGenDudeNewState(pSprite, &genDudeBurnGoto); actHealDude(pXSprite, dudeInfo[55].startHealth, dudeInfo[55].startHealth); if (pXSprite->burnTime <= 0) pXSprite->burnTime = 1200; - gDudeExtra[pSprite->extra].time = gFrameClock + 360; + gDudeExtra[pSprite->extra].time = PlayClock + 360; return; } @@ -3547,9 +3547,9 @@ int actDamageSprite(int nSource, spritetype *pSprite, DAMAGE_TYPE damageType, in case kThingBloodBits: case kThingBloodChunks: case kThingZombieHead: - if (damageType == 3 && pSourcePlayer && gFrameClock > pSourcePlayer->laughCount && Chance(0x4000)) { + if (damageType == 3 && pSourcePlayer && PlayClock > pSourcePlayer->laughCount && Chance(0x4000)) { sfxPlay3DSound(pSourcePlayer->pSprite, gPlayerGibThingComments[Random(10)], 0, 2); - pSourcePlayer->laughCount = gFrameClock+3600; + pSourcePlayer->laughCount = PlayClock+3600; } break; case kTrapMachinegun: @@ -4187,8 +4187,8 @@ void ProcessTouchObjects(spritetype *pSprite, int nXSprite) switch (pSprite2->type) { case kThingKickablePail: if (pPlayer) { - if (pPlayer->kickPower > gFrameClock) return; - pPlayer->kickPower = gFrameClock+60; + if (pPlayer->kickPower > PlayClock) return; + pPlayer->kickPower = PlayClock+60; } actKickObject(pSprite, pSprite2); sfxPlay3DSound(pSprite->x, pSprite->y, pSprite->z, 357, pSprite->sectnum); @@ -4196,8 +4196,8 @@ void ProcessTouchObjects(spritetype *pSprite, int nXSprite) break; case kThingZombieHead: if (pPlayer) { - if (pPlayer->kickPower > gFrameClock) return; - pPlayer->kickPower = gFrameClock+60; + if (pPlayer->kickPower > PlayClock) return; + pPlayer->kickPower = PlayClock+60; } actKickObject(pSprite, pSprite2); sfxPlay3DSound(pSprite->x, pSprite->y, pSprite->z, 357, pSprite->sectnum); @@ -4377,9 +4377,9 @@ int MoveThing(spritetype *pSprite) spritetype *pFX = gFX.fxSpawn(FX_27, pSprite->sectnum, pSprite->x, pSprite->y, pSprite->z, 0); if (pFX) { - int v34 = (gFrameClock*3)&2047; - int v30 = (gFrameClock*5)&2047; - int vbx = (gFrameClock*11)&2047; + int v34 = (PlayClock*3)&2047; + int v30 = (PlayClock*5)&2047; + int vbx = (PlayClock*11)&2047; int v2c = 0x44444; int v28 = 0; int v24 = 0; @@ -5407,7 +5407,7 @@ void actProcessSprites(void) case kThingBloodBits: case kThingBloodChunks: case kThingZombieHead: - if (pXSprite->locked && gFrameClock >= pXSprite->targetX) pXSprite->locked = 0; + if (pXSprite->locked && PlayClock >= pXSprite->targetX) pXSprite->locked = 0; break; } @@ -6210,7 +6210,7 @@ spritetype * actSpawnThing(int nSector, int x, int y, int z, int nThingType) pXThing->data2 = 0; pXThing->data3 = 0; pXThing->data4 = 318; - pXThing->targetX = gFrameClock+180; + pXThing->targetX = PlayClock+180; pXThing->locked = 1; pXThing->state = 1; pXThing->triggerOnce = 0; @@ -6222,7 +6222,7 @@ spritetype * actSpawnThing(int nSector, int x, int y, int z, int nThingType) pXThing->data2 = 0; pXThing->data3 = 0; pXThing->data4 = 318; - pXThing->targetX = gFrameClock+180; + pXThing->targetX = PlayClock+180; pXThing->locked = 1; pXThing->state = 1; pXThing->triggerOnce = 0; @@ -6813,7 +6813,7 @@ void DudeToGibCallback1(int, DBloodActor* actor) pXSprite->triggerOnce = 0; pXSprite->isTriggered = 0; pXSprite->locked = 0; - pXSprite->targetX = gFrameClock; + pXSprite->targetX = PlayClock; pXSprite->state = 1; } @@ -6830,7 +6830,7 @@ void DudeToGibCallback2(int, DBloodActor* actor) pXSprite->triggerOnce = 0; pXSprite->isTriggered = 0; pXSprite->locked = 0; - pXSprite->targetX = gFrameClock; + pXSprite->targetX = PlayClock; pXSprite->state = 1; } diff --git a/source/games/blood/src/ai.cpp b/source/games/blood/src/ai.cpp index 5bd98c6bc..3bde01d66 100644 --- a/source/games/blood/src/ai.cpp +++ b/source/games/blood/src/ai.cpp @@ -55,12 +55,12 @@ void aiPlay3DSound(spritetype *pSprite, int a2, AI_SFX_PRIORITY a3, int a4) DUDEEXTRA *pDudeExtra = &gDudeExtra[pSprite->extra]; if (a3 == AI_SFX_PRIORITY_0) sfxPlay3DSound(pSprite, a2, a4, 2); - else if (a3 > pDudeExtra->prio || pDudeExtra->time <= gFrameClock) + else if (a3 > pDudeExtra->prio || pDudeExtra->time <= PlayClock) { sfxKill3DSound(pSprite, -1, -1); sfxPlay3DSound(pSprite, a2, a4, 0); pDudeExtra->prio = a3; - pDudeExtra->time = gFrameClock+120; + pDudeExtra->time = PlayClock+120; } } @@ -925,7 +925,7 @@ int aiDamageSprite(spritetype *pSprite, XSPRITE *pXSprite, int nSource, DAMAGE_T aiNewState(actor, &cultistBurnGoto); aiPlay3DSound(pSprite, 361, AI_SFX_PRIORITY_0, -1); aiPlay3DSound(pSprite, 1031+Random(2), AI_SFX_PRIORITY_2, -1); - gDudeExtra[pSprite->extra].time = gFrameClock+360; + gDudeExtra[pSprite->extra].time = PlayClock+360; actHealDude(pXSprite, dudeInfo[40].startHealth, dudeInfo[40].startHealth); evKill(nSprite, 3, kCallbackFXFlameLick); } @@ -936,16 +936,16 @@ int aiDamageSprite(spritetype *pSprite, XSPRITE *pXSprite, int nSource, DAMAGE_T pSprite->type = kDudeBurningInnocent; aiNewState(actor, &cultistBurnGoto); aiPlay3DSound(pSprite, 361, AI_SFX_PRIORITY_0, -1); - gDudeExtra[pSprite->extra].time = gFrameClock+360; + gDudeExtra[pSprite->extra].time = PlayClock+360; actHealDude(pXSprite, dudeInfo[39].startHealth, dudeInfo[39].startHealth); evKill(nSprite, 3, kCallbackFXFlameLick); } break; case kDudeBurningCultist: - if (Chance(0x4000) && gDudeExtra[pSprite->extra].time < gFrameClock) + if (Chance(0x4000) && gDudeExtra[pSprite->extra].time < PlayClock) { aiPlay3DSound(pSprite, 1031+Random(2), AI_SFX_PRIORITY_2, -1); - gDudeExtra[pSprite->extra].time = gFrameClock+360; + gDudeExtra[pSprite->extra].time = PlayClock+360; } if (Chance(0x600) && (pXSprite->medium == kMediumWater || pXSprite->medium == kMediumGoo)) { @@ -979,16 +979,16 @@ int aiDamageSprite(spritetype *pSprite, XSPRITE *pXSprite, int nSource, DAMAGE_T pSprite->type = kDudeBurningInnocent; aiNewState(actor, &cultistBurnGoto); aiPlay3DSound(pSprite, 361, AI_SFX_PRIORITY_0, -1); - gDudeExtra[pSprite->extra].time = gFrameClock+360; + gDudeExtra[pSprite->extra].time = PlayClock+360; actHealDude(pXSprite, dudeInfo[39].startHealth, dudeInfo[39].startHealth); evKill(nSprite, 3, kCallbackFXFlameLick); } break; #ifdef NOONE_EXTENSIONS case kDudeModernCustomBurning: - if (Chance(0x2000) && gDudeExtra[pSprite->extra].time < gFrameClock) { + if (Chance(0x2000) && gDudeExtra[pSprite->extra].time < PlayClock) { playGenDudeSound(pSprite, kGenDudeSndBurning); - gDudeExtra[pSprite->extra].time = gFrameClock + 360; + gDudeExtra[pSprite->extra].time = PlayClock + 360; } if (pXSprite->burnTime == 0) pXSprite->burnTime = 2400; if (spriteIsUnderwater(pSprite, false)) { @@ -1028,7 +1028,7 @@ int aiDamageSprite(spritetype *pSprite, XSPRITE *pXSprite, int nSource, DAMAGE_T aiGenDudeNewState(pSprite, &genDudeBurnGoto); actHealDude(pXSprite, dudeInfo[55].startHealth, dudeInfo[55].startHealth); - gDudeExtra[pSprite->extra].time = gFrameClock + 360; + gDudeExtra[pSprite->extra].time = PlayClock + 360; evKill(nSprite, 3, kCallbackFXFlameLick); } diff --git a/source/games/blood/src/aiunicult.cpp b/source/games/blood/src/aiunicult.cpp index 18681a129..85e6b9ea2 100644 --- a/source/games/blood/src/aiunicult.cpp +++ b/source/games/blood/src/aiunicult.cpp @@ -490,7 +490,7 @@ static void unicultThinkChase(DBloodActor* actor) // is the target visible? if (dist < pDudeInfo->seeDist && abs(losAngle) <= pDudeInfo->periphery) { - if ((gFrameClock & 64) == 0 && Chance(0x3000) && !spriteIsUnderwater(pSprite, false)) + if ((PlayClock & 64) == 0 && Chance(0x3000) && !spriteIsUnderwater(pSprite, false)) playGenDudeSound(pSprite, kGenDudeSndChasing); actor->dudeSlope = DivScale(pTarget->z - pSprite->z, dist, 10); diff --git a/source/games/blood/src/animatesprite.cpp b/source/games/blood/src/animatesprite.cpp index c46340d3f..dfe6f84f3 100644 --- a/source/games/blood/src/animatesprite.cpp +++ b/source/games/blood/src/animatesprite.cpp @@ -133,7 +133,7 @@ static tspritetype *viewAddEffect(int nTSprite, VIEW_EFFECT nViewEffect) for (int i = 0; i < 16; i++) { auto pNSprite = viewInsertTSprite(pTSprite->sectnum, 32767, pTSprite); - int ang = (gFrameClock*2048)/120; + int ang = (PlayClock*2048)/120; int nRand1 = dword_172CE0[i][0]; int nRand2 = dword_172CE0[i][1]; int nRand3 = dword_172CE0[i][2]; @@ -432,7 +432,7 @@ static void viewApplyDefaultPal(tspritetype *pTSprite, sectortype const *pSector void viewProcessSprites(int32_t cX, int32_t cY, int32_t cZ, int32_t cA, int32_t smoothratio) { // shift before interpolating to increase precision. - int myclock = (gFrameClock<<3) + MulScale(4<<3, smoothratio, 16); + int myclock = (PlayClock<<3) + MulScale(4<<3, smoothratio, 16); assert(spritesortcnt <= maxspritesonscreen); gCameraAng = cA; int nViewSprites = spritesortcnt; diff --git a/source/games/blood/src/blood.cpp b/source/games/blood/src/blood.cpp index a8160dd74..8f4c3bb31 100644 --- a/source/games/blood/src/blood.cpp +++ b/source/games/blood/src/blood.cpp @@ -83,7 +83,7 @@ void StartLevel(MapRecord* level) { if (!level) return; gFrameCount = 0; - gFrameClock = 0; + PlayClock = 0; STAT_Update(0); EndLevel(); inputState.ClearAllInput(); @@ -291,7 +291,7 @@ void GameInterface::Ticker() } trProcessBusy(); - evProcess(gFrameClock); + evProcess(PlayClock); seqProcess(4); DoSectorPanning(); @@ -320,8 +320,8 @@ void GameInterface::Ticker() thinktime.Unclock(); gFrameCount++; - gFrameClock += kTicsPerFrame; - if (gFrameClock == 8) gameaction = ga_autosave; // let the game run for 1 frame before saving. + PlayClock += kTicsPerFrame; + if (PlayClock == 8) gameaction = ga_autosave; // let the game run for 1 frame before saving. for (int i = 0; i < 8; i++) { diff --git a/source/games/blood/src/choke.cpp b/source/games/blood/src/choke.cpp index d57b081f2..e528fd15f 100644 --- a/source/games/blood/src/choke.cpp +++ b/source/games/blood/src/choke.cpp @@ -50,7 +50,7 @@ void CChoke::animateChoke(int x, int y, int smoothratio) { if (!qav) return; - int myclock = gFrameClock + MulScale(4, smoothratio, 16); + int myclock = PlayClock + MulScale(4, smoothratio, 16); qav->x = x; qav->y = y; int vd = myclock - time; diff --git a/source/games/blood/src/d_menu.cpp b/source/games/blood/src/d_menu.cpp index aba4d22bb..d0509818c 100644 --- a/source/games/blood/src/d_menu.cpp +++ b/source/games/blood/src/d_menu.cpp @@ -84,9 +84,9 @@ void CGameMenuItemQAV::Draw(void) if (raw.Size() > 0) { auto data = (QAV*)raw.Data(); - int backFC = gFrameClock; + int backFC = PlayClock; int currentclock = I_GetBuildTime(); - gFrameClock = currentclock; + PlayClock = currentclock; int nTicks = currentclock - lastTick; lastTick = currentclock; duration -= nTicks; @@ -111,7 +111,7 @@ void CGameMenuItemQAV::Draw(void) else data->Draw(data->duration - duration, 10, 0, 0, false); - gFrameClock = backFC; + PlayClock = backFC; } } diff --git a/source/games/blood/src/eventq.cpp b/source/games/blood/src/eventq.cpp index c4ff6b90e..78cd6fc33 100644 --- a/source/games/blood/src/eventq.cpp +++ b/source/games/blood/src/eventq.cpp @@ -514,13 +514,13 @@ void evPost(int nIndex, int nType, unsigned int nDelta, COMMAND_ID command) assert(command != kCmdCallback); if (command == kCmdState) command = evGetSourceState(nType, nIndex) ? kCmdOn : kCmdOff; else if (command == kCmdNotState) command = evGetSourceState(nType, nIndex) ? kCmdOff : kCmdOn; - EVENT evn = { (int16_t)nIndex, (int8_t)nType, (int8_t)command, 0, gFrameClock + (int)nDelta }; + EVENT evn = { (int16_t)nIndex, (int8_t)nType, (int8_t)command, 0, PlayClock + (int)nDelta }; queue.insert(evn); } void evPost(int nIndex, int nType, unsigned int nDelta, CALLBACK_ID callback) { - EVENT evn = { (int16_t)nIndex, (int8_t)nType, kCmdCallback, (int16_t)callback, gFrameClock + (int)nDelta }; + EVENT evn = { (int16_t)nIndex, (int8_t)nType, kCmdCallback, (int16_t)callback, PlayClock + (int)nDelta }; queue.insert(evn); } diff --git a/source/games/blood/src/globals.cpp b/source/games/blood/src/globals.cpp index 01d373c64..400713eb0 100644 --- a/source/games/blood/src/globals.cpp +++ b/source/games/blood/src/globals.cpp @@ -31,7 +31,6 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. BEGIN_BLD_NS -int gFrameClock; int gFrameCount; int32_t gDetail = 4; diff --git a/source/games/blood/src/globals.h b/source/games/blood/src/globals.h index 85ff68d0f..7695906fa 100644 --- a/source/games/blood/src/globals.h +++ b/source/games/blood/src/globals.h @@ -30,7 +30,6 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. BEGIN_BLD_NS -extern int gFrameClock; extern int gFrameCount; enum { MAXPLAYERNAME = 16 }; diff --git a/source/games/blood/src/loadsave.cpp b/source/games/blood/src/loadsave.cpp index 425beb218..db6c86062 100644 --- a/source/games/blood/src/loadsave.cpp +++ b/source/games/blood/src/loadsave.cpp @@ -624,7 +624,7 @@ void SerializeState(FSerializer& arc) arc.Array("sector_filler", qsector_filler, numsectors) ("visibility", gVisibility) - ("frameclock", gFrameClock) + ("frameclock", PlayClock) ("framecount", gFrameCount) .Array("basewall", baseWall, numwalls) .SparseArray("basesprite", baseSprite, kMaxSprites, activeSprites) diff --git a/source/games/blood/src/nnexts.cpp b/source/games/blood/src/nnexts.cpp index 152f0a386..f90fb1199 100644 --- a/source/games/blood/src/nnexts.cpp +++ b/source/games/blood/src/nnexts.cpp @@ -4630,7 +4630,7 @@ void useTargetChanger(XSPRITE* pXSource, spritetype* pSprite) { return; } // lets try to look for target that fits better by distance - else if ((gFrameClock & 256) != 0 && (pXSprite->target < 0 || aiFightGetTargetDist(pSprite, pDudeInfo, pTarget) >= mDist)) { + else if ((PlayClock & 256) != 0 && (pXSprite->target < 0 || aiFightGetTargetDist(pSprite, pDudeInfo, pTarget) >= mDist)) { pTarget = aiFightGetTargetInRange(pSprite, 0, mDist, pXSource->data1, pXSource->data2); if (pTarget != NULL) { pXTarget = &xsprite[pTarget->extra]; @@ -4660,7 +4660,7 @@ void useTargetChanger(XSPRITE* pXSource, spritetype* pSprite) { } } - if ((pXSprite->target < 0 || pPlayer != NULL) && (gFrameClock & 32) != 0) { + if ((pXSprite->target < 0 || pPlayer != NULL) && (PlayClock & 32) != 0) { // try find first target that dude can see int nSprite; StatIterator it(kStatDude); @@ -4708,7 +4708,7 @@ void useTargetChanger(XSPRITE* pXSource, spritetype* pSprite) { } // got no target - let's ask mates if they have targets - if ((pXSprite->target < 0 || pPlayer != NULL) && pXSource->data2 == 1 && (gFrameClock & 64) != 0) { + if ((pXSprite->target < 0 || pPlayer != NULL) && pXSource->data2 == 1 && (PlayClock & 64) != 0) { spritetype* pMateTarget = NULL; if ((pMateTarget = aiFightGetMateTargets(pXSprite)) != NULL && pMateTarget->extra > 0) { XSPRITE* pXMateTarget = &xsprite[pMateTarget->extra]; @@ -4846,10 +4846,10 @@ void playerQavSceneDraw(PLAYER* pPlayer, int a2, double a3, double a4, int a5, i if (pQavScene->qavResrc != NULL) { QAV* pQAV = pQavScene->qavResrc; - int v4 = (pPlayer->weaponTimer == 0) ? ((gFrameClock + MulScale(4, smoothratio, 16)) % pQAV->duration) : pQAV->duration - pPlayer->weaponTimer; + int v4 = (pPlayer->weaponTimer == 0) ? ((PlayClock + MulScale(4, smoothratio, 16)) % pQAV->duration) : pQAV->duration - pPlayer->weaponTimer; int flags = 2; int nInv = powerupCheck(pPlayer, kPwUpShadowCloak); - if (nInv >= 120 * 8 || (nInv != 0 && (gFrameClock & 32))) { + if (nInv >= 120 * 8 || (nInv != 0 && (PlayClock & 32))) { a2 = -128; flags |= 1; } diff --git a/source/games/blood/src/replace.cpp b/source/games/blood/src/replace.cpp index 44029a6ac..5ab7c7e1c 100644 --- a/source/games/blood/src/replace.cpp +++ b/source/games/blood/src/replace.cpp @@ -37,7 +37,7 @@ int qanimateoffs(int a1, int a2) int frames = picanm[a1].num; if (frames > 0) { - int const frameClock = gFrameClock; + int const frameClock = PlayClock; int vd; if ((a2&0xc000) == 0x8000) vd = (Bcrc32(&a2, 2, 0)+frameClock)>>(picanm[a1].sf&PICANM_ANIMSPEED_MASK); diff --git a/source/games/blood/src/sbar.cpp b/source/games/blood/src/sbar.cpp index ad1132c62..057c3e6bb 100644 --- a/source/games/blood/src/sbar.cpp +++ b/source/games/blood/src/sbar.cpp @@ -313,7 +313,7 @@ private: if (powerups[i].remainingDuration) { int remainingSeconds = powerups[i].remainingDuration / 100; - if (remainingSeconds > warningTime || (gFrameClock & 32)) + if (remainingSeconds > warningTime || (PlayClock & 32)) { DrawStatMaskedSprite(powerups[i].nTile, x, y + powerups[i].yOffset, 0, 0, 256, (int)(65536 * powerups[i].nScaleRatio), DI_SCREEN_LEFT_CENTER); } @@ -476,14 +476,14 @@ private: { FString gTempStr; int x = 1, y = 1; - if (team_ticker[0] == 0 || (gFrameClock & 8)) + if (team_ticker[0] == 0 || (PlayClock & 8)) { SBar_DrawString(this, smallf, GStrings("TXT_COLOR_BLUE"), x, y, 0, CR_LIGHTBLUE, 1., -1, -1, 1, 1); gTempStr.Format("%-3d", team_score[0]); SBar_DrawString(this, smallf, gTempStr, x, y + 10, 0, CR_LIGHTBLUE, 1., -1, -1, 1, 1); } x = -2; - if (team_ticker[1] == 0 || (gFrameClock & 8)) + if (team_ticker[1] == 0 || (PlayClock & 8)) { SBar_DrawString(this, smallf, GStrings("TXT_COLOR_RED"), x, y, DI_TEXT_ALIGN_RIGHT, CR_BRICK, 1., -1, -1, 1, 1); gTempStr.Format("%3d", team_score[1]); @@ -501,7 +501,7 @@ private: { assert(0 == team || 1 == team); // 0: blue, 1: red - if (team_ticker[team] == 0 || (gFrameClock & 8)) + if (team_ticker[team] == 0 || (PlayClock & 8)) { if (show) DrawStatNumber("%d", team_score[team], kSBarNumberInv, -30, team ? 25 : -10, 0, team ? 2 : 10, 512, 65536 * 0.75, DI_SCREEN_RIGHT_CENTER); @@ -574,7 +574,7 @@ private: DrawStatMaskedSprite(2200, 160, 200, 0, nPalette, RS_CENTERBOTTOM); DrawPackItemInStatusBar(pPlayer, 265, 186, 260, 172); - if (pXSprite->health >= 16 || (gFrameClock & 16) || pXSprite->health == 0) + if (pXSprite->health >= 16 || (PlayClock & 16) || pXSprite->health == 0) { DrawStatNumber("%3d", pXSprite->health >> 4, 2190, 86, 183, 0, 0); } @@ -648,7 +648,7 @@ private: BeginHUD(320, 200, 1); DrawStatSprite(2201, 34, 187 - 200, 16, nPalette); - if (pXSprite->health >= 16 || (gFrameClock & 16) || pXSprite->health == 0) + if (pXSprite->health >= 16 || (PlayClock & 16) || pXSprite->health == 0) { DrawStatNumber("%3d", pXSprite->health >> 4, 2190, 8, 183 - 200, 0, 0); } diff --git a/source/games/blood/src/sectorfx.cpp b/source/games/blood/src/sectorfx.cpp index e103cf760..84eea1e80 100644 --- a/source/games/blood/src/sectorfx.cpp +++ b/source/games/blood/src/sectorfx.cpp @@ -163,7 +163,7 @@ void DoSectorLighting(void) { t2 = MulScale(t2, pXSector->busy, 16); } - int v4 = GetWaveValue(t1, pXSector->phase*8+pXSector->freq*gFrameClock, t2); + int v4 = GetWaveValue(t1, pXSector->phase*8+pXSector->freq*PlayClock, t2); if (pXSector->shadeFloor) { sector[nSector].floorshade = ClipRange(sector[nSector].floorshade+v4, -128, 127); diff --git a/source/games/blood/src/view.cpp b/source/games/blood/src/view.cpp index e9fc26292..e41ff6df3 100644 --- a/source/games/blood/src/view.cpp +++ b/source/games/blood/src/view.cpp @@ -237,7 +237,7 @@ void CalcOtherPosition(spritetype *pSprite, int *pX, int *pY, int *pZ, int *vsec *pX += MulScale(vX, othercameradist, 16); *pY += MulScale(vY, othercameradist, 16); *pZ += MulScale(vZ, othercameradist, 16); - int myclock = gFrameClock + MulScale(4, smoothratio, 16); + int myclock = PlayClock + MulScale(4, smoothratio, 16); othercameradist = ClipHigh(othercameradist+((myclock-othercameraclock)<<10), 65536); othercameraclock = myclock; assert(*vsectnum >= 0 && *vsectnum < kMaxSectors); @@ -284,7 +284,7 @@ void CalcPosition(spritetype *pSprite, int *pX, int *pY, int *pZ, int *vsectnum, *pX += MulScale(vX, cameradist, 16); *pY += MulScale(vY, cameradist, 16); *pZ += MulScale(vZ, cameradist, 16); - int myclock = gFrameClock + MulScale(4, smoothratio, 16); + int myclock = PlayClock + MulScale(4, smoothratio, 16); cameradist = ClipHigh(cameradist+((myclock-cameraclock)<<10), 65536); cameraclock = myclock; assert(*vsectnum >= 0 && *vsectnum < kMaxSectors); @@ -408,7 +408,7 @@ void viewUpdateDelirium(void) if ((powerCount = powerupCheck(gView, kPwUpDeliriumShroom)) != 0) { int tilt1 = 170, tilt2 = 170, pitch = 20; - int timer = gFrameClock*4; + int timer = PlayClock*4; if (powerCount < 512) { int powerScale = IntToFixed(powerCount) / 512; @@ -633,7 +633,7 @@ void viewDrawScreen(bool sceneonly) } cZ += xs_CRoundToInt(cH.asq16() / 6553.6); cameradist = -1; - cameraclock = gFrameClock +MulScale(4, (int)gInterpolate, 16); + cameraclock = PlayClock +MulScale(4, (int)gInterpolate, 16); } else { @@ -657,7 +657,7 @@ void viewDrawScreen(bool sceneonly) else if (v4 && gNetPlayers > 1) { #if 0 // needs to be redone for pure hardware rendering. - int tmp = (gFrameClock / 240) % (gNetPlayers - 1); + int tmp = (PlayClock / 240) % (gNetPlayers - 1); int i = connecthead; while (1) { @@ -669,7 +669,7 @@ void viewDrawScreen(bool sceneonly) tmp--; } PLAYER* pOther = &gPlayer[i]; - //othercameraclock = gFrameClock + MulScale(4, (int)gInterpolate, 16);; + //othercameraclock = PlayClock + MulScale(4, (int)gInterpolate, 16);; if (!tileData(4079)) { TileFiles.tileCreate(4079, 128, 128); @@ -746,7 +746,7 @@ void viewDrawScreen(bool sceneonly) } else { - othercameraclock = gFrameClock + MulScale(4, (int)gInterpolate, 16); + othercameraclock = PlayClock + MulScale(4, (int)gInterpolate, 16); } if (!bDelirium) diff --git a/source/games/blood/src/weapon.cpp b/source/games/blood/src/weapon.cpp index 5e9c2cd61..df6ca7a06 100644 --- a/source/games/blood/src/weapon.cpp +++ b/source/games/blood/src/weapon.cpp @@ -268,7 +268,7 @@ void WeaponDraw(PLAYER *pPlayer, int shade, double xpos, double ypos, int palnum // Double shotgun fix from BloodGDX. if (/*!IsOriginalDemo() &&*/ (pPlayer->weaponState == -1 || (pPlayer->curWeapon == 3 && pPlayer->weaponState == 7)) && isOriginalQAV()) duration = pQAV->duration - 1; - else duration = (gFrameClock + MulScale(4, smoothratio, 16)) % pQAV->duration; + else duration = (PlayClock + MulScale(4, smoothratio, 16)) % pQAV->duration; } else duration = pQAV->duration - pPlayer->weaponTimer; @@ -276,7 +276,7 @@ void WeaponDraw(PLAYER *pPlayer, int shade, double xpos, double ypos, int palnum pQAV->y = int(ypos); int flags = 2; int nInv = powerupCheck(pPlayer, kPwUpShadowCloak); - if (nInv >= 120 * 8 || (nInv != 0 && (gFrameClock & 32))) + if (nInv >= 120 * 8 || (nInv != 0 && (PlayClock & 32))) { shade = -128; flags |= 1; @@ -1813,12 +1813,12 @@ int processSprayCan(PLAYER *pPlayer) { pPlayer->weaponState = 7; pPlayer->fuseTime = 0; - pPlayer->throwTime = gFrameClock; + pPlayer->throwTime = PlayClock; } return 1; case 7: { - pPlayer->throwPower = ClipHigh(DivScale(gFrameClock-pPlayer->throwTime,240, 16), 65536); + pPlayer->throwPower = ClipHigh(DivScale(PlayClock-pPlayer->throwTime,240, 16), 65536); if (!(pPlayer->input.actions & SB_FIRE)) { if (!pPlayer->fuseTime) @@ -1851,12 +1851,12 @@ char processTNT(PLAYER *pPlayer) { pPlayer->weaponState = 6; pPlayer->fuseTime = 0; - pPlayer->throwTime = gFrameClock; + pPlayer->throwTime = PlayClock; } return 1; case 6: { - pPlayer->throwPower = ClipHigh(DivScale(gFrameClock-pPlayer->throwTime,240, 16), 65536); + pPlayer->throwPower = ClipHigh(DivScale(PlayClock-pPlayer->throwTime,240, 16), 65536); if (!(pPlayer->input.actions & SB_FIRE)) { if (!pPlayer->fuseTime) @@ -1875,7 +1875,7 @@ char processProxy(PLAYER *pPlayer) switch (pPlayer->weaponState) { case 9: - pPlayer->throwPower = ClipHigh(DivScale(gFrameClock-pPlayer->throwTime,240, 16), 65536); + pPlayer->throwPower = ClipHigh(DivScale(PlayClock-pPlayer->throwTime,240, 16), 65536); pPlayer->weaponTimer = 0; if (!(pPlayer->input.actions & SB_FIRE)) { @@ -1892,7 +1892,7 @@ char processRemote(PLAYER *pPlayer) switch (pPlayer->weaponState) { case 13: - pPlayer->throwPower = ClipHigh(DivScale(gFrameClock-pPlayer->throwTime,240, 16), 65536); + pPlayer->throwPower = ClipHigh(DivScale(PlayClock-pPlayer->throwTime,240, 16), 65536); if (!(pPlayer->input.actions & SB_FIRE)) { pPlayer->weaponState = 11; @@ -2261,7 +2261,7 @@ void WeaponProcess(PLAYER *pPlayer) { case 3: pPlayer->weaponState = 6; pPlayer->fuseTime = -1; - pPlayer->throwTime = gFrameClock; + pPlayer->throwTime = PlayClock; StartQAV(pPlayer, 21, nClientExplodeBundle, 0); return; } @@ -2272,7 +2272,7 @@ void WeaponProcess(PLAYER *pPlayer) { case 7: pPlayer->weaponQav = 27; pPlayer->weaponState = 9; - pPlayer->throwTime = gFrameClock; + pPlayer->throwTime = PlayClock; return; } break; @@ -2282,7 +2282,7 @@ void WeaponProcess(PLAYER *pPlayer) { case 10: pPlayer->weaponQav = 36; pPlayer->weaponState = 13; - pPlayer->throwTime = gFrameClock; + pPlayer->throwTime = PlayClock; return; case 11: pPlayer->weaponState = 12; diff --git a/source/games/duke/src/animatesprites_d.cpp b/source/games/duke/src/animatesprites_d.cpp index 331bf986a..c645ad46d 100644 --- a/source/games/duke/src/animatesprites_d.cpp +++ b/source/games/duke/src/animatesprites_d.cpp @@ -158,7 +158,7 @@ void animatesprites_d(int x, int y, int a, int smoothratio) case SECTOREFFECTOR: if (t->lotag == 27 && ud.recstat == 1) { - t->picnum = 11 + ((ud.levelclock >> 3) & 1); + t->picnum = 11 + ((PlayClock >> 3) & 1); t->cstat |= 128; } else @@ -252,7 +252,7 @@ void animatesprites_d(int x, int y, int a, int smoothratio) t->z -= (4 << 8); break; case CRYSTALAMMO: - t->shade = bsin(ud.levelclock << 4, -10); + t->shade = bsin(PlayClock << 4, -10); continue; case VIEWSCREEN: case VIEWSCREEN2: @@ -270,10 +270,10 @@ void animatesprites_d(int x, int y, int a, int smoothratio) break; case SHRINKSPARK: - t->picnum = SHRINKSPARK + ((ud.levelclock >> 4) & 3); + t->picnum = SHRINKSPARK + ((PlayClock >> 4) & 3); break; case GROWSPARK: - t->picnum = GROWSPARK + ((ud.levelclock >> 4) & 3); + t->picnum = GROWSPARK + ((PlayClock >> 4) & 3); break; case RPG: if (hw_models && md_tilehasmodel(s->picnum, s->pal) >= 0) @@ -653,7 +653,7 @@ void animatesprites_d(int x, int y, int a, int smoothratio) if (t->picnum == EXPLOSION2) { ps[screenpeek].visibility = -127; - lastvisinc = ud.levelclock + 32; + lastvisinc = PlayClock + 32; } t->shade = -127; break; diff --git a/source/games/duke/src/animatesprites_r.cpp b/source/games/duke/src/animatesprites_r.cpp index d093d0a9d..18fbd9be6 100644 --- a/source/games/duke/src/animatesprites_r.cpp +++ b/source/games/duke/src/animatesprites_r.cpp @@ -148,7 +148,7 @@ void animatesprites_r(int x, int y, int a, int smoothratio) case SECTOREFFECTOR: if (t->lotag == 27 && ud.recstat == 1) { - t->picnum = 11 + ((ud.levelclock >> 3) & 1); + t->picnum = 11 + ((PlayClock >> 3) & 1); t->cstat |= 128; } else @@ -183,7 +183,7 @@ void animatesprites_r(int x, int y, int a, int smoothratio) case RESPAWNMARKERRED: case RESPAWNMARKERYELLOW: case RESPAWNMARKERGREEN: - t->picnum = 861 + ((ud.levelclock >> 4) & 13); + t->picnum = 861 + ((PlayClock >> 4) & 13); if (s->picnum == RESPAWNMARKERRED) t->pal = 0; else if (s->picnum == RESPAWNMARKERYELLOW) @@ -250,21 +250,21 @@ void animatesprites_r(int x, int y, int a, int smoothratio) t->z -= (4 << 8); break; case CRYSTALAMMO: - t->shade = bsin(ud.levelclock << 4, -10); + t->shade = bsin(PlayClock << 4, -10); break; case SHRINKSPARK: if (Owner && (Owner->picnum == CHEER || Owner->picnum == CHEERSTAYPUT) && isRRRA()) { - t->picnum = CHEERBLADE + ((ud.levelclock >> 4) & 3); + t->picnum = CHEERBLADE + ((PlayClock >> 4) & 3); t->shade = -127; } else - t->picnum = SHRINKSPARK + ((ud.levelclock >> 4) & 7); + t->picnum = SHRINKSPARK + ((PlayClock >> 4) & 7); break; case CHEERBOMB: if (isRRRA()) { - t->picnum = CHEERBOMB + ((ud.levelclock >> 4) & 3); + t->picnum = CHEERBOMB + ((PlayClock >> 4) & 3); break; } else goto default_case; @@ -272,10 +272,10 @@ void animatesprites_r(int x, int y, int a, int smoothratio) if (isRRRA() && Owner) { if (Owner->picnum == MINION && Owner->pal == 8) - t->picnum = RRTILE3500 + ((ud.levelclock >> 4) % 6); + t->picnum = RRTILE3500 + ((PlayClock >> 4) % 6); else if (Owner->picnum == MINION && Owner->pal == 19) { - t->picnum = RRTILE5090 + ((ud.levelclock >> 4) & 3); + t->picnum = RRTILE5090 + ((PlayClock >> 4) & 3); t->shade = -127; } else if (Owner->picnum == MAMA) @@ -291,10 +291,10 @@ void animatesprites_r(int x, int y, int a, int smoothratio) t->picnum = RRTILE7274 + k; } else - t->picnum = SPIT + ((ud.levelclock >> 4) & 3); + t->picnum = SPIT + ((PlayClock >> 4) & 3); } else - t->picnum = SPIT + ((ud.levelclock >> 4) & 3); + t->picnum = SPIT + ((PlayClock >> 4) & 3); break; case EMPTYBIKE: if (!isRRRA()) goto default_case; @@ -803,12 +803,12 @@ void animatesprites_r(int x, int y, int a, int smoothratio) if (t->picnum == EXPLOSION2) { ps[screenpeek].visibility = -127; - lastvisinc = ud.levelclock + 32; + lastvisinc = PlayClock + 32; t->pal = 0; } else if (t->picnum == FIRELASER) { - t->picnum = FIRELASER + ((ud.levelclock >> 2) & 5); + t->picnum = FIRELASER + ((PlayClock >> 2) & 5); } t->shade = -127; break; @@ -904,11 +904,11 @@ void animatesprites_r(int x, int y, int a, int smoothratio) t->shade = -127; break; case RRTILE2034: - t->picnum = RRTILE2034 + ((ud.levelclock >> 2) & 1); + t->picnum = RRTILE2034 + ((PlayClock >> 2) & 1); break; case RRTILE2944: t->shade = -127; - t->picnum = RRTILE2944 + ((ud.levelclock >> 2) & 4); + t->picnum = RRTILE2944 + ((PlayClock >> 2) & 4); break; case PLAYERONWATER: diff --git a/source/games/duke/src/game_misc.cpp b/source/games/duke/src/game_misc.cpp index 5da12af5c..c806bad00 100644 --- a/source/games/duke/src/game_misc.cpp +++ b/source/games/duke/src/game_misc.cpp @@ -126,7 +126,7 @@ void FTA(int q, struct player_struct* p) if (q < 0 || gamestate != GS_LEVEL) return; - if (p->ftq != q || (ud.levelclock - p->ftt > TICRATE && q != QUOTE_DEAD)) + if (p->ftq != q || (PlayClock - p->ftt > TICRATE && q != QUOTE_DEAD)) { p->ftq = q; auto qu = quoteMgr.GetQuote(q); @@ -144,7 +144,7 @@ void FTA(int q, struct player_struct* p) } } } - p->ftt = ud.levelclock; + p->ftt = PlayClock; } //========================================================================== @@ -324,16 +324,16 @@ void cameratext(DDukeActor *cam) drawitem(TILE_CAMCORNER + 1, 24, 163, true, true); drawitem(TILE_CAMCORNER + 1, 320 - 26, 163, false, true); - if (ud.levelclock & 16) + if (PlayClock & 16) drawitem(TILE_CAMLIGHT, 46, 32, false, false); } else { - int flipbits = (ud.levelclock << 1) & 48; + int flipbits = (PlayClock << 1) & 48; for (int x = -64; x < 394; x += 64) for (int y = 0; y < 200; y += 64) - drawitem(TILE_STATIC, x, y, !!(ud.levelclock & 8), !!(ud.levelclock & 16)); + drawitem(TILE_STATIC, x, y, !!(PlayClock & 8), !!(PlayClock & 16)); } } @@ -566,7 +566,7 @@ bool GameInterface::DrawAutomapPlayer(int cposx, int cposy, int czoom, int cang, { auto& pp = ps[p]; if (pspr->xvel > 16 && pp.on_ground) - i = TILE_APLAYERTOP + ((ud.levelclock >> 4) & 3); + i = TILE_APLAYERTOP + ((PlayClock >> 4) & 3); else i = TILE_APLAYERTOP; diff --git a/source/games/duke/src/gameloop.cpp b/source/games/duke/src/gameloop.cpp index 53990dfbb..a8321e7d4 100644 --- a/source/games/duke/src/gameloop.cpp +++ b/source/games/duke/src/gameloop.cpp @@ -99,8 +99,8 @@ void GameInterface::Ticker() dotorch(); r_NoInterpolate = false; - ud.levelclock+= 4; // This must be at the end of this block so that the first tic receives a value of 0! - if (ud.levelclock == 8) gameaction = ga_autosave; // let the game run for 1 frame before saving. + PlayClock+= 4; // This must be at the end of this block so that the first tic receives a value of 0! + if (PlayClock == 8) gameaction = ga_autosave; // let the game run for 1 frame before saving. } else r_NoInterpolate = true; diff --git a/source/games/duke/src/hudweapon_r.cpp b/source/games/duke/src/hudweapon_r.cpp index fe9694fd0..346b2353e 100644 --- a/source/games/duke/src/hudweapon_r.cpp +++ b/source/games/duke/src/hudweapon_r.cpp @@ -78,7 +78,7 @@ void displaymasks_r(int snum, double smoothratio) { //int pin = 0; // to get the proper clock value with regards to interpolation we have add a smoothratio based offset to the value. - double interpclock = ud.levelclock + (TICSPERFRAME/65536.) * smoothratio; + double interpclock = PlayClock + (TICSPERFRAME/65536.) * smoothratio; int pin = RS_STRETCH; hud_drawsprite((320 - (tileWidth(SCUBAMASK) >> 1) - 15), (200 - (tileHeight(SCUBAMASK) >> 1) + bsinf(interpclock, -10)), 49152, 0, SCUBAMASK, 0, p, 2 + 16 + pin); hud_drawsprite((320 - tileWidth(SCUBAMASK + 4)), (200 - tileHeight(SCUBAMASK + 4)), 65536, 0, SCUBAMASK + 4, 0, p, 2 + 16 + pin); diff --git a/source/games/duke/src/player.cpp b/source/games/duke/src/player.cpp index cbf456483..cb731e9e2 100644 --- a/source/games/duke/src/player.cpp +++ b/source/games/duke/src/player.cpp @@ -1122,7 +1122,7 @@ bool view(struct player_struct* pp, int* vx, int* vy, int* vz, short* vsectnum, *vy = (*vy) + MulScale(ny, cameradist, 16); *vz = (*vz) + MulScale(nz, cameradist, 16); - int myclock = ud.levelclock + int(TICSPERFRAME/65536. * smoothratio); + int myclock = PlayClock + int(TICSPERFRAME/65536. * smoothratio); if (cameraclock == INT_MIN) cameraclock = myclock; // third person view was just started. cameradist = min(cameradist + ((myclock - cameraclock) << 10), 65536); diff --git a/source/games/duke/src/player_d.cpp b/source/games/duke/src/player_d.cpp index b86681a8a..6f23e1250 100644 --- a/source/games/duke/src/player_d.cpp +++ b/source/games/duke/src/player_d.cpp @@ -1600,7 +1600,7 @@ int doincrements_d(struct player_struct* p) p->knuckle_incs++; if (p->knuckle_incs == 10 && !isWW2GI()) { - if (ud.levelclock > 1024) + if (PlayClock > 1024) if (snum == screenpeek || ud.coop == 1) { if (rand() & 1) @@ -2274,7 +2274,7 @@ static void operateweapon(int snum, ESyncBits actions, int psect) { fi.shoot(pact, SHOTSPARK1); S_PlayActorSound(PISTOL_FIRE, pact); - lastvisinc = ud.levelclock + 32; + lastvisinc = PlayClock + 32; p->visibility = 0; } @@ -2328,7 +2328,7 @@ static void operateweapon(int snum, ESyncBits actions, int psect) S_PlayActorSound(SHOTGUN_FIRE, pact); - lastvisinc = ud.levelclock + 32; + lastvisinc = PlayClock + 32; p->visibility = 0; } @@ -2383,7 +2383,7 @@ static void operateweapon(int snum, ESyncBits actions, int psect) S_PlayActorSound(CHAINGUN_FIRE, pact); fi.shoot(pact, CHAINGUN); - lastvisinc = ud.levelclock + 32; + lastvisinc = PlayClock + 32; p->visibility = 0; checkavailweapon(p); @@ -2434,7 +2434,7 @@ static void operateweapon(int snum, ESyncBits actions, int psect) { // make them visible if not set... p->visibility = 0; - lastvisinc = ud.levelclock + 32; + lastvisinc = PlayClock + 32; } checkavailweapon(p); //#endif @@ -2448,7 +2448,7 @@ static void operateweapon(int snum, ESyncBits actions, int psect) { // make them visible if not set... p->visibility = 0; - lastvisinc = ud.levelclock + 32; + lastvisinc = PlayClock + 32; } checkavailweapon(p); } @@ -2467,7 +2467,7 @@ static void operateweapon(int snum, ESyncBits actions, int psect) { p->visibility = 0; //flashColor = 176 + (252 << 8) + (120 << 16); - lastvisinc = ud.levelclock + 32; + lastvisinc = PlayClock + 32; checkavailweapon(p); } } @@ -2475,7 +2475,7 @@ static void operateweapon(int snum, ESyncBits actions, int psect) { p->okickback_pic = p->kickback_pic = 0; p->visibility = 0; - lastvisinc = ud.levelclock + 32; + lastvisinc = PlayClock + 32; checkavailweapon(p); } else p->kickback_pic++; @@ -2493,7 +2493,7 @@ static void operateweapon(int snum, ESyncBits actions, int psect) (p->kickback_pic & 1)) { p->visibility = 0; - lastvisinc = ud.levelclock + 32; + lastvisinc = PlayClock + 32; fi.shoot(pact, RPG); p->ammo_amount[DEVISTATOR_WEAPON]--; checkavailweapon(p); @@ -2503,7 +2503,7 @@ static void operateweapon(int snum, ESyncBits actions, int psect) else if (p->kickback_pic & 1) { p->visibility = 0; - lastvisinc = ud.levelclock + 32; + lastvisinc = PlayClock + 32; fi.shoot(pact, RPG); p->ammo_amount[DEVISTATOR_WEAPON]--; checkavailweapon(p); @@ -2523,7 +2523,7 @@ static void operateweapon(int snum, ESyncBits actions, int psect) p->ammo_amount[p->curr_weapon]--; p->visibility = 0; - lastvisinc = ud.levelclock + 32; + lastvisinc = PlayClock + 32; fi.shoot(pact, FREEZEBLAST); checkavailweapon(p); } @@ -2606,7 +2606,7 @@ static void operateweapon(int snum, ESyncBits actions, int psect) if (p->kickback_pic == 4) { p->ammo_amount[RPG_WEAPON]--; - lastvisinc = ud.levelclock + 32; + lastvisinc = PlayClock + 32; p->visibility = 0; fi.shoot(pact, RPG); checkavailweapon(p); diff --git a/source/games/duke/src/player_r.cpp b/source/games/duke/src/player_r.cpp index 794da0ff9..9747b4e40 100644 --- a/source/games/duke/src/player_r.cpp +++ b/source/games/duke/src/player_r.cpp @@ -1486,7 +1486,7 @@ int doincrements_r(struct player_struct* p) } S_PlayActorSound(snd, pact); } - else if (ud.levelclock > 1024) + else if (PlayClock > 1024) if (snum == screenpeek || ud.coop == 1) { if (rand() & 1) @@ -2806,7 +2806,7 @@ static void operateweapon(int snum, ESyncBits actions, int psect) p->noise_radius = 8192; madenoise(snum); - lastvisinc = ud.levelclock + 32; + lastvisinc = PlayClock + 32; p->visibility = 0; if (psectlotag != 857) { @@ -2885,7 +2885,7 @@ static void operateweapon(int snum, ESyncBits actions, int psect) p->noise_radius = 8192; madenoise(snum); - lastvisinc = ud.levelclock + 32; + lastvisinc = PlayClock + 32; p->visibility = 0; } @@ -2996,7 +2996,7 @@ static void operateweapon(int snum, ESyncBits actions, int psect) fi.shoot(pact, CHAINGUN); p->noise_radius = 8192; madenoise(snum); - lastvisinc = ud.levelclock + 32; + lastvisinc = PlayClock + 32; p->visibility = 0; if (psectlotag != 857) @@ -3052,7 +3052,7 @@ static void operateweapon(int snum, ESyncBits actions, int psect) if (p->kickback_pic == 2 || p->kickback_pic == 4) { p->visibility = 0; - lastvisinc = ud.levelclock + 32; + lastvisinc = PlayClock + 32; S_PlayActorSound(CHAINGUN_FIRE, pact); fi.shoot(pact, SHOTSPARK1); p->noise_radius = 16384; @@ -3079,7 +3079,7 @@ static void operateweapon(int snum, ESyncBits actions, int psect) if (p->kickback_pic == 2 || p->kickback_pic == 4) { p->visibility = 0; - lastvisinc = ud.levelclock + 32; + lastvisinc = PlayClock + 32; S_PlayActorSound(CHAINGUN_FIRE, pact); fi.shoot(pact, CHAINGUN); p->noise_radius = 16384; @@ -3137,7 +3137,7 @@ static void operateweapon(int snum, ESyncBits actions, int psect) { p->ammo_amount[ALIENBLASTER_WEAPON]--; p->visibility = 0; - lastvisinc = ud.levelclock + 32; + lastvisinc = PlayClock + 32; checkavailweapon(p); } else if (p->kickback_pic == 12) @@ -3246,7 +3246,7 @@ static void operateweapon(int snum, ESyncBits actions, int psect) p->ammo_amount[CROSSBOW_WEAPON]--; if (p->ammo_amount[DYNAMITE_WEAPON]) p->ammo_amount[DYNAMITE_WEAPON]--; - lastvisinc = ud.levelclock + 32; + lastvisinc = PlayClock + 32; p->visibility = 0; fi.shoot(pact, RPG); p->noise_radius = 32768; @@ -3264,7 +3264,7 @@ static void operateweapon(int snum, ESyncBits actions, int psect) if (p->kickback_pic == 4) { p->ammo_amount[CHICKEN_WEAPON]--; - lastvisinc = ud.levelclock + 32; + lastvisinc = PlayClock + 32; p->visibility = 0; fi.shoot(pact, RPG2); p->noise_radius = 32768; diff --git a/source/games/duke/src/player_w.cpp b/source/games/duke/src/player_w.cpp index 52947b3af..98706c196 100644 --- a/source/games/duke/src/player_w.cpp +++ b/source/games/duke/src/player_w.cpp @@ -78,7 +78,7 @@ void DoFire(struct player_struct* p, short snum) if (!(aplWeaponFlags[p->curr_weapon][snum] & WEAPON_FLAG_NOVISIBLE)) { // make them visible if not set... - lastvisinc = ud.levelclock + 32; + lastvisinc = PlayClock + 32; p->visibility = 0; } @@ -400,7 +400,7 @@ void operateweapon_ww(int snum, ESyncBits actions, int psect) if (!(aplWeaponFlags[p->curr_weapon][snum] & WEAPON_FLAG_NOVISIBLE)) { // make them visible if not set... - lastvisinc = ud.levelclock + 32; + lastvisinc = PlayClock + 32; p->visibility = 0; } SetGameVarID(g_iWeaponVarID, p->curr_weapon, p->GetActor(), snum); diff --git a/source/games/duke/src/premap.cpp b/source/games/duke/src/premap.cpp index 82fe01897..fb4893935 100644 --- a/source/games/duke/src/premap.cpp +++ b/source/games/duke/src/premap.cpp @@ -736,7 +736,7 @@ void prelevel_common(int g) void resettimevars(void) { cloudclock = 0; - ud.levelclock = 0; + PlayClock = 0; if (camsprite != nullptr) camsprite->temp_data[0] = 0; } diff --git a/source/games/duke/src/render.cpp b/source/games/duke/src/render.cpp index 66a67968a..802f8b6f2 100644 --- a/source/games/duke/src/render.cpp +++ b/source/games/duke/src/render.cpp @@ -641,7 +641,7 @@ void displayrooms(int snum, double smoothratio) if (!isRRRA() || !fogactive) { - if (ud.levelclock < lastvisinc) + if (PlayClock < lastvisinc) { if (abs(p->visibility - ud.const_visibility) > 8) p->visibility += (ud.const_visibility - p->visibility) >> 2; diff --git a/source/games/duke/src/savegame.cpp b/source/games/duke/src/savegame.cpp index e5fc15bac..e652d31a8 100644 --- a/source/games/duke/src/savegame.cpp +++ b/source/games/duke/src/savegame.cpp @@ -329,7 +329,7 @@ void GameInterface::SerializeGameState(FSerializer& arc) ("coop", ud.coop) ("marker", ud.marker) ("ffire", ud.ffire) - ("levelclock", ud.levelclock) + ("levelclock", PlayClock) ("bomb_tag", ud.bomb_tag) .Array("sectorextra", sectorextra, numsectors) diff --git a/source/games/duke/src/sbar_d.cpp b/source/games/duke/src/sbar_d.cpp index 67658ff86..992d9f673 100644 --- a/source/games/duke/src/sbar_d.cpp +++ b/source/games/duke/src/sbar_d.cpp @@ -158,7 +158,7 @@ public: imgScale = baseScale / img->GetDisplayHeight(); DrawGraphic(img, 2, -1.5, DI_ITEM_LEFT_BOTTOM, 1., -1, -1, imgScale, imgScale); - if (!althud_flashing || p->last_extra > (gs.max_player_health >> 2) || (ud.levelclock & 32) || (p->GetActor()->s.pal == 1 && p->last_extra < 2)) + if (!althud_flashing || p->last_extra > (gs.max_player_health >> 2) || (PlayClock & 32) || (p->GetActor()->s.pal == 1 && p->last_extra < 2)) { int s = -8; if (althud_flashing && p->last_extra > gs.max_player_health) @@ -207,7 +207,7 @@ public: imgX += (imgX * 0.6) * (strlen - 1); } - if (weapon != KNEE_WEAPON && (!althud_flashing || ud.levelclock & 32 || ammo > (gs.max_ammo_amount[weapon] / 10))) + if (weapon != KNEE_WEAPON && (!althud_flashing || PlayClock & 32 || ammo > (gs.max_ammo_amount[weapon] / 10))) { SBar_DrawString(this, numberFont, format, -3, texty, DI_TEXT_ALIGN_RIGHT, CR_UNTRANSLATED, 1, 0, 0, 1, 1); } diff --git a/source/games/duke/src/sbar_r.cpp b/source/games/duke/src/sbar_r.cpp index 92d532cec..7ac5bee50 100644 --- a/source/games/duke/src/sbar_r.cpp +++ b/source/games/duke/src/sbar_r.cpp @@ -108,7 +108,7 @@ public: imgScale = baseScale / img->GetDisplayHeight(); DrawGraphic(img, 2, -2, DI_ITEM_LEFT_BOTTOM, 1, 0, 0, imgScale, imgScale); - if (!althud_flashing || p->last_extra > (gs.max_player_health >> 2) || (ud.levelclock & 32) || (p->GetActor()->s.pal == 1 && p->last_extra < 2)) + if (!althud_flashing || p->last_extra > (gs.max_player_health >> 2) || (PlayClock & 32) || (p->GetActor()->s.pal == 1 && p->last_extra < 2)) { int s = -8; if (althud_flashing && p->last_extra > gs.max_player_health) @@ -175,7 +175,7 @@ public: imgX += (imgX * 0.755) * (strlen - 1); } - if (weapon != KNEE_WEAPON && weapon != SLINGBLADE_WEAPON && (!althud_flashing || ud.levelclock & 32 || ammo > (gs.max_ammo_amount[weapon] / 10))) + if (weapon != KNEE_WEAPON && weapon != SLINGBLADE_WEAPON && (!althud_flashing || PlayClock & 32 || ammo > (gs.max_ammo_amount[weapon] / 10))) { SBar_DrawString(this, numberFont, format, -1, -numberFont->mFont->GetHeight() * scale + 4, DI_TEXT_ALIGN_RIGHT, CR_UNTRANSLATED, 1, 0, 0, scale, scale); } diff --git a/source/games/duke/src/sectors.cpp b/source/games/duke/src/sectors.cpp index 2a14f3989..5abe987fa 100644 --- a/source/games/duke/src/sectors.cpp +++ b/source/games/duke/src/sectors.cpp @@ -1261,7 +1261,7 @@ void allignwarpelevators(void) void moveclouds(double smoothratio) { // The math here is very messy.. :( - int myclock = smoothratio < 32768? ud.levelclock-2 : ud.levelclock; + int myclock = smoothratio < 32768? PlayClock-2 : PlayClock; if (myclock > cloudclock || myclock < (cloudclock - 7)) { cloudclock = myclock + 6; diff --git a/source/games/duke/src/types.h b/source/games/duke/src/types.h index 0ca52cb46..e59a76576 100644 --- a/source/games/duke/src/types.h +++ b/source/games/duke/src/types.h @@ -123,7 +123,6 @@ struct TileInfo struct user_defs { - int levelclock; unsigned char god, cashman, eog; unsigned char clipping; unsigned char user_pals[MAXPLAYERS]; diff --git a/source/games/exhumed/src/exhumed.cpp b/source/games/exhumed/src/exhumed.cpp index a916b78a7..b8ce4d4ef 100644 --- a/source/games/exhumed/src/exhumed.cpp +++ b/source/games/exhumed/src/exhumed.cpp @@ -107,7 +107,6 @@ short nBackgroundPic; short nShadowPic; short nCreaturesKilled = 0, nCreaturesTotal = 0; -int leveltime; short nFreeze; @@ -449,8 +448,8 @@ void GameInterface::Ticker() lLocalCodes = 0; - leveltime++; - if (leveltime == 2) gameaction = ga_autosave; // let the game run for 1 frame before saving. + PlayClock += 4; + if (PlayClock == 8) gameaction = ga_autosave; // let the game run for 1 frame before saving. GameMove(); r_NoInterpolate = false; } @@ -625,7 +624,7 @@ bool GameInterface::CanSave() ::GameStats GameInterface::getStats() { - return { nCreaturesKilled, nCreaturesTotal, 0, 0, leveltime / 30, 0 }; + return { nCreaturesKilled, nCreaturesTotal, 0, 0, PlayClock / 120, 0 }; } ::GameInterface* CreateInterface() @@ -666,7 +665,7 @@ void SerializeState(FSerializer& arc) ("bodytotal", nBodyTotal) ("bsnakecam", bSnakeCam) ("slipmode", bSlipMode) - ("leveltime", leveltime) + ("PlayClock", PlayClock) ("cinemaseen", nCinemaSeen) ("spiritsprite", nSpiritSprite) .EndObject(); diff --git a/source/games/exhumed/src/exhumed.h b/source/games/exhumed/src/exhumed.h index 173905c5d..803e21f08 100644 --- a/source/games/exhumed/src/exhumed.h +++ b/source/games/exhumed/src/exhumed.h @@ -112,7 +112,6 @@ extern short nBackgroundPic; extern short nShadowPic; extern short nCreaturesTotal, nCreaturesKilled; -extern int leveltime; extern int lLocalButtons; diff --git a/source/games/exhumed/src/init.cpp b/source/games/exhumed/src/init.cpp index 26fed315d..ad81fc807 100644 --- a/source/games/exhumed/src/init.cpp +++ b/source/games/exhumed/src/init.cpp @@ -87,7 +87,7 @@ uint8_t LoadLevel(int nMap) nCreaturesTotal = 0; nFreeze = 0; nSpiritSprite = -1; - leveltime = 0; + PlayClock = 0; InitLion(); InitRexs(); diff --git a/source/games/exhumed/src/map.cpp b/source/games/exhumed/src/map.cpp index dcf8fd6d6..ed481a612 100644 --- a/source/games/exhumed/src/map.cpp +++ b/source/games/exhumed/src/map.cpp @@ -100,7 +100,7 @@ bool GameInterface::DrawAutomapPlayer(int x, int y, int z, int a, double const s double x = xdim / 2. + x1 / double(1 << 12); double y = ydim / 2. + y1 / double(1 << 12); // This very likely needs fixing later - DrawTexture(twod, tileGetTexture(nTile /*+ ((leveltime >> 2) & 3)*/, true), x, y, DTA_ClipLeft, windowxy1.x, DTA_ClipTop, windowxy1.y, DTA_ScaleX, z / 1536., DTA_ScaleY, z / 1536., DTA_CenterOffset, true, + DrawTexture(twod, tileGetTexture(nTile /*+ ((PlayClock >> 4) & 3)*/, true), x, y, DTA_ClipLeft, windowxy1.x, DTA_ClipTop, windowxy1.y, DTA_ScaleX, z / 1536., DTA_ScaleY, z / 1536., DTA_CenterOffset, true, DTA_ClipRight, windowxy2.x + 1, DTA_ClipBottom, windowxy2.y + 1, DTA_Alpha, (pSprite->cstat & 2 ? 0.5 : 1.), TAG_DONE); break; } diff --git a/source/games/exhumed/src/object.cpp b/source/games/exhumed/src/object.cpp index 35e07b854..385a4faca 100644 --- a/source/games/exhumed/src/object.cpp +++ b/source/games/exhumed/src/object.cpp @@ -1676,20 +1676,20 @@ void DoFinale() { StopLocalSound(); PlayLocalSound(StaticSound[kSound76], 0); - nextstage = leveltime*4 + 120; + nextstage = PlayClock + 120; nFinaleStage++; } } else if (nFinaleStage <= 2) { - if (leveltime*4 >= nextstage) + if (PlayClock >= nextstage) { PlayLocalSound(StaticSound[kSound77], 0); nFinaleStage++; - nextstage = leveltime*4 + 360; + nextstage = PlayClock + 360; } } - else if (nFinaleStage == 3 && leveltime*4 >= nextstage) + else if (nFinaleStage == 3 && PlayClock >= nextstage) { LevelFinished(); } @@ -1856,7 +1856,7 @@ void ExplodeEnergyBlock(int nSprite) else { nFinaleSpr = nSprite; - lFinaleStart = leveltime*4; + lFinaleStart = PlayClock; if (!lFinaleStart) { lFinaleStart = lFinaleStart + 1; diff --git a/source/games/exhumed/src/ramses.cpp b/source/games/exhumed/src/ramses.cpp index ecc436893..546acfcf2 100644 --- a/source/games/exhumed/src/ramses.cpp +++ b/source/games/exhumed/src/ramses.cpp @@ -128,7 +128,7 @@ void InitSpiritHead() sprite[nSpiritSprite].cstat &= 0x7FFF; - nHeadTimeStart = leveltime*4; + nHeadTimeStart = PlayClock; memset(Worktile, TRANSPARENT_INDEX, WorktileSize); TileFiles.InvalidateTile(kTileRamsesWorkTile); @@ -153,8 +153,8 @@ void InitSpiritHead() StartSwirlies(); sprintf(filename, "LEV%d.PUP", currentLevel->levelNumber); - lNextStateChange = leveltime*4; - lHeadStartClock = leveltime*4; + lNextStateChange = PlayClock; + lHeadStartClock = PlayClock; auto headfd = fileSystem.OpenFileReader(filename); if (!headfd.isOpen()) @@ -212,7 +212,6 @@ void DoSpiritHead() sPlayerInput[0].actions |= SB_CENTERVIEW; TileFiles.InvalidateTile(kTileRamsesWorkTile); - int totalclock = leveltime * 4; switch (nHeadStage) { @@ -221,7 +220,7 @@ void DoSpiritHead() memset(Worktile, TRANSPARENT_INDEX, WorktileSize); break; case 5: - if (lNextStateChange <= totalclock) + if (lNextStateChange <= PlayClock) { if (nPupData != 0) { @@ -291,7 +290,7 @@ void DoSpiritHead() return; } - nPixelsToShow = 15 * (totalclock - nHeadTimeStart); + nPixelsToShow = 15 * (PlayClock - nHeadTimeStart); if (nPixelsToShow > nPixels) nPixelsToShow = nPixels; @@ -319,10 +318,10 @@ void DoSpiritHead() if (nHeadStage == 0) { - if (totalclock - nHeadTimeStart > 480) + if (PlayClock - nHeadTimeStart > 480) { nHeadStage = 1; - nHeadTimeStart = totalclock + 480; + nHeadTimeStart = PlayClock + 480; } for (int i = 0; i < nPixelsToShow; i++) @@ -434,7 +433,7 @@ void DoSpiritHead() Worktile[((cury[i] >> 8) + (212 * ((curx[i] >> 8) + 97))) + 106] = pixelval[i]; } - if (totalclock - lHeadStartClock > 600) + if (PlayClock - lHeadStartClock > 600) CopyHeadToWorkTile(590); if (nCount < (15 * nPixels) / 16) { diff --git a/source/games/exhumed/src/sound.cpp b/source/games/exhumed/src/sound.cpp index d58264b58..d7343d0e9 100644 --- a/source/games/exhumed/src/sound.cpp +++ b/source/games/exhumed/src/sound.cpp @@ -456,7 +456,7 @@ void EXSoundEngine::CalcPosVel(int type, const void* source, const float pt[3], else if (type == SOURCE_Swirly) { int which = *(int*)source; - float phase = (leveltime << (6 + which)) * BAngRadian; + float phase = (PlayClock << (4 + which)) * BAngRadian; pos->X = fcampos.X + 256 * cos(phase); pos->Z = fcampos.Z + 256 * sin(phase); } diff --git a/source/games/exhumed/src/status.cpp b/source/games/exhumed/src/status.cpp index e0ed963c5..8b15106b8 100644 --- a/source/games/exhumed/src/status.cpp +++ b/source/games/exhumed/src/status.cpp @@ -661,7 +661,7 @@ private: int shade; - if ((leveltime / 30) & 1) { + if ((PlayClock / 120) & 1) { shade = -100; } else { @@ -733,11 +733,11 @@ private: imgScale = baseScale / img->GetDisplayHeight(); DrawGraphic(img, 1.5, -1, DI_ITEM_LEFT_BOTTOM, 1., -1, -1, imgScale, imgScale); - if (!althud_flashing || pp->nHealth > 150 || (leveltime & 8)) + if (!althud_flashing || pp->nHealth > 150 || (PlayClock & 32)) { int s = -8; if (althud_flashing && pp->nHealth > 800) - s += bsin(leveltime << 7, -10); + s += bsin(PlayClock << 5, -10); int intens = clamp(255 - 4 * s, 0, 255); auto pe = PalEntry(255, intens, intens, intens); format.Format("%d", pp->nHealth >> 3); @@ -799,7 +799,7 @@ private: imgX += (imgX * 0.855) * (strlen - 1); } - if ((!althud_flashing || leveltime & 8 || ammo > 10))// (DamageData[weapon].max_ammo / 10))) + if ((!althud_flashing || PlayClock & 32 || ammo > 10))// (DamageData[weapon].max_ammo / 10))) { SBar_DrawString(this, numberFont, format, -3, -numberFont->mFont->GetHeight()+3, DI_TEXT_ALIGN_RIGHT, CR_UNTRANSLATED, 1, 0, 0, 1, 1); } @@ -940,7 +940,7 @@ private: stats.font = SmallFont; stats.letterColor = CR_RED; stats.standardColor = CR_UNTRANSLATED; - stats.time = Scale(leveltime, 1000, 30); + stats.time = Scale(PlayClock, 1000, 120); if (automapMode == am_full) { diff --git a/source/games/sw/src/game.h b/source/games/sw/src/game.h index 31eecbc62..f33c4da8f 100644 --- a/source/games/sw/src/game.h +++ b/source/games/sw/src/game.h @@ -2196,7 +2196,6 @@ void InitFonts(); int32_t registerosdcommands(void); void SW_InitMultiPsky(void); -extern int PlayClock; extern short LevelSecrets; extern short TotalKillable; extern int OrigCommPlayers; diff --git a/source/games/sw/src/network.cpp b/source/games/sw/src/network.cpp index 3ac0f5f3c..e449f6754 100644 --- a/source/games/sw/src/network.cpp +++ b/source/games/sw/src/network.cpp @@ -43,7 +43,6 @@ Prepared for public release: 03/28/2005 - Charlie Wiederhold, 3D Realms BEGIN_SW_NS static uint8_t tempbuf[576], packbuf[576]; -int PlayClock; gNET gNet; diff --git a/source/games/sw/src/player.cpp b/source/games/sw/src/player.cpp index 310cb924e..6cce61c08 100644 --- a/source/games/sw/src/player.cpp +++ b/source/games/sw/src/player.cpp @@ -7084,7 +7084,6 @@ void PauseMultiPlay(void) void domovethings(void) { - extern int PlayClock; short i, pnum; PLAYERp pp; diff --git a/source/games/sw/src/save.cpp b/source/games/sw/src/save.cpp index 247040c4b..39f4d62e4 100644 --- a/source/games/sw/src/save.cpp +++ b/source/games/sw/src/save.cpp @@ -70,7 +70,6 @@ void InitLevelGlobals(void); extern int lastUpdate; extern char SaveGameDescr[10][80]; -extern int PlayClock; extern short Bunny_Count; extern bool NewGame; extern int GodMode;