From 99e53b9f80d8e7c1be4e91ba1c02ed189dd4b449 Mon Sep 17 00:00:00 2001 From: Agent X <44549182+Agent-11@users.noreply.github.com> Date: Tue, 5 Dec 2023 16:57:10 -0500 Subject: [PATCH] Add Free Camera C-Up option and sacrifice Pan Level --- lang/Czech.ini | 1 + lang/Dutch.ini | 1 + lang/English.ini | 1 + lang/French.ini | 1 + lang/German.ini | 1 + lang/Italian.ini | 1 + lang/Polish.ini | 1 + lang/Portuguese.ini | 1 + lang/Russian.ini | 1 + lang/SpanishES.ini | 1 + lang/SpanishUS.ini | 1 + src/game/bettercamera.inc.h | 23 +++++++++++------------ src/pc/configfile.c | 20 ++++++++++---------- src/pc/configfile.h | 2 +- src/pc/djui/djui_panel_camera.c | 2 +- src/pc/lua/utils/smlua_misc_utils.c | 2 +- 16 files changed, 35 insertions(+), 25 deletions(-) diff --git a/lang/Czech.ini b/lang/Czech.ini index 2eec2c31..57bdf12c 100644 --- a/lang/Czech.ini +++ b/lang/Czech.ini @@ -65,6 +65,7 @@ YES = "Ano" [CAMERA] CAMERA = "KAMERA" FREE_CAMERA = "Volná kamera" +C_UP = "Volná kamera C-Up" ANALOG_CAMERA = "Analogová kamera" MOUSE_LOOK = "Myš pro ovládání kamery" INVERT_X = "Převrátit X" diff --git a/lang/Dutch.ini b/lang/Dutch.ini index a8849421..062c4327 100644 --- a/lang/Dutch.ini +++ b/lang/Dutch.ini @@ -65,6 +65,7 @@ YES = "Ja" [CAMERA] CAMERA = "CAMERA" FREE_CAMERA = "Vrije Camera" +C_UP = "Vrije Camera C-Up" ANALOG_CAMERA = "Analoge Camera" MOUSE_LOOK = "Muis Camera" INVERT_X = "Keer X om" diff --git a/lang/English.ini b/lang/English.ini index e2913d9f..1a1c17f9 100644 --- a/lang/English.ini +++ b/lang/English.ini @@ -65,6 +65,7 @@ YES = "Yes" [CAMERA] CAMERA = "CAMERA" FREE_CAMERA = "Free Camera" +C_UP = "Free Camera C-Up" ANALOG_CAMERA = "Analog Camera" MOUSE_LOOK = "Mouse Look" INVERT_X = "Invert X" diff --git a/lang/French.ini b/lang/French.ini index c64d25d2..d7103e2c 100644 --- a/lang/French.ini +++ b/lang/French.ini @@ -65,6 +65,7 @@ YES = "Oui" [CAMERA] CAMERA = "CAMÉRA" FREE_CAMERA = "Caméra Libre" +C_UP = "Caméra Libre C-Haut" ANALOG_CAMERA = "Caméra Analogique" MOUSE_LOOK = "Souris comme Caméra" INVERT_X = "Inverser l'axe X" diff --git a/lang/German.ini b/lang/German.ini index 0991c11a..78fa25cc 100644 --- a/lang/German.ini +++ b/lang/German.ini @@ -65,6 +65,7 @@ YES = "Ja" [CAMERA] CAMERA = "KAMERA" FREE_CAMERA = "Freie Kamera" +C_UP = "Freie Kamera C-Hoch" ANALOG_CAMERA = "Analoge Kamera" MOUSE_LOOK = "Mausansicht" INVERT_X = "X invertieren" diff --git a/lang/Italian.ini b/lang/Italian.ini index f4c7171e..f7d72ebf 100644 --- a/lang/Italian.ini +++ b/lang/Italian.ini @@ -65,6 +65,7 @@ YES = "Si" [CAMERA] CAMERA = "TELECAMERA" FREE_CAMERA = "Telecamera libera" +C_UP = "Telecamera Libera C-Su" ANALOG_CAMERA = "Telecamera analogica" MOUSE_LOOK = "Telecamera con mouse" INVERT_X = "Inverti X" diff --git a/lang/Polish.ini b/lang/Polish.ini index bc87d619..93140fcd 100644 --- a/lang/Polish.ini +++ b/lang/Polish.ini @@ -65,6 +65,7 @@ YES = "Tak" [CAMERA] CAMERA = "KAMERA" FREE_CAMERA = "Wolna Kamera" +C_UP = "Wolna Kamera C-Góra" ANALOG_CAMERA = "Analogowa Kamera" MOUSE_LOOK = "Patrzenie Mysza" INVERT_X = "Odwroc X" diff --git a/lang/Portuguese.ini b/lang/Portuguese.ini index 1270ef0d..17d954cb 100644 --- a/lang/Portuguese.ini +++ b/lang/Portuguese.ini @@ -65,6 +65,7 @@ YES = "Sim" [CAMERA] CAMERA = "CÂMERA" FREE_CAMERA = "Câmera Livre" +C_UP = "Câmara Livre C-Cima" ANALOG_CAMERA = "Câmera Analógica" MOUSE_LOOK = "Olhar com mouse" INVERT_X = "Inverter X" diff --git a/lang/Russian.ini b/lang/Russian.ini index 240cc42b..339c55c2 100644 --- a/lang/Russian.ini +++ b/lang/Russian.ini @@ -65,6 +65,7 @@ YES = "Да" [CAMERA] CAMERA = "CAMERA" FREE_CAMERA = "Свободная камера" +C_UP = "Свободная камера" ANALOG_CAMERA = "Аналоговая камера" MOUSE_LOOK = "Использовать мышь" INVERT_X = "Инвертировать X" diff --git a/lang/SpanishES.ini b/lang/SpanishES.ini index 2d5617bf..545b6775 100644 --- a/lang/SpanishES.ini +++ b/lang/SpanishES.ini @@ -65,6 +65,7 @@ YES = "Sí" [CAMERA] CAMERA = "CÁMARA" FREE_CAMERA = "Cámara libre" +C_UP = "Cámara Libre C-Arriba" ANALOG_CAMERA = "Cámara analógica" MOUSE_LOOK = "Movimiento con mouse" INVERT_X = "Invertir eje X" diff --git a/lang/SpanishUS.ini b/lang/SpanishUS.ini index 9f4c131e..12546242 100644 --- a/lang/SpanishUS.ini +++ b/lang/SpanishUS.ini @@ -65,6 +65,7 @@ YES = "Sí" [CAMERA] CAMERA = "CÁMARA" FREE_CAMERA = "Cámara libre" +C_UP = "Cámara Libre C-Arriba" ANALOG_CAMERA = "Cámara analógica" MOUSE_LOOK = "Movimiento con mouse" INVERT_X = "Invertir eje X" diff --git a/src/game/bettercamera.inc.h b/src/game/bettercamera.inc.h index 30aecfef..6b5dee48 100644 --- a/src/game/bettercamera.inc.h +++ b/src/game/bettercamera.inc.h @@ -358,18 +358,17 @@ static void newcam_rotate_button(void) { } newcam_framessincec[1] = 0; } - // TODO: find a better way to do this - // if ((gPlayer1Controller->buttonPressed & U_CBUTTONS) && newcam_modeflags & NC_FLAG_YTURN && !(newcam_modeflags & NC_FLAG_8D) && newcam_analogue == 0) { - // if (newcam_framessincec[1] < 3 && gMarioState->action & ACT_FLAG_ALLOW_FIRST_PERSON) { - // gCameraMovementFlags |= CAM_MOVE_C_UP_MODE; - // #ifndef nosound - // play_sound(SOUND_MENU_CAMERA_ZOOM_IN, gGlobalSoundSource); - // #endif - // newcam_init_settings(); - // return; - // } - // newcam_framessincec[1] = 0; - // } + if ((gPlayer1Controller->buttonPressed & U_CBUTTONS) && newcam_modeflags & NC_FLAG_YTURN && !(newcam_modeflags & NC_FLAG_8D) && newcam_analogue == 0 && configCameraCUp) { + if (newcam_framessincec[1] < 3 && gMarioState->action & ACT_FLAG_ALLOW_FIRST_PERSON) { + gCameraMovementFlags |= CAM_MOVE_C_UP_MODE; + #ifndef nosound + play_sound(SOUND_MENU_CAMERA_ZOOM_IN, gGlobalSoundSource); + #endif + newcam_init_settings(); + return; + } + newcam_framessincec[1] = 0; + } //There's not much point in keeping this behind a check, but it wouldn't hurt, just incase any 2player shenanigans ever happen, it makes it easy to disable. diff --git a/src/pc/configfile.c b/src/pc/configfile.c index 2caf97fe..13397e7a 100644 --- a/src/pc/configfile.c +++ b/src/pc/configfile.c @@ -107,12 +107,12 @@ unsigned int configRumbleStrength = 50; unsigned int configCameraXSens = 10; unsigned int configCameraYSens = 10; unsigned int configCameraAggr = 0; -unsigned int configCameraPan = 0; unsigned int configCameraDegrade = 50; // 0 - 100% bool configCameraInvertX = false; bool configCameraInvertY = true; bool configEnableCamera = false; bool configCameraAnalog = false; +bool configCameraCUp = false; bool configCameraMouse = false; // coop-specific bool configSkipIntro = 0; @@ -141,18 +141,18 @@ bool configShowFPS = false; bool configUncappedFramerate = true; unsigned int configFrameLimit = 60; unsigned int configDrawDistance = 5; -bool configDisablePopups = 0; +bool configDisablePopups = false; #if defined(DEVELOPMENT) -bool configLuaProfiler = 0; -bool configCtxProfiler = 0; +bool configLuaProfiler = false; +bool configCtxProfiler = false; #endif unsigned int configInterpolationMode = 1; unsigned int configGamepadNumber = 0; -bool configBackgroundGamepad = 1; -bool configSingleplayerPause = 0; -bool configDebugPrint = 0; -bool configDebugInfo = 0; -bool configDebugError = 0; +bool configBackgroundGamepad = true; +bool configSingleplayerPause = false; +bool configDebugPrint = false; +bool configDebugInfo = false; +bool configDebugError = false; char configLanguage[MAX_CONFIG_STRING] = ""; bool configForce4By3 = false; char configCoopNetIp[MAX_CONFIG_STRING] = DEFAULT_COOPNET_IP; @@ -207,13 +207,13 @@ static const struct ConfigOption options[] = { {.name = "rumble_strength", .type = CONFIG_TYPE_UINT, .uintValue = &configRumbleStrength}, {.name = "bettercam_enable", .type = CONFIG_TYPE_BOOL, .boolValue = &configEnableCamera}, {.name = "bettercam_analog", .type = CONFIG_TYPE_BOOL, .boolValue = &configCameraAnalog}, + {.name = "bettercam_cup", .type = CONFIG_TYPE_BOOL, .boolValue = &configCameraCUp}, {.name = "bettercam_mouse_look", .type = CONFIG_TYPE_BOOL, .boolValue = &configCameraMouse}, {.name = "bettercam_invertx", .type = CONFIG_TYPE_BOOL, .boolValue = &configCameraInvertX}, {.name = "bettercam_inverty", .type = CONFIG_TYPE_BOOL, .boolValue = &configCameraInvertY}, {.name = "bettercam_xsens", .type = CONFIG_TYPE_UINT, .uintValue = &configCameraXSens}, {.name = "bettercam_ysens", .type = CONFIG_TYPE_UINT, .uintValue = &configCameraYSens}, {.name = "bettercam_aggression", .type = CONFIG_TYPE_UINT, .uintValue = &configCameraAggr}, - {.name = "bettercam_pan_level", .type = CONFIG_TYPE_UINT, .uintValue = &configCameraPan}, {.name = "bettercam_degrade", .type = CONFIG_TYPE_UINT, .uintValue = &configCameraDegrade}, {.name = "skip_intro", .type = CONFIG_TYPE_BOOL, .boolValue = &configSkipIntro}, // debug diff --git a/src/pc/configfile.h b/src/pc/configfile.h index e920b471..4b814c8f 100644 --- a/src/pc/configfile.h +++ b/src/pc/configfile.h @@ -67,13 +67,13 @@ extern bool configBackgroundGamepad; extern unsigned int configCameraXSens; extern unsigned int configCameraYSens; extern unsigned int configCameraAggr; -extern unsigned int configCameraPan; extern unsigned int configCameraDegrade; extern bool configCameraInvertX; extern bool configCameraInvertY; extern bool configEnableCamera; extern bool configCameraMouse; extern bool configCameraAnalog; +extern bool configCameraCUp; extern bool configSkipIntro; extern bool configBubbleDeath; extern unsigned int configAmountofPlayers; diff --git a/src/pc/djui/djui_panel_camera.c b/src/pc/djui/djui_panel_camera.c index 34714226..d00f48cb 100644 --- a/src/pc/djui/djui_panel_camera.c +++ b/src/pc/djui/djui_panel_camera.c @@ -14,6 +14,7 @@ void djui_panel_camera_create(struct DjuiBase* caller) { struct DjuiBase* body = djui_three_panel_get_body(panel); { djui_checkbox_create(body, DLANG(CAMERA, FREE_CAMERA), &configEnableCamera, djui_panel_camera_value_changed); + djui_checkbox_create(body, DLANG(CAMERA, C_UP), &configCameraCUp, djui_panel_camera_value_changed); djui_checkbox_create(body, DLANG(CAMERA, ANALOG_CAMERA), &configCameraAnalog, djui_panel_camera_value_changed); djui_checkbox_create(body, DLANG(CAMERA, MOUSE_LOOK), &configCameraMouse, djui_panel_camera_value_changed); djui_checkbox_create(body, DLANG(CAMERA, INVERT_X), &configCameraInvertX, djui_panel_camera_value_changed); @@ -21,7 +22,6 @@ void djui_panel_camera_create(struct DjuiBase* caller) { djui_slider_create(body, DLANG(CAMERA, X_SENSITIVITY), &configCameraXSens, 1, 100, djui_panel_camera_value_changed); djui_slider_create(body, DLANG(CAMERA, Y_SENSITIVITY), &configCameraYSens, 1, 100, djui_panel_camera_value_changed); djui_slider_create(body, DLANG(CAMERA, AGGRESSION), &configCameraAggr, 0, 100, djui_panel_camera_value_changed); - djui_slider_create(body, DLANG(CAMERA, PAN_LEVEL), &configCameraPan, 0, 100, djui_panel_camera_value_changed); djui_slider_create(body, DLANG(CAMERA, DECELERATION), &configCameraDegrade, 0, 100, djui_panel_camera_value_changed); djui_button_create(body, DLANG(MENU, BACK), DJUI_BUTTON_STYLE_BACK, djui_panel_menu_back); diff --git a/src/pc/lua/utils/smlua_misc_utils.c b/src/pc/lua/utils/smlua_misc_utils.c index 878d82d5..c940f592 100644 --- a/src/pc/lua/utils/smlua_misc_utils.c +++ b/src/pc/lua/utils/smlua_misc_utils.c @@ -335,7 +335,7 @@ u32 camera_config_get_aggression(void) { } u32 camera_config_get_pan_level(void) { - return sOverrideCameraPan.override ? sOverrideCameraPan.value : configCameraPan; + return sOverrideCameraPan.override ? sOverrideCameraPan.value : 0; } u32 camera_config_get_deceleration(void) {