mirror of
https://github.com/coop-deluxe/sm64coopdx.git
synced 2025-10-30 08:01:01 +00:00
Prevent lua mods from saving over your camera settings
This commit is contained in:
parent
00e64fbf6c
commit
ab585db973
8 changed files with 81 additions and 36 deletions
|
|
@ -456,7 +456,9 @@ static void chain_chomp_act_unload_chain(void) {
|
|||
if (o->oChainChompReleaseStatus != CHAIN_CHOMP_NOT_RELEASED) {
|
||||
if (o->oChainChompSegments) {
|
||||
for (u8 i = 0; i < 5; i++) {
|
||||
obj_mark_for_deletion((struct Object*)&o->oChainChompSegments[i]);
|
||||
struct Object* segment = (struct Object*)&o->oChainChompSegments[i];
|
||||
if (!segment) { continue; }
|
||||
obj_mark_for_deletion(segment);
|
||||
}
|
||||
}
|
||||
obj_mark_for_deletion(o);
|
||||
|
|
|
|||
|
|
@ -18,7 +18,7 @@ static f32 sTTCPendulumInitialAccels[] = {
|
|||
* Init function for bhvTTCPendulum.
|
||||
*/
|
||||
void bhv_ttc_pendulum_init(void) {
|
||||
if (gTTCSpeedSetting != TTC_SPEED_STOPPED) {
|
||||
if (gTTCSpeedSetting != TTC_SPEED_STOPPED && gTTCSpeedSetting > 0 && gTTCSpeedSetting < 4) {
|
||||
o->oTTCPendulumAngleAccel = sTTCPendulumInitialAccels[gTTCSpeedSetting];
|
||||
o->oTTCPendulumAngle = 6500.0f;
|
||||
} else {
|
||||
|
|
|
|||
|
|
@ -10,6 +10,7 @@
|
|||
#include "engine/surface_collision.h"
|
||||
#include "pc/configfile.h"
|
||||
#include "pc/controller/controller_mouse.h"
|
||||
#include "pc/lua/utils/smlua_misc_utils.h"
|
||||
|
||||
#if defined(__MINGW32__) && !defined(__MINGW64_VERSION_MAJOR)
|
||||
//quick and dirty fix for some older MinGW.org mingwrt
|
||||
|
|
@ -184,20 +185,20 @@ void newcam_toggle(bool enabled) {
|
|||
|
||||
///These are the default settings for Puppycam. You may change them to change how they'll be set for first timers.
|
||||
void newcam_init_settings(void) {
|
||||
newcam_sensitivityX = newcam_clamp(configCameraXSens, 1, 100) * 5;
|
||||
newcam_sensitivityY = newcam_clamp(configCameraYSens, 1, 100) * 5;
|
||||
newcam_aggression = newcam_clamp(configCameraAggr, 0, 100);
|
||||
newcam_panlevel = newcam_clamp(configCameraPan, 0, 100);
|
||||
newcam_invertX = (s16)configCameraInvertX;
|
||||
newcam_invertY = (s16)configCameraInvertY;
|
||||
newcam_mouse = (u8)configCameraMouse;
|
||||
newcam_analogue = (s16)configCameraAnalog;
|
||||
newcam_degrade = (f32)configCameraDegrade;
|
||||
newcam_sensitivityX = newcam_clamp(camera_config_get_x_sensitivity(), 1, 100) * 5;
|
||||
newcam_sensitivityY = newcam_clamp(camera_config_get_y_sensitivity(), 1, 100) * 5;
|
||||
newcam_aggression = newcam_clamp(camera_config_get_aggression(), 0, 100);
|
||||
newcam_panlevel = newcam_clamp(camera_config_get_pan_level(), 0, 100);
|
||||
newcam_invertX = (s16)camera_config_is_x_inverted();
|
||||
newcam_invertY = (s16)camera_config_is_y_inverted();
|
||||
newcam_mouse = (u8)camera_config_is_mouse_look_enabled();
|
||||
newcam_analogue = (s16)camera_config_is_analog_cam_enabled();
|
||||
newcam_degrade = (f32)camera_config_get_deceleration();
|
||||
|
||||
// setup main menu camera
|
||||
if (gDjuiInMainMenu) { newcam_tilt = 5; }
|
||||
|
||||
newcam_toggle(configEnableCamera || gDjuiInMainMenu);
|
||||
newcam_toggle(camera_config_is_free_cam_enabled() || gDjuiInMainMenu);
|
||||
}
|
||||
|
||||
/** Mathematic calculations. This stuffs so basic even *I* understand it lol
|
||||
|
|
|
|||
|
|
@ -12145,7 +12145,6 @@ void center_rom_hack_camera(void) {
|
|||
*/
|
||||
void mode_rom_hack_camera(struct Camera *c) {
|
||||
if (!c) { return; }
|
||||
extern bool configCameraInvertX;
|
||||
s16 oldAreaYaw = sAreaYaw;
|
||||
|
||||
Vec3f oldPos = {
|
||||
|
|
@ -12156,13 +12155,13 @@ void mode_rom_hack_camera(struct Camera *c) {
|
|||
|
||||
// look left
|
||||
if (gMarioStates[0].controller->buttonPressed & L_CBUTTONS) {
|
||||
sRomHackYaw += DEGREES(45) * (configCameraInvertX ? -1 : 1);
|
||||
sRomHackYaw += DEGREES(45) * (camera_config_is_x_inverted() ? -1 : 1);
|
||||
play_sound_cbutton_side();
|
||||
}
|
||||
|
||||
// look right
|
||||
if (gMarioStates[0].controller->buttonPressed & R_CBUTTONS) {
|
||||
sRomHackYaw -= DEGREES(45) * (configCameraInvertX ? -1 : 1);
|
||||
sRomHackYaw -= DEGREES(45) * (camera_config_is_x_inverted() ? -1 : 1);
|
||||
play_sound_cbutton_side();
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -29,6 +29,7 @@
|
|||
#include "spawn_sound.h"
|
||||
#include "pc/network/network.h"
|
||||
#include "pc/lua/smlua_hooks.h"
|
||||
#include "pc/lua/utils/smlua_misc_utils.h"
|
||||
|
||||
u8 (*gContinueDialogFunction)(void) = NULL;
|
||||
struct Object* gContinueDialogFunctionObject = NULL;
|
||||
|
|
@ -1943,7 +1944,7 @@ void obj_set_cylboard(struct Object *obj) {
|
|||
|
||||
void cur_obj_set_billboard_if_vanilla_cam(void) {
|
||||
if (!o) { return; }
|
||||
if (configEnableCamera) {
|
||||
if (camera_config_is_free_cam_enabled()) {
|
||||
o->header.gfx.node.flags &= ~GRAPH_RENDER_BILLBOARD;
|
||||
o->header.gfx.node.flags |= GRAPH_RENDER_CYLBOARD;
|
||||
} else {
|
||||
|
|
|
|||
|
|
@ -167,6 +167,35 @@ void hud_render_power_meter_interpolated(s32 health, f32 prevX, f32 prevY, f32 p
|
|||
|
||||
///
|
||||
|
||||
struct CameraOverride {
|
||||
unsigned int value;
|
||||
bool override;
|
||||
};
|
||||
|
||||
struct CameraOverride sOverrideCameraXSens = { 0 };
|
||||
struct CameraOverride sOverrideCameraYSens = { 0 };
|
||||
struct CameraOverride sOverrideCameraAggr = { 0 };
|
||||
struct CameraOverride sOverrideCameraPan = { 0 };
|
||||
struct CameraOverride sOverrideCameraDegrade = { 0 };
|
||||
struct CameraOverride sOverrideCameraInvertX = { 0 };
|
||||
struct CameraOverride sOverrideCameraInvertY = { 0 };
|
||||
struct CameraOverride sOverrideEnableCamera = { 0 };
|
||||
struct CameraOverride sOverrideCameraAnalog = { 0 };
|
||||
struct CameraOverride sOverrideCameraMouse = { 0 };
|
||||
|
||||
void camera_reset_overrides(void) {
|
||||
sOverrideCameraXSens.override = false;
|
||||
sOverrideCameraYSens.override = false;
|
||||
sOverrideCameraAggr.override = false;
|
||||
sOverrideCameraPan.override = false;
|
||||
sOverrideCameraDegrade.override = false;
|
||||
sOverrideCameraInvertX.override = false;
|
||||
sOverrideCameraInvertY.override = false;
|
||||
sOverrideEnableCamera.override = false;
|
||||
sOverrideCameraAnalog.override = false;
|
||||
sOverrideCameraMouse.override = false;
|
||||
}
|
||||
|
||||
void camera_freeze(void) {
|
||||
gOverrideFreezeCamera = TRUE;
|
||||
}
|
||||
|
|
@ -181,7 +210,7 @@ bool camera_is_frozen(void) {
|
|||
|
||||
bool camera_config_is_free_cam_enabled(void) {
|
||||
#ifdef BETTERCAMERA
|
||||
return configEnableCamera;
|
||||
return sOverrideEnableCamera.override ? sOverrideEnableCamera.value : configEnableCamera;
|
||||
#else
|
||||
return false;
|
||||
#endif
|
||||
|
|
@ -189,7 +218,7 @@ bool camera_config_is_free_cam_enabled(void) {
|
|||
|
||||
bool camera_config_is_analog_cam_enabled(void) {
|
||||
#ifdef BETTERCAMERA
|
||||
return configCameraAnalog;
|
||||
return sOverrideCameraAnalog.override ? sOverrideCameraAnalog.value : configCameraAnalog;
|
||||
#else
|
||||
return false;
|
||||
#endif
|
||||
|
|
@ -197,7 +226,7 @@ bool camera_config_is_analog_cam_enabled(void) {
|
|||
|
||||
bool camera_config_is_mouse_look_enabled(void) {
|
||||
#ifdef BETTERCAMERA
|
||||
return configCameraMouse;
|
||||
return sOverrideCameraMouse.override ? sOverrideCameraMouse.value : configCameraMouse;
|
||||
#else
|
||||
return false;
|
||||
#endif
|
||||
|
|
@ -205,7 +234,7 @@ bool camera_config_is_mouse_look_enabled(void) {
|
|||
|
||||
bool camera_config_is_x_inverted(void) {
|
||||
#ifdef BETTERCAMERA
|
||||
return configCameraInvertX;
|
||||
return sOverrideCameraInvertX.override ? sOverrideCameraInvertX.value : configCameraInvertX;
|
||||
#else
|
||||
return false;
|
||||
#endif
|
||||
|
|
@ -213,7 +242,7 @@ bool camera_config_is_x_inverted(void) {
|
|||
|
||||
bool camera_config_is_y_inverted(void) {
|
||||
#ifdef BETTERCAMERA
|
||||
return configCameraInvertY;
|
||||
return sOverrideCameraInvertY.override ? sOverrideCameraInvertY.value : configCameraInvertY;
|
||||
#else
|
||||
return false;
|
||||
#endif
|
||||
|
|
@ -221,7 +250,7 @@ bool camera_config_is_y_inverted(void) {
|
|||
|
||||
u32 camera_config_get_x_sensitivity(void) {
|
||||
#ifdef BETTERCAMERA
|
||||
return configCameraXSens;
|
||||
return sOverrideCameraXSens.override ? sOverrideCameraXSens.value : configCameraXSens;
|
||||
#else
|
||||
return 0;
|
||||
#endif
|
||||
|
|
@ -229,7 +258,7 @@ u32 camera_config_get_x_sensitivity(void) {
|
|||
|
||||
u32 camera_config_get_y_sensitivity(void) {
|
||||
#ifdef BETTERCAMERA
|
||||
return configCameraYSens;
|
||||
return sOverrideCameraYSens.override ? sOverrideCameraYSens.value : configCameraYSens;
|
||||
#else
|
||||
return 0;
|
||||
#endif
|
||||
|
|
@ -237,7 +266,7 @@ u32 camera_config_get_y_sensitivity(void) {
|
|||
|
||||
u32 camera_config_get_aggression(void) {
|
||||
#ifdef BETTERCAMERA
|
||||
return configCameraAggr;
|
||||
return sOverrideCameraAggr.override ? sOverrideCameraAggr.value : configCameraAggr;
|
||||
#else
|
||||
return 0;
|
||||
#endif
|
||||
|
|
@ -245,7 +274,7 @@ u32 camera_config_get_aggression(void) {
|
|||
|
||||
u32 camera_config_get_pan_level(void) {
|
||||
#ifdef BETTERCAMERA
|
||||
return configCameraPan;
|
||||
return sOverrideCameraPan.override ? sOverrideCameraPan.value : configCameraPan;
|
||||
#else
|
||||
return 0;
|
||||
#endif
|
||||
|
|
@ -253,7 +282,7 @@ u32 camera_config_get_pan_level(void) {
|
|||
|
||||
u32 camera_config_get_deceleration(void) {
|
||||
#ifdef BETTERCAMERA
|
||||
return configCameraDegrade;
|
||||
return sOverrideCameraDegrade.override ? sOverrideCameraDegrade.value : configCameraDegrade;
|
||||
#else
|
||||
return 0;
|
||||
#endif
|
||||
|
|
@ -261,70 +290,80 @@ u32 camera_config_get_deceleration(void) {
|
|||
|
||||
void camera_config_enable_free_cam(bool enable) {
|
||||
#ifdef BETTERCAMERA
|
||||
configEnableCamera = enable;
|
||||
sOverrideEnableCamera.value = enable;
|
||||
sOverrideEnableCamera.override = true;
|
||||
newcam_init_settings();
|
||||
#endif
|
||||
}
|
||||
|
||||
void camera_config_enable_analog_cam(bool enable) {
|
||||
#ifdef BETTERCAMERA
|
||||
configCameraAnalog = enable;
|
||||
sOverrideCameraAnalog.value = enable;
|
||||
sOverrideCameraAnalog.override = true;
|
||||
newcam_init_settings();
|
||||
#endif
|
||||
}
|
||||
|
||||
void camera_config_enable_mouse_look(bool enable) {
|
||||
#ifdef BETTERCAMERA
|
||||
configCameraMouse = enable;
|
||||
sOverrideCameraMouse.value = enable;
|
||||
sOverrideCameraMouse.override = true;
|
||||
newcam_init_settings();
|
||||
#endif
|
||||
}
|
||||
|
||||
void camera_config_invert_x(bool invert) {
|
||||
#ifdef BETTERCAMERA
|
||||
configCameraInvertX = invert;
|
||||
sOverrideCameraInvertX.value = invert;
|
||||
sOverrideCameraInvertX.override = true;
|
||||
newcam_init_settings();
|
||||
#endif
|
||||
}
|
||||
|
||||
void camera_config_invert_y(bool invert) {
|
||||
#ifdef BETTERCAMERA
|
||||
configCameraInvertY = invert;
|
||||
sOverrideCameraInvertY.value = invert;
|
||||
sOverrideCameraInvertY.override = true;
|
||||
newcam_init_settings();
|
||||
#endif
|
||||
}
|
||||
|
||||
void camera_config_set_x_sensitivity(u32 value) {
|
||||
#ifdef BETTERCAMERA
|
||||
configCameraXSens = MIN(MAX(value, 1), 100);
|
||||
sOverrideCameraXSens.value = MIN(MAX(value, 1), 100);
|
||||
sOverrideCameraXSens.override = true;
|
||||
newcam_init_settings();
|
||||
#endif
|
||||
}
|
||||
|
||||
void camera_config_set_y_sensitivity(u32 value) {
|
||||
#ifdef BETTERCAMERA
|
||||
configCameraYSens = MIN(MAX(value, 1), 100);
|
||||
sOverrideCameraYSens.value = MIN(MAX(value, 1), 100);
|
||||
sOverrideCameraYSens.override = true;
|
||||
newcam_init_settings();
|
||||
#endif
|
||||
}
|
||||
|
||||
void camera_config_set_aggression(u32 value) {
|
||||
#ifdef BETTERCAMERA
|
||||
configCameraAggr = MIN(MAX(value, 0), 100);
|
||||
sOverrideCameraAggr.value = MIN(MAX(value, 0), 100);
|
||||
sOverrideCameraAggr.override = true;
|
||||
newcam_init_settings();
|
||||
#endif
|
||||
}
|
||||
|
||||
void camera_config_set_pan_level(u32 value) {
|
||||
#ifdef BETTERCAMERA
|
||||
configCameraPan = MIN(MAX(value, 0), 100);
|
||||
sOverrideCameraPan.value = MIN(MAX(value, 0), 100);
|
||||
sOverrideCameraPan.override = true;
|
||||
newcam_init_settings();
|
||||
#endif
|
||||
}
|
||||
|
||||
void camera_config_set_deceleration(u32 value) {
|
||||
#ifdef BETTERCAMERA
|
||||
configCameraDegrade = MIN(MAX(value, 0), 100);
|
||||
sOverrideCameraDegrade.value = MIN(MAX(value, 0), 100);
|
||||
sOverrideCameraDegrade.override = true;
|
||||
newcam_init_settings();
|
||||
#endif
|
||||
}
|
||||
|
|
|
|||
|
|
@ -40,6 +40,7 @@ void hud_set_value(enum HudDisplayValue type, s32 value);
|
|||
void hud_render_power_meter(s32 health, f32 x, f32 y, f32 width, f32 height);
|
||||
void hud_render_power_meter_interpolated(s32 health, f32 prevX, f32 prevY, f32 prevWidth, f32 prevHeight, f32 x, f32 y, f32 width, f32 height);
|
||||
|
||||
void camera_reset_overrides(void);
|
||||
void camera_freeze(void);
|
||||
void camera_unfreeze(void);
|
||||
bool camera_is_frozen(void);
|
||||
|
|
|
|||
|
|
@ -17,6 +17,7 @@
|
|||
#include "pc/utils/misc.h"
|
||||
#include "pc/lua/smlua.h"
|
||||
#include "pc/lua/utils/smlua_model_utils.h"
|
||||
#include "pc/lua/utils/smlua_misc_utils.h"
|
||||
#include "pc/mods/mods.h"
|
||||
#include "pc/crash_handler.h"
|
||||
#include "pc/debuglog.h"
|
||||
|
|
@ -635,6 +636,7 @@ void network_shutdown(bool sendLeaving, bool exiting, bool popup, bool reconnect
|
|||
gOverrideBackground = -1;
|
||||
gOverrideEnvFx = -1;
|
||||
gDjuiRenderBehindHud = false;
|
||||
camera_reset_overrides();
|
||||
dynos_mod_shutdown();
|
||||
mods_clear(&gActiveMods);
|
||||
mods_clear(&gRemoteMods);
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue