Various Options Menu Improvements
- fixed bug where you couldnt set L R or Z to an action because it would just change tabs - instead of a global check for tab switch, each indiviudal menu tab determines if it should move to the next tab - added an "invert camera yaw" option Implements #218
This commit is contained in:
parent
42f99d4c8b
commit
44b59288c7
|
@ -13,11 +13,11 @@ enum MenuDirection audioOptionsUpdate(struct AudioOptions* audioOptions) {
|
|||
return MenuDirectionUp;
|
||||
}
|
||||
|
||||
if (controllerDir & ControllerDirectionLeft) {
|
||||
if ((controllerDir & ControllerDirectionLeft || controllerGetButtonDown(0, L_TRIG) || controllerGetButtonDown(0, Z_TRIG))) {
|
||||
return MenuDirectionLeft;
|
||||
}
|
||||
|
||||
if (controllerDir & ControllerDirectionRight) {
|
||||
if ((controllerDir & ControllerDirectionRight || controllerGetButtonDown(0, R_TRIG))) {
|
||||
return MenuDirectionRight;
|
||||
}
|
||||
|
||||
|
|
|
@ -320,11 +320,11 @@ enum MenuDirection controlsMenuUpdate(struct ControlsMenu* controlsMenu) {
|
|||
return MenuDirectionUp;
|
||||
}
|
||||
|
||||
if (controllerDir & ControllerDirectionLeft) {
|
||||
if ((controllerDir & ControllerDirectionLeft || controllerGetButtonDown(0, L_TRIG) || controllerGetButtonDown(0, Z_TRIG)) && !(controlsMenu->waitingForAction)) {
|
||||
return MenuDirectionLeft;
|
||||
}
|
||||
|
||||
if (controllerDir & ControllerDirectionRight) {
|
||||
if ((controllerDir & ControllerDirectionRight || controllerGetButtonDown(0, R_TRIG) ) && !(controlsMenu->waitingForAction)) {
|
||||
return MenuDirectionRight;
|
||||
}
|
||||
|
||||
|
|
|
@ -78,11 +78,11 @@ enum MenuDirection gameplayOptionsUpdate(struct GameplayOptions* gameplayOptions
|
|||
break;
|
||||
}
|
||||
|
||||
if (controllerDir & ControllerDirectionLeft) {
|
||||
if ((controllerDir & ControllerDirectionLeft || controllerGetButtonDown(0, L_TRIG) || controllerGetButtonDown(0, Z_TRIG))) {
|
||||
return MenuDirectionLeft;
|
||||
}
|
||||
|
||||
if (controllerDir & ControllerDirectionRight) {
|
||||
if ((controllerDir & ControllerDirectionRight || controllerGetButtonDown(0, R_TRIG))) {
|
||||
return MenuDirectionRight;
|
||||
}
|
||||
|
||||
|
|
|
@ -22,15 +22,18 @@ void joystickOptionsInit(struct JoystickOptions* joystickOptions) {
|
|||
|
||||
joystickOptions->invertControls = menuBuildCheckbox(&gDejaVuSansFont, "Invert Camera Pitch", JOYSTICK_X + 8, JOYSTICK_Y + 8);
|
||||
|
||||
joystickOptions->tankControls = menuBuildCheckbox(&gDejaVuSansFont, "Tank Controls", JOYSTICK_X + 8, JOYSTICK_Y + 28);
|
||||
joystickOptions->invertControlsYaw = menuBuildCheckbox(&gDejaVuSansFont, "Invert Camera Yaw", JOYSTICK_X + 8, JOYSTICK_Y + 28);
|
||||
|
||||
joystickOptions->lookSensitivityText = menuBuildText(&gDejaVuSansFont, "Look Sensitivity", JOYSTICK_X + 8, JOYSTICK_Y + 48);
|
||||
joystickOptions->lookSensitivity = menuBuildSlider(JOYSTICK_X + 120, JOYSTICK_Y + 48, 120, SCROLL_TICKS);
|
||||
joystickOptions->tankControls = menuBuildCheckbox(&gDejaVuSansFont, "Tank Controls", JOYSTICK_X + 8, JOYSTICK_Y + 48);
|
||||
|
||||
joystickOptions->lookAccelerationText = menuBuildText(&gDejaVuSansFont, "Look Acceleration", JOYSTICK_X + 8, JOYSTICK_Y + 68);
|
||||
joystickOptions->lookAcceleration = menuBuildSlider(JOYSTICK_X + 120, JOYSTICK_Y + 68, 120, SCROLL_TICKS);
|
||||
joystickOptions->lookSensitivityText = menuBuildText(&gDejaVuSansFont, "Look Sensitivity", JOYSTICK_X + 8, JOYSTICK_Y + 68);
|
||||
joystickOptions->lookSensitivity = menuBuildSlider(JOYSTICK_X + 120, JOYSTICK_Y + 68, 120, SCROLL_TICKS);
|
||||
|
||||
joystickOptions->lookAccelerationText = menuBuildText(&gDejaVuSansFont, "Look Acceleration", JOYSTICK_X + 8, JOYSTICK_Y + 88);
|
||||
joystickOptions->lookAcceleration = menuBuildSlider(JOYSTICK_X + 120, JOYSTICK_Y + 88, 120, SCROLL_TICKS);
|
||||
|
||||
joystickOptions->invertControls.checked = (gSaveData.controls.flags & ControlSaveFlagsInvert) != 0;
|
||||
joystickOptions->invertControlsYaw.checked = (gSaveData.controls.flags & ControlSaveFlagsInvertYaw) != 0;
|
||||
joystickOptions->tankControls.checked = (gSaveData.controls.flags & ControlSaveTankControls) != 0;
|
||||
joystickOptions->lookSensitivity.value = (float)gSaveData.controls.sensitivity / 0xFFFF;
|
||||
joystickOptions->lookAcceleration.value = (float)gSaveData.controls.acceleration / 0xFFFF;
|
||||
|
@ -108,6 +111,19 @@ enum MenuDirection joystickOptionsUpdate(struct JoystickOptions* joystickOptions
|
|||
}
|
||||
}
|
||||
|
||||
break;
|
||||
case JoystickOptionInvertYaw:
|
||||
if (controllerGetButtonDown(0, A_BUTTON)) {
|
||||
joystickOptions->invertControlsYaw.checked = !joystickOptions->invertControlsYaw.checked;
|
||||
soundPlayerPlay(SOUNDS_BUTTONCLICKRELEASE, 1.0f, 0.5f, NULL, NULL);
|
||||
|
||||
if (joystickOptions->invertControlsYaw.checked) {
|
||||
gSaveData.controls.flags |= ControlSaveFlagsInvertYaw;
|
||||
} else {
|
||||
gSaveData.controls.flags &= ~ControlSaveFlagsInvertYaw;
|
||||
}
|
||||
}
|
||||
|
||||
break;
|
||||
case JoystickOptionTankControls:
|
||||
if (controllerGetButtonDown(0, A_BUTTON)) {
|
||||
|
@ -123,18 +139,28 @@ enum MenuDirection joystickOptionsUpdate(struct JoystickOptions* joystickOptions
|
|||
break;
|
||||
case JoystickOptionSensitivity:
|
||||
joystickOptionsHandleSlider(&gSaveData.controls.sensitivity, &joystickOptions->lookSensitivity.value);
|
||||
return MenuDirectionStay;
|
||||
break;
|
||||
case JoystickOptionAcceleration:
|
||||
joystickOptionsHandleSlider(&gSaveData.controls.acceleration, &joystickOptions->lookAcceleration.value);
|
||||
return MenuDirectionStay;
|
||||
break;
|
||||
}
|
||||
|
||||
if (controllerDir & ControllerDirectionLeft) {
|
||||
return MenuDirectionLeft;
|
||||
if (joystickOptions->selectedItem == JoystickOptionSensitivity ||
|
||||
joystickOptions->selectedItem == JoystickOptionAcceleration){
|
||||
if ((controllerGetButtonDown(0, L_TRIG) || controllerGetButtonDown(0, Z_TRIG))) {
|
||||
return MenuDirectionLeft;
|
||||
}
|
||||
if ((controllerGetButtonDown(0, R_TRIG))) {
|
||||
return MenuDirectionRight;
|
||||
}
|
||||
}
|
||||
|
||||
if (controllerDir & ControllerDirectionRight) {
|
||||
return MenuDirectionRight;
|
||||
else{
|
||||
if (controllerDir & ControllerDirectionLeft || controllerGetButtonDown(0, L_TRIG) || controllerGetButtonDown(0, Z_TRIG)) {
|
||||
return MenuDirectionLeft;
|
||||
}
|
||||
if (controllerDir & ControllerDirectionRight || controllerGetButtonDown(0, R_TRIG)) {
|
||||
return MenuDirectionRight;
|
||||
}
|
||||
}
|
||||
|
||||
return MenuDirectionStay;
|
||||
|
@ -145,6 +171,8 @@ void joystickOptionsRender(struct JoystickOptions* joystickOptions, struct Rende
|
|||
|
||||
gSPDisplayList(renderState->dl++, joystickOptions->invertControls.outline);
|
||||
renderState->dl = menuCheckboxRender(&joystickOptions->invertControls, renderState->dl);
|
||||
gSPDisplayList(renderState->dl++, joystickOptions->invertControlsYaw.outline);
|
||||
renderState->dl = menuCheckboxRender(&joystickOptions->invertControlsYaw, renderState->dl);
|
||||
gSPDisplayList(renderState->dl++, joystickOptions->tankControls.outline);
|
||||
renderState->dl = menuCheckboxRender(&joystickOptions->tankControls, renderState->dl);
|
||||
gSPDisplayList(renderState->dl++, joystickOptions->lookSensitivity.back);
|
||||
|
@ -161,6 +189,10 @@ void joystickOptionsRender(struct JoystickOptions* joystickOptions, struct Rende
|
|||
menuSetRenderColor(renderState, joystickOptions->selectedItem == JoystickOptionInvert, &gSelectionGray, &gColorWhite);
|
||||
gSPDisplayList(renderState->dl++, joystickOptions->invertControls.text);
|
||||
|
||||
gDPPipeSync(renderState->dl++);
|
||||
menuSetRenderColor(renderState, joystickOptions->selectedItem == JoystickOptionInvertYaw, &gSelectionGray, &gColorWhite);
|
||||
gSPDisplayList(renderState->dl++, joystickOptions->invertControlsYaw.text);
|
||||
|
||||
gDPPipeSync(renderState->dl++);
|
||||
menuSetRenderColor(renderState, joystickOptions->selectedItem == JoystickOptionTankControls, &gSelectionGray, &gColorWhite);
|
||||
gSPDisplayList(renderState->dl++, joystickOptions->tankControls.text);
|
||||
|
|
|
@ -6,6 +6,7 @@
|
|||
|
||||
enum JoystickOption {
|
||||
JoystickOptionInvert,
|
||||
JoystickOptionInvertYaw,
|
||||
JoystickOptionTankControls,
|
||||
JoystickOptionSensitivity,
|
||||
JoystickOptionAcceleration,
|
||||
|
@ -15,6 +16,7 @@ enum JoystickOption {
|
|||
|
||||
struct JoystickOptions {
|
||||
struct MenuCheckbox invertControls;
|
||||
struct MenuCheckbox invertControlsYaw;
|
||||
struct MenuCheckbox tankControls;
|
||||
struct MenuSlider lookSensitivity;
|
||||
struct MenuSlider lookAcceleration;
|
||||
|
|
|
@ -56,12 +56,6 @@ void optionsMenuInit(struct OptionsMenu* options) {
|
|||
enum MenuDirection optionsMenuUpdate(struct OptionsMenu* options) {
|
||||
enum MenuDirection menuDirection = MenuDirectionStay;
|
||||
|
||||
if(controllerGetButtonDown(0, L_TRIG) || controllerGetButtonDown(0, Z_TRIG))
|
||||
menuDirection = MenuDirectionLeft;
|
||||
|
||||
if(controllerGetButtonDown(0, R_TRIG))
|
||||
menuDirection = MenuDirectionRight;
|
||||
|
||||
if(menuDirection == MenuDirectionStay)
|
||||
{
|
||||
switch (options->tabs.selectedTab) {
|
||||
|
|
|
@ -771,6 +771,9 @@ void playerUpdate(struct Player* player) {
|
|||
if (gSaveData.controls.flags & ControlSaveFlagsInvert) {
|
||||
targetPitch = -targetPitch;
|
||||
}
|
||||
if (gSaveData.controls.flags & ControlSaveFlagsInvertYaw) {
|
||||
targetYaw = -targetYaw;
|
||||
}
|
||||
|
||||
float rotateRateDelta = mathfLerp(MIN_ROTATE_RATE_DELTA, MAX_ROTATE_RATE_DELTA, (float)gSaveData.controls.acceleration / 0xFFFF);
|
||||
|
||||
|
|
|
@ -35,7 +35,8 @@ struct SaveHeader {
|
|||
|
||||
enum ControlSaveFlags {
|
||||
ControlSaveFlagsInvert = (1 << 0),
|
||||
ControlSaveTankControls = (1 << 1),
|
||||
ControlSaveFlagsInvertYaw = (1 << 1),
|
||||
ControlSaveTankControls = (1 << 2),
|
||||
|
||||
ControlSaveMoveablePortals = (1 << 8),
|
||||
ControlSaveWideScreen = (1 << 9),
|
||||
|
|
Loading…
Reference in a new issue