From 0b8370eacb8fd06f319d6fc1f36fe2b9a0070e56 Mon Sep 17 00:00:00 2001 From: Agent X <44549182+AgentXLP@users.noreply.github.com> Date: Wed, 26 Jun 2024 18:51:06 -0400 Subject: [PATCH] Misc fixes and changes --- src/game/behaviors/chain_chomp.inc.c | 2 ++ src/game/camera.c | 8 +------- src/game/camera.h | 3 +-- src/game/first_person_cam.c | 2 +- src/game/level_update.c | 7 +++---- src/game/mario.c | 2 +- src/pc/nametags.c | 5 ++--- 7 files changed, 11 insertions(+), 18 deletions(-) diff --git a/src/game/behaviors/chain_chomp.inc.c b/src/game/behaviors/chain_chomp.inc.c index 23751756..f4914c81 100644 --- a/src/game/behaviors/chain_chomp.inc.c +++ b/src/game/behaviors/chain_chomp.inc.c @@ -491,6 +491,7 @@ void bhv_chain_chomp_update(void) { void bhv_wooden_post_update(void) { if (!sync_object_is_initialized(o->oSyncID)) { sync_object_init(o, SYNC_DISTANCE_ONLY_EVENTS); + sync_object_init_field(o, &o->oBehParams); sync_object_init_field(o, &o->oWoodenPostMarioPounding); sync_object_init_field(o, &o->oWoodenPostOffsetY); sync_object_init_field(o, &o->oWoodenPostSpeedY); @@ -543,6 +544,7 @@ void bhv_wooden_post_update(void) { if (absi(o->oWoodenPostTotalMarioAngle) > 0x30000 && o->oTimer < 200) { obj_spawn_loot_yellow_coins(o, 5, 20.0f); set_object_respawn_info_bits(o, 1); + o->oBehParams = WOODEN_POST_BP_NO_COINS_MASK; network_send_object(o); } } diff --git a/src/game/camera.c b/src/game/camera.c index 7f56a068..500da623 100644 --- a/src/game/camera.c +++ b/src/game/camera.c @@ -504,7 +504,7 @@ CameraTransition sModeTransitions[] = { extern u8 sDanceCutsceneIndexTable[][4]; extern u8 sZoomOutAreaMasks[]; -static void skip_camera_interpolation(void) { +void skip_camera_interpolation(void) { gLakituState.skipCameraInterpolationTimestamp = gGlobalTimer; extern s32 gCamSkipInterp; gCamSkipInterp = 1; @@ -10785,12 +10785,6 @@ BAD_RETURN(s32) cutscene_door_move_behind_mario(struct Camera *c) { vec3s_set(sCutsceneVars[0].angle, 0, sMarioCamState->faceAngle[1] + doorRotation, 0); vec3f_set(camOffset, 0.f, 125.f, 250.f); - if (doorRotation == 0) { //! useless code - camOffset[0] = 0.f; - } else { - camOffset[0] = 0.f; - } - offset_rotated(c->pos, sMarioCamState->pos, camOffset, sCutsceneVars[0].angle); skip_camera_interpolation(); } diff --git a/src/game/camera.h b/src/game/camera.h index 20f8cbaa..e6963676 100644 --- a/src/game/camera.h +++ b/src/game/camera.h @@ -694,8 +694,7 @@ extern struct Object *gCutsceneFocus; extern struct Object *gSecondCameraFocus; extern u8 gRecentCutscene; -// TODO: sort all of this extremely messy shit out after the split - +void skip_camera_interpolation(void); void set_camera_shake_from_hit(s16 shake); void set_environmental_camera_shake(s16 shake); void set_camera_shake_from_point(s16 shake, f32 posX, f32 posY, f32 posZ); diff --git a/src/game/first_person_cam.c b/src/game/first_person_cam.c index 9e1a7e2c..6baf0ed9 100644 --- a/src/game/first_person_cam.c +++ b/src/game/first_person_cam.c @@ -59,7 +59,7 @@ void set_first_person_enabled(bool enable) { gFirstPersonCamera.enabled = enable; } -void first_person_camera_update(void) { +static void first_person_camera_update(void) { struct MarioState *m = &gMarioStates[0]; f32 sensX = 0.3f * camera_config_get_x_sensitivity(); f32 sensY = 0.4f * camera_config_get_y_sensitivity(); diff --git a/src/game/level_update.c b/src/game/level_update.c index db95e0b1..c611e550 100644 --- a/src/game/level_update.c +++ b/src/game/level_update.c @@ -1490,7 +1490,7 @@ void update_menu_level(void) { if (!configMenuSound || configMenuStaffRoll || curLevel == LEVEL_CASTLE_GROUNDS) { reset_volume(); disable_background_sound(); - set_background_music(0, SEQ_MENU_FILE_SELECT, 0); + set_background_music(0, SEQ_MENU_TITLE_SCREEN, 0); } else { reset_volume(); disable_background_sound(); @@ -1634,9 +1634,7 @@ void update_menu_level(void) { gMarioState->faceAngle[1] = -0x1C34; break; } - gLakituState.skipCameraInterpolationTimestamp = gGlobalTimer; - extern s32 gCamSkipInterp; - gCamSkipInterp = 1; + if (gCurrentArea != NULL) { vec3f_copy(gCurrentArea->camera->pos, gLakituState.curPos); } @@ -1659,6 +1657,7 @@ void update_menu_level(void) { s32 update_level(void) { // update main menu level if (gDjuiInMainMenu) { + skip_camera_interpolation(); // we can't have nice things with this engine and interpolation update_menu_level(); } sCancelNextActSelector = gDjuiInMainMenu; diff --git a/src/game/mario.c b/src/game/mario.c index 87ce92b8..1b30893b 100644 --- a/src/game/mario.c +++ b/src/game/mario.c @@ -2147,7 +2147,7 @@ s32 execute_mario_action(UNUSED struct Object *o) { // Make remote players disappear when they enter a painting // should use same logic as in get_painting_warp_node - if (gMarioState->playerIndex != 0) { + if (gMarioState->playerIndex != 0 && gCurrentArea->paintingWarpNodes != NULL) { s32 paintingIndex = gMarioState->floor->type - SURFACE_PAINTING_WARP_D3; if (paintingIndex >= PAINTING_WARP_INDEX_START && paintingIndex < PAINTING_WARP_INDEX_END) { if (paintingIndex < PAINTING_WARP_INDEX_FA || gMarioState->pos[1] - gMarioState->floorHeight < 80.0f) { diff --git a/src/pc/nametags.c b/src/pc/nametags.c index 5d683782..b8d3c234 100644 --- a/src/pc/nametags.c +++ b/src/pc/nametags.c @@ -16,7 +16,7 @@ struct StateExtras { Vec3f prevPos; f32 prevScale; }; -struct StateExtras sStateExtras[MAX_PLAYERS]; +static struct StateExtras sStateExtras[MAX_PLAYERS]; void name_without_hex(char* input) { s32 i, j; @@ -81,7 +81,6 @@ void nametags_render(void) { pos[1] = m->pos[1] + 210; if (djui_hud_world_pos_to_screen_pos(pos, out) && - m->marioBodyState->updateTorsoTime == gMarioStates[0].marioBodyState->updateTorsoTime && m->action != ACT_IN_CANNON && (i != 0 || (i == 0 && m->action != ACT_FIRST_PERSON))) { f32 scale = NAMETAG_MAX_SCALE; @@ -101,7 +100,7 @@ void nametags_render(void) { }; f32 measure = djui_hud_measure_text(name) * scale * 0.5f; - f32 alpha = (np->fadeOpacity / 32) * 255; + f32 alpha = (np->fadeOpacity / 32.0f) * 255; struct StateExtras* e = &sStateExtras[i]; djui_hud_print_outlined_text_interpolated(name, e->prevPos[0] - measure, e->prevPos[1], e->prevScale, out[0] - measure, out[1], scale, color[0], color[1], color[2], alpha, 0.25);