Skip to content

Commit 498e166

Browse files
authored
Merge pull request fgsfdsfgs#631 from AL2009man/CrosshairFix
Crosshair Edge Deadzone slider and fixed `insightaim` Camera Movement
2 parents 1954141 + 09df313 commit 498e166

File tree

5 files changed

+44
-17
lines changed

5 files changed

+44
-17
lines changed

port/src/main.c

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -179,6 +179,7 @@ PD_CONSTRUCTOR static void gameConfigInit(void)
179179
configRegisterFloat(strFmt("Game.Player%d.MouseAimSpeedY", i), &g_PlayerExtCfg[j].mouseaimspeedy, 0.f, 10.f);
180180
configRegisterFloat(strFmt("Game.Player%d.RadialMenuSpeed", i), &g_PlayerExtCfg[j].radialmenuspeed, 0.f, 10.f);
181181
configRegisterFloat(strFmt("Game.Player%d.CrosshairSway", i), &g_PlayerExtCfg[j].crosshairsway, 0.f, 10.f);
182+
configRegisterFloat(strFmt("Game.Player%d.CrosshairEdgeBoundary", i), &g_PlayerExtCfg[j].crosshairedgeboundary, 0.0f, 1.0f);
182183
configRegisterInt(strFmt("Game.Player%d.CrouchMode", i), &g_PlayerExtCfg[j].crouchmode, 0, CROUCHMODE_TOGGLE_ANALOG);
183184
configRegisterInt(strFmt("Game.Player%d.ExtendedControls", i), &g_PlayerExtCfg[j].extcontrols, 0, 1);
184185
configRegisterUInt(strFmt("Game.Player%d.CrosshairColour", i), &g_PlayerExtCfg[j].crosshaircolour, 0, 0xFFFFFFFF);

port/src/optionsmenu.c

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1291,6 +1291,22 @@ static MenuItemHandlerResult menuhandlerCrosshairSway(s32 operation, struct menu
12911291
return 0;
12921292
}
12931293

