mirror of
https://github.com/ACreTeam/ac-decomp
synced 2026-05-31 08:51:31 -04:00
match m_player_main_wade_snowball
This commit is contained in:
+1
-1
@@ -33,7 +33,7 @@ static int Player_actor_Movement_Base_Braking_common(ACTOR* actorx, f32 brake_am
|
||||
static int Player_actor_Movement_Base_Braking(ACTOR* actorx);
|
||||
static void Player_actor_Movement_Base_Stop(ACTOR* actorx, int use_position_speed_y);
|
||||
static int Player_actor_CulcAnimation_Base2(ACTOR* actorx, f32* last_anim0_current_frame_p);
|
||||
static int Player_actor_Check_AnimationFrame_PerfectEquel(ACTOR* actorx, GAME* game, f32 frame);
|
||||
static int Player_actor_Check_AnimationFrame_PerfectEquel(ACTOR* actorx, f32 frame);
|
||||
static int Player_actor_Check_AnimationFrame(cKF_FrameControl_c* fc_p, f32 target_frame);
|
||||
static void Player_actor_set_eye_pattern(ACTOR* actorx, int idx);
|
||||
static void Player_actor_set_eye_pattern_normal(ACTOR* actorx);
|
||||
|
||||
@@ -2299,7 +2299,7 @@ static void Player_actor_putin_furniture(GAME* game, int slot, mActor_name_t ite
|
||||
}
|
||||
}
|
||||
|
||||
static int Player_actor_Check_AnimationFrame_PerfectEquel(ACTOR* actorx, GAME* game, f32 frame) {
|
||||
static int Player_actor_Check_AnimationFrame_PerfectEquel(ACTOR* actorx, f32 frame) {
|
||||
PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx;
|
||||
cKF_SkeletonInfo_R_c* kf0_p = &player->keyframe0;
|
||||
cKF_FrameControl_c* fc_p = &kf0_p->frame_control;
|
||||
|
||||
@@ -90,7 +90,7 @@ static void Player_actor_SetEffect_Dash(ACTOR* actor, GAME* game, f32 left_targe
|
||||
}
|
||||
|
||||
static void Player_actor_SearchAnimation_Dash(ACTOR* actor, GAME* game, f32 frame) {
|
||||
if (!Player_actor_Check_AnimationFrame_PerfectEquel(actor, game, frame)) {
|
||||
if (!Player_actor_Check_AnimationFrame_PerfectEquel(actor, frame)) {
|
||||
Player_actor_Set_FootMark_Base1(actor, game, FALSE, FALSE);
|
||||
Player_actor_SetEffect_Dash(actor, game, 1.0f, 9.0f);
|
||||
}
|
||||
|
||||
@@ -89,7 +89,7 @@ static void Player_actor_SetItemScale_Putin_item(ACTOR* actorx) {
|
||||
}
|
||||
|
||||
static void Player_actor_SearchAnimation_Putin_item(ACTOR* actorx, GAME* game, f32 frame) {
|
||||
if (Player_actor_Check_AnimationFrame_PerfectEquel(actorx, game, frame) == FALSE) {
|
||||
if (Player_actor_Check_AnimationFrame_PerfectEquel(actorx, frame) == FALSE) {
|
||||
Player_actor_Set_FootMark_Base1(actorx, game, FALSE, FALSE);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,13 +1,13 @@
|
||||
static int Player_actor_request_main_return_outdoor_all(GAME* game, int prev_index, int now_index, f32 time, f32 arg5) {
|
||||
static int Player_actor_request_main_return_outdoor_all(GAME* game, int prev_index, int priority, f32 time, f32 arg5) {
|
||||
|
||||
if (Player_actor_check_request_main_able(game, mPlayer_INDEX_RETURN_OUTDOOR, now_index)) {
|
||||
if (Player_actor_check_request_main_able(game, mPlayer_INDEX_RETURN_OUTDOOR, priority)) {
|
||||
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;
|
||||
player->requested_main_index_data.return_outdoor._08 = arg5;
|
||||
|
||||
Player_actor_request_main_index(game, mPlayer_INDEX_RETURN_OUTDOOR, now_index);
|
||||
Player_actor_request_main_index(game, mPlayer_INDEX_RETURN_OUTDOOR, priority);
|
||||
return TRUE;
|
||||
} else {
|
||||
return FALSE;
|
||||
|
||||
@@ -47,7 +47,7 @@ static void Player_actor_SetEffect_Run(ACTOR* actor, GAME* game, f32 left_target
|
||||
}
|
||||
|
||||
static void Player_actor_SearchAnimation_Run(ACTOR* actor, GAME* game, f32 frame) {
|
||||
if (!Player_actor_Check_AnimationFrame_PerfectEquel(actor, game, frame)) {
|
||||
if (!Player_actor_Check_AnimationFrame_PerfectEquel(actor, frame)) {
|
||||
Player_actor_Set_FootMark_Base1(actor, game, FALSE, FALSE);
|
||||
Player_actor_SetEffect_Walk(actor, game, 1.0f, 9.0f);
|
||||
}
|
||||
|
||||
@@ -63,7 +63,7 @@ static void Player_actor_ObjCheck_Takeout_item(ACTOR* actorx, GAME* game) {
|
||||
}
|
||||
|
||||
static void Player_actor_SearchAnimation_Takeout_item(ACTOR* actorx, GAME* game, f32 frame) {
|
||||
if (Player_actor_Check_AnimationFrame_PerfectEquel(actorx, game, frame) == FALSE) {
|
||||
if (Player_actor_Check_AnimationFrame_PerfectEquel(actorx, frame) == FALSE) {
|
||||
Player_actor_Set_FootMark_Base1(actorx, game, FALSE, FALSE);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -114,7 +114,7 @@ static void Player_actor_SetEffect_Tumble(ACTOR* actor, GAME* game, int base) {
|
||||
}
|
||||
|
||||
static void Player_actor_SearchAnimation_Tumble(ACTOR* actor, GAME* game, f32 frame, int base) {
|
||||
if (!Player_actor_Check_AnimationFrame_PerfectEquel(actor, game, frame)) {
|
||||
if (!Player_actor_Check_AnimationFrame_PerfectEquel(actor, frame)) {
|
||||
Player_actor_SetEffect_Tumble(actor, game, base);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,143 @@
|
||||
static int Player_actor_request_main_wade_snowball_all(GAME* game, int dir, xyz_t snowball_dist, int priority) {
|
||||
if (GET_PLAYER_ACTOR_GAME(game)->now_main_index == mPlayer_INDEX_PUSH_SNOWBALL) {
|
||||
PLAYER_ACTOR* player = GET_PLAYER_ACTOR_GAME(game);
|
||||
if (Player_actor_check_request_main_able(game, mPlayer_INDEX_WADE_SNOWBALL, priority)) {
|
||||
player->requested_main_index_data.wade_snowball.dir = dir;
|
||||
player->requested_main_index_data.wade_snowball.snowball_dist = snowball_dist;
|
||||
player->requested_main_index_data.wade_snowball.label = player->main_data.push_snowball.label;
|
||||
|
||||
Player_actor_request_main_index(game, mPlayer_INDEX_WADE_SNOWBALL, priority);
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
}
|
||||
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
static void Player_actor_setup_main_Wade_snowball(ACTOR* actor, GAME* game) {
|
||||
PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor;
|
||||
GAME_PLAY* play = (GAME_PLAY*)game;
|
||||
xyz_t* world_pos;
|
||||
xyz_t camera_pos;
|
||||
int dir;
|
||||
f32 t;
|
||||
xyz_t* end_pos;
|
||||
|
||||
Player_actor_setup_main_Wade_snowball_other_func1(actor, game);
|
||||
dir = player->requested_main_index_data.wade_snowball.dir;
|
||||
|
||||
player->main_data.wade_snowball.dir = dir;
|
||||
world_pos = &actor->world.position;
|
||||
end_pos = &player->main_data.wade_snowball.end_pos;
|
||||
|
||||
player->main_data.wade_snowball.start_pos = *world_pos;
|
||||
player->main_data.wade_snowball.start_pos = *world_pos;
|
||||
|
||||
Player_actor_Culc_wade_end_pos(world_pos, end_pos, dir, 18.0f);
|
||||
|
||||
player->main_data.wade_snowball.timer = 0.0f;
|
||||
|
||||
player->main_data.wade_snowball.snowball_dist = player->requested_main_index_data.wade_snowball.snowball_dist;
|
||||
player->main_data.wade_snowball.snowball_label = player->requested_main_index_data.wade_snowball.label;
|
||||
|
||||
Player_actor_setup_main_Base(actor, game);
|
||||
camera_pos = player->main_data.wade_snowball.end_pos;
|
||||
|
||||
camera_pos.y += actor->eye.position.y - world_pos->y;
|
||||
|
||||
Camera2_request_main_wade(play, &camera_pos, 9, 36.0f);
|
||||
|
||||
Player_actor_setup_main_Wade_snowball_other_func2(actor, game);
|
||||
}
|
||||
|
||||
static void Player_actor_settle_main_Wade_snowball(ACTOR* actor, GAME* game) {
|
||||
mDemo_End(actor);
|
||||
}
|
||||
|
||||
static void Player_actor_ChangeAnimation_Wade_snowball(ACTOR* actor, GAME* game) {
|
||||
PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor;
|
||||
|
||||
if (player->animation0_idx != mPlayer_ANIM_WAIT1 && player->crash_snowball_for_wade != FALSE) {
|
||||
int anim_idx;
|
||||
int part_table_idx;
|
||||
Player_actor_SetupItem_Base1(actor, mPlayer_ANIM_WAIT1, -5.0f, &anim_idx, &part_table_idx);
|
||||
Player_actor_InitAnimation_Base1(actor, game, mPlayer_ANIM_WAIT1, anim_idx, 1.0f, 1.0f, 0.5f, -5.0f,
|
||||
part_table_idx);
|
||||
}
|
||||
}
|
||||
|
||||
static int Player_actor_CulcAnimation_Wade_snowball(ACTOR* actor) {
|
||||
PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor;
|
||||
|
||||
if (player->animation0_idx == mPlayer_ANIM_WAIT1) {
|
||||
f32 calc_frame;
|
||||
return Player_actor_CulcAnimation_Base2(actor, &calc_frame);
|
||||
} else {
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
static void Player_actor_Movement_Wade_snowball(ACTOR* actor) {
|
||||
PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor;
|
||||
mPlayer_main_wade_snowball_c* main_wade_snowball_p = &player->main_data.wade_snowball;
|
||||
xyz_t* start_pos;
|
||||
xyz_t* end_pos;
|
||||
f32 brake;
|
||||
|
||||
start_pos = &main_wade_snowball_p->start_pos;
|
||||
end_pos = &main_wade_snowball_p->end_pos;
|
||||
|
||||
brake = get_percent_forAccelBrake(player->main_data.wade_snowball.timer, 0.0f, 36.0f, 1.20f, 34.8f);
|
||||
actor->world.position.x = start_pos->x + (brake * (end_pos->x - start_pos->x));
|
||||
actor->world.position.y = start_pos->y + (brake * (end_pos->y - start_pos->y));
|
||||
actor->world.position.z = start_pos->z + (brake * (end_pos->z - start_pos->z));
|
||||
|
||||
Player_actor_Movement_Base_Stop(actor, FALSE);
|
||||
}
|
||||
|
||||
static void Player_actor_BGcheck_Wade_snowball(ACTOR* actor) {
|
||||
Player_actor_BGcheck_common_type2(actor);
|
||||
}
|
||||
|
||||
static int Player_actor_able_request_proc_index_fromWade_snowball_common(ACTOR* actor) {
|
||||
PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor;
|
||||
|
||||
if (player->main_data.wade_snowball.timer > 36.0f) {
|
||||
return TRUE;
|
||||
} else {
|
||||
player->main_data.wade_snowball.timer += 1.0f;
|
||||
return FALSE;
|
||||
}
|
||||
}
|
||||
|
||||
static void Player_actor_request_proc_index_fromWade_snowball(ACTOR* actor, GAME* game) {
|
||||
PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor;
|
||||
|
||||
if (Player_actor_able_request_proc_index_fromWade_snowball_common(actor)) {
|
||||
int anim_idx = player->animation0_idx;
|
||||
Player_actor_SettleRequestMainIndexPriority(actor);
|
||||
|
||||
if (anim_idx != mPlayer_ANIM_WAIT1 && player->crash_snowball_for_wade == FALSE) {
|
||||
Player_actor_request_main_push_snowball_all(game, player->main_data.wade_snowball.snowball_label, 1,
|
||||
mPlayer_REQUEST_PRIORITY_2);
|
||||
} else {
|
||||
Player_actor_request_main_walk_all(game, &player->main_data.wade_snowball.end_pos, -5.0f, 6, 1);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
static void Player_actor_main_Wade_snowball(ACTOR* actor, GAME* game) {
|
||||
if (Player_actor_Request_Wade(actor) != FALSE) {
|
||||
Player_actor_main_Wade_snowball_other_func1(actor, game);
|
||||
Player_actor_Movement_Wade_snowball(actor);
|
||||
Player_actor_Reinput_force_position_angle(actor, game);
|
||||
Player_actor_ChangeAnimation_Wade_snowball(actor, game);
|
||||
Player_actor_CulcAnimation_Wade_snowball(actor);
|
||||
Player_actor_recover_lean_angle(actor);
|
||||
Player_actor_set_eye_pattern_normal(actor);
|
||||
Player_actor_BGcheck_Wade_snowball(actor);
|
||||
Player_actor_Item_main(actor, game);
|
||||
Player_actor_request_proc_index_fromWade_snowball(actor, game);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -122,7 +122,7 @@ static void Player_actor_SetEffect_Walk(ACTOR* actor, GAME* game, f32 left_targe
|
||||
}
|
||||
|
||||
static void Player_actor_SearchAnimation_Walk(ACTOR* actor, GAME* game, f32 frame) {
|
||||
if (!Player_actor_Check_AnimationFrame_PerfectEquel(actor, game, frame)) {
|
||||
if (!Player_actor_Check_AnimationFrame_PerfectEquel(actor, frame)) {
|
||||
Player_actor_Set_FootMark_Base1(actor, game, FALSE, FALSE);
|
||||
Player_actor_SetEffect_Walk(actor, game, 1.0f, 9.0f);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user