mirror of
https://github.com/ACreTeam/ac-decomp
synced 2026-05-23 06:34:18 -04:00
Implement more player states
This commit is contained in:
+8
-2
@@ -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);
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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
@@ -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;
|
||||
|
||||
@@ -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();
|
||||
|
||||
|
||||
@@ -2,6 +2,7 @@
|
||||
#define M_PRIVATE_H_H
|
||||
|
||||
#include "types.h"
|
||||
#include "m_actor_type.h"
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
|
||||
+3
-3
@@ -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
@@ -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);
|
||||
|
||||
@@ -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) {
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
@@ -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) {
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
@@ -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]);
|
||||
|
||||
Reference in New Issue
Block a user