From f563b93034a0227d430c732e1dc990a35c43d6d4 Mon Sep 17 00:00:00 2001 From: Prakxo Date: Sat, 7 Sep 2024 22:35:08 +0200 Subject: [PATCH] match m_player_main_slip_net --- include/m_player.h | 9 ++- src/m_player_main_slip_net.c_inc | 122 ++++++++++++++++++++++++++++++ src/m_player_main_swing_axe.c_inc | 4 +- 3 files changed, 132 insertions(+), 3 deletions(-) diff --git a/include/m_player.h b/include/m_player.h index 79d26866..3e6fafae 100644 --- a/include/m_player.h +++ b/include/m_player.h @@ -1603,9 +1603,13 @@ typedef struct player_main_broken_axe_s { int _2C; } mPlayer_main_broken_axe_c; +typedef struct player_main_slip_net_s { + f32 _00; +} mPlayer_main_slip_net_c; + typedef struct player_main_relax_rod_s { int bee_flag; - int mosquito_flag + int mosquito_flag; } mPlayer_main_relax_rod_c; typedef struct player_main_dig_scoop_s { @@ -1773,7 +1777,7 @@ typedef struct player_main_knock_door_s { mPlayer_request_knock_door_c request_data; } mPlayer_main_knock_door_c; -typedef struct player_main_change_cloth_s { +typedef struct player_main_change_netcloth_s { ACTOR* talk_actor; int turn_flag; int prev_main_index; @@ -1878,6 +1882,7 @@ typedef union { mPlayer_main_reflect_axe_c reflect_axe; mPlayer_main_broken_axe_c broken_axe; mPlayer_main_swing_net_c swing_net; + mPlayer_main_slip_net_c slip_net; mPlayer_main_relax_rod_c relax_rod; mPlayer_main_dig_scoop_c dig_scoop; mPlayer_main_fill_scoop_c fill_scoop; diff --git a/src/m_player_main_slip_net.c_inc b/src/m_player_main_slip_net.c_inc index e69de29b..e015952f 100644 --- a/src/m_player_main_slip_net.c_inc +++ b/src/m_player_main_slip_net.c_inc @@ -0,0 +1,122 @@ +static int Player_actor_request_main_slip_net(GAME* game, int priority) { + if (Player_actor_check_request_main_able(game, mPlayer_INDEX_SLIP_NET, priority)) { + PLAYER_ACTOR* player = GET_PLAYER_ACTOR_GAME(game); + s8 item = Player_actor_Get_ItemKind(&player->actor_class, player->now_main_index); + int net = FALSE; + + if (mPlayer_ITEM_IS_NET(item)) { + net = TRUE; + } + + if (net != FALSE) { + Player_actor_request_main_index(game, mPlayer_INDEX_SLIP_NET, priority); + + return TRUE; + } + } + + return FALSE; +} + +static void Player_actor_setup_main_Slip_net(ACTOR* actor, GAME* game) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + int anim_idx; + int part_table_idx; + + mPlayer_main_slip_net_c* main_net = &player->main_data.slip_net; + + main_net->_00 = 0.0f; + + Player_actor_SetupItem_Base1(actor, mPlayer_ANIM_KAMAE_SLIP_M1, -5.0f, &anim_idx, &part_table_idx); + Player_actor_InitAnimation_Base1(actor, game, mPlayer_ANIM_KAMAE_SLIP_M1, mPlayer_ANIM_KAMAE_SLIP_M1, 1.0f, 1.0f, + 0.5f, -5.0f, 0); + Player_actor_setup_main_Base(actor, game); + Player_actor_sound_slip(actor); + + Common_Get(clip).effect_clip->effect_make_proc(eEC_EFFECT_TURN_ASIMOTO, actor->world.position, 2, + actor->world.angle.y, game, RSV_NO, + actor->bg_collision_check.result.unit_attribute, 1); +} + +static void Player_actor_Set_FootMark(ACTOR* actor, GAME* game) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + + Common_Get(clip).effect_clip->effect_make_proc(eEC_EFFECT_SLIP_FOOTPRINT, player->right_foot_pos, 2, + actor->world.angle.y, game, RSV_NO, + actor->bg_collision_check.result.unit_attribute, 0); +} + +static void Player_actor_settle_main_Slip_net(ACTOR* actor, GAME* game) { + Player_actor_Set_FootMark(actor, game); +} + +static int Player_actor_Movement_Slip_net(ACTOR* actor) { + return Player_actor_Movement_Base_Braking_common(actor, 0.23925f); +} + +static int Player_actor_CulcAnimation_Slip_net(ACTOR* actor) { + f32 frame_calc; + + return Player_actor_CulcAnimation_Base2(actor, &frame_calc); +} + +static void Player_actor_ObjCheck_Slip_net(ACTOR* actor, GAME* game) { + Player_actor_Excute_Corect_forStand(actor, game); +} + +static void Player_actor_BGcheck_Slip_net(ACTOR* actor) { + Player_actor_BGcheck_common_type1(actor); +} + +static void Player_actor_SearchAnimation_Slip_net(ACTOR* actor, GAME* game) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + mPlayer_main_slip_net_c* main_net = &player->main_data.slip_net; + int arg; + + main_net->_00 += 0.5f; + + if (main_net->_00 > 1000.0f) { + main_net->_00 = 1000.0f; + } + + arg = (int)main_net->_00; + + if (!(arg & 1)) { + Common_Get(clip).effect_clip->effect_make_proc(eEC_EFFECT_SLIP, actor->world.position, 2, actor->world.angle.y, + game, RSV_NO, actor->bg_collision_check.result.unit_attribute, + arg); + } +} + +static void Player_actor_request_proc_index_fromSlip_net(ACTOR* actor, GAME* game, int arg) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + + s8 item = Player_actor_Get_ItemKind(actor, player->now_main_index); + + int net = FALSE; + + if (mPlayer_ITEM_IS_NET(item)) { + net = TRUE; + } + + if (net == FALSE) { + Player_actor_request_main_wait_all(game, -5.0f, 0.0f, 0, mPlayer_REQUEST_PRIORITY_34); + } else if (!Player_actor_CheckController_forNet(game)) { + Player_actor_request_main_swing_net(game, mPlayer_REQUEST_PRIORITY_22); + } else if (arg != 0) { + Player_actor_request_main_ready_net(game, mPlayer_REQUEST_PRIORITY_13); + } +} + +static void Player_actor_main_Slip_net(ACTOR* actor, GAME* game) { + int arg = Player_actor_Movement_Slip_net(actor); + Player_actor_Reinput_force_position_angle(actor, game); + Player_actor_CulcAnimation_Slip_net(actor); + Player_actor_SearchAnimation_Slip_net(actor, game); + Player_actor_recover_lean_angle(actor); + Player_actor_set_eye_pattern_normal(actor); + Player_actor_ObjCheck_Slip_net(actor, game); + Player_actor_BGcheck_Slip_net(actor); + Player_actor_Item_main(actor, game); + Player_actor_request_proc_index_fromSlip_net(actor, game, arg); +} diff --git a/src/m_player_main_swing_axe.c_inc b/src/m_player_main_swing_axe.c_inc index 0a2b8ba3..3d3da91c 100644 --- a/src/m_player_main_swing_axe.c_inc +++ b/src/m_player_main_swing_axe.c_inc @@ -262,7 +262,9 @@ static void Player_actor_ObjCheck_Swing_axe(ACTOR* actor, GAME* game, int) { Player_actor_Excute_Corect_forStand(actor, game); } -static void Player_actor_BGcheck_Swing_axe(ACTOR* actor, int) { Player_actor_BGcheck_common_type1(actor); } +static void Player_actor_BGcheck_Swing_axe(ACTOR* actor, int) { + Player_actor_BGcheck_common_type1(actor); +} static void Player_actor_request_proc_index_fromSwing_axe(ACTOR* actor, GAME* game, int arg, int arg2) { PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor;