diff --git a/src/game/camera.c b/src/game/camera.c index e0e1e537f..d806b3e91 100644 --- a/src/game/camera.c +++ b/src/game/camera.c @@ -12233,7 +12233,7 @@ void romhack_camera_init_settings(void) { if (!sCCSSChangedByMod) { gCameraUseCourseSpecificSettings = dynos_level_is_vanilla_level(gCurrLevelNum); } - gRomhackCameraSettings.collisions = TRUE; + gRomhackCameraSettings.collisions = configRomhackCameraHasCollision; gRomhackCameraSettings.centering = configRomhackCameraHasCentering; gRomhackCameraSettings.dpad = configRomhackCameraDPadBehavior; gOverrideAllowToxicGasCamera = configCameraToxicGas; diff --git a/src/pc/configfile.c b/src/pc/configfile.c index 973b9327c..f2267a7db 100644 --- a/src/pc/configfile.c +++ b/src/pc/configfile.c @@ -135,6 +135,7 @@ bool configEnableFreeCamera = false; bool configFreeCameraAnalog = false; bool configFreeCameraLCentering = false; bool configFreeCameraDPadBehavior = false; +bool configFreeCameraHasCollision = true; bool configFreeCameraMouse = false; unsigned int configFreeCameraXSens = 50; unsigned int configFreeCameraYSens = 50; @@ -144,6 +145,7 @@ unsigned int configFreeCameraDegrade = 50; // 0 - 100% // romhack camera settings unsigned int configEnableRomhackCamera = 0; // 0 for automatic, 1 for force on, 2 for force off bool configRomhackCameraBowserFights = false; +bool configRomhackCameraHasCollision = true; bool configRomhackCameraHasCentering = false; bool configRomhackCameraDPadBehavior = false; bool configRomhackCameraSlowFall = true; @@ -284,6 +286,7 @@ static const struct ConfigOption options[] = { {.name = "bettercam_analog", .type = CONFIG_TYPE_BOOL, .boolValue = &configFreeCameraAnalog}, {.name = "bettercam_centering", .type = CONFIG_TYPE_BOOL, .boolValue = &configFreeCameraLCentering}, {.name = "bettercam_dpad", .type = CONFIG_TYPE_BOOL, .boolValue = &configFreeCameraDPadBehavior}, + {.name = "bettercam_collision", .type = CONFIG_TYPE_BOOL, .boolValue = &configFreeCameraHasCollision}, {.name = "bettercam_mouse_look", .type = CONFIG_TYPE_BOOL, .boolValue = &configFreeCameraMouse}, {.name = "bettercam_xsens", .type = CONFIG_TYPE_UINT, .uintValue = &configFreeCameraXSens}, {.name = "bettercam_ysens", .type = CONFIG_TYPE_UINT, .uintValue = &configFreeCameraYSens}, @@ -293,6 +296,7 @@ static const struct ConfigOption options[] = { // romhack camera settings {.name = "romhackcam_enable", .type = CONFIG_TYPE_UINT, .uintValue = &configEnableRomhackCamera}, {.name = "romhackcam_bowser", .type = CONFIG_TYPE_BOOL, .boolValue = &configRomhackCameraBowserFights}, + {.name = "romhackcam_collision", .type = CONFIG_TYPE_BOOL, .boolValue = &configRomhackCameraHasCollision}, {.name = "romhackcam_centering", .type = CONFIG_TYPE_BOOL, .boolValue = &configRomhackCameraHasCentering}, {.name = "romhackcam_dpad", .type = CONFIG_TYPE_BOOL, .boolValue = &configRomhackCameraDPadBehavior}, {.name = "romhackcam_slowfall", .type = CONFIG_TYPE_BOOL, .boolValue = &configRomhackCameraSlowFall}, diff --git a/src/pc/configfile.h b/src/pc/configfile.h index 90cd9d2ad..d537970e4 100644 --- a/src/pc/configfile.h +++ b/src/pc/configfile.h @@ -101,6 +101,7 @@ extern bool configEnableFreeCamera; extern bool configFreeCameraAnalog; extern bool configFreeCameraLCentering; extern bool configFreeCameraDPadBehavior; +extern bool configFreeCameraHasCollision; extern bool configFreeCameraMouse; extern unsigned int configFreeCameraXSens; extern unsigned int configFreeCameraYSens; @@ -110,6 +111,7 @@ extern unsigned int configFreeCameraDegrade; // romhack camera settings extern unsigned int configEnableRomhackCamera; extern bool configRomhackCameraBowserFights; +extern bool configRomhackCameraHasCollision; extern bool configRomhackCameraHasCentering; extern bool configRomhackCameraDPadBehavior; extern bool configRomhackCameraSlowFall; diff --git a/src/pc/djui/djui_panel_camera.c b/src/pc/djui/djui_panel_camera.c index d7b38ae02..493f6939a 100644 --- a/src/pc/djui/djui_panel_camera.c +++ b/src/pc/djui/djui_panel_camera.c @@ -23,6 +23,7 @@ void djui_panel_free_camera_create(struct DjuiBase* caller) { djui_checkbox_create(body, DLANG(CAMERA, ANALOG_CAMERA), &configFreeCameraAnalog, djui_panel_free_camera_value_changed); djui_checkbox_create(body, DLANG(CAMERA, ROMHACK_CAMERA_L_CENTERING), &configFreeCameraLCentering, djui_panel_free_camera_value_changed); djui_checkbox_create(body, DLANG(CAMERA, FREE_CAMERA_USE_DPAD), &configFreeCameraDPadBehavior, djui_panel_free_camera_value_changed); + djui_checkbox_create(body, DLANG(CAMERA, FREE_CAMERA_COLLISION), &configFreeCameraHasCollision, djui_panel_free_camera_value_changed); djui_checkbox_create(body, DLANG(CAMERA, MOUSE_LOOK), &configFreeCameraMouse, djui_panel_free_camera_value_changed); djui_slider_create(body, DLANG(CAMERA, X_SENSITIVITY), &configFreeCameraXSens, 1, 100, djui_panel_free_camera_value_changed); djui_slider_create(body, DLANG(CAMERA, Y_SENSITIVITY), &configFreeCameraYSens, 1, 100, djui_panel_free_camera_value_changed); @@ -43,6 +44,7 @@ void djui_panel_romhack_camera_create(struct DjuiBase* caller) { char* choices[3] = { DLANG(CAMERA, ROMHACK_CAMERA_AUTOMATIC), DLANG(CAMERA, ROMHACK_CAMERA_ON), DLANG(CAMERA, ROMHACK_CAMERA_OFF) }; djui_selectionbox_create(body, DLANG(CAMERA, ROMHACK_CAMERA), choices, 3, &configEnableRomhackCamera, djui_panel_romhack_camera_value_changed); djui_checkbox_create(body, DLANG(CAMERA, ROMHACK_CAMERA_IN_BOWSER), &configRomhackCameraBowserFights, djui_panel_romhack_camera_value_changed); + djui_checkbox_create(body, DLANG(CAMERA, ROMHACK_CAMERA_COLLISION), &configRomhackCameraHasCollision, djui_panel_romhack_camera_value_changed); djui_checkbox_create(body, DLANG(CAMERA, ROMHACK_CAMERA_L_CENTERING), &configRomhackCameraHasCentering, djui_panel_romhack_camera_value_changed); djui_checkbox_create(body, DLANG(CAMERA, ROMHACK_CAMERA_USE_DPAD), &configRomhackCameraDPadBehavior, djui_panel_romhack_camera_value_changed); djui_checkbox_create(body, DLANG(CAMERA, ROMHACK_CAMERA_SLOW_FALL), &configRomhackCameraSlowFall, djui_panel_romhack_camera_value_changed); diff --git a/src/pc/lua/utils/smlua_camera_utils.c b/src/pc/lua/utils/smlua_camera_utils.c index ff7177e41..00f49c521 100644 --- a/src/pc/lua/utils/smlua_camera_utils.c +++ b/src/pc/lua/utils/smlua_camera_utils.c @@ -138,7 +138,7 @@ bool camera_config_is_dpad_enabled(void) { } bool camera_config_is_collision_enabled(void) { - return sOverrideCameraCollision.override ? sOverrideCameraCollision.value : true; + return sOverrideCameraCollision.override ? sOverrideCameraCollision.value : configFreeCameraHasCollision; } bool camera_config_is_mouse_look_enabled(void) {