From 306edd74fae47315171c473ee2bc1396de4a6e8e Mon Sep 17 00:00:00 2001 From: Prakxo Date: Mon, 26 Aug 2024 23:09:00 +0200 Subject: [PATCH] match m_player_main_wait --- include/m_player.h | 5 + src/m_player_main_return_demo.c_inc | 4 +- src/m_player_main_return_outdoor.c_inc | 2 +- src/m_player_main_return_outdoor2.c_inc | 2 +- src/m_player_main_wait.c_inc | 116 ++++++++++++++++++++++++ 5 files changed, 125 insertions(+), 4 deletions(-) diff --git a/include/m_player.h b/include/m_player.h index 3f224937..7bfcebb7 100644 --- a/include/m_player.h +++ b/include/m_player.h @@ -1301,6 +1301,10 @@ typedef struct player_main_return_outdoor2_s { int prev_main_index; } mPlayer_main_return_outdoor2_c; +typedef struct player_main_wait_s { + int radio_exercise_command; +} mPlayer_main_wait_c; + typedef struct player_main_wade_s { int dir; xyz_t start_pos; @@ -1379,6 +1383,7 @@ typedef union { mPlayer_main_return_demo_c return_demo; mPlayer_main_return_outdoor_c return_outdoor; mPlayer_main_return_outdoor2_c return_outdoor2; + mPlayer_main_wait_c wait; mPlayer_main_wade_c wade; mPlayer_main_pickup_c pickup; mPlayer_main_pickup_jump_c pickup_jump; diff --git a/src/m_player_main_return_demo.c_inc b/src/m_player_main_return_demo.c_inc index 5b8a6b56..15caca49 100644 --- a/src/m_player_main_return_demo.c_inc +++ b/src/m_player_main_return_demo.c_inc @@ -2,8 +2,8 @@ int Player_actor_request_main_return_demo_all(GAME* game, int prev_index, int now_index, f32 time){ if(Player_actor_check_request_main_able(game, mPlayer_INDEX_RETURN_DEMO, now_index)){ - PLAYER_ACTOR* player = GET_PLAYER_ACTOR((GAME_PLAY*)game); - + PLAYER_ACTOR* player = GET_PLAYER_ACTOR_GAME(game); + player->requested_main_index_data.return_demo.prev_main_index = prev_index; player->requested_main_index_data.return_demo.time = time; Player_actor_request_main_index(game, mPlayer_INDEX_RETURN_DEMO, now_index); diff --git a/src/m_player_main_return_outdoor.c_inc b/src/m_player_main_return_outdoor.c_inc index c21b2705..4f9192fe 100644 --- a/src/m_player_main_return_outdoor.c_inc +++ b/src/m_player_main_return_outdoor.c_inc @@ -1,7 +1,7 @@ int Player_actor_request_main_return_outdoor_all(GAME* game, int prev_index, int now_index, f32 time, f32 arg5){ if(Player_actor_check_request_main_able(game, mPlayer_INDEX_RETURN_OUTDOOR, now_index)){ - PLAYER_ACTOR* player = GET_PLAYER_ACTOR((GAME_PLAY*)game); + PLAYER_ACTOR* player = GET_PLAYER_ACTOR_GAME(game); player->requested_main_index_data.return_outdoor.prev_main_index = prev_index; player->requested_main_index_data.return_outdoor.time = time; diff --git a/src/m_player_main_return_outdoor2.c_inc b/src/m_player_main_return_outdoor2.c_inc index 0ecf25d1..5078d99c 100644 --- a/src/m_player_main_return_outdoor2.c_inc +++ b/src/m_player_main_return_outdoor2.c_inc @@ -1,7 +1,7 @@ int Player_actor_request_main_return_outdoor2_all(GAME* game, int prev_index, int now_index, f32 time, f32 arg5){ if(Player_actor_check_request_main_able(game, mPlayer_INDEX_RETURN_OUTDOOR2, now_index)){ - PLAYER_ACTOR* player = GET_PLAYER_ACTOR((GAME_PLAY*)game); + PLAYER_ACTOR* player = GET_PLAYER_ACTOR_GAME(game); player->requested_main_index_data.return_outdoor2.prev_main_index = prev_index; player->requested_main_index_data.return_outdoor2.time = time; diff --git a/src/m_player_main_wait.c_inc b/src/m_player_main_wait.c_inc index e69de29b..e1414358 100644 --- a/src/m_player_main_wait.c_inc +++ b/src/m_player_main_wait.c_inc @@ -0,0 +1,116 @@ +int Player_actor_request_main_wait_all(GAME* game, f32 morph_speed, f32 _04, int flags, int now_index){ + + if(Player_actor_check_request_main_able(game, mPlayer_INDEX_WAIT, now_index)){ + PLAYER_ACTOR* player = GET_PLAYER_ACTOR_GAME(game); + + Player_actor_request_main_index(game, mPlayer_INDEX_WAIT, now_index); + + player->requested_main_index_data.wait.morph_speed = morph_speed; + player->requested_main_index_data.wait.flags = flags; + player->requested_main_index_data.wait._04 = _04; + + return TRUE; + } + else{ + return FALSE; + } +} + +void Player_actor_request_main_wait_from_submenu(ACTOR* actor, GAME* game){ + Player_actor_request_main_wait_all(game, -5.0f, 0.0f, 0, 31); +} + +void Player_actor_setup_main_Wait(ACTOR* actor, GAME* game){ + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + int flags = player->requested_main_index_data.wait.flags; + f32 speed = player->requested_main_index_data.wait.morph_speed; + f32 absspeed; + int anim_idx; + int part_table_idx; + + if(flags & 4){ + player->main_data.wait.radio_exercise_command = 0; + } + else{ + player->main_data.wait.radio_exercise_command = 1; + player->radio_exercise_continue_cmd_idx = -1; + player->radio_exercise_cmd_timer = 0.0f; + } + + absspeed = ABS(speed); + + Player_actor_SetupItem_Base1(actor, 0, -absspeed, &anim_idx, &part_table_idx); + Player_actor_InitAnimation_Base1(actor, game, mPlayer_ANIM_WAIT1, anim_idx, 1.0f, 1.0f, 0.5f, speed, part_table_idx); + + if (flags & 1) { + Player_actor_SetEffect_forTakeout_item(actor, game); + } + + Player_actor_setup_main_Base(actor,game); +} + +void Player_actor_Set_RadioExerciseCommand_Wait(ACTOR* actor, GAME* game){ + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + + Player_actor_Set_RadioExerciseCommand(actor, game, player->main_data.wait.radio_exercise_command); + player->main_data.wait.radio_exercise_command = 0; +} + +void Player_actor_Movement_Wait(ACTOR* actor){ + Player_actor_Movement_Base_Braking_common(actor, 0.23925f); +} + +void Player_actor_CulcAnimation_Wait(ACTOR* actor){ + f32 base; + + Player_actor_CulcAnimation_Base2(actor, &base); +} + +void Player_actor_ObjCheck_Wait(ACTOR* actor, GAME* game){ + Player_actor_Excute_Corect_forStand(actor, game); +} + +void Player_actor_BGcheck_Wait(ACTOR* actor){ + Player_actor_BGcheck_common_type1(actor); +} + +void Player_actor_request_proc_index_fromWait(ACTOR* actor, GAME* game){ + + if(!actor->bg_collision_check.result.on_ground){ + Player_actor_request_main_fall_all(game, -5.0f, 1, 1); + } + + Player_actor_CheckAndRequest_main_axe_all(game, 4); + + if (Player_actor_CheckController_forNet(game) != 0) { + Player_actor_request_main_ready_net(game, 4); + } + + if (Player_actor_CheckController_forRod(game) != 0) { + Player_actor_request_main_ready_rod(game, 4); + } + + Player_actor_CheckAndRequest_main_scoop_all(game, 4); + Player_actor_CheckAndRequest_main_umbrella_all(game, 4); + Player_actor_CheckAndRequest_main_fan_all(game, 1, 1, 4); + Player_actor_CheckAndRequest_main_shake_tree_all(game); + + if ((Player_actor_GetController_move_percentX()) || (Player_actor_GetController_move_percentY())) { + Player_actor_request_main_walk_all(game, NULL, -5.0f, 4, 1); + } + Player_actor_CheckAndRequest_main_pickup_all(game); + Player_actor_CheckAndRequest_main_radio_exercise_all(game, 0); +} + +void Player_actor_main_Wait(ACTOR* actor, GAME* game){ + Player_actor_Set_RadioExerciseCommand_Wait(actor, game); + Player_actor_Movement_Wait(actor); + Player_actor_Reinput_force_position_angle(actor, game); + Player_actor_CulcAnimation_Wait(actor); + Player_actor_recover_lean_angle(actor); + Player_actor_set_eye_pattern_normal(actor); + Player_actor_ObjCheck_Wait(actor, game); + Player_actor_BGcheck_Wait(actor); + Player_actor_Item_main(actor, game); + Player_actor_request_proc_index_fromWait(actor, game); +}