match m_player_main_wade_snowball

This commit is contained in:
Prakxo
2024-09-04 22:01:09 +02:00
parent 23fe156f6b
commit 074e0a003d
11 changed files with 216 additions and 13 deletions
+62 -2
View File
@@ -811,12 +811,13 @@ typedef struct player_request_close_funriture_s {
} mPlayer_request_close_furniture_c;
typedef struct player_request_lie_bed_s {
int direct;
int direction;
s16 angle;
xyz_t wpos;
int ftr_name;
int flags;
} mPlayer_request_lie_bed_c;
typedef struct player_request_door_s {
s16 angle_y;
xyz_t player_pos;
@@ -976,6 +977,12 @@ typedef struct player_request_rotate_furniture_s {
int rotate_type;
} mPlayer_request_rotate_furniture_c;
typedef struct player_request_open_furniture_s {
s16 angle_y;
xyz_t player_pos;
int anim_idx;
} mPlayer_request_open_furniture_c;
typedef struct player_request_wait_open_furniture_s {
int anim_idx;
} mPlayer_request_wait_open_furniture_c;
@@ -1288,6 +1295,7 @@ typedef union {
mPlayer_request_push_c push;
mPlayer_request_pull_c pull;
mPlayer_request_rotate_furniture_c rotate_furniture;
mPlayer_request_open_furniture_c open_furniture;
mPlayer_request_wait_open_furniture_c wait_open_furniture;
mPlayer_request_wait_close_furniture_c wait_close_furniture;
mPlayer_request_roll_bed_c roll_bed;
@@ -1392,6 +1400,7 @@ typedef union {
mPlayer_request_push_c push;
mPlayer_request_pull_c pull;
mPlayer_request_rotate_furniture_c rotate_furniture;
mPlayer_request_open_furniture_c open_furniture;
mPlayer_request_wait_open_furniture_c wait_open_furniture;
mPlayer_request_wait_close_furniture_c wait_close_furniture;
mPlayer_request_roll_bed_c roll_bed;
@@ -1468,6 +1477,49 @@ typedef struct player_main_door_s {
u32 label;
} mPlayer_main_door_c;
typedef struct player_main_outdoor_s {
int is_demo;
} mPlayer_main_outdoor_c;
typedef struct player_main_hold_s {
int ftr_no;
s16 angle_y;
xyz_t player_pos;
int flags;
} mPlayer_main_hold_c;
typedef struct player_main_push_s {
int ftr_no;
} mPlayer_main_push_c;
typedef struct player_main_pull_s {
int ftr_no;
xyz_t start_pos;
xyz_t ofs;
f32 timer;
} mPlayer_main_pull_c;
typedef struct player_main_rotate_furniture_s {
int ftr_no;
xyz_t pos;
int _10;
int rotate_type;
} mPlayer_main_rotate_furniture_c;
typedef struct player_main_open_furniture_s {
s16 angle_y;
xyz_t player_pos;
int anim_idx;
} mPlayer_main_open_furniture_c;
typedef struct player_main_lie_bed_s {
int flags;
} mPlayer_main_lie_bed_c;
typedef struct player_main_wait_bed_s {
int flags;
} mPlayer_main_wait_bed_c;
typedef struct player_main_wade_s {
int dir;
xyz_t start_pos;
@@ -1739,6 +1791,14 @@ typedef union {
mPlayer_main_return_outdoor2_c return_outdoor2;
mPlayer_main_wait_c wait;
mPlayer_main_door_c door;
mPlayer_main_outdoor_c outdoor;
mPlayer_main_hold_c hold;
mPlayer_main_push_c push;
mPlayer_main_pull_c pull;
mPlayer_main_rotate_furniture_c rotate_furniture;
mPlayer_main_open_furniture_c open_furniture;
mPlayer_main_lie_bed_c lie_bed;
mPlayer_main_wait_bed_c wait_bed;
mPlayer_main_wade_c wade;
mPlayer_main_pickup_c pickup;
mPlayer_main_pickup_jump_c pickup_jump;
+1 -1
View File
@@ -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);
+1 -1
View File
@@ -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;
+1 -1
View File
@@ -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);
}
+1 -1
View File
@@ -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);
}
}
+3 -3
View File
@@ -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;
+1 -1
View File
@@ -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);
}
+1 -1
View File
@@ -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);
}
}
+1 -1
View File
@@ -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);
}
}
+143
View File
@@ -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);
}
}
+1 -1
View File
@@ -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);
}