Merge pull request #432 from Cuyler36:m_player_states

Implement more player states
This commit is contained in:
Cuyler36
2024-09-09 01:04:47 -04:00
committed by GitHub
27 changed files with 1215 additions and 112 deletions
+8 -2
View File
@@ -25,6 +25,12 @@ typedef struct audio_staffroll_info_s {
/* 0x12 */ s8 beat;
} StaffRollInfo_c;
typedef struct radio_s {
/* 0x000 */ s8 unk0;
/* 0x004 */ f32 unk4;
/* 0x008 */ u16 tempo;
} Radio_c;
enum {
STAFFROLL_PART_START,
STAFFROLL_PART_INTRO,
@@ -112,7 +118,7 @@ extern void sAdos_KishaStatusTrg(u8 state);
extern void sAdos_KishaStatusLevel(f32 speed, u32 ongenNum1, u16 angle1, f32 distance1, u32 ongenNum2, u16 angle2,
f32 distance2);
extern void sAdos_GetRadioCounter(void* p);
extern int sAdos_GetRadioCounter(Radio_c* radio);
extern void sAdos_GetKappaCounter(void* p);
extern void sAdos_GetStaffRollInfo(StaffRollInfo_c* info);
@@ -141,7 +147,7 @@ extern void sAdo_FurnitureInstPos(u32 id, const xyz_t* pos);
extern void sAdo_Set_ongenpos_refuse_fg(int state);
extern int sAdo_GameframeEnd_Check();
extern int sAdo_GetSoundFrameCounter();
extern u32 sAdo_GetSoundFrameCounter();
extern int sAdo_CheckOnPlussBridge(const xyz_t* pos, u32 atr);
extern void sAdo_RegistPlussBridge(const xyz_t* pos);
+1 -1
View File
@@ -537,7 +537,7 @@ struct group_ {
/* 0x010 */ u16 delay;
/* 0x012 */ u16 fade_timer;
/* 0x014 */ u16 stored_fade_timer;
/* 0x016 */ u16 unk016;
/* 0x016 */ u16 counter;
/* 0x018 */ u8* seq_data;
/* 0x01C */ f32 fade_volume;
/* 0x020 */ f32 fade_velocity;
+3 -9
View File
@@ -2,22 +2,16 @@
#define RADIO_H
#include "types.h"
typedef struct radio_ {
/* 0x000 */ s8 unk0;
/* 0x004 */ f32 unk4;
/* 0x008 */ u16 tempo;
} radio;
#include "audio.h"
#ifdef __cplusplus
extern "C" {
#endif
extern s16 Na_GetRadioCounter(radio* radio);
extern int Na_GetRadioCounter(Radio_c* radio);
#ifdef __cplusplus
}
#endif
#endif
#endif
+71 -15
View File
@@ -23,7 +23,7 @@ extern "C" {
#define mPlayer_SUNBURN_MAX_RANK 8
#define mPlayer_RADIO_EXCERCISE_COMMAND_RING_BUFFER_SIZE 8
#define mPlayer_RADIO_EXERCISE_COMMAND_RING_BUFFER_SIZE 8
typedef struct player_actor_s PLAYER_ACTOR;
@@ -743,6 +743,38 @@ enum {
mPlayer_AXE_BREAK_FROM_NUM
};
enum {
mPlayer_RADIO_EXERCISE_CMD0,
mPlayer_RADIO_EXERCISE_CMD1,
mPlayer_RADIO_EXERCISE_CMD2,
mPlayer_RADIO_EXERCISE_CMD3,
mPlayer_RADIO_EXERCISE_CMD4,
mPlayer_RADIO_EXERCISE_CMD5,
mPlayer_RADIO_EXERCISE_CMD6,
mPlayer_RADIO_EXERCISE_CMD7,
mPlayer_RADIO_EXERCISE_CMD8,
mPlayer_RADIO_EXERCISE_CMD9,
mPlayer_RADIO_EXERCISE_CMD10,
mPlayer_RADIO_EXERCISE_CMD11,
mPlayer_RADIO_EXERCISE_CMD12,
mPlayer_RADIO_EXERCISE_CMD13,
mPlayer_RADIO_EXERCISE_CMD14,
mPlayer_RADIO_EXERCISE_CMD15,
mPlayer_RADIO_EXERCISE_CMD16,
mPlayer_RADIO_EXERCISE_CMD17,
mPlayer_RADIO_EXERCISE_CMD_NUM
};
enum {
mPlayer_GOLDEN_ITEM_TYPE_AXE,
mPlayer_GOLDEN_ITEM_TYPE_NET,
mPlayer_GOLDEN_ITEM_TYPE_ROD,
mPlayer_GOLDEN_ITEM_TYPE_SHOVEL,
mPlayer_GOLDEN_ITEM_TYPE_NUM
};
#define mPlayer_SETUP_TEXTURE_ANIMATION_NONE (0 << 0)
/* Where is (1 << 0)? */
#define mPlayer_SETUP_TEXTURE_ANIMATION_EYE (1 << 1)
@@ -921,7 +953,7 @@ typedef struct player_request_demo_getoff_boat_standup_s {
} mPlayer_request_demo_getoff_boat_standup_c;
typedef struct player_request_demo_get_golden_item_s {
u32 label;
int type;
} mPlayer_request_demo_get_golden_item_c;
typedef struct player_request_walk_s {
@@ -1200,8 +1232,8 @@ typedef struct player_request_swing_fan_s {
} mPlayer_request_swing_fan_c;
typedef struct player_request_radio_exercise_s {
int anim_idx;
f32 morph_speed;
int cmd;
f32 speed;
} mPlayer_request_radio_exercise_c;
typedef struct player_request_demo_geton_boat_wade_s {
@@ -1575,10 +1607,14 @@ typedef struct player_main_pickup_exchange_s {
int submenu_flag;
} mPlayer_main_pickup_exchange_c;
typedef struct player_main_swing_axe_s {
typedef struct player_main_axe_common_s {
/* 0x00 */ xyz_t target_pos;
/* 0x0C */ mActor_name_t item;
/* 0x0E */ u16 axe_damage_no;
} mPlayer_main_axe_common_c;
typedef struct player_main_swing_axe_s {
/* 0x00 */ mPlayer_main_axe_common_c axe_common;
/* 0x10 */ int tree_ut_x;
/* 0x14 */ int tree_ut_z;
/* 0x18 */ int bee_flag;
@@ -1587,17 +1623,17 @@ typedef struct player_main_swing_axe_s {
} mPlayer_main_swing_axe_c;
typedef struct player_main_reflect_axe_s {
xyz_t target_pos;
mActor_name_t item;
u16 axe_damage_no;
ACTOR* reflect_actor_p;
/* 0x00 */ mPlayer_main_axe_common_c axe_common;
/* 0x10 */ ACTOR* reflect_actor_p;
} mPlayer_main_reflect_axe_c;
typedef union player_main_axe_u {
mPlayer_main_swing_axe_c swing_axe;
mPlayer_main_reflect_axe_c reflect_axe;
} mPlayer_main_axe_u;
typedef struct player_main_broken_axe_s {
union {
mPlayer_main_swing_axe_c swing_axe;
mPlayer_main_reflect_axe_c reflect_axe;
} axe;
mPlayer_main_axe_u axe;
int break_type; /* mPlayer_AXE_BREAK_FROM_* */
f32 _28;
int _2C;
@@ -1809,6 +1845,13 @@ typedef struct player_main_notice_mosquito_s {
int msg_mode;
} mPlayer_main_notice_mosquito_c;
typedef struct player_main_radio_exercise_s {
int cmd;
int _04;
int _08;
int _0C;
} mPlayer_main_radio_exercise_c;
typedef struct player_main_wade_snowball_s {
int dir;
xyz_t start_pos;
@@ -1835,6 +1878,16 @@ typedef struct player_main_demo_getoff_boat_standup_s {
s16 angle_z;
} mPlayer_main_demo_getoff_boat_standup_c;
typedef struct player_main_demo_get_golden_item_s {
f32 timer;
int msg_mode;
int type;
} mPlayer_main_demo_get_golden_item_c;
typedef struct player_main_demo_get_golden_axe_wait_s {
f32 timer;
} mPlayer_main_demo_get_golden_axe_wait_c;
typedef struct player_main_uki_s {
xyz_t cast_goal_point;
} mPlayer_main_uki_c;
@@ -1914,10 +1967,13 @@ typedef union {
mPlayer_main_fail_emu_c fail_emu;
mPlayer_main_stung_mosquito_c stung_mosquito;
mPlayer_main_notice_mosquito_c notice_mosquito;
mPlayer_main_radio_exercise_c radio_exercise;
mPlayer_main_wade_snowball_c wade_snowball;
mPlayer_main_demo_geton_boat_wade_c demo_geton_boat_wade;
mPlayer_main_demo_geton_boat_sitdown_c demo_geton_boat_sitdown;
mPlayer_main_demo_getoff_boat_standup_c demo_getoff_boat_standup;
mPlayer_main_demo_get_golden_item_c demo_get_golden_item;
mPlayer_main_demo_get_golden_axe_wait_c demo_get_golden_axe_wait;
mPlayer_main_uki_c uki;
mPlayer_main_putaway_uki_c putaway_uki;
mPlayer_main_balloon_c balloon;
@@ -2080,12 +2136,12 @@ struct player_actor_s {
/* 0x1220 */ u32 able_force_speak_label;
/* 0x1224 */ int player_sunburn_rankup;
/* 0x1228 */ int player_sunburn_rankdown;
/* 0x122C */ s8 radio_exercise_command_ring_buffer[mPlayer_RADIO_EXCERCISE_COMMAND_RING_BUFFER_SIZE];
/* 0x122C */ s8 radio_exercise_command_ring_buffer[mPlayer_RADIO_EXERCISE_COMMAND_RING_BUFFER_SIZE];
/* 0x1234 */ s8 radio_exercise_ring_buffer_cmd_timer;
/* 0x1238 */ int radio_exercise_command_ring_buffer_index;
/* 0x123C */ int radio_exercise_continue_cmd_idx;
/* 0x1240 */ f32 radio_exercise_cmd_timer;
/* 0x1244 */ int old_sound_frame_counter;
/* 0x1244 */ u32 old_sound_frame_counter;
/* 0x1248 */ s16 boat_angleZ;
/* 0x124C */ int change_color_request;
/* 0x1250 */ int change_color_flag;
+1
View File
@@ -113,6 +113,7 @@ extern int mPlib_strength_request_main_wade_snowball_priority(GAME* game);
extern void mPlib_change_player_face(GAME* game);
extern void mPlib_change_player_cloth_info(mPr_cloth_c* cloth_p, mActor_name_t cloth_item);
extern int mPlib_Get_status_for_bee(void);
extern int mPlib_request_main_demo_get_golden_item2_type1(GAME* game, int golden_item_type);
extern mPlayer_change_data_from_submenu_c* mPlib_Get_change_data_from_submenu_p();
+1
View File
@@ -2,6 +2,7 @@
#define M_PRIVATE_H_H
#include "types.h"
#include "m_actor_type.h"
#ifdef __cplusplus
extern "C" {
+3 -3
View File
@@ -297,8 +297,8 @@ extern void sAdos_KishaStatusLevel(f32 speed, u32 ongenNum1, u16 angle1, f32 dis
Na_KishaStatusLevel(speed, ongenNum1, angle1, distance1, ongenNum2, angle2, distance2);
}
extern void sAdos_GetRadioCounter(void* p) {
Na_GetRadioCounter(p);
extern int sAdos_GetRadioCounter(Radio_c* radio) {
return Na_GetRadioCounter(radio);
}
extern void sAdos_GetKappaCounter(void* p) {
@@ -470,7 +470,7 @@ extern int sAdo_GameframeEnd_Check() {
return S_ongenpos_refuse_fg;
}
extern int sAdo_GetSoundFrameCounter() {
extern u32 sAdo_GetSoundFrameCounter() {
return Na_GetSoundFrameCounter();
}
+4 -1
View File
@@ -15,6 +15,9 @@
#include "ac_sign.h"
#include "m_msg.h"
#include "m_choice.h"
#include "ac_ball.h"
#include "ac_snowman.h"
#include "ac_boat_demo.h"
/* Static function declarations, add as needed for intellisense */
static int Player_actor_check_request_main_able(GAME* game, int request_main_index, int priority);
@@ -337,7 +340,7 @@ static int Player_actor_request_main_shock_all(GAME*, f32, s16, s8, int, int);
static int Player_actor_request_main_change_cloth_forNPC(GAME*, mActor_name_t, u16, int);
static int Player_actor_request_main_push_snowball_all(GAME*, u32, int, int);
static int Player_actor_request_main_stung_mosquito_all(GAME*, u32, int);
static int Player_actor_request_main_switch_on_lighthouse_all(GAME*, const xyz_t*, int, int);
static int Player_actor_request_main_switch_on_lighthouse_all(GAME*, const xyz_t*, s16, int);
static int Player_actor_request_main_demo_geton_boat_all(GAME*, const xyz_t*, s16, int);
static int Player_actor_request_main_demo_getoff_boat_standup_all(GAME*, const xyz_t*, s16, int);
static int Player_actor_request_main_demo_get_golden_item2_all(GAME*, int, int);
+2 -2
View File
@@ -4566,9 +4566,9 @@ static int Player_actor_Check_HitAxe(ACTOR* actorx, xyz_t* axe_pos_p) {
}
if (swing_axe_p != NULL) {
pos_p = &swing_axe_p->target_pos;
pos_p = &swing_axe_p->axe_common.target_pos;
} else {
pos_p = &reflect_axe_p->target_pos;
pos_p = &reflect_axe_p->axe_common.target_pos;
}
if (pos_p != NULL && Player_actor_Check_AnimationFrame(&player->keyframe0.frame_control, 15.0f) != FALSE) {
+7 -9
View File
@@ -56,7 +56,7 @@ static void Player_actor_setup_main_Broken_axe(ACTOR* actor, GAME* game) {
Player_actor_setup_main_Base(actor, game);
}
static void Player_actor_settle_main_Broken_axe(ACTOR* actor) {
static void Player_actor_settle_main_Broken_axe(ACTOR* actor, GAME* game) {
mBGMPsComp_delete_ps_demo(125, 0x168);
actor->speed = 0.0f;
}
@@ -67,21 +67,19 @@ static void Player_actor_Movement_Broken_axe(ACTOR* actor) {
if (player->animation0_idx == mPlayer_ANIM_AXE_BREAK1 && cur < 15.0f) {
mPlayer_main_broken_axe_c* main_axe = &player->main_data.broken_axe;
void* main_ref;
mPlayer_main_axe_common_c* axe_data_p;
switch (main_axe->break_type) {
default:
main_ref = &main_axe->axe.reflect_axe;
axe_data_p = &main_axe->axe.reflect_axe.axe_common;
break;
case mPlayer_AXE_BREAK_FROM_SWING:
main_ref = &main_axe->axe.swing_axe;
axe_data_p = &main_axe->axe.swing_axe.axe_common;
break;
}
Player_actor_Movement_Reflect_axe_common(actor, main_ref, 1);
Player_actor_Movement_Reflect_axe_common(actor, axe_data_p, mPlayer_REQUEST_PRIORITY_1);
} else {
add_calc_short_angle2(&actor->shape_info.rotation.y, 0, 1.0f - sqrtf(0.5), 2500, 50);
actor->world.angle.y = actor->shape_info.rotation.y;
}
}
@@ -130,8 +128,8 @@ static void Player_actor_ObjCheck_Broken_axe(ACTOR* actor, GAME* game) {
Player_actor_Excute_Corect_forStand(actor, game);
}
static void Player_actor_BGcheck_Broken_axe(ACTOR* actor) {
Player_actor_BGcheck_common_type1(actor);
static void Player_actor_BGcheck_Broken_axe(ACTOR* actor) {
Player_actor_BGcheck_common_type1(actor);
}
static void Player_actor_Broken_axe_demo_ct(ACTOR* actor) {
@@ -0,0 +1,61 @@
static int Player_actor_request_main_demo_get_golden_axe_wait_all(GAME* game, int prio) {
if (Player_actor_check_request_main_able(game, mPlayer_INDEX_DEMO_GET_GOLDEN_AXE_WAIT, prio)) {
Player_actor_request_main_index(game, mPlayer_INDEX_DEMO_GET_GOLDEN_AXE_WAIT, prio);
return TRUE;
}
return FALSE;
}
static void Player_actor_setup_main_Demo_get_golden_axe_wait(ACTOR* actorx, GAME* game) {
PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx;
mPlayer_main_demo_get_golden_axe_wait_c* demo_get_golden_axe_wait_p;
int anim1_idx;
int part_table_idx;
demo_get_golden_axe_wait_p = &player->main_data.demo_get_golden_axe_wait;
demo_get_golden_axe_wait_p->timer = 0.0f;
Player_actor_SetupItem_Base1(actorx, mPlayer_ANIM_WAIT1, -5.0f, &anim1_idx, &part_table_idx);
Player_actor_InitAnimation_Base1(actorx, game, mPlayer_ANIM_WAIT1, anim1_idx, 1.0f, 1.0f, 0.5f, -5.0f,
part_table_idx);
Player_actor_setup_main_Base(actorx, game);
}
static int Player_actor_CulcAnimation_Demo_get_golden_axe_wait(ACTOR* actorx) {
return Player_actor_CulcAnimation_Base(actorx);
}
static void Player_actor_ObjCheck_Demo_get_golden_axe_wait(ACTOR* actorx, GAME* game) {
Player_actor_Excute_Corect_forStand(actorx, game);
}
static void Player_actor_BGcheck_Demo_get_golden_axe_wait(ACTOR* actorx) {
Player_actor_BGcheck_common_type1(actorx);
}
static void Player_actor_request_proc_index_fromDemo_get_golden_axe_wait(ACTOR* actorx, GAME* game) {
PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx;
mPlayer_main_demo_get_golden_axe_wait_c* demo_get_golden_axe_wait_p;
f32* timer_p;
demo_get_golden_axe_wait_p = &player->main_data.demo_get_golden_axe_wait;
timer_p = &demo_get_golden_axe_wait_p->timer;
if (*timer_p < 320.0f) {
(*timer_p) += 1.0f;
} else {
mPlib_request_main_demo_get_golden_item2_type1(game, mPlayer_GOLDEN_ITEM_TYPE_AXE);
}
}
static void Player_actor_main_Demo_get_golden_axe_wait(ACTOR* actorx, GAME* game) {
Player_actor_Reinput_force_position_angle(actorx, game);
Player_actor_CulcAnimation_Demo_get_golden_axe_wait(actorx);
Player_actor_recover_lean_angle(actorx);
Player_actor_set_eye_pattern_normal(actorx);
Player_actor_ObjCheck_Demo_get_golden_axe_wait(actorx, game);
Player_actor_BGcheck_Demo_get_golden_axe_wait(actorx);
Player_actor_Item_main(actorx, game);
Player_actor_request_proc_index_fromDemo_get_golden_axe_wait(actorx, game);
}
@@ -0,0 +1,203 @@
static int Player_actor_request_main_demo_get_golden_item_common(GAME* game, int main_index, int type, int prio) {
if (Player_actor_check_request_main_able(game, main_index, prio)) {
PLAYER_ACTOR* player = GET_PLAYER_ACTOR_GAME(game);
mPlayer_request_demo_get_golden_item_c* req_demo_get_golden_item_p =
&player->requested_main_index_data.demo_get_golden_item;
Player_actor_request_main_index(game, main_index, prio);
req_demo_get_golden_item_p->type = type;
return TRUE;
}
return FALSE;
}
static int Player_actor_request_main_demo_get_golden_item_all(GAME* game, int type, int prio) {
return Player_actor_request_main_demo_get_golden_item_common(game, mPlayer_INDEX_DEMO_GET_GOLDEN_ITEM, type, prio);
}
static int Player_actor_request_main_demo_get_golden_item_from_submenu(ACTOR* actorx, GAME* game) {
return Player_actor_request_main_demo_get_golden_item_all(game, mPlayer_GOLDEN_ITEM_TYPE_SHOVEL,
mPlayer_REQUEST_PRIORITY_31);
}
static void Player_actor_setup_main_Demo_get_golden_item(ACTOR* actorx, GAME* game) {
PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx;
mPlayer_request_demo_get_golden_item_c* req_demo_get_golden_item_p;
mPlayer_main_demo_get_golden_item_c* demo_get_golden_item_p;
s16 item_kind;
int anim0_idx;
int anim1_idx;
int part_table_idx;
int dummy;
int type;
item_kind = Player_actor_Get_ItemKind(actorx, player->requested_main_index);
anim0_idx = mPlayer_ANIM_YATTA1;
part_table_idx = mPlayer_PART_TABLE_NET;
req_demo_get_golden_item_p = &player->requested_main_index_data.demo_get_golden_item;
demo_get_golden_item_p = &player->main_data.demo_get_golden_item;
type = player->requested_main_index_data.demo_get_golden_item.type;
demo_get_golden_item_p->timer = 0.0f;
demo_get_golden_item_p->msg_mode = 0;
demo_get_golden_item_p->type = type;
Player_actor_SetupItem_Base1(actorx, mPlayer_ANIM_YATTA1, -5.0f, &anim1_idx, &dummy);
if (mPlayer_ITEM_IS_BALLOON(item_kind) != FALSE) {
anim0_idx = mPlayer_ANIM_YATTA3;
anim1_idx = mPlayer_ANIM_YATTA3;
part_table_idx = mPlayer_PART_TABLE_NORMAL;
}
Player_actor_InitAnimation_Base2(actorx, game, anim0_idx, anim1_idx, 1.0f, 1.0f, 0.5f, -5.0f, cKF_FRAMECONTROL_STOP,
part_table_idx);
Player_actor_setup_main_Base(actorx, game);
if (type >= 0 && type < mPlayer_GOLDEN_ITEM_TYPE_NUM) {
u8 bgm_num = Player_actor_sound_Get_bgm_num_forDemoGetGoldenItem(type);
mBGMPsComp_make_ps_fanfare(bgm_num, 0x168);
}
}
static void Player_actor_settle_main_Demo_get_golden_item(ACTOR* actorx, GAME* game) {
PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx;
mPlayer_main_demo_get_golden_item_c* demo_get_golden_item_p = &player->main_data.demo_get_golden_item;
int type = demo_get_golden_item_p->type;
if (type >= 0 && type < mPlayer_GOLDEN_ITEM_TYPE_NUM) {
static u8 data[] = { (1 << 0), (1 << 1), (1 << 2), (1 << 3) };
u8 bgm_num = Player_actor_sound_Get_bgm_num_forDemoGetGoldenItem(type);
mBGMPsComp_delete_ps_fanfare(bgm_num, 0x168);
Now_Private->golden_items_collected |= data[type];
}
}
static int Player_actor_CulcAnimation_Demo_get_golden_item(ACTOR* actorx) {
f32 dummy;
return Player_actor_CulcAnimation_Base2(actorx, &dummy);
}
static void Player_actor_Movement_Demo_get_golden_item(ACTOR* actorx) {
add_calc_short_angle2(&actorx->shape_info.rotation.y, 0, 1.0f - sqrtf(0.5f), 2500, 50);
actorx->world.angle.y = actorx->shape_info.rotation.y;
Player_actor_Movement_Base_Braking_common(actorx, 0.32625f);
}
static void Player_actor_set_eye_pattern_Demo_get_golden_item(ACTOR* actorx, int end_flag) {
if (end_flag) {
Player_actor_set_eye_pattern_normal(actorx);
} else {
Player_actor_set_tex_anime_pattern(actorx);
}
}
static void Player_actor_ObjCheck_Demo_get_golden_item(ACTOR* actorx, GAME* game) {
Player_actor_Excute_Corect_forStand(actorx, game);
}
static void Player_actor_BGcheck_Demo_get_golden_item(ACTOR* actorx) {
Player_actor_BGcheck_common_type2(actorx);
}
static void Player_actor_Demo_get_golden_item_demo_ct(ACTOR* actorx) {
PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx;
mPlayer_main_demo_get_golden_item_c* demo_get_golden_item_p = &player->main_data.demo_get_golden_item;
int type = demo_get_golden_item_p->type;
mMsg_Window_c* msg_p = mMsg_Get_base_window_p();
rgba_t window_color;
int msg_no;
switch (type) {
case mPlayer_GOLDEN_ITEM_TYPE_AXE:
msg_no = 0x306F;
break;
case mPlayer_GOLDEN_ITEM_TYPE_NET:
msg_no = 0x306D;
break;
case mPlayer_GOLDEN_ITEM_TYPE_ROD:
msg_no = 0x306E;
break;
default:
msg_no = 0x3070;
break;
}
mDemo_Set_msg_num(msg_no);
mDemo_Set_talk_display_name(FALSE);
mDemo_Set_camera(CAMERA2_PROCESS_ITEM);
mDemo_Set_ListenAble();
mMsg_Set_LockContinue(msg_p);
window_color.r = 185;
window_color.g = 245;
window_color.b = 80;
window_color.a = 255;
mDemo_Set_talk_window_color(&window_color);
mChoice_CLEAR_CHOSENUM();
}
static int Player_actor_MessageControl_Demo_get_golden_item(ACTOR* actorx, int end_flag) {
PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx;
mPlayer_main_demo_get_golden_item_c* demo_get_golden_item_p = &player->main_data.demo_get_golden_item;
f32* timer_p = &demo_get_golden_item_p->timer;
int* msg_mode_p = &demo_get_golden_item_p->msg_mode;
mMsg_Window_c* msg_p = mMsg_Get_base_window_p();
if (*timer_p < 42.0f) {
(*timer_p) += 1.0f;
return FALSE;
}
switch (*msg_mode_p) {
case 0: {
if (mDemo_Check(mDemo_TYPE_REPORT, actorx) == FALSE) {
mDemo_Request(mDemo_TYPE_REPORT, actorx, &Player_actor_Demo_get_golden_item_demo_ct);
} else {
*msg_mode_p = 1;
}
return FALSE;
}
case 1: {
if (end_flag) {
mMsg_Unset_LockContinue(msg_p);
*msg_mode_p = 2;
}
return FALSE;
}
case 2: {
if (mDemo_Check(mDemo_TYPE_REPORT, actorx) == FALSE) {
*msg_mode_p = 3;
}
return FALSE;
}
default:
return TRUE;
}
}
static void Player_actor_request_proc_index_fromDemo_get_golden_item(ACTOR* actorx, GAME* game, int end_flag) {
if (end_flag) {
Player_actor_SettleRequestMainIndexPriority(actorx);
Player_actor_request_main_wait_all(game, -5.0f, 0.0f, 0, mPlayer_REQUEST_PRIORITY_1);
}
}
static void Player_actor_main_Demo_get_golden_item(ACTOR* actorx, GAME* game) {
int anim_end_flag;
int msg_end_flag;
anim_end_flag = Player_actor_CulcAnimation_Demo_get_golden_item(actorx);
Player_actor_Movement_Demo_get_golden_item(actorx);
Player_actor_Reinput_force_position_angle(actorx, game);
Player_actor_recover_lean_angle(actorx);
Player_actor_set_eye_pattern_Demo_get_golden_item(actorx, anim_end_flag);
Player_actor_ObjCheck_Demo_get_golden_item(actorx, game);
Player_actor_BGcheck_Demo_get_golden_item(actorx);
Player_actor_Item_main(actorx, game);
msg_end_flag = Player_actor_MessageControl_Demo_get_golden_item(actorx, anim_end_flag);
Player_actor_request_proc_index_fromDemo_get_golden_item(actorx, game, msg_end_flag);
}
@@ -0,0 +1,15 @@
static int Player_actor_request_main_demo_get_golden_item2_all(GAME* game, int type, int prio) {
return Player_actor_request_main_demo_get_golden_item_common(game, mPlayer_INDEX_DEMO_GET_GOLDEN_ITEM2, type, prio);
}
static void Player_actor_setup_main_Demo_get_golden_item2(ACTOR* actorx, GAME* game) {
Player_actor_setup_main_Demo_get_golden_item(actorx, game);
}
static void Player_actor_settle_main_Demo_get_golden_item2(ACTOR* actorx, GAME* game) {
Player_actor_settle_main_Demo_get_golden_item(actorx, game);
}
static void Player_actor_main_Demo_get_golden_item2(ACTOR* actorx, GAME* game) {
Player_actor_main_Demo_get_golden_item(actorx, game);
}
+127
View File
@@ -0,0 +1,127 @@
static int Player_actor_request_main_demo_getoff_boat_all(GAME* game, const xyz_t* pos_p, s16 angle_y, int prio) {
if (Player_actor_check_request_main_able(game, mPlayer_INDEX_DEMO_GETOFF_BOAT, prio)) {
PLAYER_ACTOR* player = GET_PLAYER_ACTOR_GAME(game);
mPlayer_request_demo_getoff_boat_c* req_demo_getoff_boat_p =
&player->requested_main_index_data.demo_getoff_boat;
req_demo_getoff_boat_p->pos = *pos_p;
req_demo_getoff_boat_p->angle_y = angle_y;
Player_actor_request_main_index(game, mPlayer_INDEX_DEMO_GETOFF_BOAT, prio);
return TRUE;
}
return FALSE;
}
static void Player_actor_setup_main_Demo_getoff_boat(ACTOR* actorx, GAME* game) {
PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx;
cKF_SkeletonInfo_R_c* kf0_p = &player->keyframe0;
mPlayer_request_demo_getoff_boat_c* req_demo_getoff_boat_p = &player->requested_main_index_data.demo_getoff_boat;
int anim1_idx;
int part_table_idx;
xyz_t pos;
s16 angle_y;
f32 cos;
f32 sin;
f32 cos_x;
f32 cos_z;
f32 sin_x;
f32 sin_z;
Player_actor_SetupItem_Base1(actorx, mPlayer_ANIM_GETOFF2, -5.0f, &anim1_idx, &part_table_idx);
pos = req_demo_getoff_boat_p->pos;
angle_y = req_demo_getoff_boat_p->angle_y;
cos = cos_s(angle_y);
cos_x = cos;
cos_z = cos;
sin = sin_s(angle_y);
sin_x = sin;
sin_z = sin;
/* @hack - TODO: look for a better way to match these float operations */
pos.x -= (sin_x *= 45.0f) + (cos_x *= -2.0f);
pos.y -= 18.0f;
pos.z -= (cos_z *= 45.0f) - (sin_z *= -2.0f);
cKF_SkeletonInfo_R_Animation_Set_base_shape_trs(kf0_p, 0.0f, 1000.0f, 0.0f, 0, 0, DEG2SHORT_ANGLE2(90.0f));
cKF_SkeletonInfo_R_AnimationMove_ct_base(&actorx->world.position, &pos, actorx->shape_info.rotation.y,
actorx->world.angle.y, 5.0f, kf0_p,
cKF_ANIMATION_TRANS_XZ | cKF_ANIMATION_TRANS_Y | cKF_ANIMATION_ROT_Y);
Player_actor_InitAnimation_Base2(actorx, game, mPlayer_ANIM_GETOFF2, anim1_idx, 1.0f, 1.0f, 0.5f, -5.0f,
cKF_FRAMECONTROL_STOP, part_table_idx);
Player_actor_setup_main_Base(actorx, game);
Player_actor_sound_JUMP(actorx);
}
static void Player_actor_settle_main_Demo_getoff_boat(ACTOR* actorx, GAME* game) {
PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx;
cKF_SkeletonInfo_R_c* kf0_p = &player->keyframe0;
cKF_SkeletonInfo_R_AnimationMove_dt(kf0_p);
actorx->world.angle.y = actorx->shape_info.rotation.y;
actorx->shape_info.shadow_size_change_rate = 1.0f;
actorx->shape_info.shadow_alpha_change_rate = 1.0f;
}
static int Player_actor_CulcAnimation_Demo_getoff_boat(ACTOR* actorx, f32* last_anim0_cur_frame_p) {
return Player_actor_CulcAnimation_Base2(actorx, last_anim0_cur_frame_p);
}
static void Player_actor_SetSound_Demo_getoff_boat(ACTOR* actorx) {
PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx;
cKF_SkeletonInfo_R_c* kf0_p = &player->keyframe0;
cKF_FrameControl_c* fc0_p = &kf0_p->frame_control;
if (Player_actor_Check_AnimationFrame(fc0_p, 15.0f)) {
Player_actor_sound_LANDING(actorx);
}
}
static void Player_actor_ControlShadow_Demo_getoff_boat(ACTOR* actorx) {
Player_actor_AppearShadow_fromAnimationFrame(actorx, 8.0f, 16.0f);
}
static void Player_actor_SearchAnimation_Demo_getoff_boat(ACTOR* actorx, f32 frame) {
if (Player_actor_Check_AnimationFrame_PerfectEquel(actorx, frame) == FALSE) {
Player_actor_SetSound_Demo_getoff_boat(actorx);
}
Player_actor_ControlShadow_Demo_getoff_boat(actorx);
}
static void Player_actor_Movement_Demo_getoff_boat(ACTOR* actorx) {
PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx;
cKF_SkeletonInfo_R_c* kf0_p = &player->keyframe0;
cKF_SkeletonInfo_R_AnimationMove_base(&actorx->world.position, &actorx->shape_info.rotation.y, &actorx->scale,
actorx->world.angle.y, kf0_p);
Player_actor_Movement_Base_Stop(actorx, FALSE);
}
static void Player_actor_ObjCheck_Demo_getoff_boat(ACTOR* actorx, GAME* game) {
Player_actor_Excute_Corect_forStand(actorx, game);
}
static void Player_actor_request_proc_index_fromDemo_getoff_boat(ACTOR* actorx, GAME* game, int end_flag) {
if (end_flag) {
Player_actor_SettleRequestMainIndexPriority(actorx);
Player_actor_request_main_demo_wait_all(game, FALSE, 0, mPlayer_REQUEST_PRIORITY_19);
}
}
static void Player_actor_main_Demo_getoff_boat(ACTOR* actorx, GAME* game) {
f32 last_anim0_cur_frame;
int end_flag;
end_flag = Player_actor_CulcAnimation_Demo_getoff_boat(actorx, &last_anim0_cur_frame);
Player_actor_SearchAnimation_Demo_getoff_boat(actorx, last_anim0_cur_frame);
Player_actor_Movement_Demo_getoff_boat(actorx);
Player_actor_Reset_force_position_angle(actorx);
Player_actor_recover_lean_angle(actorx);
Player_actor_set_eye_pattern_normal(actorx);
Player_actor_ObjCheck_Demo_getoff_boat(actorx, game);
Player_actor_Item_main(actorx, game);
Player_actor_request_proc_index_fromDemo_getoff_boat(actorx, game, end_flag);
}
@@ -0,0 +1,118 @@
static int Player_actor_request_main_demo_getoff_boat_standup_all(GAME* game, const xyz_t* pos_p, s16 angle_y,
int prio) {
if (Player_actor_check_request_main_able(game, mPlayer_INDEX_DEMO_GETOFF_BOAT_STANDUP, prio)) {
PLAYER_ACTOR* player = GET_PLAYER_ACTOR_GAME(game);
mPlayer_request_demo_getoff_boat_standup_c* req_demo_getoff_boat_standup_p =
&player->requested_main_index_data.demo_getoff_boat_standup;
req_demo_getoff_boat_standup_p->pos = *pos_p;
req_demo_getoff_boat_standup_p->angle_y = angle_y;
Player_actor_request_main_index(game, mPlayer_INDEX_DEMO_GETOFF_BOAT_STANDUP, prio);
return TRUE;
}
return FALSE;
}
static void Player_actor_setup_main_Demo_getoff_boat_standup(ACTOR* actorx, GAME* game) {
PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx;
cKF_SkeletonInfo_R_c* kf0_p = &player->keyframe0;
xyz_t pos = actorx->world.position;
mPlayer_request_demo_getoff_boat_standup_c* req_demo_getoff_boat_standup_p =
&player->requested_main_index_data.demo_getoff_boat_standup;
mPlayer_main_demo_getoff_boat_standup_c* demo_getoff_boat_standup_p = &player->main_data.demo_getoff_boat_standup;
int anim1_idx;
int part_table_idx;
Player_actor_SetupItem_Base1(actorx, mPlayer_ANIM_GETOFF1, -18.0f, &anim1_idx, &part_table_idx);
demo_getoff_boat_standup_p->pos = req_demo_getoff_boat_standup_p->pos;
demo_getoff_boat_standup_p->angle_y = req_demo_getoff_boat_standup_p->angle_y;
demo_getoff_boat_standup_p->angle_z = player->boat_angleZ;
pos.y = 23.0f;
cKF_SkeletonInfo_R_Animation_Set_base_shape_trs(kf0_p, 0.0f, 1000.0f, 0.0f, 0, 0, DEG2SHORT_ANGLE2(90.0f));
cKF_SkeletonInfo_R_AnimationMove_ct_base(&actorx->world.position, &pos, actorx->shape_info.rotation.y,
actorx->world.angle.y, 18.0f, kf0_p,
cKF_ANIMATION_TRANS_XZ | cKF_ANIMATION_TRANS_Y | cKF_ANIMATION_ROT_Y);
Player_actor_InitAnimation_Base2(actorx, game, mPlayer_ANIM_GETOFF1, anim1_idx, 1.0f, 1.0f, 0.5f, -18.0f,
cKF_FRAMECONTROL_STOP, part_table_idx);
Player_actor_setup_main_Base(actorx, game);
}
static void Player_actor_settle_main_Demo_getoff_boat_standup(ACTOR* actorx, GAME* game) {
PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx;
cKF_SkeletonInfo_R_c* kf0_p = &player->keyframe0;
cKF_SkeletonInfo_R_AnimationMove_dt(kf0_p);
actorx->world.angle.y = actorx->shape_info.rotation.y;
}
static int Player_actor_CulcAnimation_Demo_getoff_boat_standup(ACTOR* actorx, f32* last_anim0_cur_frame_p) {
return Player_actor_CulcAnimation_Base2(actorx, last_anim0_cur_frame_p);
}
static void Player_actor_SetSound_Demo_getoff_boat_standup(ACTOR* actorx) {
PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx;
cKF_SkeletonInfo_R_c* kf0_p = &player->keyframe0;
cKF_FrameControl_c* fc0_p = &kf0_p->frame_control;
if (Player_actor_Check_AnimationFrame(fc0_p, 6.0f)) {
Player_actor_sound_STANDUP(actorx, -1);
} else if (Player_actor_Check_AnimationFrame(fc0_p, 21.0f)) {
Player_actor_sound_LANDING(actorx);
}
}
static void Player_actor_SearchAnimation_Demo_getoff_boat_standup(ACTOR* actorx, f32 frame) {
if (Player_actor_Check_AnimationFrame_PerfectEquel(actorx, frame) == FALSE) {
Player_actor_SetSound_Demo_getoff_boat_standup(actorx);
}
}
static void Player_actor_Movement_Demo_getoff_boat_standup(ACTOR* actorx) {
PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx;
cKF_SkeletonInfo_R_c* kf0_p = &player->keyframe0;
cKF_SkeletonInfo_R_AnimationMove_base(&actorx->world.position, &actorx->shape_info.rotation.y, &actorx->scale,
actorx->world.angle.y, kf0_p);
Player_actor_Movement_Base_Stop(actorx, FALSE);
{
mPlayer_main_demo_getoff_boat_standup_c* demo_getoff_boat_standup_p =
&player->main_data.demo_getoff_boat_standup;
s16* angle_z_p = &demo_getoff_boat_standup_p->angle_z;
add_calc_short_angle2(angle_z_p, 0, 1.0f - sqrtf(0.2f), 150, 100);
}
}
static void Player_actor_ObjCheck_Demo_getoff_boat_standup(ACTOR* actorx, GAME* game) {
Player_actor_Excute_Corect_forStand(actorx, game);
}
static void Player_actor_request_proc_index_fromDemo_getoff_boat_standup(ACTOR* actorx, GAME* game, int end_flag) {
if (end_flag) {
PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx;
mPlayer_main_demo_getoff_boat_standup_c* demo_getoff_boat_standup_p =
&player->main_data.demo_getoff_boat_standup;
Player_actor_SettleRequestMainIndexPriority(actorx);
Player_actor_request_main_demo_getoff_boat_all(
game, &demo_getoff_boat_standup_p->pos, demo_getoff_boat_standup_p->angle_y, mPlayer_REQUEST_PRIORITY_19);
}
}
static void Player_actor_main_Demo_getoff_boat_standup(ACTOR* actorx, GAME* game) {
f32 last_anim0_cur_frame;
int end_flag;
end_flag = Player_actor_CulcAnimation_Demo_getoff_boat_standup(actorx, &last_anim0_cur_frame);
Player_actor_SearchAnimation_Demo_getoff_boat_standup(actorx, last_anim0_cur_frame);
Player_actor_Movement_Demo_getoff_boat_standup(actorx);
Player_actor_Reset_force_position_angle(actorx);
Player_actor_recover_lean_angle(actorx);
Player_actor_set_eye_pattern_normal(actorx);
Player_actor_ObjCheck_Demo_getoff_boat_standup(actorx, game);
Player_actor_Item_main(actorx, game);
Player_actor_request_proc_index_fromDemo_getoff_boat_standup(actorx, game, end_flag);
}
@@ -0,0 +1,89 @@
static int Player_actor_request_main_demo_geton_boat_sitdown_all(GAME* game, int prio) {
if (Player_actor_check_request_main_able(game, mPlayer_INDEX_DEMO_GETON_BOAT_SITDOWN, prio)) {
Player_actor_request_main_index(game, mPlayer_INDEX_DEMO_GETON_BOAT_SITDOWN, prio);
return TRUE;
}
return FALSE;
}
static void Player_actor_setup_main_Demo_geton_boat_sitdown(ACTOR* actorx, GAME* game) {
PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx;
mPlayer_main_demo_geton_boat_sitdown_c* demo_geton_boat_sitdown_p = &player->main_data.demo_geton_boat_sitdown;
int anim1_idx;
int part_table_idx;
Player_actor_SetupItem_Base1(actorx, mPlayer_ANIM_RIDE2, -5.0f, &anim1_idx, &part_table_idx);
demo_geton_boat_sitdown_p->angle_z = 0;
Player_actor_InitAnimation_Base2(actorx, game, mPlayer_ANIM_RIDE2, anim1_idx, 1.0f, 1.0f, 0.5f, 0.0f,
cKF_FRAMECONTROL_STOP, part_table_idx);
Player_actor_setup_main_Base(actorx, game);
}
static void Player_actor_Movement_Demo_geton_boat_sitdown(ACTOR* actorx, GAME* game) {
PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx;
if ((player->force_position_angle_flag & mPlayer_FORCE_POSITION_ANGLE_POSX) &&
(player->force_position_angle_flag & mPlayer_FORCE_POSITION_ANGLE_POSY) &&
(player->force_position_angle_flag & mPlayer_FORCE_POSITION_ANGLE_POSZ)) {
xyz_t* pos_p = &actorx->world.position;
add_calc(&pos_p->x, player->force_position.x, 1.0f - sqrtf(0.2f), 0.2f, 0.15f);
add_calc(&pos_p->y, player->force_position.y, 1.0f - sqrtf(0.2f), 0.2f, 0.15f);
add_calc(&pos_p->z, player->force_position.z, 1.0f - sqrtf(0.2f), 0.2f, 0.15f);
Player_actor_Get_force_position_angle(game, NULL, &actorx->world.angle);
Player_actor_Get_force_position_angle(game, NULL, &actorx->shape_info.rotation);
}
{
mPlayer_main_demo_geton_boat_sitdown_c* demo_geton_boat_sitdown_p = &player->main_data.demo_geton_boat_sitdown;
s16 boat_angle_z = player->boat_angleZ;
s16* angle_z_p = &demo_geton_boat_sitdown_p->angle_z;
add_calc_short_angle2(angle_z_p, boat_angle_z, 1.0f - sqrtf(0.2f), 150, 100);
}
}
static int Player_actor_CulcAnimation_Demo_geton_boat_sitdown(ACTOR* actorx, f32* last_anim0_cur_frame_p) {
return Player_actor_CulcAnimation_Base2(actorx, last_anim0_cur_frame_p);
}
static void Player_actor_SetSound_Demo_geton_boat_sitdown(ACTOR* actorx) {
PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx;
cKF_SkeletonInfo_R_c* kf0_p = &player->keyframe0;
cKF_FrameControl_c* fc0_p = &kf0_p->frame_control;
if (Player_actor_Check_AnimationFrame(fc0_p, 15.0f)) {
Player_actor_sound_JUMP(actorx);
} else if (Player_actor_Check_AnimationFrame(fc0_p, 28.0f)) {
Player_actor_sound_SIT(actorx, -1);
}
}
static void Player_actor_SearchAnimation_Demo_geton_boat_sitdown(ACTOR* actorx, f32 frame) {
if (Player_actor_Check_AnimationFrame_PerfectEquel(actorx, frame) == FALSE) {
Player_actor_SetSound_Demo_geton_boat_sitdown(actorx);
}
}
static void Player_actor_request_proc_index_fromDemo_geton_boat_sitdown(ACTOR* actorx, GAME* game, int end_flag) {
if (end_flag) {
Player_actor_SettleRequestMainIndexPriority(actorx);
Player_actor_request_main_demo_geton_boat_wait_all(game, mPlayer_REQUEST_PRIORITY_19);
}
}
static void Player_actor_main_Demo_geton_boat_sitdown(ACTOR* actorx, GAME* game) {
f32 last_anim0_cur_frame;
int end_flag;
Player_actor_Movement_Demo_geton_boat_sitdown(actorx, game);
Player_actor_Reset_force_position_angle(actorx);
end_flag = Player_actor_CulcAnimation_Demo_geton_boat_sitdown(actorx, &last_anim0_cur_frame);
Player_actor_SearchAnimation_Demo_geton_boat_sitdown(actorx, last_anim0_cur_frame);
Player_actor_recover_lean_angle(actorx);
Player_actor_set_eye_pattern_normal(actorx);
Player_actor_Item_main(actorx, game);
Player_actor_request_proc_index_fromDemo_geton_boat_sitdown(actorx, game, end_flag);
}
@@ -0,0 +1,87 @@
static int Player_actor_request_main_demo_geton_boat_wade_all(GAME* game, int dir, f32 border_ofs, int prio) {
if (Player_actor_check_request_main_able(game, mPlayer_INDEX_DEMO_GETON_BOAT_WADE, prio)) {
PLAYER_ACTOR* player = GET_PLAYER_ACTOR_GAME(game);
mPlayer_request_demo_geton_boat_wade_c* req_demo_geton_boat_wade_p =
&player->requested_main_index_data.demo_geton_boat_wade;
req_demo_geton_boat_wade_p->dir = dir;
req_demo_geton_boat_wade_p->border_ofs = border_ofs;
Player_actor_request_main_index(game, mPlayer_INDEX_DEMO_GETON_BOAT_WADE, prio);
return TRUE;
}
return FALSE;
}
static void Player_actor_setup_main_Demo_geton_boat_wade(ACTOR* actorx, GAME* game) {
PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx;
GAME_PLAY* play = (GAME_PLAY*)game;
mPlayer_request_demo_geton_boat_wade_c* req_demo_geton_boat_wade_p =
&player->requested_main_index_data.demo_geton_boat_wade;
mPlayer_main_demo_geton_boat_wade_c* demo_geton_boat_wade_p = &player->main_data.demo_geton_boat_wade;
xyz_t* pos_p = &actorx->world.position;
int dir = req_demo_geton_boat_wade_p->dir;
f32 border_ofs = req_demo_geton_boat_wade_p->border_ofs;
int anim1_idx;
int part_table_idx;
Player_actor_SetupItem_Base1(actorx, mPlayer_ANIM_RIDEWAIT, -5.0f, &anim1_idx, &part_table_idx);
Player_actor_InitAnimation_Base1(actorx, game, mPlayer_ANIM_RIDEWAIT, anim1_idx, 1.0f, 1.0f, 0.5f, -5.0f,
part_table_idx);
demo_geton_boat_wade_p->dir = dir;
demo_geton_boat_wade_p->start_pos = *pos_p;
Player_actor_Culc_wade_end_pos(pos_p, &demo_geton_boat_wade_p->end_pos, dir, border_ofs);
demo_geton_boat_wade_p->timer = 0.0f;
Player_actor_setup_main_Base(actorx, game);
{
xyz_t camera_pos = demo_geton_boat_wade_p->end_pos;
camera_pos.y += actorx->eye.position.y - pos_p->y;
Camera2_request_main_wade(play, &camera_pos, 9, 36.0f);
}
Player_actor_setup_main_Demo_geton_boat_wade_other_func2(actorx, game);
}
static void Player_actor_settle_main_Demo_geton_boat_wade(ACTOR* actorx, GAME* game) {
mDemo_End(actorx);
}
static void Player_actor_Movement_Demo_geton_boat_wade(ACTOR* actorx) {
Player_actor_Movement_Demo_geton_boat_wait(actorx);
}
static int Player_actor_CulcAnimation_Demo_geton_boat_wade(ACTOR* actorx) {
return Player_actor_CulcAnimation_Demo_geton_boat_wait(actorx);
}
static int Player_actor_able_request_proc_index_fromDemo_geton_boat_wade_common(ACTOR* actorx) {
PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx;
mPlayer_main_demo_geton_boat_wade_c* demo_geton_boat_wade_p = &player->main_data.demo_geton_boat_wade;
if (demo_geton_boat_wade_p->timer > 36.0f) {
return TRUE;
}
demo_geton_boat_wade_p->timer += 1.0f;
return FALSE;
}
static void Player_actor_request_proc_index_fromDemo_geton_boat_wade(ACTOR* actorx, GAME* game) {
if (Player_actor_able_request_proc_index_fromDemo_geton_boat_wade_common(actorx)) {
Player_actor_SettleRequestMainIndexPriority(actorx);
Player_actor_request_main_demo_geton_boat_wait_all(game, mPlayer_REQUEST_PRIORITY_19);
}
}
static void Player_actor_main_Demo_geton_boat_wade(ACTOR* actorx, GAME* game) {
Player_actor_main_Demo_geton_boat_wade_other_func1(actorx, game);
Player_actor_Movement_Demo_geton_boat_wade(actorx);
Player_actor_Reinput_force_position_angle(actorx, game);
Player_actor_CulcAnimation_Demo_geton_boat_wade(actorx);
Player_actor_recover_lean_angle(actorx);
Player_actor_set_eye_pattern_normal(actorx);
Player_actor_Item_main(actorx, game);
Player_actor_request_proc_index_fromDemo_geton_boat_wade(actorx, game);
}
@@ -0,0 +1,55 @@
static int Player_actor_request_main_demo_geton_boat_wait_all(GAME* game, int prio) {
if (Player_actor_check_request_main_able(game, mPlayer_INDEX_DEMO_GETON_BOAT_WAIT, prio)) {
Player_actor_request_main_index(game, mPlayer_INDEX_DEMO_GETON_BOAT_WAIT, prio);
return TRUE;
}
return FALSE;
}
static void Player_actor_setup_main_Demo_geton_boat_wait(ACTOR* actorx, GAME* game) {
PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx;
int anim1_idx;
int part_table_idx;
Player_actor_SetupItem_Base1(actorx, mPlayer_ANIM_RIDEWAIT, -5.0f, &anim1_idx, &part_table_idx);
Player_actor_InitAnimation_Base1(actorx, game, mPlayer_ANIM_RIDEWAIT, anim1_idx, 1.0f, 1.0f, 0.5f, -5.0f,
part_table_idx);
Player_actor_setup_main_Base(actorx, game);
}
static void Player_actor_Movement_Demo_geton_boat_wait(ACTOR* actorx) {
// nothing
}
static int Player_actor_CulcAnimation_Demo_geton_boat_wait(ACTOR* actorx) {
f32 dummy;
return Player_actor_CulcAnimation_Base2(actorx, &dummy);
}
static void Player_actor_request_proc_index_fromDemo_geton_boat_wait(ACTOR* actorx) {
s16 angle_y = actorx->shape_info.rotation.y;
f32 speed;
if (Common_Get(clip).demo_clip2 != NULL && Common_Get(clip).demo_clip2->type == mDemo_CLIP_TYPE_BOAT_DEMO) {
BOAT_DEMO_ACTOR* boat_demo = (BOAT_DEMO_ACTOR*)Common_Get(clip).demo_clip2->demo_class;
speed = boat_demo->boat_speed;
} else {
speed = 0.625f;
}
Player_actor_Set_ScrollDemo_forDemo_geton_boat_wade(actorx, angle_y + DEG2SHORT_ANGLE2(180.0f),
((speed * 0.5f) * 36.0f) * 0.05f);
}
static void Player_actor_main_Demo_geton_boat_wait(ACTOR* actorx, GAME* game) {
Player_actor_Movement_Demo_geton_boat_wait(actorx);
Player_actor_Reinput_force_position_angle(actorx, game);
Player_actor_CulcAnimation_Demo_geton_boat_wait(actorx);
Player_actor_recover_lean_angle(actorx);
Player_actor_set_eye_pattern_normal(actorx);
Player_actor_Item_main(actorx, game);
Player_actor_request_proc_index_fromDemo_geton_boat_wait(actorx);
}
+209
View File
@@ -0,0 +1,209 @@
static int Player_actor_request_main_radio_exercise_all(GAME* game, int cmd, f32 speed, int prio) {
if (Player_actor_check_request_main_able(game, mPlayer_INDEX_RADIO_EXERCISE, prio)) {
PLAYER_ACTOR* player = GET_PLAYER_ACTOR_GAME(game);
mPlayer_request_radio_exercise_c* req_radio_exercise_p = &player->requested_main_index_data.radio_exercise;
req_radio_exercise_p->cmd = cmd;
req_radio_exercise_p->speed = speed;
Player_actor_request_main_index(game, mPlayer_INDEX_RADIO_EXERCISE, prio);
return TRUE;
}
return FALSE;
}
static void Player_actor_setup_main_Radio_exercise(ACTOR* actorx, GAME* game) {
// clang-format off
static const u8 anime_index_data[mPlayer_RADIO_EXERCISE_CMD_NUM] = {
mPlayer_ANIM_TAISOU1,
mPlayer_ANIM_TAISOU2_1,
mPlayer_ANIM_TAISOU2_2,
mPlayer_ANIM_TAISOU3,
mPlayer_ANIM_TAISOU4_1,
mPlayer_ANIM_TAISOU4_1,
mPlayer_ANIM_TAISOU4_2,
mPlayer_ANIM_TAISOU4_2,
mPlayer_ANIM_TAISOU5_1,
mPlayer_ANIM_TAISOU5_1,
mPlayer_ANIM_TAISOU5_2,
mPlayer_ANIM_TAISOU5_2,
mPlayer_ANIM_TAISOU6_1,
mPlayer_ANIM_TAISOU6_1,
mPlayer_ANIM_TAISOU6_2,
mPlayer_ANIM_TAISOU6_2,
mPlayer_ANIM_TAISOU7_1,
mPlayer_ANIM_TAISOU7_2,
};
// clang-format on
PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx;
cKF_SkeletonInfo_R_c* kf0_p = &player->keyframe0;
cKF_SkeletonInfo_R_c* kf1_p = &player->keyframe1;
mPlayer_request_radio_exercise_c* req_radio_exercise_p = &player->requested_main_index_data.radio_exercise;
mPlayer_main_radio_exercise_c* radio_exercise_p = &player->main_data.radio_exercise;
int cmd = req_radio_exercise_p->cmd;
int anim_idx;
if (cmd < 0 || cmd >= mPlayer_RADIO_EXERCISE_CMD_NUM) {
cmd = mPlayer_RADIO_EXERCISE_CMD0;
}
radio_exercise_p->cmd = cmd;
radio_exercise_p->_04 = TRUE;
radio_exercise_p->_08 = 0;
radio_exercise_p->_0C = 0;
player->radio_exercise_continue_cmd_idx = -1;
player->radio_exercise_cmd_timer = 0.0f;
anim_idx = anime_index_data[cmd];
Player_actor_InitAnimation_Base2(actorx, game, anim_idx, anim_idx, 1.0f, 1.0f, 0.0f, -5.0f, cKF_FRAMECONTROL_STOP,
mPlayer_PART_TABLE_NORMAL);
kf0_p->frame_control.speed = req_radio_exercise_p->speed;
kf1_p->frame_control.speed = req_radio_exercise_p->speed;
Player_actor_setup_main_Base(actorx, game);
}
static void Player_actor_settle_main_Radio_exercise(ACTOR* actorx, GAME* game) {
// nothing
}
static void Player_actor_Set_RadioExerciseCommand_Radio_exercise(ACTOR* actorx, GAME* game) {
PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx;
mPlayer_main_radio_exercise_c* radio_exercise_p = &player->main_data.radio_exercise;
Player_actor_Set_RadioExerciseCommand(actorx, game, radio_exercise_p->_04);
radio_exercise_p->_04 = FALSE;
}
static void Player_actor_Movement_Radio_exercise(ACTOR* actorx) {
Player_actor_Movement_Base_Braking_common(actorx, 0.32625f);
}
static int Player_actor_CulcAnimation_Radio_exercise(ACTOR* actorx) {
PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx;
Radio_c radio;
f32 target_speed = 0.0f;
u32 old_sound_frame_counter = player->old_sound_frame_counter;
u32 now_sound_frame_counter = sAdo_GetSoundFrameCounter();
int radio_counter = sAdos_GetRadioCounter(&radio);
f32 dummy;
if (radio_counter == 0) {
target_speed = (int)radio.tempo * 0.012f;
}
if (target_speed <= 0.0f) {
target_speed = 0.5f;
}
if (now_sound_frame_counter != old_sound_frame_counter) {
u32 d_sound_frame_counter;
if (now_sound_frame_counter > old_sound_frame_counter) {
d_sound_frame_counter = 0;
d_sound_frame_counter += now_sound_frame_counter;
d_sound_frame_counter -= old_sound_frame_counter;
} else {
d_sound_frame_counter = -1;
d_sound_frame_counter -= old_sound_frame_counter;
d_sound_frame_counter = now_sound_frame_counter + d_sound_frame_counter;
}
if (d_sound_frame_counter > 5) {
d_sound_frame_counter = 5;
}
target_speed *= (int)d_sound_frame_counter;
}
{
// clang-format off
static f32 data[mPlayer_RADIO_EXERCISE_CMD_NUM] = {
0.5f,
0.5f,
0.5f,
0.5f,
0.5f,
0.5f,
0.5f,
0.5f,
0.25f,
0.25f,
0.25f,
0.25f,
0.5f,
0.5f,
0.5f,
0.5f,
0.5f,
0.5f,
};
// clang-format on
f32* speed_p = &player->keyframe0.frame_control.speed;
target_speed *= data[player->main_data.radio_exercise.cmd];
add_calc2(speed_p, target_speed, 0.3f, 0.5f);
player->keyframe1.frame_control.speed = *speed_p;
}
return Player_actor_CulcAnimation_Base3(actorx, &dummy);
}
static void Player_actor_ObjCheck_Radio_exercise(ACTOR* actorx, GAME* game) {
Player_actor_Excute_Corect_forStand(actorx, game);
}
static void Player_actor_BGCheck_Radio_exercise(ACTOR* actorx) {
Player_actor_BGcheck_common_type1(actorx);
}
static void Player_actor_request_proc_index_fromRadio_exercise(ACTOR* actorx, GAME* game, int end_flag) {
PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx;
mPlayer_main_radio_exercise_c* radio_exercise_p = &player->main_data.radio_exercise;
cKF_SkeletonInfo_R_c* kf0_p = &player->keyframe0;
cKF_FrameControl_c* fc0_p = &kf0_p->frame_control;
f32 cur_frame = fc0_p->current_frame;
if (radio_exercise_p->_0C == FALSE) {
if (cur_frame >= fc0_p->end_frame - 24.0f) {
radio_exercise_p->_0C = TRUE;
}
} else {
Player_actor_CheckAndRequest_main_radio_exercise_all(game, TRUE);
}
if (radio_exercise_p->_08 == FALSE) {
if (cur_frame >= fc0_p->end_frame - 0.5f) {
Player_actor_SettleRequestMainIndexPriority(actorx);
Player_actor_Set_status_for_bee(actorx, TRUE);
radio_exercise_p->_08 = TRUE;
}
} else if (end_flag) {
int next_radio_cmd = player->radio_exercise_continue_cmd_idx;
f32 exercise_cmd_timer = player->radio_exercise_cmd_timer;
if (next_radio_cmd >= 0 && next_radio_cmd < mPlayer_RADIO_EXERCISE_CMD_NUM && exercise_cmd_timer <= 0.0f) {
Player_actor_request_main_radio_exercise_all(game, next_radio_cmd, fc0_p->speed,
mPlayer_REQUEST_PRIORITY_4);
} else {
Player_actor_request_main_wait_all(game, -5.0f, 0.0f, 4, mPlayer_REQUEST_PRIORITY_1);
}
}
}
static void Player_actor_main_Radio_exercise(ACTOR* actorx, GAME* game) {
int end_flag;
Player_actor_Set_RadioExerciseCommand_Radio_exercise(actorx, game);
Player_actor_Movement_Radio_exercise(actorx);
Player_actor_Reinput_force_position_angle(actorx, game);
end_flag = Player_actor_CulcAnimation_Radio_exercise(actorx);
Player_actor_recover_lean_angle(actorx);
Player_actor_set_eye_pattern_normal(actorx);
Player_actor_ObjCheck_Radio_exercise(actorx, game);
Player_actor_BGcheck_Radio_exercise(actorx);
Player_actor_Item_main(actorx, game);
Player_actor_request_proc_index_fromRadio_exercise(actorx, game, end_flag);
}
+18 -17
View File
@@ -23,10 +23,10 @@ static int Player_actor_request_main_reflect_axe_all(GAME* game, const xyz_t* po
static void Player_actor_setup_main_Reflect_axe_common(mPlayer_request_reflect_axe_c* req_axe,
mPlayer_main_reflect_axe_c* main_axe) {
main_axe->target_pos = req_axe->goal_pos;
main_axe->axe_common.target_pos = req_axe->goal_pos;
main_axe->reflect_actor_p = req_axe->hit_actor;
main_axe->item = req_axe->hit_item;
main_axe->axe_damage_no = req_axe->axe_damage_no;
main_axe->axe_common.item = req_axe->hit_item;
main_axe->axe_common.axe_damage_no = req_axe->axe_damage_no;
}
static void Player_actor_setup_main_Reflect_axe(ACTOR* actor, GAME* game) {
@@ -41,17 +41,17 @@ static void Player_actor_setup_main_Reflect_axe(ACTOR* actor, GAME* game) {
Player_actor_setup_main_Base(actor, game);
}
static void Player_actor_settle_main_Reflect_axe(ACTOR* actor) {
static void Player_actor_settle_main_Reflect_axe(ACTOR* actor, GAME* game) {
actor->speed = 0.0f;
actor->world.angle.y = actor->shape_info.rotation.y;
}
static int Player_actor_Movement_Reflect_axe_common(ACTOR* actor, mPlayer_main_reflect_axe_c* main_axe, int) {
static int Player_actor_Movement_Reflect_axe_common(ACTOR* actor, mPlayer_main_axe_common_c* axe_common_p,
int priority) {
PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor;
f32 cur;
cur = player->keyframe0.frame_control.current_frame;
f32 cur = player->keyframe0.frame_control.current_frame;
Player_actor_Movement_axe_common(actor, &main_axe->target_pos);
Player_actor_Movement_axe_common(actor, &axe_common_p->target_pos);
if (cur < 15.0f) {
actor->world.angle.y = actor->shape_info.rotation.y;
@@ -59,7 +59,7 @@ static int Player_actor_Movement_Reflect_axe_common(ACTOR* actor, mPlayer_main_r
}
static void Player_actor_Movement_Reflect_axe(ACTOR* actor, mPlayer_main_reflect_axe_c* main_axe, int flag) {
Player_actor_Movement_Reflect_axe_common(actor, main_axe, flag);
Player_actor_Movement_Reflect_axe_common(actor, &main_axe->axe_common, flag);
}
static int Player_actor_CulcAnimation_Reflect_axe(ACTOR* actor, f32* frame_calc, int) {
@@ -89,7 +89,7 @@ static void Player_actor_SetOrderNPC_Reflect_axe(ACTOR* actor, mPlayer_main_refl
int rock;
if (Player_actor_Check_AnimationFrame(&player->keyframe0.frame_control, 15.0f)) {
ACTOR* reflect_actor = main_axe->reflect_actor_p;
mActor_name_t item = main_axe->item;
mActor_name_t item = main_axe->axe_common.item;
if (reflect_actor != NULL) {
switch (reflect_actor->id) {
@@ -115,7 +115,7 @@ static void Player_actor_SetOrderNPC_Reflect_axe(ACTOR* actor, mPlayer_main_refl
}
if (rock) {
if (Player_actor_Search_STONE_TC(actor, &main_axe->target_pos)) {
if (Player_actor_Search_STONE_TC(actor, &main_axe->axe_common.target_pos)) {
return;
};
}
@@ -140,14 +140,14 @@ static void Player_actor_SetSound_Reflect_axe(ACTOR* actor, mPlayer_main_reflect
break;
}
} else {
Player_actor_sound_AXE_HIT(actor, &main_axe->target_pos);
Player_actor_sound_AXE_HIT(actor, &main_axe->axe_common.target_pos);
Player_actor_set_viblation_Axe_hard();
}
}
}
static void Player_actor_ChangeItemNo_Reflect_axe(ACTOR* actor, mPlayer_main_reflect_axe_c* main_axe, int) {
Player_actor_ChangeItemNo_axe_common(actor, main_axe->axe_damage_no);
Player_actor_ChangeItemNo_axe_common(actor, main_axe->axe_common.axe_damage_no);
}
static void Player_actor_informed_insects_Reflect_axe(ACTOR* actor, mPlayer_main_reflect_axe_c* main_axe, int) {
@@ -158,7 +158,7 @@ static void Player_actor_informed_insects_Reflect_axe(ACTOR* actor, mPlayer_main
int ut_x;
int ut_z;
mFI_Wpos2UtNum(&ut_x, &ut_z, main_axe->target_pos);
mFI_Wpos2UtNum(&ut_x, &ut_z, main_axe->axe_common.target_pos);
Common_Get(clip).insect_clip->set_pl_act_tim_proc(1, ut_x, ut_z);
}
}
@@ -181,8 +181,8 @@ static void Player_actor_ObjCheck_Reflect_axe(ACTOR* actor, GAME* game, int) {
Player_actor_Excute_Corect_forStand(actor, game);
}
static void Player_actor_BGcheck_Reflect_axe(ACTOR* actor, int) {
Player_actor_BGcheck_common_type1(actor);
static void Player_actor_BGcheck_Reflect_axe(ACTOR* actor, int) {
Player_actor_BGcheck_common_type1(actor);
}
static void Player_actor_request_proc_index_fromReflect_axe(ACTOR* actor, GAME* game, int arg, int arg2) {
@@ -201,7 +201,8 @@ static void Player_actor_request_proc_index_fromReflect_axe(ACTOR* actor, GAME*
Player_actor_SettleRequestMainIndexPriority(actor);
Player_actor_Set_status_for_bee(actor, 1);
} else if ((fc->current_frame >= 31.0f) && (!Player_actor_CheckAndRequest_main_axe_all(game, mPlayer_REQUEST_PRIORITY_4)) &&
} else if ((fc->current_frame >= 31.0f) &&
(!Player_actor_CheckAndRequest_main_axe_all(game, mPlayer_REQUEST_PRIORITY_4)) &&
((Player_actor_GetController_move_percentX()) || (Player_actor_GetController_move_percentY()))) {
Player_actor_request_main_walk_all(game, NULL, -5.0f, 0, mPlayer_REQUEST_PRIORITY_1);
}
+17 -17
View File
@@ -25,11 +25,11 @@ static int Player_actor_request_main_swing_axe_all(GAME* game, const xyz_t* pos,
static void Player_actor_setup_main_Swing_axe_common(mPlayer_request_swing_axe_c* req_axe,
mPlayer_main_swing_axe_c* main_axe) {
main_axe->target_pos = req_axe->goal_pos;
main_axe->item = req_axe->hit_item;
main_axe->axe_common.target_pos = req_axe->goal_pos;
main_axe->axe_common.item = req_axe->hit_item;
main_axe->tree_ut_x = req_axe->hit_ut_x;
main_axe->tree_ut_z = req_axe->hit_ut_z;
main_axe->axe_damage_no = req_axe->axe_damage_no;
main_axe->axe_common.axe_damage_no = req_axe->axe_damage_no;
main_axe->bee_flag = FALSE;
main_axe->bee_angle_y = 0;
main_axe->bee_counter = 0;
@@ -63,7 +63,7 @@ static void Player_actor_Movement_axe_common(ACTOR* actor, xyz_t* axe_pos) {
}
static void Player_actor_Movement_Swing_axe(ACTOR* actor, mPlayer_main_swing_axe_c* main_axe, int) {
Player_actor_Movement_axe_common(actor, &main_axe->target_pos);
Player_actor_Movement_axe_common(actor, &main_axe->axe_common.target_pos);
actor->world.angle.y = actor->shape_info.rotation.y;
}
@@ -73,7 +73,7 @@ static int Player_actor_CulcAnimation_Swing_axe(ACTOR* actor, f32* frame_calc, i
}
static void Player_actor_SetEffectHit_axe_common(ACTOR* actor, GAME* game, s16 arg2) {
static xyz_t offset = {-7.0f, 20.0f, 24.0f};
static xyz_t offset = { -7.0f, 20.0f, 24.0f };
PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor;
xyz_t pos;
@@ -96,7 +96,7 @@ static void Player_actor_SetEffectHit_Swing_axe(ACTOR* actor, GAME* game, s16 ar
}
static void Player_actor_SetEffectStart_Swing_axe(ACTOR* actor, GAME* game, int arg2) {
Player_actor_SetEffectStart_axe_common(actor, game, arg2);
Player_actor_SetEffectStart_axe_common(actor, game);
}
static void Player_actor_SetEffect_Swing_axe(ACTOR* actor, GAME* game, int arg2) {
@@ -145,9 +145,9 @@ static void Player_actor_CutTree_Swing_axe(ACTOR* actor, GAME* game, mPlayer_mai
if (Player_actor_Check_AnimationFrame(&player->keyframe0.frame_control, 15.0f)) {
int ut_x;
int ut_z;
mActor_name_t item = main_axe->item;
mActor_name_t item = main_axe->axe_common.item;
if (mFI_Wpos2UtNum(&ut_x, &ut_z, main_axe->target_pos)) {
if (mFI_Wpos2UtNum(&ut_x, &ut_z, main_axe->axe_common.target_pos)) {
mActor_name_t tree = Player_actor_Get_TreeNoToStumpNo(actor, game, item, ut_x, ut_z, main_axe, flag);
int check = FALSE;
@@ -158,11 +158,11 @@ static void Player_actor_CutTree_Swing_axe(ACTOR* actor, GAME* game, mPlayer_mai
if (check != FALSE) {
mNT_offset_table_c* ofs_tbl = obj_hight_table_item0_nogrow(tree);
mCoBG_SetPlussOffset(main_axe->target_pos, ofs_tbl->table.centerRight_offset,
mCoBG_SetPlussOffset(main_axe->axe_common.target_pos, ofs_tbl->table.centerRight_offset,
ofs_tbl->table.unit_attribute);
mFI_SetFG_common(tree, main_axe->target_pos, TRUE);
mFI_SetFG_common(tree, main_axe->axe_common.target_pos, TRUE);
if (main_axe->target_pos.x > actor->world.position.x) {
if (main_axe->axe_common.target_pos.x > actor->world.position.x) {
flag = 1;
} else {
flag = 2;
@@ -232,7 +232,7 @@ static void Player_actor_ChangeItemNo_axe_common(ACTOR* actor, mActor_name_t ite
}
static void Player_actor_ChangeItemNo_Swing_axe(ACTOR* actor, mPlayer_main_swing_axe_c* main, int flag) {
Player_actor_ChangeItemNo_axe_common(actor, main->axe_damage_no);
Player_actor_ChangeItemNo_axe_common(actor, main->axe_common.axe_damage_no);
}
static void Player_actor_SearchAnimation_Swing_axe(ACTOR* actor, GAME* game, mPlayer_main_swing_axe_c* main_axe,
@@ -240,7 +240,7 @@ static void Player_actor_SearchAnimation_Swing_axe(ACTOR* actor, GAME* game, mPl
if (!Player_actor_Check_AnimationFrame_PerfectEquel(actor, frame)) {
Player_actor_SetEffect_Swing_axe(actor, game, flag);
Player_actor_CutTree_Swing_axe(actor, game, main_axe, flag);
Player_actor_SetSound_Swing_axe(actor, &main_axe->target_pos, flag);
Player_actor_SetSound_Swing_axe(actor, &main_axe->axe_common.target_pos, flag);
Player_actor_ChangeItemNo_Swing_axe(actor, main_axe, flag);
Player_actor_Set_FootMark_Base1(actor, game, 0, 0);
}
@@ -248,8 +248,8 @@ static void Player_actor_SearchAnimation_Swing_axe(ACTOR* actor, GAME* game, mPl
static void Player_actor_Check_BirthBee_Swing_axe(ACTOR* actor, mPlayer_main_swing_axe_c* main_axe, int arg) {
if (arg == 0 && main_axe->bee_counter > 0) {
if (Player_actor_Check_BirthBee_common(actor, main_axe->item, main_axe->tree_ut_x, main_axe->tree_ut_z,
&main_axe->bee_angle_y)) {
if (Player_actor_Check_BirthBee_common(actor, main_axe->axe_common.item, main_axe->tree_ut_x,
main_axe->tree_ut_z, &main_axe->bee_angle_y)) {
main_axe->bee_counter = 0;
main_axe->bee_flag = 1;
} else {
@@ -262,8 +262,8 @@ 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) {
@@ -0,0 +1,80 @@
static int Player_actor_request_main_switch_on_lighthouse_all(GAME* game, const xyz_t* pos_p, s16 angle_y, int prio) {
if (Player_actor_check_request_main_able(game, mPlayer_INDEX_SWITCH_ON_LIGHTHOUSE, prio)) {
PLAYER_ACTOR* player = GET_PLAYER_ACTOR_GAME(game);
mPlayer_request_switch_on_lighthouse_c* req_switch_on_lighthouse_p =
&player->requested_main_index_data.switch_on_lighthouse;
req_switch_on_lighthouse_p->pos = *pos_p;
req_switch_on_lighthouse_p->pos.y = player->actor_class.world.position.y;
req_switch_on_lighthouse_p->angle_y = angle_y;
Player_actor_request_main_index(game, mPlayer_INDEX_SWITCH_ON_LIGHTHOUSE, prio);
return TRUE;
}
return FALSE;
}
static void Player_actor_settle_main_Switch_on_lighthouse(ACTOR* actorx, GAME* game) {
PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx;
cKF_SkeletonInfo_R_c* kf0_p = &player->keyframe0;
cKF_SkeletonInfo_R_AnimationMove_dt(kf0_p);
actorx->world.angle.y = actorx->shape_info.rotation.y;
}
static void Player_actor_setup_main_Switch_on_lighthouse(ACTOR* actorx, GAME* game) {
PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx;
cKF_SkeletonInfo_R_c* kf0_p = &player->keyframe0;
mPlayer_request_switch_on_lighthouse_c* req_switch_on_lighthouse_p =
&player->requested_main_index_data.switch_on_lighthouse;
actorx->world.angle.y = req_switch_on_lighthouse_p->angle_y;
cKF_SkeletonInfo_R_Animation_Set_base_shape_trs(kf0_p, 0.0f, 1000.0f, 0.0f, 0, 0, DEG2SHORT_ANGLE2(90.0f));
cKF_SkeletonInfo_R_AnimationMove_ct_base(&actorx->world.position, &req_switch_on_lighthouse_p->pos,
actorx->shape_info.rotation.y, req_switch_on_lighthouse_p->angle_y, 9.0f,
kf0_p, cKF_ANIMATION_TRANS_XZ | cKF_ANIMATION_ROT_Y);
Player_actor_InitAnimation_Base2(actorx, game, mPlayer_ANIM_LIGHT_ON1, mPlayer_ANIM_LIGHT_ON1, 1.0f, 1.0f, 0.5f,
9.0f, cKF_FRAMECONTROL_STOP, mPlayer_PART_TABLE_NORMAL);
Player_actor_setup_main_Base(actorx, game);
}
static int Player_actor_CulcAnimation_Switch_on_lighthouse(ACTOR* actorx) {
f32 dummy;
return Player_actor_CulcAnimation_Base2(actorx, &dummy);
}
static void Player_actor_Movement_Switch_on_lighthouse(ACTOR* actorx) {
PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx;
cKF_SkeletonInfo_R_c* kf0_p = &player->keyframe0;
cKF_SkeletonInfo_R_AnimationMove_base(&actorx->world.position, &actorx->shape_info.rotation.y, &actorx->scale,
actorx->world.angle.y, kf0_p);
Player_actor_Movement_Base_Stop(actorx, FALSE);
}
static void Player_actor_ObjCheck_Switch_on_lighthouse(ACTOR* actorx, GAME* game) {
Player_actor_Excute_Corect_forStand(actorx, game);
}
static void Player_actor_request_proc_index_fromSwitch_on_lighthouse(ACTOR* actorx, GAME* game, int end_flag) {
if (end_flag) {
Player_actor_SettleRequestMainIndexPriority(actorx);
Player_actor_request_main_wait_all(game, -5.0f, 0.0f, 0, mPlayer_REQUEST_PRIORITY_1);
}
}
static void Player_actor_main_Switch_on_lighthouse(ACTOR* actorx, GAME* game) {
int end_flag;
end_flag = Player_actor_CulcAnimation_Switch_on_lighthouse(actorx);
Player_actor_Movement_Switch_on_lighthouse(actorx);
Player_actor_Reinput_force_position_angle(actorx, game);
Player_actor_recover_lean_angle(actorx);
Player_actor_set_eye_pattern_normal(actorx);
Player_actor_ObjCheck_Switch_on_lighthouse(actorx, game);
Player_actor_Item_main(actorx, game);
Player_actor_request_proc_index_fromSwitch_on_lighthouse(actorx, game, end_flag);
}
+7 -6
View File
@@ -1,9 +1,10 @@
static int Player_actor_request_main_wade_snowball_all(GAME* game, int dir, xyz_t snowball_dist, int priority) {
static int Player_actor_request_main_wade_snowball_all(GAME* game, int dir, const xyz_t* snowball_dist_p,
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.snowball_dist = *snowball_dist_p;
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);
@@ -51,8 +52,8 @@ static void Player_actor_setup_main_Wade_snowball(ACTOR* actor, GAME* game) {
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_settle_main_Wade_snowball(ACTOR* actor, GAME* game) {
mDemo_End(actor);
}
static void Player_actor_ChangeAnimation_Wade_snowball(ACTOR* actor, GAME* game) {
@@ -96,8 +97,8 @@ static void Player_actor_Movement_Wade_snowball(ACTOR* actor) {
Player_actor_Movement_Base_Stop(actor, FALSE);
}
static void Player_actor_BGcheck_Wade_snowball(ACTOR* actor) {
Player_actor_BGcheck_common_type2(actor);
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) {
+8 -8
View File
@@ -5,10 +5,10 @@
int kappa_seq_handle = 0;
int Na_GetKappaCounter(kappa* kappa) {
int unk16;
int counter;
group* group = nullptr;
int temp = 0;
if (AG.groups[kappa_seq_handle].flags.enabled != 0) {
group = &(AG.groups)[kappa_seq_handle];
@@ -18,15 +18,15 @@ int Na_GetKappaCounter(kappa* kappa) {
(void)temp;
unk16 = group->unk016;
counter = group->counter;
kappa->unk0 = counter / 192;
counter -= (kappa->unk0 * 0xC0);
kappa->unk4 = counter / 192.0f;
kappa->unk0 = unk16 / 192;
unk16 -= (kappa->unk0 * 0xC0);
kappa->unk4 = unk16 / 192.0f;
return 0;
}
void Na_SetKappaSeqHandle(int flag) {
kappa_seq_handle = flag;
}
+11 -13
View File
@@ -2,14 +2,12 @@
#include "jaudio_NES/game64.h"
#include "jaudio_NES/audiowork.h"
s16 Na_GetRadioCounter(radio* radio) {
int unk16;
int Na_GetRadioCounter(Radio_c* radio) {
int counter;
u16 tempo = 0;
group* group = nullptr;
int unused = 0;
if (AG.groups[sou_now_bgm_handle].flags.enabled != 0 && AG.groups[sou_now_bgm_handle].seq_id == 0xDA) {
group = &(AG.groups)[sou_now_bgm_handle];
@@ -18,26 +16,26 @@ s16 Na_GetRadioCounter(radio* radio) {
return -1;
}
unk16 = group->unk016;
counter = group->counter;
(void)unused;
if (unk16 < 0x2E8) {
if (counter < 744) {
radio->unk0 = 0;
} else {
unk16 -= 0x2E8;
radio->unk0 = (s8)(unk16 / 0x300);
unk16 = unk16 - (radio->unk0 * 0x300);
counter -= 744;
radio->unk0 = (s8)(counter / 768);
counter = counter - (radio->unk0 * 768);
radio->unk0++;
}
if (radio->unk0 == 9) {
radio->unk4 = unk16 / 216.0f;
radio->unk4 = counter / 216.0f;
} else {
radio->unk4 = unk16 / 768.0f;
radio->unk4 = counter / 768.0f;
}
radio->tempo = AG.groups[sou_now_bgm_handle].tempo / 48;
tempo = radio->tempo;
return 0;
}
}
+5 -5
View File
@@ -31,7 +31,7 @@ extern void Na_GetStaffRollInfo(StaffRollInfo_c* info) {
s32 temp;
s32 mouth_type = 0;
s32 blink;
s32 group_unk16;
s32 counter;
s32 i;
if (AG.groups[sou_now_bgm_handle].flags.enabled) {
@@ -195,7 +195,7 @@ extern void Na_GetStaffRollInfo(StaffRollInfo_c* info) {
}
info->blink_flag = blink;
group_unk16 = group->unk016;
counter = group->counter;
switch (seq_num) {
case 1:
@@ -218,7 +218,7 @@ extern void Na_GetStaffRollInfo(StaffRollInfo_c* info) {
}
temp = info->beat * 48;
info->_01 = group_unk16 / temp;
group_unk16 -= info->_01 * temp;
info->percent = (f32)group_unk16 / temp;
info->_01 = counter / temp;
counter -= info->_01 * temp;
info->percent = (f32)counter / temp;
}
+4 -4
View File
@@ -1823,7 +1823,7 @@ static void Nas_GroupSeq(group* grp) {
}
grp->tempo_acceleration -= (u16)AG.max_tempo;
grp->unk016++;
grp->counter++;
if (grp->flags.stop_seq_script == TRUE) {
return;
@@ -1998,8 +1998,8 @@ static void Nas_GroupSeq(group* grp) {
case 0xC6: // stop script
grp->flags.stop_seq_script = TRUE;
return;
case 0xC5: //
grp->unk016 = Nas_ReadWordData(m);
case 0xC5: // update counter
grp->counter = Nas_ReadWordData(m);
break;
case 0xEF: //
Nas_ReadWordData(m);
@@ -2154,7 +2154,7 @@ extern void Nas_InitMySeq(group* grp) {
grp->short_note_velocity_tbl = DEFAULT_VTABLE;
grp->short_note_gate_time_tbl = DEFAULT_GTABLE;
grp->script_counter = 0;
grp->unk016 = 0;
grp->counter = 0;
for (i = 0; i < AUDIO_SUBTRACK_NUM; i++) {
Nas_InitSubTrack(grp->subtracks[i]);