mirror of
https://github.com/coop-deluxe/sm64coopdx.git
synced 2024-11-22 12:05:11 +00:00
Adjust main menu cutscene and camera
This commit is contained in:
parent
354146e3ac
commit
8984ec3ba8
8 changed files with 38 additions and 5 deletions
|
@ -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
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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);
|
||||||
|
|
|
@ -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);
|
||||||
|
|
|
@ -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;
|
||||||
}
|
}
|
||||||
|
|
|
@ -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();
|
||||||
|
|
|
@ -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);
|
||||||
|
|
|
@ -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;
|
||||||
|
|
Loading…
Reference in a new issue