diff --git a/src/game/bondmove.c b/src/game/bondmove.c index 67b8deb73..b2e0ad054 100644 --- a/src/game/bondmove.c +++ b/src/game/bondmove.c @@ -44,15 +44,15 @@ void bmoveSetAutoMoveCentreEnabled(bool enabled) g_Vars.currentplayer->automovecentreenabled = enabled; } -void bmoveSetAutoAimY(bool enabled) +void bmoveSetAutoAim(bool enabled) { - g_Vars.currentplayer->autoyaimenabled = enabled; + g_Vars.currentplayer->autoaimenabled = enabled; } -bool bmoveIsAutoAimYEnabled(void) +bool bmoveIsAutoAimEnabled(void) { if (!g_Vars.normmplayerisrunning) { - return g_Vars.currentplayer->autoyaimenabled; + return g_Vars.currentplayer->autoaimenabled; } if (g_MpSetup.options & MPOPTION_NOAUTOAIM) { @@ -62,7 +62,7 @@ bool bmoveIsAutoAimYEnabled(void) return optionsGetAutoAim(g_Vars.currentplayerstats->mpindex); } -bool bmoveIsAutoAimYEnabledForCurrentWeapon(void) +bool bmoveIsAutoAimEnabledForCurrentWeapon(void) { struct weaponfunc *func = currentPlayerGetWeaponFunction(0); @@ -76,7 +76,7 @@ bool bmoveIsAutoAimYEnabledForCurrentWeapon(void) } } - return bmoveIsAutoAimYEnabled(); + return bmoveIsAutoAimEnabled(); } bool bmoveIsInSightAimMode(void) @@ -84,75 +84,23 @@ bool bmoveIsInSightAimMode(void) return g_Vars.currentplayer->insightaimmode; } -void bmoveUpdateAutoAimYProp(struct prop *prop, f32 autoaimy) +void bmoveUpdateAutoAimProp(struct prop *prop, f32 x, f32 y) { - if (g_Vars.currentplayer->autoyaimtime60 >= 0) { - g_Vars.currentplayer->autoyaimtime60 -= g_Vars.lvupdate60; + if (g_Vars.currentplayer->autoaimtime60 >= 0) { + g_Vars.currentplayer->autoaimtime60 -= g_Vars.lvupdate60; } - if (prop != g_Vars.currentplayer->autoyaimprop) { - if (g_Vars.currentplayer->autoyaimtime60 < 0) { - g_Vars.currentplayer->autoyaimtime60 = TICKS(30); - g_Vars.currentplayer->autoyaimprop = prop; + if (prop != g_Vars.currentplayer->autoaimprop) { + if (g_Vars.currentplayer->autoaimtime60 < 0) { + g_Vars.currentplayer->autoaimtime60 = TICKS(30); + g_Vars.currentplayer->autoaimprop = prop; } else { return; } } - g_Vars.currentplayer->autoaimy = autoaimy; -} - -void bmoveSetAutoAimX(bool enabled) -{ - g_Vars.currentplayer->autoxaimenabled = enabled; -} - -bool bmoveIsAutoAimXEnabled(void) -{ - if (!g_Vars.normmplayerisrunning) { - return g_Vars.currentplayer->autoxaimenabled; - } - - if (g_MpSetup.options & MPOPTION_NOAUTOAIM) { - return false; - } - - return optionsGetAutoAim(g_Vars.currentplayerstats->mpindex); -} - -bool bmoveIsAutoAimXEnabledForCurrentWeapon(void) -{ - struct weaponfunc *func = currentPlayerGetWeaponFunction(0); - - if (func) { - if (func->flags & FUNCFLAG_NOAUTOAIM) { - return false; - } - - if ((func->type & 0xff) == INVENTORYFUNCTYPE_CLOSE) { - return true; - } - } - - return bmoveIsAutoAimXEnabled(); -} - -void bmoveUpdateAutoAimXProp(struct prop *prop, f32 autoaimx) -{ - if (g_Vars.currentplayer->autoxaimtime60 >= 0) { - g_Vars.currentplayer->autoxaimtime60 -= g_Vars.lvupdate60; - } - - if (prop != g_Vars.currentplayer->autoxaimprop) { - if (g_Vars.currentplayer->autoxaimtime60 < 0) { - g_Vars.currentplayer->autoxaimtime60 = TICKS(30); - g_Vars.currentplayer->autoxaimprop = prop; - } else { - return; - } - } - - g_Vars.currentplayer->autoaimx = autoaimx; + g_Vars.currentplayer->autoaimx = x; + g_Vars.currentplayer->autoaimy = y; } struct prop *bmoveGetHoverbike(void) @@ -1732,9 +1680,8 @@ void bmoveProcessInput(bool allowc1x, bool allowc1y, bool allowc1buttons, bool i if ( ( movedata.canautoaim - && (bmoveIsAutoAimXEnabledForCurrentWeapon() || bmoveIsAutoAimYEnabledForCurrentWeapon()) - && g_Vars.currentplayer->autoxaimprop - && g_Vars.currentplayer->autoyaimprop + && bmoveIsAutoAimEnabledForCurrentWeapon() + && g_Vars.currentplayer->autoaimprop && weaponHasAimFlag(weaponnum, INVAIMFLAG_AUTOAIM) ) || (bgunGetWeaponNum(HAND_RIGHT) == WEAPON_CMP150 && g_Vars.currentplayer->hands[HAND_RIGHT].gset.weaponfunc == FUNC_SECONDARY)) { diff --git a/src/game/player.c b/src/game/player.c index 9bfbe1281..ec2a5809c 100644 --- a/src/game/player.c +++ b/src/game/player.c @@ -692,15 +692,11 @@ void playerLoadDefaults(void) g_Vars.currentplayer->automovecentre = true; g_Vars.currentplayer->insightaimmode = false; - g_Vars.currentplayer->autoyaimenabled = true; - g_Vars.currentplayer->autoaimy = 0; - g_Vars.currentplayer->autoyaimprop = NULL; - g_Vars.currentplayer->autoyaimtime60 = -1; - - g_Vars.currentplayer->autoxaimenabled = true; + g_Vars.currentplayer->autoaimenabled = true; g_Vars.currentplayer->autoaimx = 0; - g_Vars.currentplayer->autoxaimprop = NULL; - g_Vars.currentplayer->autoxaimtime60 = -1; + g_Vars.currentplayer->autoaimy = 0; + g_Vars.currentplayer->autoaimprop = NULL; + g_Vars.currentplayer->autoaimtime60 = -1; g_Vars.currentplayer->autoaimdamp = (PAL ? 0.974f : 0.979f); @@ -2955,8 +2951,7 @@ void playerTick(bool arg0) playerUpdateColourScreenProperties(); playerTickChrFade(); - bmoveSetAutoAimY(optionsGetAutoAim(g_Vars.currentplayerstats->mpindex)); - bmoveSetAutoAimX(optionsGetAutoAim(g_Vars.currentplayerstats->mpindex)); + bmoveSetAutoAim(optionsGetAutoAim(g_Vars.currentplayerstats->mpindex)); bmoveSetAutoMoveCentreEnabled(optionsGetLookAhead(g_Vars.currentplayerstats->mpindex)); bgunSetGunAmmoVisible(GUNAMMOREASON_OPTION, optionsGetAmmoOnScreen(g_Vars.currentplayerstats->mpindex)); bgunSetSightVisible(GUNSIGHTREASON_1, true); diff --git a/src/game/playermgr.c b/src/game/playermgr.c index da6d55072..786ff6871 100644 --- a/src/game/playermgr.c +++ b/src/game/playermgr.c @@ -270,15 +270,11 @@ void playermgrAllocatePlayer(s32 index) g_Vars.players[index]->automovecentre = true; g_Vars.players[index]->insightaimmode = false; - g_Vars.players[index]->autoyaimenabled = true; - g_Vars.players[index]->autoaimy = 0; - g_Vars.players[index]->autoyaimprop = NULL; - g_Vars.players[index]->autoyaimtime60 = -1; - - g_Vars.players[index]->autoxaimenabled = true; + g_Vars.players[index]->autoaimenabled = true; g_Vars.players[index]->autoaimx = 0; - g_Vars.players[index]->autoxaimprop = NULL; - g_Vars.players[index]->autoxaimtime60 = -1; + g_Vars.players[index]->autoaimy = 0; + g_Vars.players[index]->autoaimprop = NULL; + g_Vars.players[index]->autoaimtime60 = -1; g_Vars.players[index]->vv_theta = 0; g_Vars.players[index]->speedtheta = 0; diff --git a/src/game/prop.c b/src/game/prop.c index 7655e7031..025eedacf 100644 --- a/src/game/prop.c +++ b/src/game/prop.c @@ -2282,7 +2282,7 @@ f32 func0f06438c(struct prop *prop, struct coord *arg1, f32 *arg2, f32 *arg3, f3 sp8c[0] = floorf(sp8c[0]); sp84[0] = ceilf(sp84[0]); - if (bmoveIsAutoAimXEnabledForCurrentWeapon() || cangangsta) { + if (bmoveIsAutoAimEnabledForCurrentWeapon() || cangangsta) { if (sp8c[0] <= right && left <= sp84[0]) { sp48 = (sp84[0] - sp8c[0]) * 1.5f; @@ -2325,7 +2325,7 @@ f32 func0f06438c(struct prop *prop, struct coord *arg1, f32 *arg2, f32 *arg3, f3 arg4[1] = value; - if (bmoveIsAutoAimXEnabledForCurrentWeapon() || cangangsta) { + if (bmoveIsAutoAimEnabledForCurrentWeapon() || cangangsta) { f32 value = spa0[0]; if (value < left) { @@ -2521,9 +2521,7 @@ void autoaimTick(void) break; } } - } else if ((bmoveIsAutoAimYEnabledForCurrentWeapon() - || bmoveIsAutoAimXEnabledForCurrentWeapon() - || cangangsta) && !isclose) { + } else if ((bmoveIsAutoAimEnabledForCurrentWeapon() || cangangsta) && !isclose) { // Standard auto aim f32 bestthing = -1; struct prop *prop; @@ -2570,12 +2568,10 @@ void autoaimTick(void) } if (bestprop) { - if (bmoveIsAutoAimYEnabledForCurrentWeapon() || iscmpsec) { - bmoveUpdateAutoAimYProp(bestprop, (aimpos[1] - camGetScreenTop()) / (camGetScreenHeight() * 0.5f) - 1); - } - - if (bmoveIsAutoAimXEnabledForCurrentWeapon() || iscmpsec) { - bmoveUpdateAutoAimXProp(bestprop, (aimpos[0] - camGetScreenLeft()) / (camGetScreenWidth() * 0.5f) - 1); + if (bmoveIsAutoAimEnabledForCurrentWeapon() || iscmpsec) { + f32 x = (aimpos[0] - camGetScreenLeft()) / (camGetScreenWidth() * 0.5f) - 1; + f32 y = (aimpos[1] - camGetScreenTop()) / (camGetScreenHeight() * 0.5f) - 1; + bmoveUpdateAutoAimProp(bestprop, x, y); } if (cangangsta) { @@ -2594,8 +2590,7 @@ void autoaimTick(void) } } else { u32 stack; - bmoveUpdateAutoAimYProp(NULL, 0); - bmoveUpdateAutoAimXProp(NULL, 0); + bmoveUpdateAutoAimProp(NULL, 0, 0); g_Vars.currentplayer->gunctrl.gangsta = false; } diff --git a/src/include/game/bondmove.h b/src/include/game/bondmove.h index 378ab167c..7ad2dc9c7 100644 --- a/src/include/game/bondmove.h +++ b/src/include/game/bondmove.h @@ -6,15 +6,11 @@ void bmoveSetControlDef(u32 controldef); void bmoveSetAutoMoveCentreEnabled(bool enabled); -void bmoveSetAutoAimY(bool enabled); -bool bmoveIsAutoAimYEnabled(void); -bool bmoveIsAutoAimYEnabledForCurrentWeapon(void); +void bmoveSetAutoAim(bool enabled); +bool bmoveIsAutoAimEnabled(void); +bool bmoveIsAutoAimEnabledForCurrentWeapon(void); bool bmoveIsInSightAimMode(void); -void bmoveUpdateAutoAimYProp(struct prop *prop, f32 autoaimy); -void bmoveSetAutoAimX(bool enabled); -bool bmoveIsAutoAimXEnabled(void); -bool bmoveIsAutoAimXEnabledForCurrentWeapon(void); -void bmoveUpdateAutoAimXProp(struct prop *prop, f32 autoaimx); +void bmoveUpdateAutoAimProp(struct prop *prop, f32 x, f32 y); struct prop *bmoveGetHoverbike(void); struct prop *bmoveGetGrabbedProp(void); void bmoveGrabProp(struct prop *prop); diff --git a/src/include/types.h b/src/include/types.h index c9664a06a..b9dbc730d 100644 --- a/src/include/types.h +++ b/src/include/types.h @@ -2390,15 +2390,15 @@ struct player { /*0x011c*/ bool automovecentre; /*0x0120*/ bool insightaimmode; - /*0x0124*/ bool autoyaimenabled; + /*0x0124*/ bool autoaimenabled; + /*0x0128*/ f32 autoaimx; /*0x0128*/ f32 autoaimy; - /*0x012c*/ struct prop *autoyaimprop; - /*0x0130*/ s32 autoyaimtime60; + /*0x012c*/ struct prop *autoaimprop; + /*0x0130*/ s32 autoaimtime60; - /*0x0134*/ bool autoxaimenabled; - /*0x0138*/ f32 autoaimx; - /*0x013c*/ struct prop *autoxaimprop; - /*0x0140*/ s32 autoxaimtime60; + /*0x0124*/ bool autoxaimenabled; + /*0x012c*/ struct prop *autoaimxprop; + /*0x0130*/ s32 autoaimxtime60; /*0x0144*/ f32 vv_theta; // turn angle in degrees /*0x0148*/ f32 speedtheta; // turn speed