- floatified WarpToCoords

This commit is contained in:
Christoph Oelckers 2022-08-30 22:17:08 +02:00
parent 38a2d31907
commit f4d8ccf7b9
10 changed files with 22 additions and 21 deletions

View file

@ -112,7 +112,7 @@ struct GameInterface
virtual fixed_t playerHorizMin() { return IntToFixed(-200); }
virtual fixed_t playerHorizMax() { return IntToFixed(200); }
virtual int playerKeyMove() { return 0; }
virtual void WarpToCoords(int x, int y, int z, int a, int h) {}
virtual void WarpToCoords(double x, double y, double z, DAngle a, int h) {}
virtual void ToggleThirdPerson() { }
virtual void SwitchCoopView() { Printf("Unsupported command\n"); }
virtual void ToggleShowWeapon() { Printf("Unsupported command\n"); }

View file

@ -387,7 +387,7 @@ CCMD(warptocoords)
horiz = atoi(argv[5]);
}
gi->WarpToCoords(x, y, z, ang, horiz);
gi->WarpToCoords(x, y, z, DAngle::fromDeg(ang), horiz);
}
CCMD(third_person_view)

View file

@ -138,7 +138,7 @@ struct GameInterface : public ::GameInterface
fixed_t playerHorizMin() override { return IntToFixed(-180); }
fixed_t playerHorizMax() override { return IntToFixed(120); }
int playerKeyMove() override { return 1024; }
void WarpToCoords(int x, int y, int z, int a, int h) override;
void WarpToCoords(double x, double y, double z, DAngle a, int h) override;
void ToggleThirdPerson() override;
void SwitchCoopView() override;
void ToggleShowWeapon() override;

View file

@ -31,20 +31,21 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
BEGIN_BLD_NS
void GameInterface::WarpToCoords(int x, int y, int z, int ang, int horz)
void GameInterface::WarpToCoords(double x, double y, double z, DAngle ang, int horz)
{
PLAYER* pPlayer = &gPlayer[myconnectindex];
VIEW* pView = &gPrevView[myconnectindex];
gView->actor->spr.pos.XY() = { x , y };
pPlayer->actor->spr.pos.XY() = gView->actor->spr.pos.XY();
pView->x = gView->actor->int_pos().X;
pView->y = gView->actor->int_pos().Y;
pPlayer->zView = pView->viewz = gView->zView = z;
if (ang != INT_MIN)
if (ang != DAngle::fromDeg(INT_MIN))
{
pPlayer->angle.oang = pPlayer->angle.ang = gView->angle.ang = DAngle::fromBuild(ang);
pView->angle = DAngle::fromBuild(ang);
pPlayer->angle.oang = pPlayer->angle.ang = gView->angle.ang = ang;
pView->angle = ang;
}
if (horz != INT_MIN)

View file

@ -111,16 +111,16 @@ static int ccmd_spawn(CCmdFuncPtr parm)
return CCMD_OK;
}
void GameInterface::WarpToCoords(int x, int y, int z, int ang, int horz)
void GameInterface::WarpToCoords(double x, double y, double z, DAngle ang, int horz)
{
player_struct* p = &ps[myconnectindex];
p->pos = DVector3(x, y, z);
p->backupxyz();
if (ang != INT_MIN)
if (ang != DAngle::fromDeg(INT_MIN))
{
p->angle.oang = p->angle.ang = DAngle::fromBuild(ang);
p->angle.oang = p->angle.ang = ang;
}
if (horz != INT_MIN)

View file

@ -52,7 +52,7 @@ struct GameInterface : public ::GameInterface
void LevelCompleted(MapRecord* map, int skill) override;
bool DrawAutomapPlayer(int mx, int my, int x, int y, const double z, const DAngle a, double const smoothratio) override;
int playerKeyMove() override { return 40; }
void WarpToCoords(int x, int y, int z, int a, int h) override;
void WarpToCoords(double x, double y, double z, DAngle ang, int horz) override;
void ToggleThirdPerson() override;
void SwitchCoopView() override;
void ToggleShowWeapon() override;

View file

@ -234,7 +234,7 @@ struct GameInterface : public ::GameInterface
fixed_t playerHorizMin() override { return IntToFixed(-150); }
fixed_t playerHorizMax() override { return IntToFixed(150); }
int playerKeyMove() override { return 6; }
void WarpToCoords(int x, int y, int z, int a, int h) override;
void WarpToCoords(double x, double y, double z, DAngle ang, int horz) override;
void ToggleThirdPerson() override;
vec3_t chaseCamPos(DAngle ang, fixedhoriz horiz) { return vec3_t(int(-ang.Cos() * 1536.), int(-ang.Sin() * 1536.), (horiz.asq16() * 3) >> 10); }
void processSprites(tspriteArray& tsprites, int viewx, int viewy, int viewz, DAngle viewang, double smoothRatio) override;

View file

@ -33,16 +33,16 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
BEGIN_PS_NS
void GameInterface::WarpToCoords(int x, int y, int z, int ang, int horz)
void GameInterface::WarpToCoords(double x, double y, double z, DAngle ang, int horz)
{
Player *nPlayer = &PlayerList[nLocalPlayer];
nPlayer->pActor->set_int_pos({ x, y, z });
nPlayer->pActor->spr.pos = DVector3(x, y, z);
nPlayer->pActor->backuppos();
if (ang != INT_MIN)
if (ang != DAngle::fromDeg(INT_MIN))
{
nPlayer->angle.oang = nPlayer->angle.ang = DAngle::fromBuild(ang);
nPlayer->angle.oang = nPlayer->angle.ang = ang;
}
if (horz != INT_MIN)

View file

@ -2050,7 +2050,7 @@ struct GameInterface : public ::GameInterface
void NewGame(MapRecord *map, int skill, bool) override;
bool DrawAutomapPlayer(int mx, int my, int x, int y, const double z, const DAngle a, double const smoothratio) override;
int playerKeyMove() override { return 35; }
void WarpToCoords(int x, int y, int z, int a, int h) override;
void WarpToCoords(double x, double y, double z, DAngle ang, int horz) override;
void ToggleThirdPerson() override;
void SwitchCoopView() override;
vec3_t chaseCamPos(DAngle ang, fixedhoriz horiz) { return vec3_t(int(-ang.Cos() * 2048.), int(-ang.Sin() * 2048.), horiz.asq16() >> 8); }

View file

@ -48,15 +48,15 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
BEGIN_SW_NS
void GameInterface::WarpToCoords(int x, int y, int z, int ang, int horz)
void GameInterface::WarpToCoords(double x, double y, double z, DAngle ang, int horz)
{
Player->set_int_ppos({x,y,z});
Player->pos = DVector3(x,y,z);
Player->opos = Player->pos;
if (ang != INT_MIN)
if (ang != DAngle::fromDeg(INT_MIN))
{
Player->angle.oang = Player->angle.ang = DAngle::fromBuild(ang);
Player->angle.oang = Player->angle.ang = ang;
}
if (horz != INT_MIN)