mirror of
https://github.com/ZDoom/Raze.git
synced 2024-11-15 17:01:28 +00:00
RR: restore proper vehicle accuracy to RedNukem code-base.
- I tried to do something smarter originally but want the values to be 100% accurate to upstream.
This commit is contained in:
parent
4bc105ec07
commit
9c27f49d42
1 changed files with 16 additions and 24 deletions
|
@ -3164,7 +3164,6 @@ enddisplayweapon:
|
||||||
#define MAXANGVEL 1024
|
#define MAXANGVEL 1024
|
||||||
#define MAXHORIZVEL 256
|
#define MAXHORIZVEL 256
|
||||||
|
|
||||||
#define MOTOTURN 20
|
|
||||||
#define MAXVELMOTO 120
|
#define MAXVELMOTO 120
|
||||||
|
|
||||||
int32_t g_myAimStat = 0, g_oldAimStat = 0;
|
int32_t g_myAimStat = 0, g_oldAimStat = 0;
|
||||||
|
@ -3664,22 +3663,18 @@ void P_GetInputMotorcycle(int playerNum)
|
||||||
localInput.extbits |= (buttonMap.ButtonDown(gamefunc_Strafe_Left) || (input.svel > 0)) << 2;
|
localInput.extbits |= (buttonMap.ButtonDown(gamefunc_Strafe_Left) || (input.svel > 0)) << 2;
|
||||||
localInput.extbits |= (buttonMap.ButtonDown(gamefunc_Strafe_Right) || (input.svel < 0)) << 3;
|
localInput.extbits |= (buttonMap.ButtonDown(gamefunc_Strafe_Right) || (input.svel < 0)) << 3;
|
||||||
|
|
||||||
int turnAmount;
|
|
||||||
int const turn = input.q16avel / 32;
|
int const turn = input.q16avel / 32;
|
||||||
int turnLeft = buttonMap.ButtonDown(gamefunc_Turn_Left) || buttonMap.ButtonDown(gamefunc_Strafe_Left);
|
int turnLeft = buttonMap.ButtonDown(gamefunc_Turn_Left) || buttonMap.ButtonDown(gamefunc_Strafe_Left);
|
||||||
int turnRight = buttonMap.ButtonDown(gamefunc_Turn_Right) || buttonMap.ButtonDown(gamefunc_Strafe_Right);
|
int turnRight = buttonMap.ButtonDown(gamefunc_Turn_Right) || buttonMap.ButtonDown(gamefunc_Strafe_Right);
|
||||||
int avelScale = F16((turnLeft || turnRight) ? 1 : 0);
|
int avelScale = F16((turnLeft || turnRight) ? 1 : 0);
|
||||||
if (turn)
|
if (turn)
|
||||||
{
|
{
|
||||||
turnAmount = (MOTOTURN << 1);
|
|
||||||
avelScale = fix16_max(avelScale, fix16_clamp(fix16_mul(turn, turn),0,F16(1)));
|
avelScale = fix16_max(avelScale, fix16_clamp(fix16_mul(turn, turn),0,F16(1)));
|
||||||
if (turn < 0)
|
if (turn < 0)
|
||||||
turnLeft = 1;
|
turnLeft = 1;
|
||||||
else if (turn > 0)
|
else if (turn > 0)
|
||||||
turnRight = 1;
|
turnRight = 1;
|
||||||
}
|
}
|
||||||
else
|
|
||||||
turnAmount = MOTOTURN;
|
|
||||||
|
|
||||||
input.svel = input.fvel = input.q16avel = 0;
|
input.svel = input.fvel = input.q16avel = 0;
|
||||||
|
|
||||||
|
@ -3718,16 +3713,16 @@ void P_GetInputMotorcycle(int playerNum)
|
||||||
if (turnHeldTime >= TURBOTURNTIME && pPlayer->moto_speed > 0)
|
if (turnHeldTime >= TURBOTURNTIME && pPlayer->moto_speed > 0)
|
||||||
{
|
{
|
||||||
if (moveBack)
|
if (moveBack)
|
||||||
input.q16avel = fix16_sadd(input.q16avel, fix16_from_dbl(scaleAdjustmentToInterval(turnAmount)));
|
input.q16avel = fix16_sadd(input.q16avel, fix16_from_dbl(scaleAdjustmentToInterval(turn ? 40 : 20)));
|
||||||
else
|
else
|
||||||
input.q16avel = fix16_ssub(input.q16avel, fix16_from_dbl(scaleAdjustmentToInterval(turnAmount)));
|
input.q16avel = fix16_ssub(input.q16avel, fix16_from_dbl(scaleAdjustmentToInterval(turn ? 40 : 20)));
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
if (moveBack)
|
if (moveBack)
|
||||||
input.q16avel = fix16_sadd(input.q16avel, fix16_from_dbl(scaleAdjustmentToInterval(turnAmount / (8 / 3))));
|
input.q16avel = fix16_sadd(input.q16avel, fix16_from_dbl(scaleAdjustmentToInterval(turn ? 20 : 6)));
|
||||||
else
|
else
|
||||||
input.q16avel = fix16_ssub(input.q16avel, fix16_from_dbl(scaleAdjustmentToInterval(turnAmount / (8 / 3))));
|
input.q16avel = fix16_ssub(input.q16avel, fix16_from_dbl(scaleAdjustmentToInterval(turn ? 20 : 6)));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if (turnRight || pPlayer->moto_drink > 0)
|
else if (turnRight || pPlayer->moto_drink > 0)
|
||||||
|
@ -3739,16 +3734,16 @@ void P_GetInputMotorcycle(int playerNum)
|
||||||
if (turnHeldTime >= TURBOTURNTIME && pPlayer->moto_speed > 0)
|
if (turnHeldTime >= TURBOTURNTIME && pPlayer->moto_speed > 0)
|
||||||
{
|
{
|
||||||
if (moveBack)
|
if (moveBack)
|
||||||
input.q16avel = fix16_ssub(input.q16avel, fix16_from_dbl(scaleAdjustmentToInterval(turnAmount)));
|
input.q16avel = fix16_ssub(input.q16avel, fix16_from_dbl(scaleAdjustmentToInterval(turn ? 40 : 20)));
|
||||||
else
|
else
|
||||||
input.q16avel = fix16_sadd(input.q16avel, fix16_from_dbl(scaleAdjustmentToInterval(turnAmount)));
|
input.q16avel = fix16_sadd(input.q16avel, fix16_from_dbl(scaleAdjustmentToInterval(turn ? 40 : 20)));
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
if (moveBack)
|
if (moveBack)
|
||||||
input.q16avel = fix16_ssub(input.q16avel, fix16_from_dbl(scaleAdjustmentToInterval(turnAmount / (8 / 3))));
|
input.q16avel = fix16_ssub(input.q16avel, fix16_from_dbl(scaleAdjustmentToInterval(turn ? 20 : 6)));
|
||||||
else
|
else
|
||||||
input.q16avel = fix16_sadd(input.q16avel, fix16_from_dbl(scaleAdjustmentToInterval(turnAmount / (8 / 3))));
|
input.q16avel = fix16_sadd(input.q16avel, fix16_from_dbl(scaleAdjustmentToInterval(turn ? 20 : 6)));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
@ -3870,14 +3865,12 @@ void P_GetInputBoat(int playerNum)
|
||||||
localInput.extbits |= (buttonMap.ButtonDown(gamefunc_Strafe_Left) || (input.svel > 0)) << 2;
|
localInput.extbits |= (buttonMap.ButtonDown(gamefunc_Strafe_Left) || (input.svel > 0)) << 2;
|
||||||
localInput.extbits |= (buttonMap.ButtonDown(gamefunc_Strafe_Right) || (input.svel < 0)) << 3;
|
localInput.extbits |= (buttonMap.ButtonDown(gamefunc_Strafe_Right) || (input.svel < 0)) << 3;
|
||||||
|
|
||||||
int turnAmount;
|
|
||||||
int const turn = input.q16avel / 32;
|
int const turn = input.q16avel / 32;
|
||||||
int turnLeft = buttonMap.ButtonDown(gamefunc_Turn_Left) || buttonMap.ButtonDown(gamefunc_Strafe_Left);
|
int turnLeft = buttonMap.ButtonDown(gamefunc_Turn_Left) || buttonMap.ButtonDown(gamefunc_Strafe_Left);
|
||||||
int turnRight = buttonMap.ButtonDown(gamefunc_Turn_Right) || buttonMap.ButtonDown(gamefunc_Strafe_Right);
|
int turnRight = buttonMap.ButtonDown(gamefunc_Turn_Right) || buttonMap.ButtonDown(gamefunc_Strafe_Right);
|
||||||
int avelScale = F16((turnLeft || turnRight) ? 1 : 0);
|
int avelScale = F16((turnLeft || turnRight) ? 1 : 0);
|
||||||
if (turn)
|
if (turn)
|
||||||
{
|
{
|
||||||
turnAmount = (MOTOTURN << 1);
|
|
||||||
avelScale = fix16_max(avelScale, fix16_clamp(fix16_mul(turn, turn),0,F16(1)));
|
avelScale = fix16_max(avelScale, fix16_clamp(fix16_mul(turn, turn),0,F16(1)));
|
||||||
if (turn < 0)
|
if (turn < 0)
|
||||||
turnLeft = 1;
|
turnLeft = 1;
|
||||||
|
@ -3885,7 +3878,6 @@ void P_GetInputBoat(int playerNum)
|
||||||
turnRight = 1;
|
turnRight = 1;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
turnAmount = MOTOTURN;
|
|
||||||
|
|
||||||
input.svel = input.fvel = input.q16avel = 0;
|
input.svel = input.fvel = input.q16avel = 0;
|
||||||
|
|
||||||
|
@ -3911,15 +3903,15 @@ void P_GetInputBoat(int playerNum)
|
||||||
if (pPlayer->tilt_status < -10)
|
if (pPlayer->tilt_status < -10)
|
||||||
pPlayer->tilt_status = -10;
|
pPlayer->tilt_status = -10;
|
||||||
if (turnHeldTime >= TURBOTURNTIME)
|
if (turnHeldTime >= TURBOTURNTIME)
|
||||||
input.q16avel = fix16_ssub(input.q16avel, fix16_from_dbl(scaleAdjustmentToInterval(turnAmount)));
|
input.q16avel = fix16_ssub(input.q16avel, fix16_from_dbl(scaleAdjustmentToInterval(turn ? 40 : 20)));
|
||||||
else
|
else
|
||||||
input.q16avel = fix16_ssub(input.q16avel, fix16_from_dbl(scaleAdjustmentToInterval(turnAmount / (10 / 3))));
|
input.q16avel = fix16_ssub(input.q16avel, fix16_from_dbl(scaleAdjustmentToInterval(turn ? 12 : 6)));
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
if (turnHeldTime >= TURBOTURNTIME)
|
if (turnHeldTime >= TURBOTURNTIME)
|
||||||
input.q16avel = fix16_ssub(input.q16avel, fix16_from_dbl(scaleAdjustmentToInterval(turnAmount / 3)));
|
input.q16avel = fix16_ssub(input.q16avel, fix16_from_dbl(scaleAdjustmentToInterval(turn ? 12 : 6)));
|
||||||
else
|
else
|
||||||
input.q16avel = fix16_ssub(input.q16avel, fix16_from_dbl(scaleAdjustmentToInterval((turnAmount / (10 / 3)) / 3)));
|
input.q16avel = fix16_ssub(input.q16avel, fix16_from_dbl(scaleAdjustmentToInterval(turn ? 4 : 2)));
|
||||||
}
|
}
|
||||||
else if (turnRight || pPlayer->moto_drink > 0)
|
else if (turnRight || pPlayer->moto_drink > 0)
|
||||||
{
|
{
|
||||||
|
@ -3930,15 +3922,15 @@ void P_GetInputBoat(int playerNum)
|
||||||
if (pPlayer->tilt_status > 10)
|
if (pPlayer->tilt_status > 10)
|
||||||
pPlayer->tilt_status = 10;
|
pPlayer->tilt_status = 10;
|
||||||
if (turnHeldTime >= TURBOTURNTIME)
|
if (turnHeldTime >= TURBOTURNTIME)
|
||||||
input.q16avel = fix16_sadd(input.q16avel, fix16_from_dbl(scaleAdjustmentToInterval(turnAmount)));
|
input.q16avel = fix16_sadd(input.q16avel, fix16_from_dbl(scaleAdjustmentToInterval(turn ? 40 : 20)));
|
||||||
else
|
else
|
||||||
input.q16avel = fix16_sadd(input.q16avel, fix16_from_dbl(scaleAdjustmentToInterval(turnAmount / (10 / 3))));
|
input.q16avel = fix16_sadd(input.q16avel, fix16_from_dbl(scaleAdjustmentToInterval(turn ? 12 : 6)));
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
if (turnHeldTime >= TURBOTURNTIME)
|
if (turnHeldTime >= TURBOTURNTIME)
|
||||||
input.q16avel = fix16_sadd(input.q16avel, fix16_from_dbl(scaleAdjustmentToInterval(turnAmount / 3)));
|
input.q16avel = fix16_sadd(input.q16avel, fix16_from_dbl(scaleAdjustmentToInterval(turn ? 12 : 6)));
|
||||||
else
|
else
|
||||||
input.q16avel = fix16_sadd(input.q16avel, fix16_from_dbl(scaleAdjustmentToInterval((turnAmount / (10 / 3)) / 3)));
|
input.q16avel = fix16_sadd(input.q16avel, fix16_from_dbl(scaleAdjustmentToInterval(turn ? 4 : 2)));
|
||||||
}
|
}
|
||||||
else if (!pPlayer->not_on_water)
|
else if (!pPlayer->not_on_water)
|
||||||
{
|
{
|
||||||
|
|
Loading…
Reference in a new issue