mirror of
https://github.com/ZDoom/raze-gles.git
synced 2025-01-15 04:00:53 +00:00
- Exhumed also handled.
This commit is contained in:
parent
99486cba7e
commit
4b299fa412
7 changed files with 239 additions and 230 deletions
|
@ -158,9 +158,6 @@ enum {
|
||||||
kButtonCheatGodMode = 0x40,
|
kButtonCheatGodMode = 0x40,
|
||||||
kButtonCheatKeys = 0x80,
|
kButtonCheatKeys = 0x80,
|
||||||
kButtonCheatItems = 0x100,
|
kButtonCheatItems = 0x100,
|
||||||
|
|
||||||
kButtonWeaponShift = 13,
|
|
||||||
kButtonWeaponBits = 7 << kButtonWeaponShift, // upper 3 bits.
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -483,7 +483,7 @@ void GameTicker()
|
||||||
lastTic = currentTic;
|
lastTic = currentTic;
|
||||||
|
|
||||||
int lLocalButtons = GetLocalInput(); // shouldn't this be placed in localInput?
|
int lLocalButtons = GetLocalInput(); // shouldn't this be placed in localInput?
|
||||||
PlayerInterruptKeys();
|
PlayerInterruptKeys(false);
|
||||||
|
|
||||||
nPlayerDAng = fix16_sadd(nPlayerDAng, localInput.q16avel);
|
nPlayerDAng = fix16_sadd(nPlayerDAng, localInput.q16avel);
|
||||||
inita &= kAngleMask;
|
inita &= kAngleMask;
|
||||||
|
@ -500,8 +500,11 @@ void GameTicker()
|
||||||
sPlayerInput[nLocalPlayer].xVel = lPlayerXVel;
|
sPlayerInput[nLocalPlayer].xVel = lPlayerXVel;
|
||||||
sPlayerInput[nLocalPlayer].yVel = lPlayerYVel;
|
sPlayerInput[nLocalPlayer].yVel = lPlayerYVel;
|
||||||
// make weapon selection persist until it gets used up.
|
// make weapon selection persist until it gets used up.
|
||||||
if ((lLocalButtons & kButtonWeaponBits) == 0) lLocalButtons |= sPlayerInput[nLocalPlayer].buttons & kButtonWeaponBits;
|
|
||||||
sPlayerInput[nLocalPlayer].buttons = lLocalButtons | lLocalCodes;
|
sPlayerInput[nLocalPlayer].buttons = lLocalButtons | lLocalCodes;
|
||||||
|
int weap = sPlayerInput[nLocalPlayer].getNewWeapon();
|
||||||
|
sPlayerInput[nLocalPlayer].actions = localInput.actions;
|
||||||
|
int weap2 = localInput.getNewWeapon();
|
||||||
|
if (weap2 <= 0 || weap2 > 7) sPlayerInput[nLocalPlayer].SetNewWeapon(weap);
|
||||||
sPlayerInput[nLocalPlayer].nTarget = besttarget;
|
sPlayerInput[nLocalPlayer].nTarget = besttarget;
|
||||||
|
|
||||||
Ra[nLocalPlayer].nTarget = besttarget;
|
Ra[nLocalPlayer].nTarget = besttarget;
|
||||||
|
|
|
@ -257,7 +257,7 @@ void GameLoop()
|
||||||
{
|
{
|
||||||
CheckKeys();
|
CheckKeys();
|
||||||
GameTicker();
|
GameTicker();
|
||||||
PlayerInterruptKeys();
|
PlayerInterruptKeys(true);
|
||||||
UpdateSounds();
|
UpdateSounds();
|
||||||
CheckKeys2();
|
CheckKeys2();
|
||||||
}
|
}
|
||||||
|
|
|
@ -28,7 +28,11 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||||
|
|
||||||
BEGIN_PS_NS
|
BEGIN_PS_NS
|
||||||
|
|
||||||
|
extern short bPlayerPan;
|
||||||
|
extern short bLockPan;
|
||||||
|
|
||||||
int WeaponToSend, BitsToSend;
|
int WeaponToSend, BitsToSend;
|
||||||
|
bool g_MyAimMode;
|
||||||
|
|
||||||
short nInputStack = 0;
|
short nInputStack = 0;
|
||||||
|
|
||||||
|
@ -82,8 +86,6 @@ int GetLocalInput()
|
||||||
{
|
{
|
||||||
lLocalButtons = (buttonMap.ButtonDown(gamefunc_Crouch) << 4) | (buttonMap.ButtonDown(gamefunc_Fire) << 3)
|
lLocalButtons = (buttonMap.ButtonDown(gamefunc_Crouch) << 4) | (buttonMap.ButtonDown(gamefunc_Fire) << 3)
|
||||||
| (buttonMap.ButtonDown(gamefunc_Jump) << 0);
|
| (buttonMap.ButtonDown(gamefunc_Jump) << 0);
|
||||||
lLocalButtons |= (WeaponToSend << 13);
|
|
||||||
WeaponToSend = 0;
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
@ -156,6 +158,221 @@ void CheckKeys2()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void PlayerInterruptKeys(bool after)
|
||||||
|
{
|
||||||
|
ControlInfo info;
|
||||||
|
memset(&info, 0, sizeof(ControlInfo)); // this is done within CONTROL_GetInput() anyway
|
||||||
|
CONTROL_GetInput(&info);
|
||||||
|
|
||||||
|
static double lastInputTicks;
|
||||||
|
auto const currentHiTicks = I_msTimeF();
|
||||||
|
double const elapsedInputTicks = currentHiTicks - lastInputTicks;
|
||||||
|
|
||||||
|
lastInputTicks = currentHiTicks;
|
||||||
|
|
||||||
|
auto scaleAdjustmentToInterval = [=](double x) { return x * (120 / 4) / (1000.0 / elapsedInputTicks); };
|
||||||
|
|
||||||
|
if (paused)
|
||||||
|
return;
|
||||||
|
|
||||||
|
localInput = {};
|
||||||
|
InputPacket input{};
|
||||||
|
fix16_t input_angle = 0;
|
||||||
|
|
||||||
|
if (PlayerList[nLocalPlayer].nHealth == 0)
|
||||||
|
{
|
||||||
|
lPlayerYVel = 0;
|
||||||
|
lPlayerXVel = 0;
|
||||||
|
nPlayerDAng = 0;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
// JBF: Run key behaviour is selectable
|
||||||
|
int const playerRunning = G_CheckAutorun(buttonMap.ButtonDown(gamefunc_Run));
|
||||||
|
int const turnAmount = playerRunning ? 12 : 8;
|
||||||
|
int const keyMove = playerRunning ? 12 : 6;
|
||||||
|
|
||||||
|
if (buttonMap.ButtonDown(gamefunc_Strafe))
|
||||||
|
{
|
||||||
|
input.svel -= info.mousex * 4.f;
|
||||||
|
input.svel -= info.dyaw * keyMove;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
input_angle = fix16_sadd(input_angle, fix16_from_float(info.mousex));
|
||||||
|
input_angle = fix16_sadd(input_angle, fix16_from_dbl(scaleAdjustmentToInterval(info.dyaw)));
|
||||||
|
}
|
||||||
|
|
||||||
|
g_MyAimMode = in_mousemode || buttonMap.ButtonDown(gamefunc_Mouse_Aiming);
|
||||||
|
|
||||||
|
if (g_MyAimMode)
|
||||||
|
input.q16horz = fix16_sadd(input.q16horz, fix16_from_float(info.mousey));
|
||||||
|
else
|
||||||
|
input.fvel -= info.mousey * 8.f;
|
||||||
|
|
||||||
|
if (!in_mouseflip) input.q16horz = -input.q16horz;
|
||||||
|
|
||||||
|
input.q16horz = fix16_ssub(input.q16horz, fix16_from_dbl(scaleAdjustmentToInterval(info.dpitch)));
|
||||||
|
input.svel -= info.dx * keyMove;
|
||||||
|
input.fvel -= info.dz * keyMove;
|
||||||
|
|
||||||
|
if (buttonMap.ButtonDown(gamefunc_Strafe))
|
||||||
|
{
|
||||||
|
if (buttonMap.ButtonDown(gamefunc_Turn_Left))
|
||||||
|
input.svel -= -keyMove;
|
||||||
|
|
||||||
|
if (buttonMap.ButtonDown(gamefunc_Turn_Right))
|
||||||
|
input.svel -= keyMove;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
static int turn = 0;
|
||||||
|
static int counter = 0;
|
||||||
|
// normal, non strafing movement
|
||||||
|
if (buttonMap.ButtonDown(gamefunc_Turn_Left))
|
||||||
|
{
|
||||||
|
turn -= 2;
|
||||||
|
|
||||||
|
if (turn < -turnAmount)
|
||||||
|
turn = -turnAmount;
|
||||||
|
}
|
||||||
|
else if (buttonMap.ButtonDown(gamefunc_Turn_Right))
|
||||||
|
{
|
||||||
|
turn += 2;
|
||||||
|
|
||||||
|
if (turn > turnAmount)
|
||||||
|
turn = turnAmount;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (turn < 0)
|
||||||
|
{
|
||||||
|
turn++;
|
||||||
|
if (turn > 0)
|
||||||
|
turn = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (turn > 0)
|
||||||
|
{
|
||||||
|
turn--;
|
||||||
|
if (turn < 0)
|
||||||
|
turn = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
//if ((counter++) % 4 == 0) // what was this for???
|
||||||
|
input_angle = fix16_sadd(input_angle, fix16_from_dbl(scaleAdjustmentToInterval(turn * 2)));
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
if (buttonMap.ButtonDown(gamefunc_Strafe_Left))
|
||||||
|
input.svel += keyMove;
|
||||||
|
|
||||||
|
if (buttonMap.ButtonDown(gamefunc_Strafe_Right))
|
||||||
|
input.svel += -keyMove;
|
||||||
|
|
||||||
|
if (buttonMap.ButtonDown(gamefunc_Move_Forward))
|
||||||
|
input.fvel += keyMove;
|
||||||
|
|
||||||
|
if (buttonMap.ButtonDown(gamefunc_Move_Backward))
|
||||||
|
input.fvel += -keyMove;
|
||||||
|
|
||||||
|
localInput.fvel = clamp(localInput.fvel + input.fvel, -12, 12);
|
||||||
|
localInput.svel = clamp(localInput.svel + input.svel, -12, 12);
|
||||||
|
|
||||||
|
localInput.q16avel = fix16_sadd(localInput.q16avel, input_angle);
|
||||||
|
|
||||||
|
if (!after)
|
||||||
|
{
|
||||||
|
if (WeaponToSend > 0)
|
||||||
|
localInput.SetNewWeapon(WeaponToSend);
|
||||||
|
WeaponToSend = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!nFreeze)
|
||||||
|
{
|
||||||
|
PlayerList[nLocalPlayer].q16angle = fix16_sadd(PlayerList[nLocalPlayer].q16angle, input_angle) & 0x7FFFFFF;
|
||||||
|
|
||||||
|
// A horiz diff of 128 equal 45 degrees,
|
||||||
|
// so we convert horiz to 1024 angle units
|
||||||
|
|
||||||
|
float const horizAngle = clamp(atan2f(PlayerList[nLocalPlayer].q16horiz - fix16_from_int(92), fix16_from_int(128)) * (512.f / fPI) + fix16_to_float(input.q16horz), -255.f, 255.f);
|
||||||
|
PlayerList[nLocalPlayer].q16horiz = fix16_from_int(92) + Blrintf(fix16_from_int(128) * tanf(horizAngle * (fPI / 512.f)));
|
||||||
|
|
||||||
|
// Look/aim up/down functions.
|
||||||
|
if (buttonMap.ButtonDown(gamefunc_Look_Up) || buttonMap.ButtonDown(gamefunc_Aim_Up))
|
||||||
|
{
|
||||||
|
bLockPan = false;
|
||||||
|
if (PlayerList[nLocalPlayer].q16horiz < fix16_from_int(180)) {
|
||||||
|
PlayerList[nLocalPlayer].q16horiz = fix16_sadd(PlayerList[nLocalPlayer].q16horiz, fix16_from_dbl(scaleAdjustmentToInterval(4)));
|
||||||
|
}
|
||||||
|
|
||||||
|
bPlayerPan = true;
|
||||||
|
nDestVertPan[nLocalPlayer] = PlayerList[nLocalPlayer].q16horiz;
|
||||||
|
}
|
||||||
|
else if (buttonMap.ButtonDown(gamefunc_Look_Down) || buttonMap.ButtonDown(gamefunc_Aim_Down))
|
||||||
|
{
|
||||||
|
bLockPan = false;
|
||||||
|
if (PlayerList[nLocalPlayer].q16horiz > fix16_from_int(4)) {
|
||||||
|
PlayerList[nLocalPlayer].q16horiz = fix16_ssub(PlayerList[nLocalPlayer].q16horiz, fix16_from_dbl(scaleAdjustmentToInterval(4)));
|
||||||
|
}
|
||||||
|
|
||||||
|
bPlayerPan = true;
|
||||||
|
nDestVertPan[nLocalPlayer] = PlayerList[nLocalPlayer].q16horiz;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// loc_1C048:
|
||||||
|
if (totalvel[nLocalPlayer] > 20) {
|
||||||
|
bPlayerPan = false;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (g_MyAimMode)
|
||||||
|
bLockPan = true;
|
||||||
|
|
||||||
|
// loc_1C05E
|
||||||
|
fix16_t ecx = nDestVertPan[nLocalPlayer] - PlayerList[nLocalPlayer].q16horiz;
|
||||||
|
|
||||||
|
if (g_MyAimMode)
|
||||||
|
{
|
||||||
|
ecx = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!nFreeze)
|
||||||
|
{
|
||||||
|
if (ecx)
|
||||||
|
{
|
||||||
|
if (ecx / 4 == 0)
|
||||||
|
{
|
||||||
|
if (ecx >= 0) {
|
||||||
|
ecx = 1;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
ecx = -1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
ecx /= 4;
|
||||||
|
|
||||||
|
if (ecx > fix16_from_int(4))
|
||||||
|
{
|
||||||
|
ecx = fix16_from_int(4);
|
||||||
|
}
|
||||||
|
else if (ecx < -fix16_from_int(4))
|
||||||
|
{
|
||||||
|
ecx = -fix16_from_int(4);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
PlayerList[nLocalPlayer].q16horiz = fix16_sadd(PlayerList[nLocalPlayer].q16horiz, ecx);
|
||||||
|
}
|
||||||
|
|
||||||
|
PlayerList[nLocalPlayer].q16horiz = fix16_clamp(PlayerList[nLocalPlayer].q16horiz, fix16_from_int(0), fix16_from_int(184));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
//---------------------------------------------------------------------------
|
//---------------------------------------------------------------------------
|
||||||
//
|
//
|
||||||
// CCMD based input. The basics are from Randi's ZDuke but this uses dynamic
|
// CCMD based input. The basics are from Randi's ZDuke but this uses dynamic
|
||||||
|
|
|
@ -53,7 +53,6 @@ fix16_t nPlayerDAng = 0;
|
||||||
short obobangle = 0, bobangle = 0;
|
short obobangle = 0, bobangle = 0;
|
||||||
short bPlayerPan = 0;
|
short bPlayerPan = 0;
|
||||||
short bLockPan = 0;
|
short bLockPan = 0;
|
||||||
bool g_MyAimMode;
|
|
||||||
|
|
||||||
static actionSeq ActionSeq[] = {
|
static actionSeq ActionSeq[] = {
|
||||||
{18, 0}, {0, 0}, {9, 0}, {27, 0}, {63, 0},
|
{18, 0}, {0, 0}, {9, 0}, {27, 0}, {63, 0},
|
||||||
|
@ -130,224 +129,6 @@ short PlayerCount;
|
||||||
short nNetStartSprites;
|
short nNetStartSprites;
|
||||||
short nCurStartSprite;
|
short nCurStartSprite;
|
||||||
|
|
||||||
/*
|
|
||||||
typedef struct
|
|
||||||
{
|
|
||||||
fixed dx;
|
|
||||||
fixed dy;
|
|
||||||
fixed dz;
|
|
||||||
fixed dyaw;
|
|
||||||
fixed dpitch;
|
|
||||||
fixed droll;
|
|
||||||
} ControlInfo;
|
|
||||||
*/
|
|
||||||
|
|
||||||
void PlayerInterruptKeys()
|
|
||||||
{
|
|
||||||
ControlInfo info;
|
|
||||||
memset(&info, 0, sizeof(ControlInfo)); // this is done within CONTROL_GetInput() anyway
|
|
||||||
CONTROL_GetInput(&info);
|
|
||||||
|
|
||||||
static double lastInputTicks;
|
|
||||||
auto const currentHiTicks = I_msTimeF();
|
|
||||||
double const elapsedInputTicks = currentHiTicks - lastInputTicks;
|
|
||||||
|
|
||||||
lastInputTicks = currentHiTicks;
|
|
||||||
|
|
||||||
auto scaleAdjustmentToInterval = [=](double x) { return x * (120 / 4) / (1000.0 / elapsedInputTicks); };
|
|
||||||
|
|
||||||
if (paused)
|
|
||||||
return;
|
|
||||||
|
|
||||||
localInput = {};
|
|
||||||
InputPacket input {};
|
|
||||||
fix16_t input_angle = 0;
|
|
||||||
|
|
||||||
if (PlayerList[nLocalPlayer].nHealth == 0)
|
|
||||||
{
|
|
||||||
lPlayerYVel = 0;
|
|
||||||
lPlayerXVel = 0;
|
|
||||||
nPlayerDAng = 0;
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
// JBF: Run key behaviour is selectable
|
|
||||||
int const playerRunning = G_CheckAutorun(buttonMap.ButtonDown(gamefunc_Run));
|
|
||||||
int const turnAmount = playerRunning ? 12 : 8;
|
|
||||||
int const keyMove = playerRunning ? 12 : 6;
|
|
||||||
|
|
||||||
if (buttonMap.ButtonDown(gamefunc_Strafe))
|
|
||||||
{
|
|
||||||
input.svel -= info.mousex * 4.f;
|
|
||||||
input.svel -= info.dyaw * keyMove;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
input_angle = fix16_sadd(input_angle, fix16_from_float(info.mousex));
|
|
||||||
input_angle = fix16_sadd(input_angle, fix16_from_dbl(scaleAdjustmentToInterval(info.dyaw)));
|
|
||||||
}
|
|
||||||
|
|
||||||
g_MyAimMode = in_mousemode || buttonMap.ButtonDown(gamefunc_Mouse_Aiming);
|
|
||||||
|
|
||||||
if (g_MyAimMode)
|
|
||||||
input.q16horz = fix16_sadd(input.q16horz, fix16_from_float(info.mousey));
|
|
||||||
else
|
|
||||||
input.fvel -= info.mousey * 8.f;
|
|
||||||
|
|
||||||
if (!in_mouseflip) input.q16horz = -input.q16horz;
|
|
||||||
|
|
||||||
input.q16horz = fix16_ssub(input.q16horz, fix16_from_dbl(scaleAdjustmentToInterval(info.dpitch)));
|
|
||||||
input.svel -= info.dx * keyMove;
|
|
||||||
input.fvel -= info.dz * keyMove;
|
|
||||||
|
|
||||||
if (buttonMap.ButtonDown(gamefunc_Strafe))
|
|
||||||
{
|
|
||||||
if (buttonMap.ButtonDown(gamefunc_Turn_Left))
|
|
||||||
input.svel -= -keyMove;
|
|
||||||
|
|
||||||
if (buttonMap.ButtonDown(gamefunc_Turn_Right))
|
|
||||||
input.svel -= keyMove;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
static int turn = 0;
|
|
||||||
static int counter = 0;
|
|
||||||
// normal, non strafing movement
|
|
||||||
if (buttonMap.ButtonDown(gamefunc_Turn_Left))
|
|
||||||
{
|
|
||||||
turn -= 2;
|
|
||||||
|
|
||||||
if (turn < -turnAmount)
|
|
||||||
turn = -turnAmount;
|
|
||||||
}
|
|
||||||
else if (buttonMap.ButtonDown(gamefunc_Turn_Right))
|
|
||||||
{
|
|
||||||
turn += 2;
|
|
||||||
|
|
||||||
if (turn > turnAmount)
|
|
||||||
turn = turnAmount;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (turn < 0)
|
|
||||||
{
|
|
||||||
turn++;
|
|
||||||
if (turn > 0)
|
|
||||||
turn = 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (turn > 0)
|
|
||||||
{
|
|
||||||
turn--;
|
|
||||||
if (turn < 0)
|
|
||||||
turn = 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
//if ((counter++) % 4 == 0) // what was this for???
|
|
||||||
input_angle = fix16_sadd(input_angle, fix16_from_dbl(scaleAdjustmentToInterval(turn * 2)));
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
if (buttonMap.ButtonDown(gamefunc_Strafe_Left))
|
|
||||||
input.svel += keyMove;
|
|
||||||
|
|
||||||
if (buttonMap.ButtonDown(gamefunc_Strafe_Right))
|
|
||||||
input.svel += -keyMove;
|
|
||||||
|
|
||||||
if (buttonMap.ButtonDown(gamefunc_Move_Forward))
|
|
||||||
input.fvel += keyMove;
|
|
||||||
|
|
||||||
if (buttonMap.ButtonDown(gamefunc_Move_Backward))
|
|
||||||
input.fvel += -keyMove;
|
|
||||||
|
|
||||||
localInput.fvel = clamp(localInput.fvel + input.fvel, -12, 12);
|
|
||||||
localInput.svel = clamp(localInput.svel + input.svel, -12, 12);
|
|
||||||
|
|
||||||
localInput.q16avel = fix16_sadd(localInput.q16avel, input_angle);
|
|
||||||
|
|
||||||
if (!nFreeze)
|
|
||||||
{
|
|
||||||
PlayerList[nLocalPlayer].q16angle = fix16_sadd(PlayerList[nLocalPlayer].q16angle, input_angle) & 0x7FFFFFF;
|
|
||||||
|
|
||||||
// A horiz diff of 128 equal 45 degrees,
|
|
||||||
// so we convert horiz to 1024 angle units
|
|
||||||
|
|
||||||
float const horizAngle = clamp(atan2f(PlayerList[nLocalPlayer].q16horiz - fix16_from_int(92), fix16_from_int(128)) * (512.f / fPI) + fix16_to_float(input.q16horz), -255.f, 255.f);
|
|
||||||
PlayerList[nLocalPlayer].q16horiz = fix16_from_int(92) + Blrintf(fix16_from_int(128) * tanf(horizAngle * (fPI / 512.f)));
|
|
||||||
|
|
||||||
// Look/aim up/down functions.
|
|
||||||
if (buttonMap.ButtonDown(gamefunc_Look_Up) || buttonMap.ButtonDown(gamefunc_Aim_Up))
|
|
||||||
{
|
|
||||||
bLockPan = false;
|
|
||||||
if (PlayerList[nLocalPlayer].q16horiz < fix16_from_int(180)) {
|
|
||||||
PlayerList[nLocalPlayer].q16horiz = fix16_sadd(PlayerList[nLocalPlayer].q16horiz, fix16_from_dbl(scaleAdjustmentToInterval(4)));
|
|
||||||
}
|
|
||||||
|
|
||||||
bPlayerPan = true;
|
|
||||||
nDestVertPan[nLocalPlayer] = PlayerList[nLocalPlayer].q16horiz;
|
|
||||||
}
|
|
||||||
else if (buttonMap.ButtonDown(gamefunc_Look_Down) || buttonMap.ButtonDown(gamefunc_Aim_Down))
|
|
||||||
{
|
|
||||||
bLockPan = false;
|
|
||||||
if (PlayerList[nLocalPlayer].q16horiz > fix16_from_int(4)) {
|
|
||||||
PlayerList[nLocalPlayer].q16horiz = fix16_ssub(PlayerList[nLocalPlayer].q16horiz, fix16_from_dbl(scaleAdjustmentToInterval(4)));
|
|
||||||
}
|
|
||||||
|
|
||||||
bPlayerPan = true;
|
|
||||||
nDestVertPan[nLocalPlayer] = PlayerList[nLocalPlayer].q16horiz;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// loc_1C048:
|
|
||||||
if (totalvel[nLocalPlayer] > 20) {
|
|
||||||
bPlayerPan = false;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (g_MyAimMode)
|
|
||||||
bLockPan = true;
|
|
||||||
|
|
||||||
// loc_1C05E
|
|
||||||
fix16_t ecx = nDestVertPan[nLocalPlayer] - PlayerList[nLocalPlayer].q16horiz;
|
|
||||||
|
|
||||||
if (g_MyAimMode)
|
|
||||||
{
|
|
||||||
ecx = 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!nFreeze)
|
|
||||||
{
|
|
||||||
if (ecx)
|
|
||||||
{
|
|
||||||
if (ecx / 4 == 0)
|
|
||||||
{
|
|
||||||
if (ecx >= 0) {
|
|
||||||
ecx = 1;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
ecx = -1;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
ecx /= 4;
|
|
||||||
|
|
||||||
if (ecx > fix16_from_int(4))
|
|
||||||
{
|
|
||||||
ecx = fix16_from_int(4);
|
|
||||||
}
|
|
||||||
else if (ecx < -fix16_from_int(4))
|
|
||||||
{
|
|
||||||
ecx = -fix16_from_int(4);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
PlayerList[nLocalPlayer].q16horiz = fix16_sadd(PlayerList[nLocalPlayer].q16horiz, ecx);
|
|
||||||
}
|
|
||||||
|
|
||||||
PlayerList[nLocalPlayer].q16horiz = fix16_clamp(PlayerList[nLocalPlayer].q16horiz, fix16_from_int(0), fix16_from_int(184));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void RestoreSavePoint(int nPlayer, int *x, int *y, int *z, short *nSector, short *nAngle)
|
void RestoreSavePoint(int nPlayer, int *x, int *y, int *z, short *nSector, short *nAngle)
|
||||||
{
|
{
|
||||||
*x = sPlayerSave[nPlayer].x;
|
*x = sPlayerSave[nPlayer].x;
|
||||||
|
@ -2884,7 +2665,7 @@ loc_1BD2E:
|
||||||
|
|
||||||
// loc_1BE70:
|
// loc_1BE70:
|
||||||
// Handle player pressing number keys to change weapon
|
// Handle player pressing number keys to change weapon
|
||||||
uint8_t var_90 = (buttons >> 13) & 0xF;
|
uint8_t var_90 = sPlayerInput[nPlayer].getNewWeapon();
|
||||||
|
|
||||||
if (var_90)
|
if (var_90)
|
||||||
{
|
{
|
||||||
|
@ -3108,7 +2889,6 @@ static SavegameHelper sgh("player",
|
||||||
SV(bobangle),
|
SV(bobangle),
|
||||||
SV(bPlayerPan),
|
SV(bPlayerPan),
|
||||||
SV(bLockPan),
|
SV(bLockPan),
|
||||||
SV(g_MyAimMode),
|
|
||||||
SV(nStandHeight),
|
SV(nStandHeight),
|
||||||
SV(PlayerCount),
|
SV(PlayerCount),
|
||||||
SV(nNetStartSprites),
|
SV(nNetStartSprites),
|
||||||
|
|
|
@ -23,7 +23,7 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||||
|
|
||||||
BEGIN_PS_NS
|
BEGIN_PS_NS
|
||||||
|
|
||||||
void PlayerInterruptKeys();
|
void PlayerInterruptKeys(bool after);
|
||||||
void RestoreSavePoint(int nPlayer, int *x, int *y, int *z, short *nSector, short *nAngle);
|
void RestoreSavePoint(int nPlayer, int *x, int *y, int *z, short *nSector, short *nAngle);
|
||||||
void SetSavePoint(int nPlayer, int x, int y, int z, short nSector, short nAngle);
|
void SetSavePoint(int nPlayer, int x, int y, int z, short nSector, short nAngle);
|
||||||
void InitPlayer();
|
void InitPlayer();
|
||||||
|
|
|
@ -33,6 +33,18 @@ struct PlayerInput
|
||||||
short nTarget;
|
short nTarget;
|
||||||
fix16_t horizon;
|
fix16_t horizon;
|
||||||
int8_t nItem;
|
int8_t nItem;
|
||||||
|
ESyncBits actions;
|
||||||
|
|
||||||
|
int getNewWeapon() const
|
||||||
|
{
|
||||||
|
return (actions & SB_WEAPONMASK_BITS).GetValue();
|
||||||
|
}
|
||||||
|
|
||||||
|
void SetNewWeapon(int weap)
|
||||||
|
{
|
||||||
|
actions = (actions & ~SB_WEAPONMASK_BITS) | (ESyncBits::FromInt(weap) & SB_WEAPONMASK_BITS);
|
||||||
|
}
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
void InitInput();
|
void InitInput();
|
||||||
|
|
Loading…
Reference in a new issue