Add required speed percent

This commit is contained in:
Sally Coolatta 2022-01-02 21:42:20 -05:00
parent 9bc48762a8
commit c6f69e8f59
4 changed files with 26 additions and 8 deletions

View file

@ -618,16 +618,29 @@ static void K_SpawnFootstepParticle(mobj_t *mo, t_footstep_t *fs)
angle_t pushAngle = ANGLE_MAX; angle_t pushAngle = ANGLE_MAX;
angle_t tireAngle = ANGLE_MAX; angle_t tireAngle = ANGLE_MAX;
fixed_t momentum = INT32_MAX; fixed_t momentum = INT32_MAX;
fixed_t speedValue = INT32_MAX;
fixed_t momH = INT32_MAX; fixed_t momH = INT32_MAX;
fixed_t momV = INT32_MAX; fixed_t momV = INT32_MAX;
momentum = P_AproxDistance(mo->momx, mo->momy);
if (mo->player != NULL) if (mo->player != NULL)
{ {
tireAngle = (mo->player->drawangle + ANGLE_180); tireAngle = (mo->player->drawangle + ANGLE_180);
speedValue = K_GetKartSpeedFromStat(mo->player->kartspeed);
} }
else else
{ {
tireAngle = (mo->angle + ANGLE_180); tireAngle = (mo->angle + ANGLE_180);
speedValue = K_GetKartSpeedFromStat(5);
}
speedValue = FixedMul(speedValue, mo->scale);
speedValue = FixedMul(speedValue, fs->requiredSpeed);
if (momentum < speedValue)
{
return;
} }
pushAngle = K_MomentumAngle(mo) + ANGLE_180; pushAngle = K_MomentumAngle(mo) + ANGLE_180;
@ -662,7 +675,6 @@ static void K_SpawnFootstepParticle(mobj_t *mo, t_footstep_t *fs)
dust->momy = mo->momy; dust->momy = mo->momy;
dust->momz = P_GetMobjZMovement(mo) / 2; dust->momz = P_GetMobjZMovement(mo) / 2;
momentum = P_AproxDistance(mo->momx, mo->momy);
momH = FixedMul(momentum, fs->pushH); momH = FixedMul(momentum, fs->pushH);
momV = FixedMul(momentum, fs->pushV); momV = FixedMul(momentum, fs->pushV);
@ -872,6 +884,8 @@ static void K_FootstepDefaults(t_footstep_t *footstep)
footstep->cone = ANGLE_11hh; footstep->cone = ANGLE_11hh;
footstep->sfxFreq = 6; footstep->sfxFreq = 6;
footstep->frequency = 1;
footstep->requiredSpeed = 0;
} }
/*-------------------------------------------------- /*--------------------------------------------------
@ -946,6 +960,14 @@ static void K_ParseFootstepParameter(size_t i, char *param, char *val)
{ {
footstep->sfxFreq = (tic_t)atoi(val); footstep->sfxFreq = (tic_t)atoi(val);
} }
else if (stricmp(param, "frequency") == 0)
{
footstep->frequency = (tic_t)atoi(val);
}
else if (stricmp(param, "requiredSpeed") == 0)
{
footstep->requiredSpeed = FLOAT_TO_FIXED(atof(val));
}
} }
/*-------------------------------------------------- /*--------------------------------------------------

View file

@ -60,6 +60,8 @@ typedef struct t_footstep_s
angle_t cone; // Randomized angle of the push-out. angle_t cone; // Randomized angle of the push-out.
tic_t sfxFreq; // How frequently to play the sound. tic_t sfxFreq; // How frequently to play the sound.
tic_t frequency; // How frequently to spawn the particles.
fixed_t requiredSpeed; // Speed percentage you need to be at to trigger the particles.
} t_footstep_t; } t_footstep_t;
typedef enum typedef enum

View file

@ -494,9 +494,6 @@ static int mobj_set(lua_State *L)
if (hook_cmd_running) if (hook_cmd_running)
return luaL_error(L, "Do not alter mobj_t in CMD building code!"); return luaL_error(L, "Do not alter mobj_t in CMD building code!");
if (hook_cmd_running)
return luaL_error(L, "Do not alter mobj_t in BuildCMD code!");
switch(field) switch(field)
{ {
case mobj_valid: case mobj_valid:

View file

@ -499,9 +499,6 @@ static int player_set(lua_State *L)
if (hook_cmd_running) if (hook_cmd_running)
return luaL_error(L, "Do not alter player_t in CMD building code!"); return luaL_error(L, "Do not alter player_t in CMD building code!");
if (hook_cmd_running)
return luaL_error(L, "Do not alter player_t in BuildCMD code!");
if (fastcmp(field,"mo")) { if (fastcmp(field,"mo")) {
mobj_t *newmo = *((mobj_t **)luaL_checkudata(L, 3, META_MOBJ)); mobj_t *newmo = *((mobj_t **)luaL_checkudata(L, 3, META_MOBJ));
plr->mo->player = NULL; // remove player pointer from old mobj plr->mo->player = NULL; // remove player pointer from old mobj
@ -861,7 +858,7 @@ static int karthud_set(lua_State *L)
if (hud_running) if (hud_running)
return luaL_error(L, "Do not alter player_t in HUD rendering code!"); return luaL_error(L, "Do not alter player_t in HUD rendering code!");
if (hook_cmd_running) if (hook_cmd_running)
return luaL_error(L, "Do not alter player_t in BuildCMD code!"); return luaL_error(L, "Do not alter player_t in CMD building code!");
karthud[ks] = i; karthud[ks] = i;
return 0; return 0;
} }