Add angle command, set your angle precisely

This commit is contained in:
James R 2023-04-08 01:19:44 -07:00
parent 5b2d791cf6
commit 05b0ecb5b6
3 changed files with 28 additions and 0 deletions

View file

@ -1099,6 +1099,7 @@ void D_RegisterClientCommands(void)
COM_AddCommand("weather", Command_Weather_f); COM_AddCommand("weather", Command_Weather_f);
COM_AddCommand("grayscale", Command_Grayscale_f); COM_AddCommand("grayscale", Command_Grayscale_f);
COM_AddCommand("goto", Command_Goto_f); COM_AddCommand("goto", Command_Goto_f);
COM_AddCommand("angle", Command_Angle_f);
CV_RegisterVar(&cv_renderhitbox); CV_RegisterVar(&cv_renderhitbox);
CV_RegisterVar(&cv_devmode_screen); CV_RegisterVar(&cv_devmode_screen);
@ -2051,6 +2052,10 @@ void D_Cheat(INT32 playernum, INT32 cheat, ...)
case CHEAT_SCORE: case CHEAT_SCORE:
COPY(WRITEUINT32, UINT32); COPY(WRITEUINT32, UINT32);
break; break;
case CHEAT_ANGLE:
COPY(WRITEANGLE, angle_t);
break;
} }
#undef COPY #undef COPY
@ -5790,6 +5795,16 @@ static void Got_Cheat(UINT8 **cp, INT32 playernum)
break; break;
} }
case CHEAT_ANGLE: {
angle_t angle = READANGLE(*cp);
float anglef = FIXED_TO_FLOAT(AngleFixed(angle));
P_SetPlayerAngle(player, angle);
CV_CheaterWarning(targetPlayer, va("angle = %d%s", (int)anglef, M_Ftrim(anglef)));
break;
}
case NUMBER_OF_CHEATS: case NUMBER_OF_CHEATS:
break; break;
} }

View file

@ -603,6 +603,17 @@ void Command_Goto_f(void)
wayp->mobj->x, wayp->mobj->y, wayp->mobj->z); wayp->mobj->x, wayp->mobj->y, wayp->mobj->z);
} }
void Command_Angle_f(void)
{
const float anglef = atof(COM_Argv(1));
const angle_t angle = FixedAngle(FLOAT_TO_FIXED(anglef));
REQUIRE_CHEATS;
REQUIRE_INLEVEL;
D_Cheat(consoleplayer, CHEAT_ANGLE, angle);
}
// //
// OBJECTPLACE (and related variables) // OBJECTPLACE (and related variables)
// //

View file

@ -37,6 +37,7 @@ typedef enum {
CHEAT_DEVMODE, CHEAT_DEVMODE,
CHEAT_GIVEITEM, CHEAT_GIVEITEM,
CHEAT_SCORE, CHEAT_SCORE,
CHEAT_ANGLE,
NUMBER_OF_CHEATS NUMBER_OF_CHEATS
} cheat_t; } cheat_t;
@ -84,6 +85,7 @@ void Command_Skynum_f(void);
void Command_Weather_f(void); void Command_Weather_f(void);
void Command_Grayscale_f(void); void Command_Grayscale_f(void);
void Command_Goto_f(void); void Command_Goto_f(void);
void Command_Angle_f(void);
#ifdef _DEBUG #ifdef _DEBUG
void Command_CauseCfail_f(void); void Command_CauseCfail_f(void);
#endif #endif