Server: Improve Button Check logic for Firing/ADS

Moves everything together to improve branching/speed things up a bit.
Also adds a note about PC flipping the fire buttons for akimbo weaponry
and puts akimbo stuff closer together.
This commit is contained in:
Ian 2022-11-17 22:11:52 -05:00
parent 1f64c0239a
commit b74c6cd8c8

View file

@ -1597,7 +1597,6 @@ void(float side) W_Fire =
* W_Knife * * W_Knife *
******************************/ ******************************/
// FIXME - knife & nade vmodels change skin on PSP!
void () W_Knife = void () W_Knife =
{ {
if (time < self.knife_delay || self.new_anim_stop || if (time < self.knife_delay || self.new_anim_stop ||
@ -2370,69 +2369,63 @@ void () Weapon_Logic =
UpdatePunchangle(self); UpdatePunchangle(self);
#endif #endif
//FIXME - cleanup! //
if (IsDualWeapon(self.weapon)) { // Fire Button Logic
// NOTE: Since the right weapon is the "normal" side there's some
// flip flop logic on PC so that LMB will fire the left side instead.
//
// Right Trigger/LMB/etc.
if (self.button0) { if (self.button0) {
#ifdef PC #ifdef PC
W_Fire(S_LEFT); if (IsDualWeapon(self.weapon)) { W_Fire(S_LEFT); } else { W_Fire(S_RIGHT); }
#else #else
W_Fire(S_RIGHT); W_Fire(S_RIGHT);
#endif #endif // PC
} else { } else {
#ifdef PC // Check for release for semi automatic weapons.
self.semi2 = FALSE; #ifdef PC
#else if (IsDualWeapon(self.weapon)) { self.semi2 = false; } else { self.semi = false; }
self.semi = FALSE; #else
#endif self.semi = false;
#endif // PC
} }
// Left Trigger/RMB/etc.
if (self.button8) { if (self.button8) {
#ifdef PC if (IsDualWeapon(self.weapon)) {
#ifdef PC
W_Fire(S_RIGHT); W_Fire(S_RIGHT);
#else #else
W_Fire(S_LEFT); W_Fire(S_LEFT);
#endif #endif // PC
} else { } else {
#ifdef PC // Toggle ADS back and forth
self.semi = FALSE;
#else
self.semi2 = FALSE;
#endif
}
} else {
if (self.button0) {
W_Fire(S_RIGHT);
} else {
self.semi = FALSE;
}
if (cvar("cl_adsmode")) { if (cvar("cl_adsmode")) {
if (self.button8) {
self.ads_toggle = !self.ads_toggle; self.ads_toggle = !self.ads_toggle;
if (self.ads_toggle == false) { if (self.ads_toggle == false) {
W_AimOut(); W_AimOut();
self.zoom = 0; self.zoom = 0;
#ifdef PC #ifdef PC
self.viewzoom = 1; self.viewzoom = 1;
UpdateVmodel(self.weaponmodel, GetWepSkin(self.weapon)); UpdateVmodel(self.weaponmodel, GetWepSkin(self.weapon));
UpdateV2model(self.weapon2model, 0); UpdateV2model(self.weapon2model, 0);
#endif #endif // PC
} else { } else {
W_AimIn(); W_AimIn();
self.zoom = 1; self.zoom = 1;
#ifdef PC #ifdef PC
self.viewzoom = 0.9; self.viewzoom = 0.9;
#endif #endif // PC
}
} }
} else { } else {
if (self.button8) {
if (!self.zoom) { if (!self.zoom) {
W_AimIn(); W_AimIn();
} }
#ifdef PC #ifdef PC
else { else {
if (self.weapon == W_KAR_SCOPE || self.weapon == W_PTRS || if (self.weapon == W_KAR_SCOPE || self.weapon == W_PTRS ||
@ -2448,10 +2441,11 @@ void () Weapon_Logic =
self.viewzoom = 0.89999; self.viewzoom = 0.89999;
} }
} }
#endif #endif // PC
}
}
} else if (!self.button8 && self.zoom) { } else if (!self.button8 && self.zoom) {
#ifdef PC
#ifdef PC
if (self.weapon == W_KAR_SCOPE || self.weapon == W_PTRS || if (self.weapon == W_KAR_SCOPE || self.weapon == W_PTRS ||
self.weapon == W_HEADCRACKER || self.weapon == W_PENETRATOR) { self.weapon == W_HEADCRACKER || self.weapon == W_PENETRATOR) {
if (self.viewzoom == 0.5) { if (self.viewzoom == 0.5) {
@ -2474,10 +2468,17 @@ void () Weapon_Logic =
self.viewzoom = 1; self.viewzoom = 1;
self.zoom = 0; self.zoom = 0;
} }
#else #else
W_AimOut(); W_AimOut();
#endif #endif // PC
} } else {
// Check for release for semi automatic weapons.
if (IsDualWeapon(self.weapon)) {
#ifdef PC
self.semi = false;
#else
self.semi2 = false;
#endif // PC
} }
} }