Adjust main menu cutscene and camera

This commit is contained in:
MysterD 2021-08-04 19:15:42 -07:00
parent 354146e3ac
commit 8984ec3ba8
8 changed files with 38 additions and 5 deletions

View file

@ -193,7 +193,11 @@ void newcam_init_settings(void) {
newcam_analogue = (s16)configCameraAnalog; newcam_analogue = (s16)configCameraAnalog;
newcam_degrade = (f32)configCameraDegrade; newcam_degrade = (f32)configCameraDegrade;
newcam_toggle(configEnableCamera); // setup main menu camera
extern bool gDjuiInMainMenu;
if (gDjuiInMainMenu) { newcam_tilt = 5; }
newcam_toggle(configEnableCamera || gDjuiInMainMenu);
} }
/** Mathematic calculations. This stuffs so basic even *I* understand it lol /** Mathematic calculations. This stuffs so basic even *I* understand it lol

View file

@ -776,4 +776,6 @@ void obj_rotate_towards_point(struct Object *o, Vec3f point, s16 pitchOff, s16 y
Gfx *geo_camera_fov(s32 callContext, struct GraphNode *g, UNUSED void *context); Gfx *geo_camera_fov(s32 callContext, struct GraphNode *g, UNUSED void *context);
s32 set_camera_mode_fixed(struct Camera* c, s16 x, s16 y, s16 z);
#endif // CAMERA_H #endif // CAMERA_H

View file

@ -1300,7 +1300,9 @@ s32 init_level(void) {
} else if (gDebugLevelSelect == 0) { } else if (gDebugLevelSelect == 0) {
if (gMarioState->action != ACT_UNINITIALIZED) { if (gMarioState->action != ACT_UNINITIALIZED) {
bool skipIntro = (gNetworkType == NT_NONE); bool skipIntro = (gNetworkType == NT_NONE);
if (save_file_exists(gCurrSaveFileNum - 1) || skipIntro) { if (gDjuiInMainMenu) {
set_mario_action(gMarioState, ACT_INTRO_CUTSCENE, 7);
} else if (save_file_exists(gCurrSaveFileNum - 1) || skipIntro) {
set_mario_action(gMarioState, ACT_IDLE, 0); set_mario_action(gMarioState, ACT_IDLE, 0);
} else if (gCLIOpts.SkipIntro == 0 && configSkipIntro == 0 && gServerSettings.skipIntro == 0) { } else if (gCLIOpts.SkipIntro == 0 && configSkipIntro == 0 && gServerSettings.skipIntro == 0) {
set_mario_action(gMarioState, ACT_INTRO_CUTSCENE, 0); set_mario_action(gMarioState, ACT_INTRO_CUTSCENE, 0);

View file

@ -1782,7 +1782,7 @@ void mario_update_hitbox_and_cap_model(struct MarioState *m) {
} }
struct NetworkPlayer* np = &gNetworkPlayers[gMarioState->playerIndex]; struct NetworkPlayer* np = &gNetworkPlayers[gMarioState->playerIndex];
u8 teleportFade = (m->flags & MARIO_TELEPORTING) || (np->type != NPT_LOCAL && np->fadeOpacity < 32); u8 teleportFade = (m->flags & MARIO_TELEPORTING) || (gMarioState->playerIndex != 0 && np->fadeOpacity < 32);
if (teleportFade && (m->fadeWarpOpacity != 0xFF)) { if (teleportFade && (m->fadeWarpOpacity != 0xFF)) {
bodyState->modelState &= ~0xFF; bodyState->modelState &= ~0xFF;
bodyState->modelState |= (0x100 | m->fadeWarpOpacity); bodyState->modelState |= (0x100 | m->fadeWarpOpacity);

View file

@ -1830,7 +1830,7 @@ static void intro_cutscene_peach_lakitu_scene(struct MarioState *m) {
#define TIMER_RAISE_PIPE 38 #define TIMER_RAISE_PIPE 38
#endif #endif
static void intro_cutscene_raise_pipe(struct MarioState *m) { static void intro_cutscene_raise_pipe(struct MarioState* m) {
u8 globalIndex = gNetworkPlayers[m->playerIndex].globalIndex; u8 globalIndex = gNetworkPlayers[m->playerIndex].globalIndex;
if (globalIndex == UNKNOWN_GLOBAL_INDEX) { globalIndex = 0; } if (globalIndex == UNKNOWN_GLOBAL_INDEX) { globalIndex = 0; }
sIntroWarpPipeObj[globalIndex]->oPosY = camera_approach_f32_symmetric(sIntroWarpPipeObj[globalIndex]->oPosY, 260.0f, 10.0f); sIntroWarpPipeObj[globalIndex]->oPosY = camera_approach_f32_symmetric(sIntroWarpPipeObj[globalIndex]->oPosY, 260.0f, 10.0f);
@ -1844,6 +1844,24 @@ static void intro_cutscene_raise_pipe(struct MarioState *m) {
advance_cutscene_step(m); advance_cutscene_step(m);
} }
} }
static void intro_cutscene_raise_pipe_main_menu(struct MarioState* m) {
u8 globalIndex = gNetworkPlayers[m->playerIndex].globalIndex;
if (globalIndex == UNKNOWN_GLOBAL_INDEX) { globalIndex = 0; }
if (sIntroWarpPipeObj[globalIndex] == NULL) {
sIntroWarpPipeObj[globalIndex] =
spawn_object_abs_with_rot(gCurrentObject, 0, MODEL_CASTLE_GROUNDS_WARP_PIPE,
bhvStaticObject, m->pos[0], 260, m->pos[2], 0, 180, 0);
}
if (m->actionTimer++ > 1) {
m->vel[1] = 60.0f;
m->faceAngle[1] = m->area->camera->yaw;
advance_cutscene_step(m);
m->actionArg = 3;
m->actionTimer = 110;
}
}
#undef TIMER_RAISE_PIPE #undef TIMER_RAISE_PIPE
static void intro_cutscene_jump_out_of_pipe(struct MarioState *m) { static void intro_cutscene_jump_out_of_pipe(struct MarioState *m) {
@ -1931,7 +1949,8 @@ enum {
INTRO_CUTSCENE_JUMP_OUT_OF_PIPE, INTRO_CUTSCENE_JUMP_OUT_OF_PIPE,
INTRO_CUTSCENE_LAND_OUTSIDE_PIPE, INTRO_CUTSCENE_LAND_OUTSIDE_PIPE,
INTRO_CUTSCENE_LOWER_PIPE, INTRO_CUTSCENE_LOWER_PIPE,
INTRO_CUTSCENE_SET_MARIO_TO_IDLE INTRO_CUTSCENE_SET_MARIO_TO_IDLE,
INTRO_CUTSCENE_RAISE_PIPE_MAIN_MENU
}; };
static s32 act_intro_cutscene(struct MarioState *m) { static s32 act_intro_cutscene(struct MarioState *m) {
@ -1957,6 +1976,9 @@ static s32 act_intro_cutscene(struct MarioState *m) {
case INTRO_CUTSCENE_SET_MARIO_TO_IDLE: case INTRO_CUTSCENE_SET_MARIO_TO_IDLE:
intro_cutscene_set_mario_to_idle(m); intro_cutscene_set_mario_to_idle(m);
break; break;
case INTRO_CUTSCENE_RAISE_PIPE_MAIN_MENU:
intro_cutscene_raise_pipe_main_menu(m);
break;
} }
return FALSE; return FALSE;
} }

View file

@ -7,6 +7,7 @@ static Gfx* sSavedDisplayListHead = NULL;
struct DjuiRoot* gDjuiRoot = NULL; struct DjuiRoot* gDjuiRoot = NULL;
static struct DjuiText* sDjuiPauseOptions = NULL; static struct DjuiText* sDjuiPauseOptions = NULL;
bool gDjuiInMainMenu = true;
void djui_init(void) { void djui_init(void) {
gDjuiRoot = djui_root_create(); gDjuiRoot = djui_root_create();

View file

@ -51,6 +51,7 @@
#include "djui_panel_cheats.h" #include "djui_panel_cheats.h"
extern struct DjuiRoot* gDjuiRoot; extern struct DjuiRoot* gDjuiRoot;
extern bool gDjuiInMainMenu;
void djui_init(void); void djui_init(void);
void djui_connect_menu_open(void); void djui_connect_menu_open(void);

View file

@ -145,6 +145,7 @@ void djui_panel_shutdown(void) {
sPanelList = NULL; sPanelList = NULL;
sPanelRemoving = NULL; sPanelRemoving = NULL;
sMoveAmount = 0; sMoveAmount = 0;
gDjuiInMainMenu = false;
gInteractableOverridePad = false; gInteractableOverridePad = false;
gDjuiPanelJoinMessageVisible = false; gDjuiPanelJoinMessageVisible = false;
gDjuiPanelMainCreated = false; gDjuiPanelMainCreated = false;