Misc camera fixes

Made analog camera stop rotating or triggering TOTWC when paused
Fix broken vanilla camera on TOWTC w/BETTERCAMERA enabled
Fixes #15
This commit is contained in:
MysterD 2020-09-07 10:48:54 -07:00
parent bc2480da87
commit 3145dfabdc
3 changed files with 17 additions and 6 deletions

View file

@ -608,7 +608,7 @@ static void newcam_apply_values(struct Camera *c) {
if (gMarioStates[0].floor != NULL) { if (gMarioStates[0].floor != NULL) {
if (gMarioStates[0].floor->type == SURFACE_LOOK_UP_WARP) { if (gMarioStates[0].floor->type == SURFACE_LOOK_UP_WARP) {
if (save_file_get_total_star_count(gCurrSaveFileNum - 1, 0, 0x18) >= 10) { if (save_file_get_total_star_count(gCurrSaveFileNum - 1, 0, 0x18) >= 10) {
if (newcam_tilt < -8000 && gMarioStates[0].forwardVel == 0) { if (newcam_tilt < -8000 && gMarioStates[0].forwardVel == 0 && sCurrPlayMode != PLAY_MODE_PAUSED) {
level_trigger_warp(gMarioState, 1); level_trigger_warp(gMarioState, 1);
} }
} }
@ -647,6 +647,9 @@ void newcam_loop(struct Camera *c) {
newcam_stick_input(); newcam_stick_input();
newcam_rotate_button(); newcam_rotate_button();
newcam_zoom_button(); newcam_zoom_button();
} else {
newcam_yaw_acc *= 0.6f;
newcam_tilt_acc *= 0.6f;
} }
newcam_position_cam(); newcam_position_cam();
newcam_find_fixed(); newcam_find_fixed();

View file

@ -2924,7 +2924,13 @@ void update_lakitu(struct Camera *c) {
s16 newYaw; s16 newYaw;
UNUSED u8 unused1[8]; UNUSED u8 unused1[8];
if (gCameraMovementFlags & CAM_MOVE_PAUSE_SCREEN) { #ifdef BETTERCAMERA
u8 allowPauseCheck = (c->mode != CAMERA_MODE_NEWCAM);
#else
u8 allowPauseCheck = TRUE;
#endif
if (allowPauseCheck && (gCameraMovementFlags & CAM_MOVE_PAUSE_SCREEN)) {
} else { } else {
if (c->cutscene) { if (c->cutscene) {
} }

View file

@ -1789,10 +1789,12 @@ s32 act_flying(struct MarioState *m) {
#ifndef BETTERCAMERA #ifndef BETTERCAMERA
set_camera_mode(m->area->camera, CAMERA_MODE_BEHIND_MARIO, 1); set_camera_mode(m->area->camera, CAMERA_MODE_BEHIND_MARIO, 1);
#else #else
if (newcam_active == 0) if (newcam_active == 0) {
set_camera_mode(m->area->camera, m->area->camera->defMode, 1); set_camera_mode(m->area->camera, CAMERA_MODE_BEHIND_MARIO, 1);
else // note: EX sets it to the following line instead, but I have
{ // no idea why... possibly copy/paste error?
//set_camera_mode(m->area->camera, m->area->camera->defMode, 1);
} else {
m->area->camera->mode = CAMERA_MODE_NEWCAM; m->area->camera->mode = CAMERA_MODE_NEWCAM;
gLakituState.mode = CAMERA_MODE_NEWCAM; gLakituState.mode = CAMERA_MODE_NEWCAM;
} }