From 09a05f354c70a3820e1efe2d8b52da4b490daba6 Mon Sep 17 00:00:00 2001 From: Mitchell Richters Date: Wed, 7 Oct 2020 13:28:38 +1100 Subject: [PATCH] - Re-standardise horizon around 0 and not 100. * Blood had this right. It makes sense that the horizon be based around as it's easier to work with. * Removed all associated game math to deduct default horizon of 100 when doing weapon zvel etc, meaning actual horizon can just be used. * Re-did return to center function to work on the already converted pitch. Return speed should be 1:1 with previous code. --- source/blood/src/blood.h | 4 +- source/blood/src/nnexts.cpp | 8 ++-- source/blood/src/player.cpp | 4 +- source/blood/src/prediction.cpp | 2 +- source/blood/src/view.cpp | 6 +-- source/build/src/engine.cpp | 5 +- source/build/src/engine_priv.h | 2 +- source/build/src/polymost.cpp | 3 +- source/core/gamecontrol.cpp | 20 ++++---- source/core/gamestruct.h | 4 +- source/exhumed/src/exhumed.h | 4 +- source/exhumed/src/gun.cpp | 6 +-- source/exhumed/src/player.cpp | 18 ++++---- source/exhumed/src/view.cpp | 4 +- source/games/duke/src/actors_d.cpp | 2 +- source/games/duke/src/constants.h | 2 - source/games/duke/src/gameexec.cpp | 8 ++-- source/games/duke/src/player.cpp | 6 +-- source/games/duke/src/player_d.cpp | 26 +++++------ source/games/duke/src/player_r.cpp | 32 ++++++------- source/games/duke/src/player_w.cpp | 4 +- source/games/duke/src/premap.cpp | 2 +- source/games/duke/src/render.cpp | 7 +-- source/games/duke/src/spawn.cpp | 2 +- source/sw/src/draw.cpp | 14 ++---- source/sw/src/jsector.cpp | 8 +--- source/sw/src/jweapon.cpp | 14 +++--- source/sw/src/player.cpp | 12 ++--- source/sw/src/player.h | 4 -- source/sw/src/weapon.cpp | 74 +++++++++++++++--------------- 30 files changed, 144 insertions(+), 163 deletions(-) diff --git a/source/blood/src/blood.h b/source/blood/src/blood.h index cf59adac2..6d690bc78 100644 --- a/source/blood/src/blood.h +++ b/source/blood/src/blood.h @@ -100,8 +100,8 @@ struct GameInterface : ::GameInterface void LevelCompleted(MapRecord* map, int skill) override; bool DrawAutomapPlayer(int x, int y, int z, int a) override; void SetTileProps(int til, int surf, int vox, int shade) override; - fixed_t playerHorizMin() override { return IntToFixed(-80); } - fixed_t playerHorizMax() override { return IntToFixed(220); } + fixed_t playerHorizMin() override { return IntToFixed(-180); } + fixed_t playerHorizMax() override { return IntToFixed(120); } int playerKeyMove() override { return 1024; } GameStats getStats() override; diff --git a/source/blood/src/nnexts.cpp b/source/blood/src/nnexts.cpp index 40176f6ca..19ab96ecc 100644 --- a/source/blood/src/nnexts.cpp +++ b/source/blood/src/nnexts.cpp @@ -1488,15 +1488,15 @@ void trPlayerCtrlSetLookAngle(XSPRITE* pXSource, PLAYER* pPlayer) if (abs(look) > 0) { - if (pPlayer->q16horiz != IntToFixed(100)) + if (pPlayer->q16horiz != 0) { - // move q16horiz back to 100 - pPlayer->q16horiz += IntToFixed(25) - (pPlayer->q16horiz >> 2); + // move q16horiz back to 0 + pPlayer->q16horiz += xs_CRoundToInt(-pPlayer->q16horiz * (1. / 3.)); } } else { - pPlayer->q16horiz = IntToFixed(100); + pPlayer->q16horiz = 0; } } diff --git a/source/blood/src/player.cpp b/source/blood/src/player.cpp index 6ebadac23..1de74c30f 100644 --- a/source/blood/src/player.cpp +++ b/source/blood/src/player.cpp @@ -721,7 +721,7 @@ void playerStart(int nPlayer, int bNewLevel) pPlayer->pXSprite->health = pDudeInfo->startHealth<<4; pPlayer->pSprite->cstat &= (unsigned short)~32768; pPlayer->bloodlust = 0; - pPlayer->q16horiz = IntToFixed(100); + pPlayer->q16horiz = 0; pPlayer->q16slopehoriz = 0; pPlayer->slope = 0; pPlayer->fraggerId = -1; @@ -1587,7 +1587,7 @@ void ProcessInput(PLAYER *pPlayer) if (klabs(pPlayer->q16slopehoriz) < 4) pPlayer->q16slopehoriz = 0; } - pPlayer->slope = -(pPlayer->q16horiz - IntToFixed(100)) >> 9; + pPlayer->slope = -pPlayer->q16horiz >> 9; if (pInput->actions & SB_INVPREV) { pInput->actions&= ~SB_INVPREV; diff --git a/source/blood/src/prediction.cpp b/source/blood/src/prediction.cpp index c28022998..ffdf0e606 100644 --- a/source/blood/src/prediction.cpp +++ b/source/blood/src/prediction.cpp @@ -263,7 +263,7 @@ static void fakeProcessInput(PLAYER *pPlayer, InputPacket *pInput) if (klabs(predict.at28) < 4) predict.at28 = 0; } - predict.at2c = -(predict.at24 - IntToFixed(100)) >> 9; + predict.at2c = -predict.at24 >> 9; } void fakePlayerProcess(PLAYER *pPlayer, InputPacket *pInput) diff --git a/source/blood/src/view.cpp b/source/blood/src/view.cpp index 4d6a81b44..7f0d02912 100644 --- a/source/blood/src/view.cpp +++ b/source/blood/src/view.cpp @@ -291,7 +291,7 @@ void CalcOtherPosition(spritetype *pSprite, int *pX, int *pY, int *pZ, int *vsec { int vX = mulscale30(-Cos(nAng), 1280); int vY = mulscale30(-Sin(nAng), 1280); - int vZ = FixedToInt(mulscale(zm - IntToFixed(100), 1280, 3))-(16<<8); + int vZ = FixedToInt(mulscale(zm, 1280, 3))-(16<<8); int bakCstat = pSprite->cstat; pSprite->cstat &= ~256; dassert(*vsectnum >= 0 && *vsectnum < kMaxSectors); @@ -337,7 +337,7 @@ void CalcPosition(spritetype *pSprite, int *pX, int *pY, int *pZ, int *vsectnum, { int vX = mulscale30(-Cos(nAng), 1280); int vY = mulscale30(-Sin(nAng), 1280); - int vZ = FixedToInt(mulscale(zm - IntToFixed(100), 1280, 3))-(16<<8); + int vZ = FixedToInt(mulscale(zm, 1280, 3))-(16<<8); int bakCstat = pSprite->cstat; pSprite->cstat &= ~256; dassert(*vsectnum >= 0 && *vsectnum < kMaxSectors); @@ -716,7 +716,7 @@ void viewDrawScreen(bool sceneonly) { q16horiz += q16slopehoriz; } - cZ += xs_CRoundToInt((q16horiz - IntToFixed(100)) / 6553.6); + cZ += xs_CRoundToInt(q16horiz / 6553.6); cameradist = -1; cameraclock = gFrameClock +mulscale16(4, (int)gInterpolate); } diff --git a/source/build/src/engine.cpp b/source/build/src/engine.cpp index 6aa23f294..0c07a0d4d 100644 --- a/source/build/src/engine.cpp +++ b/source/build/src/engine.cpp @@ -170,7 +170,7 @@ int32_t ydimen; int32_t rxi[8], ryi[8]; -int32_t globalposx, globalposy, globalposz, globalhoriz; +int32_t globalposx, globalposy, globalposz; fixed_t qglobalhoriz; float fglobalposx, fglobalposy, fglobalposz; int16_t globalang, globalcursectnum; @@ -1092,8 +1092,7 @@ int32_t renderDrawRoomsQ16(int32_t daposx, int32_t daposy, int32_t daposz, // xdimenscale is scale(xdimen,yxaspect,320); // normalization by viewingrange so that center-of-aim doesn't depend on it - qglobalhoriz = mulscale16(dahoriz-IntToFixed(100), divscale16(xdimenscale, viewingrange))+IntToFixed(ydimen>>1); - globalhoriz = FixedToInt(qglobalhoriz); + qglobalhoriz = mulscale16(dahoriz, divscale16(xdimenscale, viewingrange))+IntToFixed(ydimen>>1); globalcursectnum = dacursectnum; diff --git a/source/build/src/engine_priv.h b/source/build/src/engine_priv.h index d9485d1c2..ec9d814c4 100644 --- a/source/build/src/engine_priv.h +++ b/source/build/src/engine_priv.h @@ -87,7 +87,7 @@ extern int16_t maskwall[MAXWALLSB], maskwallcnt; extern tspriteptr_t tspriteptr[MAXSPRITESONSCREEN + 1]; extern int32_t xdimen, xdimenrecip, halfxdimen, xdimenscale, xdimscale, ydimen; extern float fxdimen; -extern int32_t globalposx, globalposy, globalposz, globalhoriz; +extern int32_t globalposx, globalposy, globalposz; extern fixed_t qglobalhoriz, qglobalang; extern float fglobalposx, fglobalposy, fglobalposz; extern int16_t globalang, globalcursectnum; diff --git a/source/build/src/polymost.cpp b/source/build/src/polymost.cpp index 74dada52e..a115b6dd5 100644 --- a/source/build/src/polymost.cpp +++ b/source/build/src/polymost.cpp @@ -2872,8 +2872,7 @@ void polymost_prepareMirror(int32_t dax, int32_t day, int32_t daz, fixed_t daang set_globalpos(dax, day, daz); set_globalang(daang); - globalhoriz = mulscale16(FixedToInt(dahoriz)-100,divscale16(xdimenscale,viewingrange))+(ydimen>>1); - qglobalhoriz = mulscale16(dahoriz-IntToFixed(100), divscale16(xdimenscale, viewingrange))+IntToFixed(ydimen>>1); + qglobalhoriz = mulscale16(dahoriz, divscale16(xdimenscale, viewingrange))+IntToFixed(ydimen>>1); gyxscale = ((float)xdimenscale)*(1.0f/131072.f); gxyaspect = ((double)xyaspect*fviewingrange)*(5.0/(65536.0*262144.0)); gviewxrange = fviewingrange * fxdimen * (1.f/(32768.f*1024.f)); diff --git a/source/core/gamecontrol.cpp b/source/core/gamecontrol.cpp index 23cd4b0eb..259482c44 100644 --- a/source/core/gamecontrol.cpp +++ b/source/core/gamecontrol.cpp @@ -1571,12 +1571,12 @@ void processMovement(InputPacket* currInput, InputPacket* inputBuffer, ControlIn void sethorizon(fixed_t* q16horiz, fixed_t const q16horz, ESyncBits* actions, double const scaleAdjust) { // Calculate adjustment as true pitch (Fixed point math really sucks...) - double horizAngle = atan2(*q16horiz - IntToFixed(100), IntToFixed(128)) * (512. / pi::pi()); + double horizAngle = atan2(*q16horiz, IntToFixed(128)) * (512. / pi::pi()); if (q16horz) { *actions &= ~SB_CENTERVIEW; - horizAngle = clamp(horizAngle + FixedToFloat(q16horz), -180, 180); + horizAngle += FixedToFloat(q16horz); } // this is the locked type @@ -1605,27 +1605,27 @@ void sethorizon(fixed_t* q16horiz, fixed_t const q16horz, ESyncBits* actions, do horizAngle += scaleAdjust * amount; } - // convert back to Build's horizon - *q16horiz = IntToFixed(100) + xs_CRoundToInt(IntToFixed(128) * tan(horizAngle * (pi::pi() / 512.))); + // clamp horizAngle after processing + horizAngle = clamp(horizAngle, -180, 180); // return to center if conditions met. if ((*actions & SB_CENTERVIEW) && !(*actions & (SB_LOOK_UP|SB_LOOK_DOWN))) { - if (*q16horiz < FloatToFixed(99.75) || *q16horiz > FloatToFixed(100.25)) + if (abs(horizAngle) > 0.275) { - // move *q16horiz back to 100 - *q16horiz += xs_CRoundToInt(scaleAdjust * (((1000. / GameTicRate) * FRACUNIT) - (*q16horiz * (10. / GameTicRate)))); + // move horizAngle back to 0 + horizAngle += -scaleAdjust * horizAngle * (9. / GameTicRate); } else { - // not looking anymore because *q16horiz is back at 100 - *q16horiz = IntToFixed(100); + // not looking anymore because horizAngle is back at 0 + horizAngle = 0; *actions &= ~SB_CENTERVIEW; } } // clamp before returning - *q16horiz = clamp(*q16horiz, gi->playerHorizMin(), gi->playerHorizMax()); + *q16horiz = clamp(xs_CRoundToInt(IntToFixed(128) * tan(horizAngle * (pi::pi() / 512.))), gi->playerHorizMin(), gi->playerHorizMax()); } //--------------------------------------------------------------------------- diff --git a/source/core/gamestruct.h b/source/core/gamestruct.h index f4c029f60..f0f616fa9 100644 --- a/source/core/gamestruct.h +++ b/source/core/gamestruct.h @@ -108,8 +108,8 @@ struct GameInterface virtual void LevelCompleted(MapRecord* map, int skill) {} virtual bool DrawAutomapPlayer(int x, int y, int z, int a) { return false; } virtual void SetTileProps(int tile, int surf, int vox, int shade) {} - virtual fixed_t playerHorizMin() { return IntToFixed(-99); } - virtual fixed_t playerHorizMax() { return IntToFixed(299); } + virtual fixed_t playerHorizMin() { return IntToFixed(-200); } + virtual fixed_t playerHorizMax() { return IntToFixed(200); } virtual int playerKeyMove() { return 0; } virtual FString statFPS() diff --git a/source/exhumed/src/exhumed.h b/source/exhumed/src/exhumed.h index bcfaac9f4..16aba6820 100644 --- a/source/exhumed/src/exhumed.h +++ b/source/exhumed/src/exhumed.h @@ -261,8 +261,8 @@ struct GameInterface : ::GameInterface void LevelCompleted(MapRecord *map, int skill) override; void NextLevel(MapRecord *map, int skill) override; bool DrawAutomapPlayer(int x, int y, int z, int a) override; - fixed_t playerHorizMin() override { return IntToFixed(-50); } - fixed_t playerHorizMax() override { return IntToFixed(250); } + fixed_t playerHorizMin() override { return IntToFixed(-150); } + fixed_t playerHorizMax() override { return IntToFixed(150); } int playerKeyMove() override { return 6; } ::GameStats getStats() override; diff --git a/source/exhumed/src/gun.cpp b/source/exhumed/src/gun.cpp index c6afa4fb8..d9f091aec 100644 --- a/source/exhumed/src/gun.cpp +++ b/source/exhumed/src/gun.cpp @@ -739,7 +739,7 @@ loc_flag: // loc_27266: case kWeaponSword: { - nHeight += (IntToFixed(100) - PlayerList[nLocalPlayer].q16horiz) >> 10; + nHeight += -PlayerList[nLocalPlayer].q16horiz >> 10; theZ += nHeight; @@ -844,7 +844,7 @@ loc_flag: } case kWeaponPistol: { - int var_50 = (PlayerList[nLocalPlayer].q16horiz - IntToFixed(100)) >> 14; + int var_50 = PlayerList[nLocalPlayer].q16horiz >> 14; nHeight -= var_50; if (sPlayerInput[nPlayer].nTarget >= 0 && cl_autoaim) @@ -859,7 +859,7 @@ loc_flag: case kWeaponGrenade: { - ThrowGrenade(nPlayer, ebp, ebx, nHeight - 2560, FixedToInt(PlayerList[nLocalPlayer].q16horiz) - 100); + ThrowGrenade(nPlayer, ebp, ebx, nHeight - 2560, FixedToInt(PlayerList[nLocalPlayer].q16horiz)); break; } case kWeaponStaff: diff --git a/source/exhumed/src/player.cpp b/source/exhumed/src/player.cpp index 6672b12d1..ce9cb54d5 100644 --- a/source/exhumed/src/player.cpp +++ b/source/exhumed/src/player.cpp @@ -438,7 +438,7 @@ void RestartPlayer(short nPlayer) nYDamage[nPlayer] = 0; nXDamage[nPlayer] = 0; - PlayerList[nPlayer].oq16horiz = PlayerList[nPlayer].q16horiz = IntToFixed(100); + PlayerList[nPlayer].oq16horiz = PlayerList[nPlayer].q16horiz = 0; nBreathTimer[nPlayer] = 90; nTauntTimer[nPlayer] = RandomSize(3) + 3; @@ -535,7 +535,7 @@ void StartDeathSeq(int nPlayer, int nVal) StopFiringWeapon(nPlayer); - PlayerList[nPlayer].oq16horiz = PlayerList[nPlayer].q16horiz = IntToFixed(100); + PlayerList[nPlayer].oq16horiz = PlayerList[nPlayer].q16horiz = 0; oeyelevel[nPlayer] = eyelevel[nPlayer] = -14080; nPlayerInvisible[nPlayer] = 0; dVertPan[nPlayer] = 15; @@ -1050,7 +1050,7 @@ void FuncPlayer(int a, int nDamage, int nRun) PlayerList[nPlayer].oq16angle = PlayerList[nPlayer].q16angle; sprite[nPlayerSprite].ang = ang; - playerSetHoriz(&PlayerList[nPlayer].q16horiz, &PlayerList[nPlayer].horizTarget, 100); + playerSetHoriz(&PlayerList[nPlayer].q16horiz, &PlayerList[nPlayer].horizTarget, 0); PlayerList[nPlayer].oq16horiz = PlayerList[nPlayer].q16horiz; lPlayerXVel = 0; @@ -1069,11 +1069,11 @@ void FuncPlayer(int a, int nDamage, int nRun) if (currentLevel->levelNumber == 11) { - playerSetHoriz(&PlayerList[nPlayer].q16horiz, &PlayerList[nPlayer].horizTarget, 146); + playerSetHoriz(&PlayerList[nPlayer].q16horiz, &PlayerList[nPlayer].horizTarget, 46); } else { - playerSetHoriz(&PlayerList[nPlayer].q16horiz, &PlayerList[nPlayer].horizTarget, 111); + playerSetHoriz(&PlayerList[nPlayer].q16horiz, &PlayerList[nPlayer].horizTarget, 11); } } } @@ -1101,7 +1101,7 @@ void FuncPlayer(int a, int nDamage, int nRun) zVelB = -zVelB; } - if (zVelB > 512 && PlayerList[nPlayer].q16angle != IntToFixed(100) && (sPlayerInput[nPlayer].actions & (SB_AIMMODE))) { + if (zVelB > 512 && PlayerList[nPlayer].q16horiz != 0 && (sPlayerInput[nPlayer].actions & (SB_AIMMODE))) { sPlayerInput[nPlayer].actions |= SB_CENTERVIEW; } } @@ -2789,9 +2789,9 @@ loc_1BD2E: } else { - if (PlayerList[nPlayer].q16horiz < IntToFixed(100)) + if (PlayerList[nPlayer].q16horiz < 0) { - playerSetHoriz(&PlayerList[nPlayer].q16horiz, &PlayerList[nPlayer].horizTarget, 100); + playerSetHoriz(&PlayerList[nPlayer].q16horiz, &PlayerList[nPlayer].horizTarget, 0); eyelevel[nPlayer] -= (dVertPan[nPlayer] << 8); } else @@ -2802,7 +2802,7 @@ loc_1BD2E: { playerSetHoriz(&PlayerList[nPlayer].q16horiz, &PlayerList[nPlayer].horizTarget, gi->playerHorizMax()); } - else if (PlayerList[nPlayer].q16horiz <= IntToFixed(100)) + else if (PlayerList[nPlayer].q16horiz <= 0) { if (!(SectFlag[sprite[nPlayerSprite].sectnum] & kSectUnderwater)) { diff --git a/source/exhumed/src/view.cpp b/source/exhumed/src/view.cpp index 0956c3b10..a47a5e704 100644 --- a/source/exhumed/src/view.cpp +++ b/source/exhumed/src/view.cpp @@ -313,7 +313,7 @@ void DrawView(double smoothRatio, bool sceneonly) { if (nSnakeCam >= 0 && !sceneonly) { - pan = IntToFixed(100); + pan = 0; viewz = playerZ; } else @@ -344,7 +344,7 @@ void DrawView(double smoothRatio, bool sceneonly) -2000 * Sin(inita), 4, 0, 0, CLIPMASK1); - pan = IntToFixed(100); + pan = 0; viewz = playerZ; } diff --git a/source/games/duke/src/actors_d.cpp b/source/games/duke/src/actors_d.cpp index dd58bf39d..ade9c8a89 100644 --- a/source/games/duke/src/actors_d.cpp +++ b/source/games/duke/src/actors_d.cpp @@ -2504,7 +2504,7 @@ static void greenslime(int i) s->z = ps[p].posz + ps[p].pyoff - t[2] + (8 << 8); - s->z += (IntToFixed(100) - ps[p].getq16horiz()) >> 12; + s->z += -ps[p].getq16horiz() >> 12; if (t[2] > 512) t[2] -= 128; diff --git a/source/games/duke/src/constants.h b/source/games/duke/src/constants.h index 85ab3bc87..6d6b80118 100644 --- a/source/games/duke/src/constants.h +++ b/source/games/duke/src/constants.h @@ -376,8 +376,6 @@ enum miscConstants FOURSLEIGHT = (1 << 8), MOVEFIFOSIZ =256, - HORIZ_MIN =-99, - HORIZ_MAX =299, AUTO_AIM_ANGLE =48, PHEIGHT_DUKE =(38<<8), PHEIGHT_RR =(40<<8), diff --git a/source/games/duke/src/gameexec.cpp b/source/games/duke/src/gameexec.cpp index 73e08e7e3..813ee632b 100644 --- a/source/games/duke/src/gameexec.cpp +++ b/source/games/duke/src/gameexec.cpp @@ -330,12 +330,12 @@ void DoPlayer(bool bSet, int lVar1, int lLabelID, int lVar2, int sActor, int sPl break; case PLAYER_HORIZ: - if (bSet) playerSetHoriz(&ps[iPlayer].q16horiz, &ps[iPlayer].horizTarget, lValue); - else SetGameVarID((int)lVar2, FixedToInt(ps[iPlayer].q16horiz), sActor, sPlayer); + if (bSet) playerSetHoriz(&ps[iPlayer].q16horiz, &ps[iPlayer].horizTarget - 100, lValue); + else SetGameVarID((int)lVar2, FixedToInt(ps[iPlayer].q16horiz + 100), sActor, sPlayer); break; case PLAYER_OHORIZ: - if (!bSet) SetGameVarID((int)lVar2, FixedToInt(ps[iPlayer].q16horiz), sActor, sPlayer); + if (!bSet) SetGameVarID((int)lVar2, FixedToInt(ps[iPlayer].q16horiz + 100), sActor, sPlayer); break; case PLAYER_OHORIZOFF: @@ -2246,7 +2246,7 @@ int ParseState::parse(void) ps[g_p].last_extra = g_sp->extra = max_player_health; ps[g_p].wantweaponfire = -1; - ps[g_p].sethoriz(100); + ps[g_p].sethoriz(0); ps[g_p].on_crane = -1; ps[g_p].frag_ps = g_p; ps[g_p].sethorizoff(0); diff --git a/source/games/duke/src/player.cpp b/source/games/duke/src/player.cpp index 94115c9d3..fc27ecb54 100644 --- a/source/games/duke/src/player.cpp +++ b/source/games/duke/src/player.cpp @@ -375,7 +375,7 @@ int aim(spritetype* s, int aang) if (sdist > 512 && sdist < smax) { if (s->picnum == TILE_APLAYER) - a = (abs(scale(sp->z - s->z, 10, sdist) - (ps[s->yvel].gethorizsum() - 100)) < 100); + a = (abs(scale(sp->z - s->z, 10, sdist) - ps[s->yvel].gethorizsum()) < 100); else a = 1; cans = cansee(sp->x, sp->y, sp->z - (32 << 8) + actorinfo[sp->picnum].aimoffset, sp->sectnum, s->x, s->y, s->z - (32 << 8), s->sectnum); @@ -649,7 +649,7 @@ void playerisdead(int snum, int psectlotag, int fz, int cz) backupplayer(p); - p->sethoriz(100); + p->sethoriz(0); p->q16horizoff = 0; updatesector(p->posx, p->posy, &p->cursectnum); @@ -1094,7 +1094,7 @@ bool view(struct player_struct* pp, int* vx, int* vy, int* vz, short* vsectnum, nx = (sintable[(ang + 1536) & 2047] >> 4); ny = (sintable[(ang + 1024) & 2047] >> 4); - nz = (q16horiz - IntToFixed(100)) >> 9; + nz = q16horiz >> 9; sp = &sprite[pp->i]; diff --git a/source/games/duke/src/player_d.cpp b/source/games/duke/src/player_d.cpp index a67f6ed35..4c187b2bd 100644 --- a/source/games/duke/src/player_d.cpp +++ b/source/games/duke/src/player_d.cpp @@ -166,7 +166,7 @@ void shoot_d(int i, int atwith) } else { - zvel = xs_CRoundToInt((IntToFixed(100) - ps[p].getq16horizsum()) * (98. / FRACUNIT)); + zvel = xs_CRoundToInt(-ps[p].getq16horizsum() * (98. / FRACUNIT)); sx += sintable[(sa + 860) & 0x7FF] / 448; sy += sintable[(sa + 348) & 0x7FF] / 448; sz += (3 << 8); @@ -224,7 +224,7 @@ void shoot_d(int i, int atwith) } else { - zvel = xs_CRoundToInt((IntToFixed(100) - ps[p].getq16horizsum()) * (81. / FRACUNIT)); + zvel = xs_CRoundToInt(-ps[p].getq16horizsum() * (81. / FRACUNIT)); if (sprite[ps[p].i].xvel != 0) vel = (int)((((512 - (1024 - abs(abs(getangle(sx - ps[p].oposx, sy - ps[p].oposy) - sa) - 1024))) @@ -292,7 +292,7 @@ void shoot_d(int i, int atwith) { if (p >= 0) { - zvel = (IntToFixed(100) - ps[p].getq16horizsum()) >> 11; + zvel = -ps[p].getq16horizsum() >> 11; sz += (6 << 8); sa += 15; } @@ -464,14 +464,14 @@ void shoot_d(int i, int atwith) if (j == -1) { // no target - zvel = (IntToFixed(100) - ps[p].getq16horizsum()) >> 11; + zvel = -ps[p].getq16horizsum() >> 11; } zvel += (zRange / 2) - (krand() & (zRange - 1)); } else if (j == -1) { sa += 16 - (krand() & 31); - zvel = (IntToFixed(100) - ps[p].getq16horizsum()) >> 11; + zvel = -ps[p].getq16horizsum() >> 11; zvel += 128 - (krand() & 255); } @@ -681,7 +681,7 @@ void shoot_d(int i, int atwith) sa = getangle(sprite[j].x - sx, sprite[j].y - sy); } else - zvel = xs_CRoundToInt((IntToFixed(100) - ps[p].getq16horizsum()) * (98. / FRACUNIT)); + zvel = xs_CRoundToInt(-ps[p].getq16horizsum() * (98. / FRACUNIT)); } else { @@ -769,7 +769,7 @@ void shoot_d(int i, int atwith) if (sprite[j].picnum != RECON) sa = getangle(sprite[j].x - sx, sprite[j].y - sy); } - else zvel = xs_CRoundToInt((IntToFixed(100) - ps[p].getq16horizsum()) * (81. / FRACUNIT)); + else zvel = xs_CRoundToInt(-ps[p].getq16horizsum() * (81. / FRACUNIT)); if (atwith == RPG) S_PlayActorSound(RPG_SHOOT, i); @@ -914,7 +914,7 @@ void shoot_d(int i, int atwith) case HANDHOLDINGLASER: if (p >= 0) - zvel = (IntToFixed(100) - ps[p].getq16horizsum()) >> 11; + zvel = -ps[p].getq16horizsum() >> 11; else zvel = 0; hitscan(sx, sy, sz - ps[p].pyoff, sect, @@ -1015,7 +1015,7 @@ void shoot_d(int i, int atwith) else { sa += 16 - (krand() & 31); - zvel = (IntToFixed(100) - ps[p].getq16horizsum()) >> 11; + zvel = -ps[p].getq16horizsum() >> 11; zvel += 128 - (krand() & 255); } @@ -1090,7 +1090,7 @@ void shoot_d(int i, int atwith) zvel = ((sprite[j].z - sz - dal - (4 << 8)) * 768) / (ldist(&sprite[ps[p].i], &sprite[j])); sa = getangle(sprite[j].x - sx, sprite[j].y - sy); } - else zvel = xs_CRoundToInt((IntToFixed(100) - ps[p].getq16horizsum()) * (98. / FRACUNIT)); + else zvel = xs_CRoundToInt(-ps[p].getq16horizsum() * (98. / FRACUNIT)); } else if (s->statnum != 3) { @@ -1940,7 +1940,7 @@ int operateTripbomb(int snum) hitscan(p->posx, p->posy, p->posz, p->cursectnum, sintable[(p->getang() + 512) & 2047], - sintable[p->getang() & 2047], (IntToFixed(100) - p->getq16horizsum()) >> 11, + sintable[p->getang() & 2047], -p->getq16horizsum() >> 11, §, &hw, &hitsp, &sx, &sy, &sz, CLIPMASK1); if (sect < 0 || hitsp >= 0) @@ -2122,12 +2122,12 @@ static void operateweapon(int snum, ESyncBits actions, int psect) if (p->on_ground && (actions & SB_CROUCH)) { k = 15; - i = xs_CRoundToInt((p->getq16horizsum() - IntToFixed(100)) * (20. / FRACUNIT)); + i = xs_CRoundToInt(p->getq16horizsum() * (20. / FRACUNIT)); } else { k = 140; - i = -512 - xs_CRoundToInt((p->getq16horizsum() - IntToFixed(100)) * (20. / FRACUNIT)); + i = -512 - xs_CRoundToInt(p->getq16horizsum() * (20. / FRACUNIT)); } j = EGS(p->cursectnum, diff --git a/source/games/duke/src/player_r.cpp b/source/games/duke/src/player_r.cpp index b558f1127..605ab10d0 100644 --- a/source/games/duke/src/player_r.cpp +++ b/source/games/duke/src/player_r.cpp @@ -154,7 +154,7 @@ void shoot_r(int i, int atwith) { if (p >= 0) { - zvel = (IntToFixed(100) - ps[p].getq16horizsum()) >> 11; + zvel = -ps[p].getq16horizsum() >> 11; sz += (6 << 8); sa += 15; } @@ -333,7 +333,7 @@ void shoot_r(int i, int atwith) if (j == -1) { sa += 16 - (krand() & 31); - zvel = (IntToFixed(100) - ps[p].getq16horizsum()) >> 11; + zvel = -ps[p].getq16horizsum() >> 11; zvel += 128 - (krand() & 255); } } @@ -343,7 +343,7 @@ void shoot_r(int i, int atwith) sa += 64 - (krand() & 127); else sa += 16 - (krand() & 31); - if (j == -1) zvel = (IntToFixed(100) - ps[p].getq16horizsum()) >> 11; + if (j == -1) zvel = -ps[p].getq16horizsum() >> 11; zvel += 128 - (krand() & 255); } sz -= (2 << 8); @@ -602,7 +602,7 @@ void shoot_r(int i, int atwith) sa = getangle(sprite[j].x - sx, sprite[j].y - sy); } else - zvel = xs_CRoundToInt((IntToFixed(100) - ps[p].getq16horizsum()) * (98. / FRACUNIT)); + zvel = xs_CRoundToInt(-ps[p].getq16horizsum() * (98. / FRACUNIT)); } else { @@ -693,7 +693,7 @@ void shoot_r(int i, int atwith) { sx += sintable[(s->ang + 512 + 160) & 2047] >> 7; sy += sintable[(s->ang + 160) & 2047] >> 7; - zvel = xs_CRoundToInt((IntToFixed(100) - ps[p].getq16horizsum()) * (98. / FRACUNIT)); + zvel = xs_CRoundToInt(-ps[p].getq16horizsum() * (98. / FRACUNIT)); } } else @@ -804,7 +804,7 @@ void shoot_r(int i, int atwith) if (sprite[j].picnum != RECON) sa = getangle(sprite[j].x - sx, sprite[j].y - sy); } - else zvel = xs_CRoundToInt((IntToFixed(100) - ps[p].getq16horizsum()) * (81. / FRACUNIT)); + else zvel = xs_CRoundToInt(-ps[p].getq16horizsum() * (81. / FRACUNIT)); if (atwith == RPG) S_PlayActorSound(RPG_SHOOT, i); else if (isRRRA()) @@ -1476,7 +1476,7 @@ void checkweapons_r(struct player_struct* p) sprite[j].owner = p->ammo_amount[MOTORCYCLE_WEAPON]; p->OnMotorcycle = 0; p->gotweapon.Clear(MOTORCYCLE_WEAPON); - p->sethoriz(100); + p->sethoriz(0); p->moto_do_bump = 0; p->MotoSpeed = 0; p->TiltStatus = 0; @@ -1492,7 +1492,7 @@ void checkweapons_r(struct player_struct* p) sprite[j].owner = p->ammo_amount[BOAT_WEAPON]; p->OnBoat = 0; p->gotweapon.Clear(BOAT_WEAPON); - p->sethoriz(100); + p->sethoriz(0); p->moto_do_bump = 0; p->MotoSpeed = 0; p->TiltStatus = 0; @@ -2843,12 +2843,12 @@ static void operateweapon(int snum, ESyncBits actions, int psect) if (p->on_ground && (actions & SB_CROUCH) && !p->OnMotorcycle) { k = 15; - i = xs_CRoundToInt((p->getq16horizsum() - IntToFixed(100)) * (20. / FRACUNIT)); + i = xs_CRoundToInt(p->getq16horizsum() * (20. / FRACUNIT)); } else { k = 140; - i = -512 - xs_CRoundToInt((p->getq16horizsum() - IntToFixed(100)) * (20. / FRACUNIT)); + i = -512 - xs_CRoundToInt(p->getq16horizsum() * (20. / FRACUNIT)); } j = EGS(p->cursectnum, @@ -3253,12 +3253,12 @@ static void operateweapon(int snum, ESyncBits actions, int psect) if (p->on_ground && (actions & SB_CROUCH) && !p->OnMotorcycle) { k = 15; - i = xs_CRoundToInt((p->getq16horizsum() - IntToFixed(100)) * (20. / FRACUNIT)); + i = xs_CRoundToInt(p->getq16horizsum() * (20. / FRACUNIT)); } else { k = 32; - i = -512 - xs_CRoundToInt((p->getq16horizsum() - IntToFixed(100)) * (20. / FRACUNIT)); + i = -512 - xs_CRoundToInt(p->getq16horizsum() * (20. / FRACUNIT)); } j = EGS(p->cursectnum, @@ -4181,7 +4181,7 @@ void OnMotorcycle(struct player_struct *p, int motosprite) p->gotweapon.Set(MOTORCYCLE_WEAPON); p->posxv = 0; p->posyv = 0; - p->sethoriz(100); + p->sethoriz(0); } if (!S_CheckActorSoundPlaying(p->i,186)) S_PlayActorSound(186, p->i); @@ -4212,7 +4212,7 @@ void OffMotorcycle(struct player_struct *p) p->gotweapon.Clear(MOTORCYCLE_WEAPON); p->curr_weapon = p->last_full_weapon; checkavailweapon(p); - p->sethoriz(100); + p->sethoriz(0); p->moto_do_bump = 0; p->MotoSpeed = 0; p->TiltStatus = 0; @@ -4258,7 +4258,7 @@ void OnBoat(struct player_struct *p, int boatsprite) p->gotweapon.Set(BOAT_WEAPON); p->posxv = 0; p->posyv = 0; - p->sethoriz(100); + p->sethoriz(0); } } @@ -4277,7 +4277,7 @@ void OffBoat(struct player_struct *p) p->gotweapon.Clear(BOAT_WEAPON); p->curr_weapon = p->last_full_weapon; checkavailweapon(p); - p->sethoriz(100); + p->sethoriz(0); p->moto_do_bump = 0; p->MotoSpeed = 0; p->TiltStatus = 0; diff --git a/source/games/duke/src/player_w.cpp b/source/games/duke/src/player_w.cpp index 091380e7c..489612e1e 100644 --- a/source/games/duke/src/player_w.cpp +++ b/source/games/duke/src/player_w.cpp @@ -333,12 +333,12 @@ void operateweapon_ww(int snum, ESyncBits actions, int psect) if (p->on_ground && (actions & SB_CROUCH)) { k = 15; - i = xs_CRoundToInt((p->getq16horizsum() - IntToFixed(100)) * (20. / FRACUNIT)); + i = xs_CRoundToInt(p->getq16horizsum() * (20. / FRACUNIT)); } else { k = 140; - i = -512 - xs_CRoundToInt((p->getq16horizsum() - IntToFixed(100)) * (20. / FRACUNIT)); + i = -512 - xs_CRoundToInt(p->getq16horizsum() * (20. / FRACUNIT)); } j = EGS(p->cursectnum, diff --git a/source/games/duke/src/premap.cpp b/source/games/duke/src/premap.cpp index 2c56eef1c..858b6bab1 100644 --- a/source/games/duke/src/premap.cpp +++ b/source/games/duke/src/premap.cpp @@ -112,7 +112,7 @@ void resetplayerstats(int snum) p->footprintpal = 0; p->footprintshade = 0; p->jumping_toggle = 0; - p->sethoriz(140); //!! + p->sethoriz(40); //!! p->oq16horiz = p->q16horiz; p->sethorizoff(0); p->oq16horizoff = p->q16horizoff; diff --git a/source/games/duke/src/render.cpp b/source/games/duke/src/render.cpp index b577ca8ab..33f262d22 100644 --- a/source/games/duke/src/render.cpp +++ b/source/games/duke/src/render.cpp @@ -593,7 +593,7 @@ void displayrooms(int snum, double smoothratio) if (p->newowner >= 0) { cang = buildang(getcamspriteang(p->newowner, smoothratio)); - choriz = q16horiz(p->q16horiz + p->q16horizoff); + choriz = buildhoriz(sprite[p->newowner].shade); cposx = sprite[p->newowner].pos.x; cposy = sprite[p->newowner].pos.y; cposz = sprite[p->newowner].pos.z; @@ -630,9 +630,6 @@ void displayrooms(int snum, double smoothratio) if (sprite[p->i].pal == 1) cposz -= (18 << 8); - if (p->newowner >= 0) - choriz = buildhoriz(100 + sprite[p->newowner].shade); - else if (p->spritebridge == 0) { if (cposz < (p->truecz + (4 << 8))) cposz = cz + (4 << 8); @@ -646,7 +643,7 @@ void displayrooms(int snum, double smoothratio) if (cposz > fz - (4 << 8)) cposz = fz - (4 << 8); } - choriz = clamp(choriz, buildhoriz(HORIZ_MIN), buildhoriz(HORIZ_MAX)); + choriz = clamp(choriz, q16horiz(gi->playerHorizMin()), q16horiz(gi->playerHorizMax())); if (isRR() && sector[sect].lotag == 848) { diff --git a/source/games/duke/src/spawn.cpp b/source/games/duke/src/spawn.cpp index f2a47f670..4b6560080 100644 --- a/source/games/duke/src/spawn.cpp +++ b/source/games/duke/src/spawn.cpp @@ -438,7 +438,7 @@ void initshell(int j, int i, bool isshell) a = ps[snum].getang() - (krand() & 63) + 8; //Fine tune t[0] = krand() & 1; - sp->z = (3 << 8) + ps[snum].pyoff + ps[snum].posz - ((ps[snum].q16horizoff + ps[snum].q16horiz - IntToFixed(100)) >> 12) + (!isshell ? (3 << 8) : 0); + sp->z = (3 << 8) + ps[snum].pyoff + ps[snum].posz - (ps[snum].getq16horizsum() >> 12) + (!isshell ? (3 << 8) : 0); sp->zvel = -(krand() & 255); } else diff --git a/source/sw/src/draw.cpp b/source/sw/src/draw.cpp index 56c526dff..310d3f475 100644 --- a/source/sw/src/draw.cpp +++ b/source/sw/src/draw.cpp @@ -945,7 +945,7 @@ BackView(int *nx, int *ny, int *nz, short *vsect, fixed_t *nq16ang, fixed_t q16h // Calculate the vector (nx,ny,nz) to shoot backwards vx = (sintable[NORM_ANGLE(ang + 1536)] >> 3); vy = (sintable[NORM_ANGLE(ang + 1024)] >> 3); - vz = (q16horiz - IntToFixed(100)) >> 8; + vz = q16horiz >> 8; // Player sprite of current view sp = &sprite[pp->PlayerSprite]; @@ -1074,7 +1074,7 @@ CircleCamera(int *nx, int *ny, int *nz, short *vsect, int *nq16ang, fixed_t q16h vx += DIV2(vx); vy += DIV2(vy); - vz = (q16horiz - IntToFixed(100)) >> 8; + vz = q16horiz >> 8; // Player sprite of current view sp = &sprite[pp->PlayerSprite]; @@ -1300,7 +1300,7 @@ void CameraView(PLAYERp pp, int *tx, int *ty, int *tz, short *tsectnum, fixed_t { case 1: pp->last_camera_sp = sp; - CircleCamera(tx, ty, tz, tsectnum, tq16ang, IntToFixed(100)); + CircleCamera(tx, ty, tz, tsectnum, tq16ang, 0); found_camera = true; break; @@ -1326,9 +1326,7 @@ void CameraView(PLAYERp pp, int *tx, int *ty, int *tz, short *tsectnum, fixed_t zvect = 0; // new horiz to player - *tq16horiz = IntToFixed(100) - (zvect << 8); - *tq16horiz = max(*tq16horiz, IntToFixed(PLAYER_HORIZ_MIN)); - *tq16horiz = min(*tq16horiz, IntToFixed(PLAYER_HORIZ_MAX)); + *tq16horiz = clamp(-(zvect << 8), gi->playerHorizMin(), gi->playerHorizMax()); //DSPRINTF(ds,"xvect %d,yvect %d,zvect %d,tq16horiz %d",xvect,yvect,zvect,*tq16horiz); MONO_PRINT(ds); @@ -1739,9 +1737,7 @@ drawscreen(PLAYERp pp, double smoothratio) } // recoil only when not in camera - tq16horiz = tq16horiz + pp->recoil_horizoff; - tq16horiz = max(tq16horiz, IntToFixed(PLAYER_HORIZ_MIN)); - tq16horiz = min(tq16horiz, IntToFixed(PLAYER_HORIZ_MAX)); + tq16horiz = clamp(tq16horiz + pp->recoil_horizoff, gi->playerHorizMin(), gi->playerHorizMax()); } if (automapMode != am_full)// && !ScreenSavePic) diff --git a/source/sw/src/jsector.cpp b/source/sw/src/jsector.cpp index 5d123b4d6..184e02aea 100644 --- a/source/sw/src/jsector.cpp +++ b/source/sw/src/jsector.cpp @@ -684,14 +684,10 @@ void JS_DrawCameras(PLAYERp pp, int tx, int ty, int tz) // 100! if (SP_TAG7(sp) != 0) { - camhoriz = SP_TAG7(sp); - if (camhoriz > PLAYER_HORIZ_MAX) - camhoriz = PLAYER_HORIZ_MAX; - else if (camhoriz < PLAYER_HORIZ_MIN) - camhoriz = PLAYER_HORIZ_MIN; + camhoriz = clamp(SP_TAG7(sp), gi->playerHorizMin(), gi->playerHorizMax()); } else - camhoriz = 100; // Default + camhoriz = 0; // Default // If player is dead still then update at MoveSkip4 // rate. diff --git a/source/sw/src/jweapon.cpp b/source/sw/src/jweapon.cpp index 4429ffded..eb4509bbc 100644 --- a/source/sw/src/jweapon.cpp +++ b/source/sw/src/jweapon.cpp @@ -1418,7 +1418,7 @@ PlayerInitChemBomb(PLAYERp pp) if (TEST(pp->Flags, PF_DIVING) || SpriteInUnderwaterArea(wp)) SET(wu->Flags, SPR_UNDERWATER); - wp->zvel = (IntToFixed(100) - pp->q16horiz) >> 9; + wp->zvel = -pp->q16horiz >> 9; // //DSPRINTF(ds,"horiz %d, ho %d, ho+ho %d",FixedToInt(pp->q16horiz), FixedToInt(pp->q16horizoff), // FixedToInt(pp->q16horizoff + pp->q16horiz)); @@ -1489,7 +1489,7 @@ InitSpriteChemBomb(int16_t SpriteNum) SET(wp->cstat, CSTAT_SPRITE_YCENTER); SET(wp->cstat, CSTAT_SPRITE_BLOCK); - wp->zvel = ((-100 - RANDOM_RANGE(100)) * HORIZ_MULT); + wp->zvel = -RANDOM_RANGE(100) * HORIZ_MULT; wp->clipdist = 80L >> 2; @@ -1551,7 +1551,7 @@ InitChemBomb(short SpriteNum) if (SpriteInUnderwaterArea(wp)) SET(wu->Flags, SPR_UNDERWATER); - wp->zvel = ((-100 - RANDOM_RANGE(100)) * HORIZ_MULT); + wp->zvel = -RANDOM_RANGE(100) * HORIZ_MULT; wp->clipdist = 0; if (u->ID == MUSHROOM_CLOUD || u->ID == 3121 || u->ID == SUMO_RUN_R0) // 3121 == GRENADE_EXP @@ -1862,7 +1862,7 @@ PlayerInitCaltrops(PLAYERp pp) // They go out at different angles // wp->ang = NORM_ANGLE(FixedToInt(pp->q16ang) + (RANDOM_RANGE(50) - 25)); - wp->zvel = (IntToFixed(100) - pp->q16horiz) >> 9; + wp->zvel = -pp->q16horiz >> 9; oclipdist = pp->SpriteP->clipdist; pp->SpriteP->clipdist = 0; @@ -1928,7 +1928,7 @@ InitCaltrops(int16_t SpriteNum) wu->floor_dist = Z(3); wu->Counter = 0; - wp->zvel = ((-100 - RANDOM_RANGE(100)) * HORIZ_MULT); + wp->zvel = -RANDOM_RANGE(100) * HORIZ_MULT; // wp->clipdist = 80L>>2; @@ -1990,7 +1990,7 @@ InitPhosphorus(int16_t SpriteNum) wu->floor_dist = Z(3); wu->Counter = 0; - wp->zvel = ((-100 - RANDOM_RANGE(100)) * HORIZ_MULT); + wp->zvel = -RANDOM_RANGE(100) * HORIZ_MULT; wu->xchange = MOVEx(wp->xvel, wp->ang); wu->ychange = MOVEy(wp->xvel, wp->ang); @@ -2496,7 +2496,7 @@ InitShell(int16_t SpriteNum, int16_t ShellNum) if (u->PlayerP) { - wp->z += xs_CRoundToInt((IntToFixed(100) - u->PlayerP->q16horiz) * ((HORIZ_MULT / 3.) / FRACUNIT)); + wp->z += xs_CRoundToInt(-u->PlayerP->q16horiz * ((HORIZ_MULT / 3.) / FRACUNIT)); } switch (wu->ID) diff --git a/source/sw/src/player.cpp b/source/sw/src/player.cpp index 6afd13648..eb9c7d7fa 100644 --- a/source/sw/src/player.cpp +++ b/source/sw/src/player.cpp @@ -1744,10 +1744,10 @@ DoPlayerHorizon(PLAYERp pp, fixed_t const q16horz, double const scaleAdjust) sethorizon(&pp->q16horizbase, q16horz, &pp->input.actions, scaleAdjust); // bound adjust q16horizoff - if (pp->q16horizbase + pp->q16horizoff < IntToFixed(PLAYER_HORIZ_MIN)) - pp->q16horizoff = IntToFixed(PLAYER_HORIZ_MIN) - pp->q16horizbase; - else if (pp->q16horizbase + pp->q16horizoff > IntToFixed(PLAYER_HORIZ_MAX)) - pp->q16horizoff = IntToFixed(PLAYER_HORIZ_MAX) - pp->q16horizbase; + if (pp->q16horizbase + pp->q16horizoff < gi->playerHorizMin()) + pp->q16horizoff = gi->playerHorizMin() - pp->q16horizbase; + else if (pp->q16horizbase + pp->q16horizoff > gi->playerHorizMax()) + pp->q16horizoff = gi->playerHorizMax() - pp->q16horizbase; // add base and offsets pp->q16horiz = pp->q16horizbase + pp->q16horizoff; @@ -6308,7 +6308,7 @@ void DoPlayerDeathCheckKeys(PLAYERp pp) sp->yrepeat = PLAYER_NINJA_YREPEAT; //pp->tilt = 0; - pp->q16horiz = pp->q16horizbase = IntToFixed(100); + pp->q16horiz = pp->q16horizbase = 0; DoPlayerResetMovement(pp); u->ID = NINJA_RUN_R0; PlayerDeathReset(pp); @@ -7360,7 +7360,7 @@ InitAllPlayers(void) //getzsofslope(pfirst->cursectnum, pfirst->posx, pfirst->posy, &cz, &fz); //pfirst->posz = fz - PLAYER_HEIGHT; - pfirst->q16horiz = pfirst->q16horizbase = IntToFixed(100); + pfirst->q16horiz = pfirst->q16horizbase = 0; // Initialize all [MAX_SW_PLAYERS] arrays here! for (pp = Player; pp < &Player[MAX_SW_PLAYERS]; pp++) diff --git a/source/sw/src/player.h b/source/sw/src/player.h index 9f3ca775b..a4cf513a4 100644 --- a/source/sw/src/player.h +++ b/source/sw/src/player.h @@ -28,10 +28,6 @@ Prepared for public release: 03/28/2005 - Charlie Wiederhold, 3D Realms #define PLAYER_H -#define PLAYER_HORIZ_MAX 299 // !JIM! was 199 and 5 -#define PLAYER_HORIZ_MIN -99 // Had to make plax sky pan up/down like in Duke -// But this is MUCH better! - #define MIN_SWIM_DEPTH 15 // Player view height diff --git a/source/sw/src/weapon.cpp b/source/sw/src/weapon.cpp index b37dc54c3..095d2d03d 100644 --- a/source/sw/src/weapon.cpp +++ b/source/sw/src/weapon.cpp @@ -12826,7 +12826,7 @@ DoRing(int16_t Weapon) sp->x += ((int) u->Dist * (int) sintable[NORM_ANGLE(sp->ang + 512)]) >> 14; sp->y += ((int) u->Dist * (int) sintable[sp->ang]) >> 14; if (User[sp->owner]->PlayerP) - sp->z += (u->Dist * ((IntToFixed(100) - pp->q16horiz) >> 9)) >> 9; + sp->z += (u->Dist * (-pp->q16horiz >> 9)) >> 9; //sp->ang = NORM_ANGLE(sp->ang + 512); //updatesector(sp->x, sp->y); @@ -12913,7 +12913,7 @@ InitSpellRing(PLAYERp pp) // put it out there sp->x += ((int) u->Dist * (int) sintable[NORM_ANGLE(sp->ang + 512)]) >> 14; sp->y += ((int) u->Dist * (int) sintable[sp->ang]) >> 14; - sp->z = pp->posz + Z(20) + ((u->Dist * ((IntToFixed(100) - pp->q16horiz) >> 9)) >> 9); + sp->z = pp->posz + Z(20) + ((u->Dist * (-pp->q16horiz >> 9)) >> 9); sp->ang = NORM_ANGLE(sp->ang + 512); @@ -13452,7 +13452,7 @@ InitSpellNapalm(PLAYERp pp) sp->xrepeat = 32; sp->yrepeat = 32; sp->clipdist = 0; - sp->zvel = (IntToFixed(100) - pp->q16horiz) >> 9; + sp->zvel = -pp->q16horiz >> 9; SET(sp->cstat, CSTAT_SPRITE_TRANSLUCENT | CSTAT_SPRITE_YCENTER); RESET(sp->cstat, CSTAT_SPRITE_BLOCK | CSTAT_SPRITE_BLOCK_HITSCAN); SET(u->Flags2, SPR2_BLUR_TAPER_FAST); @@ -13607,7 +13607,7 @@ InitSpellMirv(PLAYERp pp) sp->xrepeat = 72; sp->yrepeat = 72; sp->clipdist = 32L >> 2; - sp->zvel = (IntToFixed(100) - pp->q16horiz) >> 9; + sp->zvel = -pp->q16horiz >> 9; SET(sp->cstat, CSTAT_SPRITE_TRANSLUCENT | CSTAT_SPRITE_YCENTER); RESET(sp->cstat, CSTAT_SPRITE_BLOCK | CSTAT_SPRITE_BLOCK_HITSCAN); @@ -13758,7 +13758,7 @@ InitSwordAttack(PLAYERp pp) int daz; daang = FixedToInt(pp->q16ang); - daz = xs_CRoundToInt((IntToFixed(100) - pp->q16horiz) * (2000. / FRACUNIT)) + (RANDOM_RANGE(24000) - 12000); + daz = xs_CRoundToInt(-pp->q16horiz * (2000. / FRACUNIT)) + (RANDOM_RANGE(24000) - 12000); FAFhitscan(pp->posx, pp->posy, pp->posz, pp->cursectnum, // Start position sintable[NORM_ANGLE(daang + 512)], // X vector of 3D ang @@ -13948,7 +13948,7 @@ InitFistAttack(PLAYERp pp) int daz; daang = FixedToInt(pp->q16ang); - daz = xs_CRoundToInt((IntToFixed(100) - pp->q16horiz) * (2000. / FRACUNIT)) + (RANDOM_RANGE(24000) - 12000); + daz = xs_CRoundToInt(-pp->q16horiz * (2000. / FRACUNIT)) + (RANDOM_RANGE(24000) - 12000); FAFhitscan(pp->posx, pp->posy, pp->posz, pp->cursectnum, // Start position sintable[NORM_ANGLE(daang + 512)], // X vector of 3D ang @@ -14621,7 +14621,7 @@ InitStar(PLAYERp pp) wp->clipdist = 32L >> 2; // wp->zvel was overflowing with this calculation - had to move to a local // long var - zvel = xs_CRoundToInt((IntToFixed(100) - pp->q16horiz) * ((double)(HORIZ_MULT+STAR_HORIZ_ADJ) / FRACUNIT)); + zvel = xs_CRoundToInt(-pp->q16horiz * ((double)(HORIZ_MULT+STAR_HORIZ_ADJ) / FRACUNIT)); wu->ceiling_dist = Z(1); wu->floor_dist = Z(1); @@ -14678,7 +14678,7 @@ InitStar(PLAYERp pp) if (TEST(pp->Flags, PF_DIVING) || SpriteInUnderwaterArea(np)) SET(nu->Flags, SPR_UNDERWATER); - zvel = xs_CRoundToInt((IntToFixed(100) - pp->q16horiz) * ((double)(HORIZ_MULT+STAR_HORIZ_ADJ) / FRACUNIT)); + zvel = xs_CRoundToInt(-pp->q16horiz * ((double)(HORIZ_MULT+STAR_HORIZ_ADJ) / FRACUNIT)); np->zvel = zvel >> 1; if (MissileSetPos(nw, DoStar, 1000)) @@ -14742,7 +14742,7 @@ InitHeartAttack(PLAYERp pp) sp->xrepeat = 52; sp->yrepeat = 52; sp->clipdist = 0; - sp->zvel = (IntToFixed(100) - pp->q16horiz) >> 9; + sp->zvel = -pp->q16horiz >> 9; RESET(sp->cstat, CSTAT_SPRITE_BLOCK | CSTAT_SPRITE_BLOCK_HITSCAN); SET(u->Flags2, SPR2_DONT_TARGET_OWNER); SET(sp->cstat, CSTAT_SPRITE_INVISIBLE); @@ -14966,7 +14966,7 @@ InitShotgun(PLAYERp pp) } else { - daz = xs_CRoundToInt((IntToFixed(100) - pp->q16horiz) * (2000. / FRACUNIT)); + daz = xs_CRoundToInt(-pp->q16horiz * (2000. / FRACUNIT)); daang = FixedToInt(pp->q16ang); } @@ -15142,7 +15142,7 @@ InitLaser(PLAYERp pp) wp->clipdist = 64L>>2; // the slower the missile travels the less of a zvel it needs - wp->zvel = (IntToFixed(100) - pp->q16horiz) >> 11; + wp->zvel = -pp->q16horiz >> 11; wu->WeaponNum = u->WeaponNum; wu->Radius = 200; @@ -15249,7 +15249,7 @@ InitRail(PLAYERp pp) wp->yrepeat = 52; wp->xrepeat = 52; wp->shade = -15; - zvel = xs_CRoundToInt((IntToFixed(100) - pp->q16horiz) * ((HORIZ_MULT + 17.) / FRACUNIT)); + zvel = xs_CRoundToInt(-pp->q16horiz * ((HORIZ_MULT + 17.) / FRACUNIT)); wu->RotNum = 5; NewStateGroup(w, &sg_Rail[0]); @@ -15450,7 +15450,7 @@ InitRocket(PLAYERp pp) wp->yrepeat = 90; wp->xrepeat = 90; wp->shade = -15; - zvel = xs_CRoundToInt((IntToFixed(100) - pp->q16horiz) * ((HORIZ_MULT + 35.) / FRACUNIT)); + zvel = xs_CRoundToInt(-pp->q16horiz * ((HORIZ_MULT + 35.) / FRACUNIT)); wp->clipdist = 64L>>2; @@ -15581,7 +15581,7 @@ InitBunnyRocket(PLAYERp pp) wp->yrepeat = 64; wp->xrepeat = 64; wp->shade = -15; - zvel = xs_CRoundToInt((IntToFixed(100) - pp->q16horiz) * ((HORIZ_MULT + 35.) / FRACUNIT)); + zvel = xs_CRoundToInt(-pp->q16horiz * ((HORIZ_MULT + 35.) / FRACUNIT)); wp->clipdist = 64L>>2; @@ -15695,7 +15695,7 @@ InitNuke(PLAYERp pp) wp->yrepeat = 128; wp->xrepeat = 128; wp->shade = -15; - zvel = xs_CRoundToInt((IntToFixed(100) - pp->q16horiz) * ((HORIZ_MULT - 36.) / FRACUNIT)); + zvel = xs_CRoundToInt(-pp->q16horiz * ((HORIZ_MULT - 36.) / FRACUNIT)); wp->clipdist = 64L>>2; // Set to red palette @@ -15902,7 +15902,7 @@ InitMicro(PLAYERp pp) wp->yrepeat = 24; wp->xrepeat = 24; wp->shade = -15; - wp->zvel = (IntToFixed(100) - pp->q16horiz) >> 9; + wp->zvel = -pp->q16horiz >> 9; wp->clipdist = 64L>>2; // randomize zvelocity @@ -17432,8 +17432,8 @@ InitTracerUzi(PLAYERp pp) nx = pp->posx; ny = pp->posy; //nz = pp->posz + pp->bob_z + Z(8); - //nz = pp->posz + pp->bob_z + Z(8) + xs_CRoundToInt((IntToFixed(100) - pp->q16horiz) * (72. / FRACUNIT)); - nz = pp->posz + Z(8) + xs_CRoundToInt((IntToFixed(100) - pp->q16horiz) * (72. / FRACUNIT)); + //nz = pp->posz + pp->bob_z + Z(8) + xs_CRoundToInt(-pp->q16horiz * (72. / FRACUNIT)); + nz = pp->posz + Z(8) + xs_CRoundToInt(-pp->q16horiz * (72. / FRACUNIT)); // Spawn a shot // Inserting and setting up variables @@ -17451,7 +17451,7 @@ InitTracerUzi(PLAYERp pp) wp->xrepeat = 10; wp->shade = -40; wp->zvel = 0; - //wp->zvel = (IntToFixed(100) - pp->q16horiz) >> 9; + //wp->zvel = -pp->q16horiz >> 9; wp->clipdist = 32 >> 2; wu->WeaponNum = u->WeaponNum; @@ -17478,7 +17478,7 @@ InitTracerUzi(PLAYERp pp) return 0; } - wp->zvel = xs_CRoundToInt((IntToFixed(100) - pp->q16horiz) * ((wp->xvel / 8.) / FRACUNIT)); + wp->zvel = xs_CRoundToInt(-pp->q16horiz * ((wp->xvel / 8.) / FRACUNIT)); pp->SpriteP->clipdist = oclipdist; @@ -17510,7 +17510,7 @@ InitTracerTurret(short SpriteNum, short Operator, int horiz) nx = sp->x; ny = sp->y; - nz = sp->z + ((100 - horiz) * 72); + nz = sp->z + (-horiz * 72); // Spawn a shot // Inserting and setting up variables @@ -17537,7 +17537,7 @@ InitTracerTurret(short SpriteNum, short Operator, int horiz) SET(wp->cstat, CSTAT_SPRITE_YCENTER); SET(wp->cstat, CSTAT_SPRITE_INVISIBLE); - wp->zvel = ((100 - horiz) * (wp->xvel/8)); + wp->zvel = (-horiz * (wp->xvel/8)); WeaponAutoAim(sp, w, 32, false); @@ -17830,7 +17830,7 @@ InitUzi(PLAYERp pp) { //daang = NORM_ANGLE(FixedToInt(pp->q16ang) + (RANDOM_RANGE(50) - 25)); daang = NORM_ANGLE(FixedToInt(pp->q16ang) + (RANDOM_RANGE(24) - 12)); - daz = xs_CRoundToInt((IntToFixed(100) - pp->q16horiz) * (2000. / FRACUNIT)) + (RANDOM_RANGE(24000) - 12000); + daz = xs_CRoundToInt(-pp->q16horiz * (2000. / FRACUNIT)) + (RANDOM_RANGE(24000) - 12000); } @@ -18005,7 +18005,7 @@ InitEMP(PLAYERp pp) InitTracerUzi(pp); - //daz = nz = pp->posz + Z(8) + xs_CRoundToInt((IntToFixed(100) - pp->q16horiz) * (72. / FRACUNIT)); + //daz = nz = pp->posz + Z(8) + xs_CRoundToInt(-pp->q16horiz * (72. / FRACUNIT)); //daang = NORM_ANGLE(FixedToInt(pp->q16ang) + (RANDOM_RANGE(50) - 25)); daz = nz = pp->posz + pp->bob_z; @@ -18015,7 +18015,7 @@ InitEMP(PLAYERp pp) } else { - daz = xs_CRoundToInt((IntToFixed(100) - pp->q16horiz) * (2000. / FRACUNIT)); + daz = xs_CRoundToInt(-pp->q16horiz * (2000. / FRACUNIT)); daang = FixedToInt(pp->q16ang); } @@ -18189,7 +18189,7 @@ InitTankShell(short SpriteNum, PLAYERp pp) SET(wp->cstat, CSTAT_SPRITE_YCENTER); SET(wp->cstat, CSTAT_SPRITE_INVISIBLE); - wp->zvel = xs_CRoundToInt((IntToFixed(100) - pp->q16horiz) * ((wp->xvel / 8.) / FRACUNIT)); + wp->zvel = xs_CRoundToInt(-pp->q16horiz * ((wp->xvel / 8.) / FRACUNIT)); WeaponAutoAim(sp, w, 64, false); // a bit of randomness @@ -18268,7 +18268,7 @@ InitTurretMicro(short SpriteNum, PLAYERp pp) wp->yrepeat = 24; wp->xrepeat = 24; wp->shade = -15; - wp->zvel = (IntToFixed(100) - pp->q16horiz) >> 9; + wp->zvel = -pp->q16horiz >> 9; wp->clipdist = 64L>>2; // randomize zvelocity @@ -18349,7 +18349,7 @@ InitTurretRocket(short SpriteNum, PLAYERp pp) SET(wu->Flags2, SPR2_SO_MISSILE); SET(wp->cstat, CSTAT_SPRITE_YCENTER); - wp->zvel = xs_CRoundToInt((IntToFixed(100) - pp->q16horiz) * ((wp->xvel / 8.) / FRACUNIT)); + wp->zvel = xs_CRoundToInt(-pp->q16horiz * ((wp->xvel / 8.) / FRACUNIT)); WeaponAutoAim(sp, w, 64, false); // a bit of randomness @@ -18396,7 +18396,7 @@ InitTurretFireball(short SpriteNum, PLAYERp pp) SET(wu->Flags2, SPR2_SO_MISSILE); SET(wp->cstat, CSTAT_SPRITE_YCENTER); - wp->zvel = xs_CRoundToInt((IntToFixed(100) - pp->q16horiz) * ((wp->xvel / 8.) / FRACUNIT)); + wp->zvel = xs_CRoundToInt(-pp->q16horiz * ((wp->xvel / 8.) / FRACUNIT)); WeaponAutoAim(sp, w, 64, false); // a bit of randomness @@ -18445,7 +18445,7 @@ InitTurretRail(short SpriteNum, PLAYERp pp) wp->yrepeat = 52; wp->xrepeat = 52; wp->shade = -15; - wp->zvel = (IntToFixed(100) - pp->q16horiz) >> 9; + wp->zvel = -pp->q16horiz >> 9; wu->RotNum = 5; NewStateGroup(w, &sg_Rail[0]); @@ -18505,7 +18505,7 @@ InitTurretLaser(short SpriteNum, PLAYERp pp) wp->shade = -15; // the slower the missile travels the less of a zvel it needs - wp->zvel = (IntToFixed(100) - pp->q16horiz) >> 11; + wp->zvel = -pp->q16horiz >> 11; wu->Radius = 200; wu->ceiling_dist = Z(1); @@ -18566,7 +18566,7 @@ InitSobjMachineGun(short SpriteNum, PLAYERp pp) if (q16horiz < horizmin) q16horiz = horizmin; - daz = xs_CRoundToInt((IntToFixed(100) - q16horiz) * (2000. / FRACUNIT)) + (RANDOM_RANGE(Z(80)) - Z(40)); + daz = xs_CRoundToInt(-q16horiz * (2000. / FRACUNIT)) + (RANDOM_RANGE(Z(80)) - Z(40)); daang = sp->ang; } @@ -19304,7 +19304,7 @@ InitGrenade(PLAYERp pp) if (TEST(pp->Flags, PF_DIVING) || SpriteInUnderwaterArea(wp)) SET(wu->Flags, SPR_UNDERWATER); - wp->zvel = (IntToFixed(100) - pp->q16horiz) >> 9; + wp->zvel = -pp->q16horiz >> 9; ////DSPRINTF(ds,"horiz %d, ho %d, ho+ho %d",FixedToInt(pp->q16horiz), FixedToInt(pp->q16horizoff), FixedToInt(pp->q16horizoff + pp->q16horiz)); //MONO_PRINT(ds); @@ -19451,7 +19451,7 @@ InitMine(PLAYERp pp) wp->xrepeat = 32; wp->shade = -15; wp->clipdist = 128L>>2; - wp->zvel = (IntToFixed(100) - pp->q16horiz) >> 9; + wp->zvel = -pp->q16horiz >> 9; wu->WeaponNum = u->WeaponNum; wu->Radius = 200; wu->ceiling_dist = Z(5); @@ -19464,7 +19464,7 @@ InitMine(PLAYERp pp) if (TEST(pp->Flags, PF_DIVING) || SpriteInUnderwaterArea(wp)) SET(wu->Flags, SPR_UNDERWATER); - //wp->zvel = (IntToFixed(100) - pp->q16horiz) >> 9; + //wp->zvel = -pp->q16horiz >> 9; MissileSetPos(w, DoMine, 800); @@ -19617,8 +19617,8 @@ InitFireball(PLAYERp pp) wu->ceiling_dist = Z(6); wu->floor_dist = Z(6); - //zvel = xs_CRoundToInt((IntToFixed(100) - pp->q16horiz) * ((100. + ADJUST) / FRACUNIT)); - zvel = xs_CRoundToInt((IntToFixed(100) - pp->q16horiz) * (240. / FRACUNIT)); + //zvel = xs_CRoundToInt(-pp->q16horiz * ((100. + ADJUST) / FRACUNIT)); + zvel = xs_CRoundToInt(-pp->q16horiz * (240. / FRACUNIT)); //wu->RotNum = 5; //NewStateGroup(w, &sg_Fireball);