1294+
static MenuItemHandlerResult menuhandlerCrosshairEdgeBoundary(s32 operation, struct menuitem* item, union handlerdata *data)
1295+
{
1296+
switch (operation) {
1297+
case MENUOP_GETSLIDER:
1298+
data->slider.value = (s32)(g_PlayerExtCfg[g_ExtMenuPlayer].crosshairedgeboundary * 10.f + 0.5f);
1299+
break;
1300+
case MENUOP_SET:
1301+
g_PlayerExtCfg[g_ExtMenuPlayer].crosshairedgeboundary = (f32)data->slider.value / 10.f;
1302+
break;
1303+
case MENUOP_GETSLIDERLABEL:
1304+
sprintf(data->slider.label, "%d", (s32)data->slider.value);
1305+
break;
1306+
}
1307+
return 0;
1308+
}
1309+
12941310
static MenuItemHandlerResult menuhandlerCrosshairR(s32 operation, struct menuitem* item, union handlerdata* data)
12951311
{
12961312
u32 newColor;
@@ -1512,6 +1528,14 @@ struct menuitem g_ExtendedGameMenuItems[] = {
15121528
20,
15131529
menuhandlerCrosshairSway,
15141530
},
1531+
{
1532+
MENUITEMTYPE_SLIDER,
1533+
0,
1534+
MENUITEMFLAG_LITERAL_TEXT | MENUITEMFLAG_SLIDER_WIDE,
1535+
(uintptr_t)"Crosshair Edge Deadzone",
1536+
10,
1537+
menuhandlerCrosshairEdgeBoundary,
1538+
},
15151539
{
15161540
MENUITEMTYPE_SLIDER,
15171541
0,

src/game/bondmove.c

Lines changed: 17 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -1412,31 +1412,31 @@ void bmoveProcessInput(bool allowc1x, bool allowc1y, bool allowc1buttons, bool i
14121412
}
14131413

14141414
#ifndef PLATFORM_N64
1415-
// Handle turning and looking up/down via mouselook when aiming
1416-
if (g_Vars.currentplayer->insightaimmode && allowmcross && bgunGetWeaponNum(HAND_RIGHT) != WEAPON_HORIZONSCANNER) {
1417-
if (g_Vars.currentplayer->swivelpos[0] > 0.9f) {
1418-
movedata.aimturnrightspeed = (g_Vars.currentplayer->swivelpos[0] - 0.9f) / 0.1f;
1419-
movedata.aimturnleftspeed = 0.f;
1420-
} else if (g_Vars.currentplayer->swivelpos[0] < -0.9f) {
1421-
movedata.aimturnleftspeed = (g_Vars.currentplayer->swivelpos[0] - -0.9f) / -0.1f;
1422-
movedata.aimturnrightspeed = 0.f;
1415+
// Handle turning and looking (x/y) via mouselook when aiming
1416+
bool allowcross = allowmcross;
1417+
if (g_Vars.currentplayer->insightaimmode && allowcross && bgunGetWeaponNum(HAND_RIGHT) != WEAPON_HORIZONSCANNER) {
1418+
float edge_boundary = PLAYER_EXTCFG().crosshairedgeboundary;
1419+
if (g_Vars.currentplayer->swivelpos[0] > edge_boundary) {
1420+
movedata.aimturnrightspeed += (g_Vars.currentplayer->swivelpos[0] - edge_boundary) / (1.0f - edge_boundary);
1421+
} else if (g_Vars.currentplayer->swivelpos[0] < -edge_boundary) {
1422+
movedata.aimturnleftspeed += (g_Vars.currentplayer->swivelpos[0] + edge_boundary) / -(1.0f - edge_boundary);
14231423
}
14241424
f32 vertaup = 0.f, vertadown = 0.f;
1425-
if (g_Vars.currentplayer->swivelpos[1] > 0.9f) {
1426-
vertaup = (g_Vars.currentplayer->swivelpos[1] - 0.9f) / 0.1f;
1427-
} else if (g_Vars.currentplayer->swivelpos[1] < -0.9f) {
1428-
vertadown = (g_Vars.currentplayer->swivelpos[1] - -0.9f) / -0.1f;
1425+
if (g_Vars.currentplayer->swivelpos[1] > edge_boundary) {
1426+
vertaup = (g_Vars.currentplayer->swivelpos[1] - edge_boundary) / (1.0f - edge_boundary);
1427+
} else if (g_Vars.currentplayer->swivelpos[1] < -edge_boundary) {
1428+
vertadown = (g_Vars.currentplayer->swivelpos[1] + edge_boundary) / -(1.0f - edge_boundary);
14291429
}
14301430
// Uninvert pitch if needed
14311431
if (movedata.invertpitch) {
1432-
movedata.speedvertaup = vertadown;
1433-
movedata.speedvertadown = vertaup;
1432+
movedata.speedvertaup += vertadown;
1433+
movedata.speedvertadown += vertaup;
14341434
} else {
1435-
movedata.speedvertaup = vertaup;
1436-
movedata.speedvertadown = vertadown;
1435+
movedata.speedvertaup += vertaup;
1436+
movedata.speedvertadown += vertadown;
14371437
}
14381438
} else {
1439-
// Reset mouse aim position when not mouse aiming
1439+
// Reset mouse aim position when not aiming
14401440
g_Vars.currentplayer->swivelpos[0] = 0.f;
14411441
g_Vars.currentplayer->swivelpos[1] = 0.f;
14421442
}

src/game/mplayer/mplayer.c

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -139,6 +139,7 @@ struct mpweapon g_MpWeapons[NUM_MPWEAPONS] = {
139139
.extcontrols = true, \
140140
.crosshaircolour = 0x00ff0028, \
141141
.crosshairsize = 2, \
142+
.crosshairedgeboundary = 0.7f, \
142143
.crosshairhealth = CROSSHAIR_HEALTH_OFF, \
143144
.usereloads = false, \
144145
}

src/include/types.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6158,6 +6158,7 @@ struct extplayerconfig {
61586158
s32 extcontrols;
61596159
u32 crosshaircolour;
61606160
u32 crosshairsize;
6161+
f32 crosshairedgeboundary;
61616162
s32 crosshairhealth;
61626163
s32 usereloads;
61636164
};

0 commit comments

Comments
 (0)