mirror of
https://github.com/ACreTeam/ac-decomp
synced 2026-06-10 20:28:20 -04:00
3711 lines
130 KiB
C
3711 lines
130 KiB
C
#include "m_player_lib.h"
|
|
|
|
#include "m_play.h"
|
|
#include "m_actor.h"
|
|
#include "m_common_data.h"
|
|
#include "jsyswrap.h"
|
|
#include "libultra/libultra.h"
|
|
#include "ac_t_umbrella.h"
|
|
#include "ac_snowman.h"
|
|
#include "ac_uki.h"
|
|
|
|
extern cKF_Animation_R_c cKF_ba_r_ply_1_wait1;
|
|
extern cKF_Animation_R_c cKF_ba_r_ply_1_walk1;
|
|
extern cKF_Animation_R_c cKF_ba_r_ply_1_axe1;
|
|
extern cKF_Animation_R_c cKF_ba_r_ply_1_run1;
|
|
extern cKF_Animation_R_c cKF_ba_r_ply_1_push1;
|
|
extern cKF_Animation_R_c cKF_ba_r_ply_1_pull1;
|
|
extern cKF_Animation_R_c cKF_ba_r_ply_1_hold_wait1;
|
|
extern cKF_Animation_R_c cKF_ba_r_ply_1_pickup1;
|
|
extern cKF_Animation_R_c cKF_ba_r_ply_1_Lturn1;
|
|
extern cKF_Animation_R_c cKF_ba_r_ply_1_Rturn1;
|
|
extern cKF_Animation_R_c cKF_ba_r_ply_1_get1;
|
|
extern cKF_Animation_R_c cKF_ba_r_ply_1_get_change1;
|
|
extern cKF_Animation_R_c cKF_ba_r_ply_1_get_putaway1;
|
|
extern cKF_Animation_R_c cKF_ba_r_ply_1_open1;
|
|
extern cKF_Animation_R_c cKF_ba_r_ply_1_putaway1;
|
|
extern cKF_Animation_R_c cKF_ba_r_ply_1_trans_wait1;
|
|
extern cKF_Animation_R_c cKF_ba_r_ply_1_transfer1;
|
|
extern cKF_Animation_R_c cKF_ba_r_ply_1_umb_open1;
|
|
extern cKF_Animation_R_c cKF_ba_r_ply_1_umbrella1;
|
|
extern cKF_Animation_R_c cKF_ba_r_ply_1_dash1;
|
|
extern cKF_Animation_R_c cKF_ba_r_ply_1_run_slip1;
|
|
extern cKF_Animation_R_c cKF_ba_r_ply_1_get_pull1;
|
|
extern cKF_Animation_R_c cKF_ba_r_ply_1_get_m1;
|
|
extern cKF_Animation_R_c cKF_ba_r_ply_1_kamae_move_m1;
|
|
extern cKF_Animation_R_c cKF_ba_r_ply_1_kamae_wait_m1;
|
|
extern cKF_Animation_R_c cKF_ba_r_ply_1_kokeru_a1;
|
|
extern cKF_Animation_R_c cKF_ba_r_ply_1_kokeru_getup_a1;
|
|
extern cKF_Animation_R_c cKF_ba_r_ply_1_kokeru_getup_n1;
|
|
extern cKF_Animation_R_c cKF_ba_r_ply_1_kokeru_n1;
|
|
extern cKF_Animation_R_c cKF_ba_r_ply_1_net1;
|
|
extern cKF_Animation_R_c cKF_ba_r_ply_1_net_swing1;
|
|
extern cKF_Animation_R_c cKF_ba_r_ply_1_axe_swing1;
|
|
extern cKF_Animation_R_c cKF_ba_r_ply_1_kamae_slip_m1;
|
|
extern cKF_Animation_R_c cKF_ba_r_ply_1_kokeru1;
|
|
extern cKF_Animation_R_c cKF_ba_r_ply_1_kokeru_getup1;
|
|
extern cKF_Animation_R_c cKF_ba_r_ply_1_sitdown1;
|
|
extern cKF_Animation_R_c cKF_ba_r_ply_1_sitdown_wait1;
|
|
extern cKF_Animation_R_c cKF_ba_r_ply_1_standup1;
|
|
extern cKF_Animation_R_c cKF_ba_r_ply_1_putaway_m1;
|
|
extern cKF_Animation_R_c cKF_ba_r_ply_1_bed_wait1;
|
|
extern cKF_Animation_R_c cKF_ba_r_ply_1_inbed_L1;
|
|
extern cKF_Animation_R_c cKF_ba_r_ply_1_inbed_R1;
|
|
extern cKF_Animation_R_c cKF_ba_r_ply_1_intrain1;
|
|
extern cKF_Animation_R_c cKF_ba_r_ply_1_kagu_open_d1;
|
|
extern cKF_Animation_R_c cKF_ba_r_ply_1_kagu_open_h1;
|
|
extern cKF_Animation_R_c cKF_ba_r_ply_1_kagu_open_k1;
|
|
extern cKF_Animation_R_c cKF_ba_r_ply_1_negaeri_L1;
|
|
extern cKF_Animation_R_c cKF_ba_r_ply_1_negaeri_R1;
|
|
extern cKF_Animation_R_c cKF_ba_r_ply_1_outbed_L1;
|
|
extern cKF_Animation_R_c cKF_ba_r_ply_1_outbed_R1;
|
|
extern cKF_Animation_R_c cKF_ba_r_ply_1_outtrain1;
|
|
extern cKF_Animation_R_c cKF_ba_r_ply_1_kagu_close_d1;
|
|
extern cKF_Animation_R_c cKF_ba_r_ply_1_kagu_close_h1;
|
|
extern cKF_Animation_R_c cKF_ba_r_ply_1_kagu_close_k1;
|
|
extern cKF_Animation_R_c cKF_ba_r_ply_1_kagu_wait_d1;
|
|
extern cKF_Animation_R_c cKF_ba_r_ply_1_kagu_wait_h1;
|
|
extern cKF_Animation_R_c cKF_ba_r_ply_1_kagu_wait_k1;
|
|
extern cKF_Animation_R_c cKF_ba_r_ply_1_go_out_o1;
|
|
extern cKF_Animation_R_c cKF_ba_r_ply_1_go_out_s1;
|
|
extern cKF_Animation_R_c cKF_ba_r_ply_1_into_s1;
|
|
extern cKF_Animation_R_c cKF_ba_r_ply_1_axe_hane1;
|
|
extern cKF_Animation_R_c cKF_ba_r_ply_1_axe_suka1;
|
|
extern cKF_Animation_R_c cKF_ba_r_ply_1_hold_wait_h1;
|
|
extern cKF_Animation_R_c cKF_ba_r_ply_1_hold_wait_o1;
|
|
extern cKF_Animation_R_c cKF_ba_r_ply_1_get_t1;
|
|
extern cKF_Animation_R_c cKF_ba_r_ply_1_get_t2;
|
|
extern cKF_Animation_R_c cKF_ba_r_ply_1_putaway_t1;
|
|
extern cKF_Animation_R_c cKF_ba_r_ply_1_sao1;
|
|
extern cKF_Animation_R_c cKF_ba_r_ply_1_sao_swing1;
|
|
extern cKF_Animation_R_c cKF_ba_r_ply_1_turi_hiki1;
|
|
extern cKF_Animation_R_c cKF_ba_r_ply_1_turi_wait1;
|
|
extern cKF_Animation_R_c cKF_ba_r_ply_1_not_get_t1;
|
|
extern cKF_Animation_R_c cKF_ba_r_ply_1_menu_catch1;
|
|
extern cKF_Animation_R_c cKF_ba_r_ply_1_menu_change1;
|
|
extern cKF_Animation_R_c cKF_ba_r_ply_1_umb_close1;
|
|
extern cKF_Animation_R_c cKF_ba_r_ply_1_not_sao_swing1;
|
|
extern cKF_Animation_R_c cKF_ba_r_ply_1_intrain_wait1;
|
|
extern cKF_Animation_R_c cKF_ba_r_ply_1_clear_table1;
|
|
extern cKF_Animation_R_c cKF_ba_r_ply_1_dig1;
|
|
extern cKF_Animation_R_c cKF_ba_r_ply_1_fill_up1;
|
|
extern cKF_Animation_R_c cKF_ba_r_ply_1_not_dig1;
|
|
extern cKF_Animation_R_c cKF_ba_r_ply_1_clear_table_l1;
|
|
extern cKF_Animation_R_c cKF_ba_r_ply_1_pickup_l1;
|
|
extern cKF_Animation_R_c cKF_ba_r_ply_1_scoop1;
|
|
extern cKF_Animation_R_c cKF_ba_r_ply_1_confirm1;
|
|
extern cKF_Animation_R_c cKF_ba_r_ply_1_dig_suka1;
|
|
extern cKF_Animation_R_c cKF_ba_r_ply_1_get_d1;
|
|
extern cKF_Animation_R_c cKF_ba_r_ply_1_putaway_d1;
|
|
extern cKF_Animation_R_c cKF_ba_r_ply_1_dig_kabu1;
|
|
extern cKF_Animation_R_c cKF_ba_r_ply_1_fill_up_i1;
|
|
extern cKF_Animation_R_c cKF_ba_r_ply_1_send_mail1;
|
|
extern cKF_Animation_R_c cKF_ba_r_ply_1_get_f1;
|
|
extern cKF_Animation_R_c cKF_ba_r_ply_1_get_pull_f1;
|
|
extern cKF_Animation_R_c cKF_ba_r_ply_1_get_putaway_f1;
|
|
extern cKF_Animation_R_c cKF_ba_r_ply_1_trans_wait_f1;
|
|
extern cKF_Animation_R_c cKF_ba_r_ply_1_transfer_f1;
|
|
extern cKF_Animation_R_c cKF_ba_r_ply_1_shake1;
|
|
extern cKF_Animation_R_c cKF_ba_r_ply_1_tired1;
|
|
extern cKF_Animation_R_c cKF_ba_r_ply_1_wash1;
|
|
extern cKF_Animation_R_c cKF_ba_r_ply_1_wash2;
|
|
extern cKF_Animation_R_c cKF_ba_r_ply_1_wash3;
|
|
extern cKF_Animation_R_c cKF_ba_r_ply_1_wash4;
|
|
extern cKF_Animation_R_c cKF_ba_r_ply_1_wash5;
|
|
extern cKF_Animation_R_c cKF_ba_r_ply_1_fukubiki1;
|
|
extern cKF_Animation_R_c cKF_ba_r_ply_1_omairi1;
|
|
extern cKF_Animation_R_c cKF_ba_r_ply_1_saisen1;
|
|
extern cKF_Animation_R_c cKF_ba_r_ply_1_return_mail1;
|
|
extern cKF_Animation_R_c cKF_ba_r_ply_1_return_mail2;
|
|
extern cKF_Animation_R_c cKF_ba_r_ply_1_return_mail3;
|
|
extern cKF_Animation_R_c cKF_ba_r_ply_1_eat1;
|
|
extern cKF_Animation_R_c cKF_ba_r_ply_1_gaaan1;
|
|
extern cKF_Animation_R_c cKF_ba_r_ply_1_gaaan2;
|
|
extern cKF_Animation_R_c cKF_ba_r_ply_1_deru1;
|
|
extern cKF_Animation_R_c cKF_ba_r_ply_1_guratuku1;
|
|
extern cKF_Animation_R_c cKF_ba_r_ply_1_mogaku1;
|
|
extern cKF_Animation_R_c cKF_ba_r_ply_1_otiru1;
|
|
extern cKF_Animation_R_c cKF_ba_r_ply_1_zassou1;
|
|
extern cKF_Animation_R_c cKF_ba_r_ply_1_knock1;
|
|
extern cKF_Animation_R_c cKF_ba_r_ply_1_biku1;
|
|
extern cKF_Animation_R_c cKF_ba_r_ply_1_hati1;
|
|
extern cKF_Animation_R_c cKF_ba_r_ply_1_hati2;
|
|
extern cKF_Animation_R_c cKF_ba_r_ply_1_hati3;
|
|
extern cKF_Animation_R_c cKF_ba_r_ply_1_push_yuki1;
|
|
extern cKF_Animation_R_c cKF_ba_r_ply_1_deru2;
|
|
extern cKF_Animation_R_c cKF_ba_r_ply_1_otiru2;
|
|
extern cKF_Animation_R_c cKF_ba_r_ply_1_itazura1;
|
|
extern cKF_Animation_R_c cKF_ba_r_ply_1_umb_rot1;
|
|
extern cKF_Animation_R_c cKF_ba_r_ply_1_pickup_wait1;
|
|
extern cKF_Animation_R_c cKF_ba_r_ply_1_yatta1;
|
|
extern cKF_Animation_R_c cKF_ba_r_ply_1_yatta2;
|
|
extern cKF_Animation_R_c cKF_ba_r_ply_1_yatta3;
|
|
extern cKF_Animation_R_c cKF_ba_r_ply_1_kaza1;
|
|
extern cKF_Animation_R_c cKF_ba_r_ply_1_mosquito1;
|
|
extern cKF_Animation_R_c cKF_ba_r_ply_1_mosquito2;
|
|
extern cKF_Animation_R_c cKF_ba_r_ply_1_ride1;
|
|
extern cKF_Animation_R_c cKF_ba_r_ply_1_ride2;
|
|
extern cKF_Animation_R_c cKF_ba_r_ply_1_ridewait;
|
|
extern cKF_Animation_R_c cKF_ba_r_ply_1_getoff1;
|
|
extern cKF_Animation_R_c cKF_ba_r_ply_1_getoff2;
|
|
extern cKF_Animation_R_c cKF_ba_r_ply_1_utiwa_wait1;
|
|
extern cKF_Animation_R_c cKF_ba_r_ply_1_utiwa_d1;
|
|
extern cKF_Animation_R_c cKF_ba_r_ply_1_axe_break1;
|
|
extern cKF_Animation_R_c cKF_ba_r_ply_1_axe_breakwait1;
|
|
extern cKF_Animation_R_c cKF_ba_r_ply_1_light_on1;
|
|
extern cKF_Animation_R_c cKF_ba_r_ply_1_taisou1;
|
|
extern cKF_Animation_R_c cKF_ba_r_ply_1_taisou2_1;
|
|
extern cKF_Animation_R_c cKF_ba_r_ply_1_taisou2_2;
|
|
extern cKF_Animation_R_c cKF_ba_r_ply_1_taisou3;
|
|
extern cKF_Animation_R_c cKF_ba_r_ply_1_taisou4_1;
|
|
extern cKF_Animation_R_c cKF_ba_r_ply_1_taisou4_2;
|
|
extern cKF_Animation_R_c cKF_ba_r_ply_1_taisou5_1;
|
|
extern cKF_Animation_R_c cKF_ba_r_ply_1_taisou5_2;
|
|
extern cKF_Animation_R_c cKF_ba_r_ply_1_taisou6_1;
|
|
extern cKF_Animation_R_c cKF_ba_r_ply_1_taisou6_2;
|
|
extern cKF_Animation_R_c cKF_ba_r_ply_1_taisou7_1;
|
|
extern cKF_Animation_R_c cKF_ba_r_ply_1_taisou7_2;
|
|
extern cKF_Animation_R_c cKF_ba_r_ply_1_omairi_us1;
|
|
|
|
extern cKF_Animation_R_c* mPlib_Get_Pointer_Animation(int anim_idx) {
|
|
static cKF_Animation_R_c* data[] = {
|
|
&cKF_ba_r_ply_1_wait1,
|
|
&cKF_ba_r_ply_1_walk1,
|
|
&cKF_ba_r_ply_1_axe1,
|
|
&cKF_ba_r_ply_1_run1,
|
|
&cKF_ba_r_ply_1_push1,
|
|
&cKF_ba_r_ply_1_pull1,
|
|
&cKF_ba_r_ply_1_hold_wait1,
|
|
&cKF_ba_r_ply_1_pickup1,
|
|
&cKF_ba_r_ply_1_Lturn1,
|
|
&cKF_ba_r_ply_1_Rturn1,
|
|
&cKF_ba_r_ply_1_get1,
|
|
&cKF_ba_r_ply_1_get_change1,
|
|
&cKF_ba_r_ply_1_get_putaway1,
|
|
&cKF_ba_r_ply_1_open1,
|
|
&cKF_ba_r_ply_1_putaway1,
|
|
&cKF_ba_r_ply_1_trans_wait1,
|
|
&cKF_ba_r_ply_1_transfer1,
|
|
&cKF_ba_r_ply_1_umb_open1,
|
|
&cKF_ba_r_ply_1_umbrella1,
|
|
&cKF_ba_r_ply_1_dash1,
|
|
&cKF_ba_r_ply_1_run_slip1,
|
|
&cKF_ba_r_ply_1_get_pull1,
|
|
&cKF_ba_r_ply_1_get_m1,
|
|
&cKF_ba_r_ply_1_kamae_move_m1,
|
|
&cKF_ba_r_ply_1_kamae_wait_m1,
|
|
&cKF_ba_r_ply_1_kokeru_a1,
|
|
&cKF_ba_r_ply_1_kokeru_getup_a1,
|
|
&cKF_ba_r_ply_1_kokeru_getup_n1,
|
|
&cKF_ba_r_ply_1_kokeru_n1,
|
|
&cKF_ba_r_ply_1_net1,
|
|
&cKF_ba_r_ply_1_net_swing1,
|
|
&cKF_ba_r_ply_1_axe_swing1,
|
|
&cKF_ba_r_ply_1_kamae_slip_m1,
|
|
&cKF_ba_r_ply_1_kokeru1,
|
|
&cKF_ba_r_ply_1_kokeru_getup1,
|
|
&cKF_ba_r_ply_1_sitdown1,
|
|
&cKF_ba_r_ply_1_sitdown_wait1,
|
|
&cKF_ba_r_ply_1_standup1,
|
|
&cKF_ba_r_ply_1_putaway_m1,
|
|
&cKF_ba_r_ply_1_bed_wait1,
|
|
&cKF_ba_r_ply_1_inbed_L1,
|
|
&cKF_ba_r_ply_1_inbed_R1,
|
|
&cKF_ba_r_ply_1_intrain1,
|
|
&cKF_ba_r_ply_1_kagu_open_d1,
|
|
&cKF_ba_r_ply_1_kagu_open_h1,
|
|
&cKF_ba_r_ply_1_kagu_open_k1,
|
|
&cKF_ba_r_ply_1_negaeri_L1,
|
|
&cKF_ba_r_ply_1_negaeri_R1,
|
|
&cKF_ba_r_ply_1_outbed_L1,
|
|
&cKF_ba_r_ply_1_outbed_R1,
|
|
&cKF_ba_r_ply_1_outtrain1,
|
|
&cKF_ba_r_ply_1_kagu_close_d1,
|
|
&cKF_ba_r_ply_1_kagu_close_h1,
|
|
&cKF_ba_r_ply_1_kagu_close_k1,
|
|
&cKF_ba_r_ply_1_kagu_wait_d1,
|
|
&cKF_ba_r_ply_1_kagu_wait_h1,
|
|
&cKF_ba_r_ply_1_kagu_wait_k1,
|
|
&cKF_ba_r_ply_1_go_out_o1,
|
|
&cKF_ba_r_ply_1_go_out_s1,
|
|
&cKF_ba_r_ply_1_into_s1,
|
|
&cKF_ba_r_ply_1_axe_hane1,
|
|
&cKF_ba_r_ply_1_axe_suka1,
|
|
&cKF_ba_r_ply_1_hold_wait_h1,
|
|
&cKF_ba_r_ply_1_hold_wait_o1,
|
|
&cKF_ba_r_ply_1_get_t1,
|
|
&cKF_ba_r_ply_1_get_t2,
|
|
&cKF_ba_r_ply_1_putaway_t1,
|
|
&cKF_ba_r_ply_1_sao1,
|
|
&cKF_ba_r_ply_1_sao_swing1,
|
|
&cKF_ba_r_ply_1_turi_hiki1,
|
|
&cKF_ba_r_ply_1_turi_wait1,
|
|
&cKF_ba_r_ply_1_not_get_t1,
|
|
&cKF_ba_r_ply_1_menu_catch1,
|
|
&cKF_ba_r_ply_1_menu_change1,
|
|
&cKF_ba_r_ply_1_umb_close1,
|
|
&cKF_ba_r_ply_1_not_sao_swing1,
|
|
&cKF_ba_r_ply_1_intrain_wait1,
|
|
&cKF_ba_r_ply_1_clear_table1,
|
|
&cKF_ba_r_ply_1_dig1,
|
|
&cKF_ba_r_ply_1_fill_up1,
|
|
&cKF_ba_r_ply_1_not_dig1,
|
|
&cKF_ba_r_ply_1_clear_table_l1,
|
|
&cKF_ba_r_ply_1_pickup_l1,
|
|
&cKF_ba_r_ply_1_scoop1,
|
|
&cKF_ba_r_ply_1_confirm1,
|
|
&cKF_ba_r_ply_1_dig_suka1,
|
|
&cKF_ba_r_ply_1_get_d1,
|
|
&cKF_ba_r_ply_1_putaway_d1,
|
|
&cKF_ba_r_ply_1_dig_kabu1,
|
|
&cKF_ba_r_ply_1_fill_up_i1,
|
|
&cKF_ba_r_ply_1_send_mail1,
|
|
&cKF_ba_r_ply_1_get_f1,
|
|
&cKF_ba_r_ply_1_get_pull_f1,
|
|
&cKF_ba_r_ply_1_get_putaway_f1,
|
|
&cKF_ba_r_ply_1_trans_wait_f1,
|
|
&cKF_ba_r_ply_1_transfer_f1,
|
|
&cKF_ba_r_ply_1_shake1,
|
|
&cKF_ba_r_ply_1_tired1,
|
|
&cKF_ba_r_ply_1_wash1,
|
|
&cKF_ba_r_ply_1_wash2,
|
|
&cKF_ba_r_ply_1_wash3,
|
|
&cKF_ba_r_ply_1_wash4,
|
|
&cKF_ba_r_ply_1_wash5,
|
|
&cKF_ba_r_ply_1_fukubiki1,
|
|
&cKF_ba_r_ply_1_omairi1,
|
|
&cKF_ba_r_ply_1_saisen1,
|
|
&cKF_ba_r_ply_1_return_mail1,
|
|
&cKF_ba_r_ply_1_return_mail2,
|
|
&cKF_ba_r_ply_1_return_mail3,
|
|
&cKF_ba_r_ply_1_eat1,
|
|
&cKF_ba_r_ply_1_gaaan1,
|
|
&cKF_ba_r_ply_1_gaaan2,
|
|
&cKF_ba_r_ply_1_deru1,
|
|
&cKF_ba_r_ply_1_guratuku1,
|
|
&cKF_ba_r_ply_1_mogaku1,
|
|
&cKF_ba_r_ply_1_otiru1,
|
|
&cKF_ba_r_ply_1_zassou1,
|
|
&cKF_ba_r_ply_1_knock1,
|
|
&cKF_ba_r_ply_1_biku1,
|
|
&cKF_ba_r_ply_1_hati1,
|
|
&cKF_ba_r_ply_1_hati2,
|
|
&cKF_ba_r_ply_1_hati3,
|
|
&cKF_ba_r_ply_1_push_yuki1,
|
|
&cKF_ba_r_ply_1_deru2,
|
|
&cKF_ba_r_ply_1_otiru2,
|
|
&cKF_ba_r_ply_1_itazura1,
|
|
&cKF_ba_r_ply_1_umb_rot1,
|
|
&cKF_ba_r_ply_1_pickup_wait1,
|
|
&cKF_ba_r_ply_1_yatta1,
|
|
&cKF_ba_r_ply_1_yatta2,
|
|
&cKF_ba_r_ply_1_yatta3,
|
|
&cKF_ba_r_ply_1_kaza1,
|
|
&cKF_ba_r_ply_1_mosquito1,
|
|
&cKF_ba_r_ply_1_mosquito2,
|
|
&cKF_ba_r_ply_1_ride1,
|
|
&cKF_ba_r_ply_1_ride2,
|
|
&cKF_ba_r_ply_1_ridewait,
|
|
&cKF_ba_r_ply_1_getoff1,
|
|
&cKF_ba_r_ply_1_getoff2,
|
|
&cKF_ba_r_ply_1_utiwa_wait1,
|
|
&cKF_ba_r_ply_1_utiwa_d1,
|
|
&cKF_ba_r_ply_1_axe_break1,
|
|
&cKF_ba_r_ply_1_axe_breakwait1,
|
|
&cKF_ba_r_ply_1_light_on1,
|
|
&cKF_ba_r_ply_1_taisou1,
|
|
&cKF_ba_r_ply_1_taisou2_1,
|
|
&cKF_ba_r_ply_1_taisou2_2,
|
|
&cKF_ba_r_ply_1_taisou3,
|
|
&cKF_ba_r_ply_1_taisou4_1,
|
|
&cKF_ba_r_ply_1_taisou4_2,
|
|
&cKF_ba_r_ply_1_taisou5_1,
|
|
&cKF_ba_r_ply_1_taisou5_2,
|
|
&cKF_ba_r_ply_1_taisou6_1,
|
|
&cKF_ba_r_ply_1_taisou6_2,
|
|
&cKF_ba_r_ply_1_taisou7_1,
|
|
&cKF_ba_r_ply_1_taisou7_2,
|
|
&cKF_ba_r_ply_1_omairi_us1,
|
|
};
|
|
|
|
if (anim_idx >= 0 && anim_idx < mPlayer_ANIM_NUM && data[anim_idx] != NULL) {
|
|
return data[anim_idx];
|
|
}
|
|
|
|
return NULL;
|
|
}
|
|
|
|
extern int mPlib_Get_BasicPlayerAnimeIndex_fromItemKind(int item_kind) {
|
|
if (item_kind >= 0 && item_kind < (mPlayer_ITEM_KIND_NUM + 1)) {
|
|
// clang-format off
|
|
static const u8 data[] = {
|
|
mPlayer_ANIM_AXE1,
|
|
mPlayer_ANIM_AXE1,
|
|
mPlayer_ANIM_AXE1,
|
|
mPlayer_ANIM_AXE1,
|
|
mPlayer_ANIM_AXE1,
|
|
mPlayer_ANIM_AXE1,
|
|
mPlayer_ANIM_AXE1,
|
|
mPlayer_ANIM_AXE1,
|
|
mPlayer_ANIM_AXE1,
|
|
mPlayer_ANIM_NET1,
|
|
mPlayer_ANIM_NET1,
|
|
mPlayer_ANIM_UMBRELLA1,
|
|
mPlayer_ANIM_UMBRELLA1,
|
|
mPlayer_ANIM_UMBRELLA1,
|
|
mPlayer_ANIM_UMBRELLA1,
|
|
mPlayer_ANIM_UMBRELLA1,
|
|
mPlayer_ANIM_UMBRELLA1,
|
|
mPlayer_ANIM_UMBRELLA1,
|
|
mPlayer_ANIM_UMBRELLA1,
|
|
mPlayer_ANIM_UMBRELLA1,
|
|
mPlayer_ANIM_UMBRELLA1,
|
|
mPlayer_ANIM_UMBRELLA1,
|
|
mPlayer_ANIM_UMBRELLA1,
|
|
mPlayer_ANIM_UMBRELLA1,
|
|
mPlayer_ANIM_UMBRELLA1,
|
|
mPlayer_ANIM_UMBRELLA1,
|
|
mPlayer_ANIM_UMBRELLA1,
|
|
mPlayer_ANIM_UMBRELLA1,
|
|
mPlayer_ANIM_UMBRELLA1,
|
|
mPlayer_ANIM_UMBRELLA1,
|
|
mPlayer_ANIM_UMBRELLA1,
|
|
mPlayer_ANIM_UMBRELLA1,
|
|
mPlayer_ANIM_UMBRELLA1,
|
|
mPlayer_ANIM_UMBRELLA1,
|
|
mPlayer_ANIM_UMBRELLA1,
|
|
mPlayer_ANIM_UMBRELLA1,
|
|
mPlayer_ANIM_UMBRELLA1,
|
|
mPlayer_ANIM_UMBRELLA1,
|
|
mPlayer_ANIM_UMBRELLA1,
|
|
mPlayer_ANIM_UMBRELLA1,
|
|
mPlayer_ANIM_UMBRELLA1,
|
|
mPlayer_ANIM_UMBRELLA1,
|
|
mPlayer_ANIM_UMBRELLA1,
|
|
mPlayer_ANIM_UMBRELLA1,
|
|
mPlayer_ANIM_UMBRELLA1,
|
|
mPlayer_ANIM_UMBRELLA1,
|
|
mPlayer_ANIM_UMBRELLA1,
|
|
mPlayer_ANIM_UMBRELLA1,
|
|
mPlayer_ANIM_UMBRELLA1,
|
|
mPlayer_ANIM_UMBRELLA1,
|
|
mPlayer_ANIM_UMBRELLA1,
|
|
mPlayer_ANIM_SAO1,
|
|
mPlayer_ANIM_SAO1,
|
|
mPlayer_ANIM_SCOOP1,
|
|
mPlayer_ANIM_SCOOP1,
|
|
mPlayer_ANIM_KAZA1,
|
|
mPlayer_ANIM_KAZA1,
|
|
mPlayer_ANIM_KAZA1,
|
|
mPlayer_ANIM_KAZA1,
|
|
mPlayer_ANIM_KAZA1,
|
|
mPlayer_ANIM_KAZA1,
|
|
mPlayer_ANIM_KAZA1,
|
|
mPlayer_ANIM_KAZA1,
|
|
mPlayer_ANIM_KAZA1,
|
|
mPlayer_ANIM_KAZA1,
|
|
mPlayer_ANIM_KAZA1,
|
|
mPlayer_ANIM_KAZA1,
|
|
mPlayer_ANIM_KAZA1,
|
|
mPlayer_ANIM_KAZA1,
|
|
mPlayer_ANIM_KAZA1,
|
|
mPlayer_ANIM_KAZA1,
|
|
mPlayer_ANIM_UTIWA_WAIT1,
|
|
mPlayer_ANIM_UTIWA_WAIT1,
|
|
mPlayer_ANIM_UTIWA_WAIT1,
|
|
mPlayer_ANIM_UTIWA_WAIT1,
|
|
mPlayer_ANIM_UTIWA_WAIT1,
|
|
mPlayer_ANIM_UTIWA_WAIT1,
|
|
mPlayer_ANIM_UTIWA_WAIT1,
|
|
mPlayer_ANIM_UTIWA_WAIT1,
|
|
mPlayer_ANIM_WAIT1,
|
|
};
|
|
// clang-format on
|
|
|
|
return data[item_kind];
|
|
}
|
|
|
|
return -1;
|
|
}
|
|
|
|
extern int mPlib_Get_BasicPartTableIndex_fromAnimeIndex(int anim_idx) {
|
|
if (anim_idx >= 0 && anim_idx < mPlayer_ANIM_NUM) {
|
|
// clang-format off
|
|
static const s8 data[] = {
|
|
mPlayer_PART_TABLE_NORMAL,
|
|
mPlayer_PART_TABLE_NORMAL,
|
|
mPlayer_PART_TABLE_AXE,
|
|
mPlayer_PART_TABLE_NORMAL,
|
|
mPlayer_PART_TABLE_NORMAL,
|
|
mPlayer_PART_TABLE_NORMAL,
|
|
mPlayer_PART_TABLE_NORMAL,
|
|
mPlayer_PART_TABLE_PICK_UP,
|
|
mPlayer_PART_TABLE_NORMAL,
|
|
mPlayer_PART_TABLE_NORMAL,
|
|
mPlayer_PART_TABLE_NORMAL,
|
|
mPlayer_PART_TABLE_NORMAL,
|
|
mPlayer_PART_TABLE_NORMAL,
|
|
mPlayer_PART_TABLE_NORMAL,
|
|
mPlayer_PART_TABLE_NORMAL,
|
|
mPlayer_PART_TABLE_NORMAL,
|
|
mPlayer_PART_TABLE_NORMAL,
|
|
mPlayer_PART_TABLE_NORMAL,
|
|
mPlayer_PART_TABLE_NET,
|
|
mPlayer_PART_TABLE_NORMAL,
|
|
mPlayer_PART_TABLE_NORMAL,
|
|
mPlayer_PART_TABLE_NORMAL,
|
|
mPlayer_PART_TABLE_NORMAL,
|
|
mPlayer_PART_TABLE_NORMAL,
|
|
mPlayer_PART_TABLE_NORMAL,
|
|
mPlayer_PART_TABLE_NORMAL,
|
|
mPlayer_PART_TABLE_NORMAL,
|
|
mPlayer_PART_TABLE_NORMAL,
|
|
mPlayer_PART_TABLE_NORMAL,
|
|
mPlayer_PART_TABLE_NET,
|
|
mPlayer_PART_TABLE_NORMAL,
|
|
mPlayer_PART_TABLE_NORMAL,
|
|
mPlayer_PART_TABLE_NORMAL,
|
|
mPlayer_PART_TABLE_NORMAL,
|
|
mPlayer_PART_TABLE_NORMAL,
|
|
mPlayer_PART_TABLE_NORMAL,
|
|
mPlayer_PART_TABLE_NORMAL,
|
|
mPlayer_PART_TABLE_NORMAL,
|
|
mPlayer_PART_TABLE_NORMAL,
|
|
mPlayer_PART_TABLE_NORMAL,
|
|
mPlayer_PART_TABLE_NORMAL,
|
|
mPlayer_PART_TABLE_NORMAL,
|
|
mPlayer_PART_TABLE_NORMAL,
|
|
mPlayer_PART_TABLE_NORMAL,
|
|
mPlayer_PART_TABLE_NORMAL,
|
|
mPlayer_PART_TABLE_NORMAL,
|
|
mPlayer_PART_TABLE_NORMAL,
|
|
mPlayer_PART_TABLE_NORMAL,
|
|
mPlayer_PART_TABLE_NORMAL,
|
|
mPlayer_PART_TABLE_NORMAL,
|
|
mPlayer_PART_TABLE_NORMAL,
|
|
mPlayer_PART_TABLE_NORMAL,
|
|
mPlayer_PART_TABLE_NORMAL,
|
|
mPlayer_PART_TABLE_NORMAL,
|
|
mPlayer_PART_TABLE_NORMAL,
|
|
mPlayer_PART_TABLE_NORMAL,
|
|
mPlayer_PART_TABLE_NORMAL,
|
|
mPlayer_PART_TABLE_NORMAL,
|
|
mPlayer_PART_TABLE_NORMAL,
|
|
mPlayer_PART_TABLE_NORMAL,
|
|
mPlayer_PART_TABLE_NORMAL,
|
|
mPlayer_PART_TABLE_NORMAL,
|
|
mPlayer_PART_TABLE_NORMAL,
|
|
mPlayer_PART_TABLE_NORMAL,
|
|
mPlayer_PART_TABLE_NORMAL,
|
|
mPlayer_PART_TABLE_NORMAL,
|
|
mPlayer_PART_TABLE_NORMAL,
|
|
mPlayer_PART_TABLE_AXE,
|
|
mPlayer_PART_TABLE_NORMAL,
|
|
mPlayer_PART_TABLE_NORMAL,
|
|
mPlayer_PART_TABLE_NORMAL,
|
|
mPlayer_PART_TABLE_NORMAL,
|
|
mPlayer_PART_TABLE_NORMAL,
|
|
mPlayer_PART_TABLE_NORMAL,
|
|
mPlayer_PART_TABLE_NORMAL,
|
|
mPlayer_PART_TABLE_NORMAL,
|
|
mPlayer_PART_TABLE_NORMAL,
|
|
mPlayer_PART_TABLE_PICK_UP,
|
|
mPlayer_PART_TABLE_NORMAL,
|
|
mPlayer_PART_TABLE_NORMAL,
|
|
mPlayer_PART_TABLE_NORMAL,
|
|
mPlayer_PART_TABLE_PICK_UP,
|
|
mPlayer_PART_TABLE_PICK_UP,
|
|
mPlayer_PART_TABLE_AXE,
|
|
mPlayer_PART_TABLE_NORMAL,
|
|
mPlayer_PART_TABLE_NORMAL,
|
|
mPlayer_PART_TABLE_NORMAL,
|
|
mPlayer_PART_TABLE_NORMAL,
|
|
mPlayer_PART_TABLE_NORMAL,
|
|
mPlayer_PART_TABLE_NORMAL,
|
|
mPlayer_PART_TABLE_NORMAL,
|
|
mPlayer_PART_TABLE_NORMAL,
|
|
mPlayer_PART_TABLE_NORMAL,
|
|
mPlayer_PART_TABLE_NORMAL,
|
|
mPlayer_PART_TABLE_NORMAL,
|
|
mPlayer_PART_TABLE_NORMAL,
|
|
mPlayer_PART_TABLE_NORMAL,
|
|
mPlayer_PART_TABLE_NORMAL,
|
|
mPlayer_PART_TABLE_NORMAL,
|
|
mPlayer_PART_TABLE_NORMAL,
|
|
mPlayer_PART_TABLE_NORMAL,
|
|
mPlayer_PART_TABLE_NORMAL,
|
|
mPlayer_PART_TABLE_NORMAL,
|
|
mPlayer_PART_TABLE_NORMAL,
|
|
mPlayer_PART_TABLE_NORMAL,
|
|
mPlayer_PART_TABLE_NORMAL,
|
|
mPlayer_PART_TABLE_NORMAL,
|
|
mPlayer_PART_TABLE_NORMAL,
|
|
mPlayer_PART_TABLE_NORMAL,
|
|
mPlayer_PART_TABLE_NORMAL,
|
|
mPlayer_PART_TABLE_NORMAL,
|
|
mPlayer_PART_TABLE_NORMAL,
|
|
mPlayer_PART_TABLE_NORMAL,
|
|
mPlayer_PART_TABLE_NORMAL,
|
|
mPlayer_PART_TABLE_NORMAL,
|
|
mPlayer_PART_TABLE_NORMAL,
|
|
mPlayer_PART_TABLE_NORMAL,
|
|
mPlayer_PART_TABLE_NORMAL,
|
|
mPlayer_PART_TABLE_NORMAL,
|
|
mPlayer_PART_TABLE_NORMAL,
|
|
mPlayer_PART_TABLE_NORMAL,
|
|
mPlayer_PART_TABLE_NORMAL,
|
|
mPlayer_PART_TABLE_NORMAL,
|
|
mPlayer_PART_TABLE_NORMAL,
|
|
mPlayer_PART_TABLE_NORMAL,
|
|
mPlayer_PART_TABLE_NORMAL,
|
|
mPlayer_PART_TABLE_NORMAL,
|
|
mPlayer_PART_TABLE_NORMAL,
|
|
mPlayer_PART_TABLE_NORMAL,
|
|
mPlayer_PART_TABLE_NORMAL,
|
|
mPlayer_PART_TABLE_NORMAL,
|
|
mPlayer_PART_TABLE_NET,
|
|
mPlayer_PART_TABLE_PICK_UP,
|
|
mPlayer_PART_TABLE_PICK_UP,
|
|
mPlayer_PART_TABLE_NORMAL,
|
|
mPlayer_PART_TABLE_NORMAL,
|
|
mPlayer_PART_TABLE_NORMAL,
|
|
mPlayer_PART_TABLE_NORMAL,
|
|
mPlayer_PART_TABLE_NORMAL,
|
|
mPlayer_PART_TABLE_NET,
|
|
mPlayer_PART_TABLE_NET,
|
|
mPlayer_PART_TABLE_NORMAL,
|
|
mPlayer_PART_TABLE_NORMAL,
|
|
mPlayer_PART_TABLE_NORMAL,
|
|
mPlayer_PART_TABLE_NORMAL,
|
|
mPlayer_PART_TABLE_NORMAL,
|
|
mPlayer_PART_TABLE_NORMAL,
|
|
mPlayer_PART_TABLE_NORMAL,
|
|
mPlayer_PART_TABLE_NORMAL,
|
|
mPlayer_PART_TABLE_NORMAL,
|
|
mPlayer_PART_TABLE_NORMAL,
|
|
mPlayer_PART_TABLE_NORMAL,
|
|
mPlayer_PART_TABLE_NORMAL,
|
|
mPlayer_PART_TABLE_NORMAL,
|
|
mPlayer_PART_TABLE_NORMAL,
|
|
mPlayer_PART_TABLE_NORMAL,
|
|
mPlayer_PART_TABLE_NORMAL,
|
|
};
|
|
// clang-format on
|
|
|
|
return data[anim_idx];
|
|
}
|
|
|
|
return -1;
|
|
}
|
|
|
|
extern Gfx tol_axe_1_model[];
|
|
extern Gfx tol_axe_1_b_model[];
|
|
extern Gfx tol_axe_1_c_model[];
|
|
extern Gfx tol_axe_2_model[];
|
|
extern cKF_Skeleton_R_c cKF_bs_r_tol_net_1;
|
|
extern cKF_Skeleton_R_c cKF_bs_r_tol_net_2;
|
|
extern cKF_Animation_R_c cKF_ba_r_tol_net_1_get_m1;
|
|
extern cKF_Animation_R_c cKF_ba_r_tol_net_1_net_swing1;
|
|
extern cKF_Animation_R_c cKF_ba_r_tol_net_1_kamae_main_m1;
|
|
extern cKF_Animation_R_c cKF_ba_r_tol_net_1_kokeru_getup_n1;
|
|
extern cKF_Animation_R_c cKF_ba_r_tol_net_1_kokeru_n1;
|
|
extern cKF_Animation_R_c cKF_ba_r_tol_net_1_swing_wait1;
|
|
extern cKF_Animation_R_c cKF_ba_r_tol_net_1_yatta_m1;
|
|
extern cKF_Skeleton_R_c cKF_bs_r_tol_sao_1;
|
|
extern cKF_Skeleton_R_c cKF_bs_r_tol_sao_2;
|
|
extern cKF_Animation_R_c cKF_ba_r_tol_sao_1_sao_get_t1;
|
|
extern cKF_Animation_R_c cKF_ba_r_tol_sao_1_sao_move1;
|
|
extern cKF_Animation_R_c cKF_ba_r_tol_sao_1_sao_sinari1;
|
|
extern cKF_Animation_R_c cKF_ba_r_tol_sao_1_sao_swing1;
|
|
extern cKF_Animation_R_c cKF_ba_r_tol_sao_1_sao_wait1;
|
|
extern cKF_Animation_R_c cKF_ba_r_tol_sao_1_not_sao_swing1;
|
|
extern Gfx tol_scoop_1_model[];
|
|
extern Gfx tol_scoop_2_model[];
|
|
extern cKF_Skeleton_R_c cKF_bs_r_tol_balloon1;
|
|
extern cKF_Skeleton_R_c cKF_bs_r_tol_balloon2;
|
|
extern cKF_Skeleton_R_c cKF_bs_r_tol_balloon3;
|
|
extern cKF_Skeleton_R_c cKF_bs_r_tol_balloon4;
|
|
extern cKF_Skeleton_R_c cKF_bs_r_tol_balloon5;
|
|
extern cKF_Skeleton_R_c cKF_bs_r_tol_balloon6;
|
|
extern cKF_Skeleton_R_c cKF_bs_r_tol_balloon7;
|
|
extern cKF_Skeleton_R_c cKF_bs_r_tol_balloon8;
|
|
extern cKF_Animation_R_c cKF_ba_r_tol_balloon1_wait;
|
|
extern cKF_Animation_R_c cKF_ba_r_tol_balloon1_gyaza1;
|
|
extern cKF_Skeleton_R_c cKF_bs_r_tol_kaza1;
|
|
extern cKF_Skeleton_R_c cKF_bs_r_tol_kaza2;
|
|
extern cKF_Skeleton_R_c cKF_bs_r_tol_kaza3;
|
|
extern cKF_Skeleton_R_c cKF_bs_r_tol_kaza4;
|
|
extern cKF_Skeleton_R_c cKF_bs_r_tol_kaza5;
|
|
extern cKF_Skeleton_R_c cKF_bs_r_tol_kaza6;
|
|
extern cKF_Skeleton_R_c cKF_bs_r_tol_kaza7;
|
|
extern cKF_Skeleton_R_c cKF_bs_r_tol_kaza8;
|
|
extern cKF_Animation_R_c cKF_ba_r_tol_kaza1_wait;
|
|
extern Gfx tol_fan1_model[];
|
|
extern Gfx tol_fan2_model[];
|
|
extern Gfx tol_fan3_model[];
|
|
extern Gfx tol_fan4_model[];
|
|
extern Gfx tol_fan5_model[];
|
|
extern Gfx tol_fan6_model[];
|
|
extern Gfx tol_fan7_model[];
|
|
extern Gfx tol_fan8_model[];
|
|
|
|
extern void* mPlib_Get_Item_DataPointer(int data_kind) {
|
|
if (mPlayer_ITEM_DATA_VALID(data_kind)) {
|
|
static void* mPlib_Item_DataPointer[] = {
|
|
tol_axe_1_model,
|
|
tol_axe_1_b_model,
|
|
tol_axe_1_c_model,
|
|
tol_axe_2_model,
|
|
&cKF_bs_r_tol_net_1,
|
|
&cKF_bs_r_tol_net_2,
|
|
&cKF_ba_r_tol_net_1_get_m1,
|
|
&cKF_ba_r_tol_net_1_net_swing1,
|
|
&cKF_ba_r_tol_net_1_kamae_main_m1,
|
|
&cKF_ba_r_tol_net_1_kokeru_getup_n1,
|
|
&cKF_ba_r_tol_net_1_kokeru_n1,
|
|
&cKF_ba_r_tol_net_1_swing_wait1,
|
|
&cKF_ba_r_tol_net_1_yatta_m1,
|
|
&cKF_bs_r_tol_sao_1,
|
|
&cKF_bs_r_tol_sao_2,
|
|
&cKF_ba_r_tol_sao_1_sao_get_t1,
|
|
&cKF_ba_r_tol_sao_1_sao_move1,
|
|
&cKF_ba_r_tol_sao_1_sao_sinari1,
|
|
&cKF_ba_r_tol_sao_1_sao_swing1,
|
|
&cKF_ba_r_tol_sao_1_sao_wait1,
|
|
&cKF_ba_r_tol_sao_1_not_sao_swing1,
|
|
tol_scoop_1_model,
|
|
tol_scoop_2_model,
|
|
&cKF_bs_r_tol_balloon1,
|
|
&cKF_bs_r_tol_balloon2,
|
|
&cKF_bs_r_tol_balloon3,
|
|
&cKF_bs_r_tol_balloon4,
|
|
&cKF_bs_r_tol_balloon5,
|
|
&cKF_bs_r_tol_balloon6,
|
|
&cKF_bs_r_tol_balloon7,
|
|
&cKF_bs_r_tol_balloon8,
|
|
&cKF_ba_r_tol_balloon1_wait,
|
|
&cKF_ba_r_tol_balloon1_gyaza1,
|
|
&cKF_bs_r_tol_kaza1,
|
|
&cKF_bs_r_tol_kaza2,
|
|
&cKF_bs_r_tol_kaza3,
|
|
&cKF_bs_r_tol_kaza4,
|
|
&cKF_bs_r_tol_kaza5,
|
|
&cKF_bs_r_tol_kaza6,
|
|
&cKF_bs_r_tol_kaza7,
|
|
&cKF_bs_r_tol_kaza8,
|
|
&cKF_ba_r_tol_kaza1_wait,
|
|
tol_fan1_model,
|
|
tol_fan2_model,
|
|
tol_fan3_model,
|
|
tol_fan4_model,
|
|
tol_fan5_model,
|
|
tol_fan6_model,
|
|
tol_fan7_model,
|
|
tol_fan8_model,
|
|
};
|
|
|
|
return mPlib_Item_DataPointer[data_kind];
|
|
}
|
|
|
|
return NULL;
|
|
}
|
|
|
|
extern int mPlib_Get_BasicItemShapeIndex_fromItemKind(int item_kind) {
|
|
if (item_kind >= 0 && item_kind < (mPlayer_ITEM_KIND_NUM + 1)) {
|
|
// clang-format off
|
|
static const s8 data[] = {
|
|
mPlayer_ITEM_DATA_AXE,
|
|
mPlayer_ITEM_DATA_AXE,
|
|
mPlayer_ITEM_DATA_AXE_B,
|
|
mPlayer_ITEM_DATA_AXE_B,
|
|
mPlayer_ITEM_DATA_AXE_B,
|
|
mPlayer_ITEM_DATA_AXE_C,
|
|
mPlayer_ITEM_DATA_AXE_C,
|
|
mPlayer_ITEM_DATA_AXE_C,
|
|
mPlayer_ITEM_DATA_GOLD_AXE,
|
|
mPlayer_ITEM_DATA_NET,
|
|
mPlayer_ITEM_DATA_GOLD_NET,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
mPlayer_ITEM_DATA_ROD,
|
|
mPlayer_ITEM_DATA_GOLD_ROD,
|
|
mPlayer_ITEM_DATA_SHOVEL,
|
|
mPlayer_ITEM_DATA_GOLD_SHOVEL,
|
|
mPlayer_ITEM_DATA_BALLOON1,
|
|
mPlayer_ITEM_DATA_BALLOON2,
|
|
mPlayer_ITEM_DATA_BALLOON3,
|
|
mPlayer_ITEM_DATA_BALLOON4,
|
|
mPlayer_ITEM_DATA_BALLOON5,
|
|
mPlayer_ITEM_DATA_BALLOON6,
|
|
mPlayer_ITEM_DATA_BALLOON7,
|
|
mPlayer_ITEM_DATA_BALLOON8,
|
|
mPlayer_ITEM_DATA_PINWHEEL1,
|
|
mPlayer_ITEM_DATA_PINWHEEL2,
|
|
mPlayer_ITEM_DATA_PINWHEEL3,
|
|
mPlayer_ITEM_DATA_PINWHEEL4,
|
|
mPlayer_ITEM_DATA_PINWHEEL5,
|
|
mPlayer_ITEM_DATA_PINWHEEL6,
|
|
mPlayer_ITEM_DATA_PINWHEEL7,
|
|
mPlayer_ITEM_DATA_PINWHEEL8,
|
|
mPlayer_ITEM_DATA_FAN1,
|
|
mPlayer_ITEM_DATA_FAN2,
|
|
mPlayer_ITEM_DATA_FAN3,
|
|
mPlayer_ITEM_DATA_FAN4,
|
|
mPlayer_ITEM_DATA_FAN5,
|
|
mPlayer_ITEM_DATA_FAN6,
|
|
mPlayer_ITEM_DATA_FAN7,
|
|
mPlayer_ITEM_DATA_FAN8,
|
|
0x00,
|
|
};
|
|
// clang-format on
|
|
|
|
return data[item_kind];
|
|
}
|
|
|
|
return -1;
|
|
}
|
|
|
|
extern int mPlib_Get_BasicItemAnimeIndex_fromItemKind(int item_kind) {
|
|
if (item_kind >= 0 && item_kind < (mPlayer_ITEM_KIND_NUM + 1)) {
|
|
// clang-format off
|
|
static const s8 data[] = {
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
mPlayer_ITEM_DATA_KAMAE_MAIN_M,
|
|
mPlayer_ITEM_DATA_KAMAE_MAIN_M,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
mPlayer_ITEM_DATA_ROD_WAIT,
|
|
mPlayer_ITEM_DATA_ROD_WAIT,
|
|
-1,
|
|
-1,
|
|
mPlayer_ITEM_DATA_BALLOON_GYAZA,
|
|
mPlayer_ITEM_DATA_BALLOON_GYAZA,
|
|
mPlayer_ITEM_DATA_BALLOON_GYAZA,
|
|
mPlayer_ITEM_DATA_BALLOON_GYAZA,
|
|
mPlayer_ITEM_DATA_BALLOON_GYAZA,
|
|
mPlayer_ITEM_DATA_BALLOON_GYAZA,
|
|
mPlayer_ITEM_DATA_BALLOON_GYAZA,
|
|
mPlayer_ITEM_DATA_BALLOON_GYAZA,
|
|
mPlayer_ITEM_DATA_PINWHEEL_WAIT,
|
|
mPlayer_ITEM_DATA_PINWHEEL_WAIT,
|
|
mPlayer_ITEM_DATA_PINWHEEL_WAIT,
|
|
mPlayer_ITEM_DATA_PINWHEEL_WAIT,
|
|
mPlayer_ITEM_DATA_PINWHEEL_WAIT,
|
|
mPlayer_ITEM_DATA_PINWHEEL_WAIT,
|
|
mPlayer_ITEM_DATA_PINWHEEL_WAIT,
|
|
mPlayer_ITEM_DATA_PINWHEEL_WAIT,
|
|
-1,
|
|
0x00,
|
|
0x00,
|
|
0x00,
|
|
0x00,
|
|
0x00,
|
|
0x00,
|
|
0x00,
|
|
0x00
|
|
};
|
|
// clang-format on
|
|
|
|
return data[item_kind];
|
|
}
|
|
|
|
return -1;
|
|
}
|
|
|
|
extern u8 mPlib_Get_Item_DataPointerType(int data_idx) {
|
|
if (data_idx >= 0 && data_idx < mPlayer_ITEM_DATA_NUM) {
|
|
// clang-format off
|
|
static const u8 mPlib_Item_DataPointerType[] = {
|
|
mPlayer_ITEM_DATA_TYPE_GFX,
|
|
mPlayer_ITEM_DATA_TYPE_GFX,
|
|
mPlayer_ITEM_DATA_TYPE_GFX,
|
|
mPlayer_ITEM_DATA_TYPE_GFX,
|
|
mPlayer_ITEM_DATA_TYPE_SKELETON,
|
|
mPlayer_ITEM_DATA_TYPE_SKELETON,
|
|
mPlayer_ITEM_DATA_TYPE_NET_ANIMATION,
|
|
mPlayer_ITEM_DATA_TYPE_NET_ANIMATION,
|
|
mPlayer_ITEM_DATA_TYPE_NET_ANIMATION,
|
|
mPlayer_ITEM_DATA_TYPE_NET_ANIMATION,
|
|
mPlayer_ITEM_DATA_TYPE_NET_ANIMATION,
|
|
mPlayer_ITEM_DATA_TYPE_NET_ANIMATION,
|
|
mPlayer_ITEM_DATA_TYPE_NET_ANIMATION,
|
|
mPlayer_ITEM_DATA_TYPE_SKELETON,
|
|
mPlayer_ITEM_DATA_TYPE_SKELETON,
|
|
mPlayer_ITEM_DATA_TYPE_ROD_ANIMATION,
|
|
mPlayer_ITEM_DATA_TYPE_ROD_ANIMATION,
|
|
mPlayer_ITEM_DATA_TYPE_ROD_ANIMATION,
|
|
mPlayer_ITEM_DATA_TYPE_ROD_ANIMATION,
|
|
mPlayer_ITEM_DATA_TYPE_ROD_ANIMATION,
|
|
mPlayer_ITEM_DATA_TYPE_ROD_ANIMATION,
|
|
mPlayer_ITEM_DATA_TYPE_GFX,
|
|
mPlayer_ITEM_DATA_TYPE_GFX,
|
|
mPlayer_ITEM_DATA_TYPE_SKELETON,
|
|
mPlayer_ITEM_DATA_TYPE_SKELETON,
|
|
mPlayer_ITEM_DATA_TYPE_SKELETON,
|
|
mPlayer_ITEM_DATA_TYPE_SKELETON,
|
|
mPlayer_ITEM_DATA_TYPE_SKELETON,
|
|
mPlayer_ITEM_DATA_TYPE_SKELETON,
|
|
mPlayer_ITEM_DATA_TYPE_SKELETON,
|
|
mPlayer_ITEM_DATA_TYPE_SKELETON,
|
|
mPlayer_ITEM_DATA_TYPE_BALLOON_ANIMATION,
|
|
mPlayer_ITEM_DATA_TYPE_BALLOON_ANIMATION,
|
|
mPlayer_ITEM_DATA_TYPE_SKELETON,
|
|
mPlayer_ITEM_DATA_TYPE_SKELETON,
|
|
mPlayer_ITEM_DATA_TYPE_SKELETON,
|
|
mPlayer_ITEM_DATA_TYPE_SKELETON,
|
|
mPlayer_ITEM_DATA_TYPE_SKELETON,
|
|
mPlayer_ITEM_DATA_TYPE_SKELETON,
|
|
mPlayer_ITEM_DATA_TYPE_SKELETON,
|
|
mPlayer_ITEM_DATA_TYPE_SKELETON,
|
|
mPlayer_ITEM_DATA_TYPE_PINWHEEL_ANIMATION,
|
|
mPlayer_ITEM_DATA_TYPE_GFX,
|
|
mPlayer_ITEM_DATA_TYPE_GFX,
|
|
mPlayer_ITEM_DATA_TYPE_GFX,
|
|
mPlayer_ITEM_DATA_TYPE_GFX,
|
|
mPlayer_ITEM_DATA_TYPE_GFX,
|
|
mPlayer_ITEM_DATA_TYPE_GFX,
|
|
mPlayer_ITEM_DATA_TYPE_GFX,
|
|
mPlayer_ITEM_DATA_TYPE_GFX,
|
|
};
|
|
// clang-format on
|
|
|
|
return mPlib_Item_DataPointerType[data_idx];
|
|
}
|
|
|
|
return mPlayer_ITEM_DATA_TYPE_GFX;
|
|
}
|
|
|
|
static u32 mPlib_Get_UseFaceRom_index(int sex, int face_type, int swell, int decoy, int res_type) {
|
|
int swell_flag = swell != FALSE;
|
|
int decoy_flag = decoy != FALSE;
|
|
int ofs;
|
|
|
|
if (res_type != mPlayer_USE_FACE_ROM_TYPE_TEX) {
|
|
ofs = face_type * 8;
|
|
ofs += sex * 64;
|
|
ofs += swell_flag * 128;
|
|
} else {
|
|
ofs = decoy_flag * 32;
|
|
ofs += face_type;
|
|
ofs += sex * 8;
|
|
ofs += swell_flag * 16;
|
|
}
|
|
|
|
return ofs;
|
|
}
|
|
|
|
static u32 mPlib_Get_UseFaceTexRom_p_common(int sex, int face_type, int swell, int decoy) {
|
|
u32 idx = mPlib_Get_UseFaceRom_index(sex, face_type, swell, decoy, mPlayer_USE_FACE_ROM_TYPE_TEX);
|
|
u32 base_address = JW_GetAramAddress(RESOURCE_FACE_BOY);
|
|
|
|
return base_address + idx * 0xE20;
|
|
}
|
|
|
|
static u32 mPlib_Get_UseFaceTexRom_p(void) {
|
|
return mPlib_Get_UseFaceTexRom_p_common(Now_Private->gender, Now_Private->face, Common_Get(player_bee_swell_flag),
|
|
Common_Get(player_decoy_flag));
|
|
}
|
|
|
|
static u32 mPlib_Get_UseFacePalletRom_p(void) {
|
|
int sunburn_rank = Now_Private->sunburn.rank;
|
|
int decoy_flag = Common_Get(player_decoy_flag);
|
|
u32 base;
|
|
u32 ofs;
|
|
|
|
if (sunburn_rank > 0 && decoy_flag == FALSE) {
|
|
u32 idx = mPlib_Get_UseFaceRom_index(Now_Private->gender, Now_Private->face, Common_Get(player_bee_swell_flag),
|
|
FALSE, mPlayer_USE_FACE_ROM_TYPE_PAL);
|
|
|
|
base = mPlib_Get_UseFaceTexRom_p_common(mPr_SEX_FEMALE, mPr_FACE_TYPE7, TRUE, TRUE);
|
|
ofs = 0xE00 + (sunburn_rank + idx) * 0x20;
|
|
} else {
|
|
base = mPlib_Get_UseFaceTexRom_p();
|
|
ofs = 0xE00;
|
|
}
|
|
|
|
return base + ofs;
|
|
}
|
|
|
|
extern void mPlib_Object_Exchange_keep_new_PlayerMdl(GAME_PLAY* play) {
|
|
Actor_data* player_data = play->player_data;
|
|
|
|
actor_dlftbls[player_data->profile].profile->obj_bank_id = mPlib_get_player_Object_Bank();
|
|
}
|
|
|
|
static int mPlib_Object_Exchange_keep_new(GAME_PLAY* play, s16 bank, u32 src, u32 size, int aram_flag) {
|
|
Object_Exchange_c* obj_ex = &play->object_exchange;
|
|
Object_Bank_c* bank_p = &obj_ex->banks[obj_ex->bank_idx];
|
|
|
|
bank_p->bank_id = bank;
|
|
bank_p->dma_start = obj_ex->next_bank_ram_address;
|
|
bank_p->ram_start = obj_ex->next_bank_ram_address;
|
|
bank_p->size = size;
|
|
|
|
if (src != 0) {
|
|
if (aram_flag) {
|
|
_JW_GetResourceAram(src, (u8*)bank_p->dma_start, size);
|
|
} else {
|
|
bcopy((void*)src, bank_p->dma_start, size);
|
|
}
|
|
|
|
DCStoreRangeNoSync(bank_p->ram_start, size);
|
|
}
|
|
|
|
if (obj_ex->bank_idx < (mSc_OBJECT_BANK_NUM - 1)) {
|
|
obj_ex->next_bank_ram_address = (char*)ALIGN_NEXT((u32)obj_ex->next_bank_ram_address + size, 32);
|
|
obj_ex->bank_idx++;
|
|
}
|
|
|
|
return mSc_bank_regist_check(obj_ex, bank);
|
|
}
|
|
|
|
static int Player_bank_ID_Index = 0;
|
|
|
|
static int Change_Player_bank_ID_Index(void) {
|
|
Player_bank_ID_Index ^= 1;
|
|
return Player_bank_ID_Index;
|
|
}
|
|
|
|
static int Player_face_bank_ID_Index = 0;
|
|
|
|
static int Change_Player_face_bank_ID_Index(void) {
|
|
Player_face_bank_ID_Index ^= 1;
|
|
return Player_face_bank_ID_Index;
|
|
}
|
|
|
|
extern u32 mPlib_Get_PlayerTexRom_p(int idx) {
|
|
if (mPlib_Check_PlayerClothInAram(idx)) {
|
|
u32 addr = JW_GetAramAddress(RESOURCE_TEX_BOY);
|
|
addr += idx * mNW_DESIGN_TEX_SIZE;
|
|
return addr;
|
|
} else {
|
|
int org_idx = idx - (CLOTH_NUM + 1);
|
|
|
|
if (!mPr_ORIGINAL_DESIGN_IDX_VALID(org_idx)) {
|
|
org_idx = 0;
|
|
}
|
|
|
|
return (u32)Now_Private->my_org[org_idx & 7].design.data;
|
|
}
|
|
}
|
|
|
|
static u32 mPlib_Get_UseTexRom_p(void) {
|
|
return mPlib_Get_PlayerTexRom_p(Now_Private->cloth.idx);
|
|
}
|
|
|
|
static int Player_Tex_bank_ID[] = { -1, -1 };
|
|
|
|
extern void mPlib_Object_Exchange_keep_new_PlayerTex(GAME_PLAY* play, int bank_idx, int bank) {
|
|
u32 tex = mPlib_Get_UseTexRom_p();
|
|
int idx = mPlib_Object_Exchange_keep_new(play, ACTOR_OBJ_BANK_14, tex, mNW_DESIGN_TEX_SIZE,
|
|
mPlib_Check_PlayerClothInAram(Now_Private->cloth.idx));
|
|
|
|
Player_Tex_bank_ID[bank_idx] = bank + idx;
|
|
}
|
|
|
|
extern u32 mPlib_Get_PlayerPalletRom_p(int idx) {
|
|
if (mPlib_Check_PlayerClothInAram(idx)) {
|
|
u32 addr = JW_GetAramAddress(RESOURCE_PALLET_BOY);
|
|
addr += idx * mNW_PALETTE_SIZE;
|
|
return addr;
|
|
} else {
|
|
int org_idx = idx - (CLOTH_NUM + 1);
|
|
|
|
if (!mPr_ORIGINAL_DESIGN_IDX_VALID(org_idx)) {
|
|
org_idx = 0;
|
|
}
|
|
|
|
return (u32)mNW_PaletteIdx2Palette(Now_Private->my_org[org_idx & 7].palette);
|
|
}
|
|
}
|
|
|
|
static u32 mPlib_Get_UsePalletRom_p(void) {
|
|
return mPlib_Get_PlayerPalletRom_p(Now_Private->cloth.idx);
|
|
}
|
|
|
|
static int Player_Pallet_bank_ID[] = { -1, -1 };
|
|
|
|
extern void mPlib_Object_Exchange_keep_new_PlayerPallet(GAME_PLAY* play, int bank_idx, int bank) {
|
|
u32 pal = mPlib_Get_UsePalletRom_p();
|
|
|
|
Player_Pallet_bank_ID[bank_idx] =
|
|
bank + mPlib_Object_Exchange_keep_new(play, ACTOR_OBJ_BANK_15, pal, mNW_PALETTE_SIZE,
|
|
mPlib_Check_PlayerClothInAram(Now_Private->cloth.idx));
|
|
}
|
|
|
|
extern int mPlib_Check_PlayerClothInAram(int idx) {
|
|
if (idx < (CLOTH_NUM + 1)) {
|
|
return TRUE;
|
|
}
|
|
|
|
return FALSE;
|
|
}
|
|
|
|
static int Player_face_tex_bank_ID = -1;
|
|
|
|
extern void mPlib_Object_Exchange_keep_new_PlayerFaceTex(GAME_PLAY* play) {
|
|
Player_face_tex_bank_ID = mPlib_Object_Exchange_keep_new(play, ACTOR_OBJ_BANK_52, 0, 0xE00, TRUE);
|
|
}
|
|
|
|
static int Player_face_pallet_bank_ID[] = { -1, -1 };
|
|
|
|
extern void mPlib_Object_Exchange_keep_new_PlayerFacePallet(GAME_PLAY* play, int bank, int bank_idx) {
|
|
Player_face_pallet_bank_ID[bank_idx] =
|
|
bank + mPlib_Object_Exchange_keep_new(play, ACTOR_OBJ_BANK_52, 0, mNW_PALETTE_SIZE, TRUE);
|
|
}
|
|
|
|
extern void mPlib_Object_Exchange_keep_Player_dt(GAME_PLAY* play) {
|
|
Player_face_tex_bank_ID = -1;
|
|
Player_face_pallet_bank_ID[0] = -1;
|
|
Player_face_pallet_bank_ID[1] = -1;
|
|
Player_bank_ID_Index = 0;
|
|
Player_face_bank_ID_Index = 0;
|
|
Player_Tex_bank_ID[0] = -1;
|
|
Player_Tex_bank_ID[1] = -1;
|
|
Player_Pallet_bank_ID[0] = -1;
|
|
Player_Pallet_bank_ID[1] = -1;
|
|
}
|
|
|
|
extern u8* mPlib_get_player_tex_p(GAME* game) {
|
|
GAME_PLAY* play = (GAME_PLAY*)game;
|
|
Object_Exchange_c* obj_ex = &play->object_exchange;
|
|
int bank_no = Player_Tex_bank_ID[Player_bank_ID_Index];
|
|
|
|
if (bank_no >= 0 && obj_ex->banks[bank_no].bank_id > 0) {
|
|
return (u8*)obj_ex->banks[bank_no].ram_start;
|
|
}
|
|
|
|
return NULL;
|
|
}
|
|
|
|
extern u16* mPlib_get_player_pallet_p(GAME* game) {
|
|
u8* tex_p = mPlib_get_player_tex_p(game);
|
|
|
|
if (tex_p != NULL) {
|
|
tex_p = tex_p + mNW_DESIGN_TEX_SIZE;
|
|
}
|
|
|
|
return (u16*)tex_p;
|
|
}
|
|
|
|
extern u8* mPlib_get_player_face_p(GAME* game) {
|
|
GAME_PLAY* play = (GAME_PLAY*)game;
|
|
Object_Exchange_c* obj_ex = &play->object_exchange;
|
|
int bank_no = Player_face_tex_bank_ID;
|
|
|
|
if (bank_no >= 0 && obj_ex->banks[bank_no].bank_id > 0) {
|
|
return (u8*)obj_ex->banks[bank_no].ram_start;
|
|
}
|
|
|
|
return NULL;
|
|
}
|
|
|
|
extern u16* mPlib_get_player_face_pallet_p(GAME* game) {
|
|
GAME_PLAY* play = (GAME_PLAY*)game;
|
|
Object_Exchange_c* obj_ex = &play->object_exchange;
|
|
int bank_no = Player_face_pallet_bank_ID[Player_face_bank_ID_Index];
|
|
|
|
if (bank_no >= 0 && obj_ex->banks[bank_no].bank_id > 0) {
|
|
return (u16*)obj_ex->banks[bank_no].ram_start;
|
|
}
|
|
|
|
return NULL;
|
|
}
|
|
|
|
extern void mPlib_change_player_cloth(GAME* game, u16 cloth_idx) {
|
|
int idx = cloth_idx;
|
|
Change_Player_bank_ID_Index();
|
|
|
|
{
|
|
u8* player_tex_p = mPlib_get_player_tex_p(game);
|
|
u32 player_tex_rom_p = mPlib_Get_PlayerTexRom_p(idx);
|
|
|
|
if (mPlib_Check_PlayerClothInAram(idx)) {
|
|
_JW_GetResourceAram(player_tex_rom_p, player_tex_p, mNW_DESIGN_TEX_SIZE);
|
|
} else {
|
|
bcopy((u8*)player_tex_rom_p, player_tex_p, mNW_DESIGN_TEX_SIZE);
|
|
}
|
|
|
|
DCStoreRangeNoSync(player_tex_p, mNW_DESIGN_TEX_SIZE);
|
|
}
|
|
|
|
{
|
|
u16* player_pallet_p = mPlib_get_player_pallet_p(game);
|
|
u32 player_pallet_rom_p = mPlib_Get_PlayerPalletRom_p(idx);
|
|
|
|
if (mPlib_Check_PlayerClothInAram(idx)) {
|
|
_JW_GetResourceAram(player_pallet_rom_p, (u8*)player_pallet_p, mNW_PALETTE_SIZE);
|
|
} else {
|
|
bcopy((u16*)player_pallet_rom_p, player_pallet_p, mNW_PALETTE_SIZE);
|
|
}
|
|
|
|
DCStoreRangeNoSync(player_pallet_p, mNW_PALETTE_SIZE);
|
|
}
|
|
}
|
|
|
|
extern void mPlib_change_player_face_pallet(GAME* game) {
|
|
Change_Player_face_bank_ID_Index();
|
|
|
|
{
|
|
u16* player_face_pallet_p = mPlib_get_player_face_pallet_p(game);
|
|
u32 player_face_pallet_rom_p = mPlib_Get_UseFacePalletRom_p();
|
|
|
|
if (player_face_pallet_p != NULL && player_face_pallet_rom_p != 0) {
|
|
_JW_GetResourceAram(player_face_pallet_rom_p, (u8*)player_face_pallet_p, mNW_PALETTE_SIZE);
|
|
DCStoreRangeNoSync(player_face_pallet_p, mNW_PALETTE_SIZE);
|
|
}
|
|
}
|
|
}
|
|
|
|
extern void mPlib_change_player_face(GAME* game) {
|
|
u8* player_face_p = mPlib_get_player_face_p(game);
|
|
u32 player_face_rom_p = mPlib_Get_UseFaceTexRom_p();
|
|
|
|
if (player_face_p != NULL && player_face_rom_p != 0) {
|
|
_JW_GetResourceAram(player_face_rom_p, player_face_p, 0xE00);
|
|
DCStoreRangeNoSync(player_face_p, 0xE00);
|
|
}
|
|
|
|
mPlib_change_player_face_pallet(game);
|
|
}
|
|
|
|
extern PLAYER_ACTOR* get_player_actor_withoutCheck(GAME_PLAY* play) {
|
|
return (PLAYER_ACTOR*)&play->actor_info.list[ACTOR_PART_PLAYER].actor[0];
|
|
}
|
|
|
|
static int mPlib_check_DynamicLinkFile_m_player(void) {
|
|
return SubmenuArea_IsPlayer() != FALSE;
|
|
}
|
|
|
|
extern int mPlib_get_player_actor_main_index(GAME* game) {
|
|
return GET_PLAYER_ACTOR_GAME(game)->now_main_index;
|
|
}
|
|
|
|
extern int mPlib_get_player_actor_request_main_index(GAME* game) {
|
|
PLAYER_ACTOR* player = GET_PLAYER_ACTOR_GAME(game);
|
|
|
|
if (player->requested_main_index_changed) {
|
|
return player->requested_main_index;
|
|
}
|
|
|
|
return -1;
|
|
}
|
|
|
|
extern cKF_Skeleton_R_c cKF_bs_r_boy_1;
|
|
extern cKF_Skeleton_R_c cKF_bs_r_grl_1;
|
|
|
|
extern cKF_Skeleton_R_c* mPlib_get_player_mdl_p(void) {
|
|
if (Now_Private->gender == mPr_SEX_MALE) {
|
|
return &cKF_bs_r_boy_1;
|
|
} else {
|
|
return &cKF_bs_r_grl_1;
|
|
}
|
|
}
|
|
|
|
extern s16 mPlib_get_player_Object_Bank(void) {
|
|
if (Now_Private->gender == mPr_SEX_MALE) {
|
|
return ACTOR_OBJ_BANK_8;
|
|
} else {
|
|
return ACTOR_OBJ_BANK_51;
|
|
}
|
|
}
|
|
|
|
extern s8 BOY_part_data[][mPlayer_JOINT_NUM + 1];
|
|
|
|
extern void mPlib_DMA_player_Part_Table(s8* part_table_p, int idx) {
|
|
if (idx >= 0 && idx < mPlayer_PART_TABLE_NUM) {
|
|
bcopy(&BOY_part_data[idx], part_table_p, sizeof(BOY_part_data[idx]));
|
|
}
|
|
}
|
|
|
|
extern void mPlib_change_player_cloth_info(mPr_cloth_c* cloth_p, mActor_name_t item) {
|
|
cloth_p->item = item;
|
|
cloth_p->idx = ITEM_IS_CLOTH(item) ? (item - ITM_CLOTH_START) : 0;
|
|
}
|
|
|
|
extern void mPlib_change_player_cloth_info_lv2(Private_c* priv, mActor_name_t item) {
|
|
mPlib_change_player_cloth_info(&priv->cloth, item);
|
|
}
|
|
|
|
extern void mPlib_Load_PlayerTexAndPallet(void* tex_p, void* pal_p, int idx) {
|
|
if (idx >= 0 && idx < (CLOTH_NUM + 1 + mPr_ORIGINAL_DESIGN_COUNT) && tex_p != NULL && pal_p != NULL) {
|
|
u32 tex_rom_p = mPlib_Get_PlayerTexRom_p(idx);
|
|
u32 pal_rom_p = mPlib_Get_PlayerPalletRom_p(idx);
|
|
|
|
if (mPlib_Check_PlayerClothInAram(idx)) {
|
|
_JW_GetResourceAram(tex_rom_p, (u8*)tex_p, mNW_DESIGN_TEX_SIZE);
|
|
_JW_GetResourceAram(pal_rom_p, (u8*)pal_p, mNW_PALETTE_SIZE);
|
|
} else {
|
|
bcopy((u8*)tex_rom_p, tex_p, mNW_DESIGN_TEX_SIZE);
|
|
bcopy((u16*)pal_rom_p, pal_p, mNW_PALETTE_SIZE);
|
|
}
|
|
|
|
DCStoreRangeNoSync(tex_p, mNW_DESIGN_TEX_SIZE);
|
|
DCStoreRangeNoSync(pal_p, mNW_PALETTE_SIZE);
|
|
}
|
|
}
|
|
|
|
static mPlayer_change_data_from_submenu_c change_data_from_submenu;
|
|
|
|
extern mPlayer_change_data_from_submenu_c* mPlib_Get_change_data_from_submenu_p(void) {
|
|
return &change_data_from_submenu;
|
|
}
|
|
|
|
extern void mPlib_Clear_change_data_from_submenu(void) {
|
|
bzero(&change_data_from_submenu, sizeof(change_data_from_submenu));
|
|
}
|
|
|
|
extern void mPlib_request_main_give_from_submenu(mActor_name_t item, int after_mode, int present_flag,
|
|
int surface_flag) {
|
|
mPlayer_change_data_from_submenu_c* change_data_from_submenu_p = mPlib_Get_change_data_from_submenu_p();
|
|
mPlayer_request_give_c* req_give_p = &change_data_from_submenu_p->request_main_data.give;
|
|
|
|
change_data_from_submenu_p->requested_main_index = mPlayer_INDEX_GIVE;
|
|
change_data_from_submenu_p->requested_index_pending = TRUE;
|
|
|
|
req_give_p->item = item;
|
|
req_give_p->mode = after_mode;
|
|
req_give_p->present_flag = present_flag;
|
|
req_give_p->on_surface_flag = surface_flag;
|
|
}
|
|
|
|
extern void mPlib_request_main_putin_scoop_from_submenu(const xyz_t* pos_p, mActor_name_t item, int gold_scoop_flag) {
|
|
mPlayer_change_data_from_submenu_c* change_data_from_submenu_p = mPlib_Get_change_data_from_submenu_p();
|
|
mPlayer_request_putin_scoop_c* req_putin_scoop_p = &change_data_from_submenu_p->request_main_data.putin_scoop;
|
|
|
|
change_data_from_submenu_p->requested_main_index = mPlayer_INDEX_PUTIN_SCOOP;
|
|
change_data_from_submenu_p->requested_index_pending = TRUE;
|
|
|
|
req_putin_scoop_p->dig_pos = *pos_p;
|
|
req_putin_scoop_p->item = item;
|
|
req_putin_scoop_p->get_gold_scoop_flag = gold_scoop_flag;
|
|
}
|
|
|
|
extern void mPlib_request_main_release_creature_gyoei_from_submenu(s16 angle_y, s16 item, int gold_scoop_flag) {
|
|
mPlayer_change_data_from_submenu_c* change_data_from_submenu_p = mPlib_Get_change_data_from_submenu_p();
|
|
mPlayer_request_release_creature_c* req_release_creature_p =
|
|
&change_data_from_submenu_p->request_main_data.release_creature;
|
|
mPlayer_request_release_creature_gyoei_c* release_gyoei_p = &req_release_creature_p->data.gyoei;
|
|
|
|
change_data_from_submenu_p->requested_main_index = mPlayer_INDEX_RELEASE_CREATURE;
|
|
change_data_from_submenu_p->requested_index_pending = TRUE;
|
|
|
|
req_release_creature_p->type = mPlayer_CREATURE_GYOEI;
|
|
req_release_creature_p->gold_scoop_flag = gold_scoop_flag;
|
|
|
|
release_gyoei_p->angle_y = angle_y;
|
|
release_gyoei_p->_02 = item;
|
|
}
|
|
|
|
extern void mPlib_request_main_release_creature_insect_from_submenu(int insect_type, int gold_scoop_flag) {
|
|
mPlayer_change_data_from_submenu_c* change_data_from_submenu_p = mPlib_Get_change_data_from_submenu_p();
|
|
mPlayer_request_release_creature_c* req_release_creature_p =
|
|
&change_data_from_submenu_p->request_main_data.release_creature;
|
|
mPlayer_request_release_creature_insect_c* release_insect_p = &req_release_creature_p->data.insect;
|
|
ACTOR* actorx = GET_PLAYER_ACTOR_NOW_ACTOR();
|
|
|
|
change_data_from_submenu_p->requested_main_index = mPlayer_INDEX_RELEASE_CREATURE;
|
|
change_data_from_submenu_p->requested_index_pending = TRUE;
|
|
|
|
req_release_creature_p->type = mPlayer_CREATURE_INSECT;
|
|
req_release_creature_p->gold_scoop_flag = gold_scoop_flag;
|
|
|
|
release_insect_p->pos.x = actorx->world.position.x + 7.0f * sin_s(actorx->shape_info.rotation.y);
|
|
release_insect_p->pos.y = actorx->world.position.y + 13.0f;
|
|
release_insect_p->pos.z = actorx->world.position.z + 7.0f * cos_s(actorx->shape_info.rotation.y);
|
|
release_insect_p->type = insect_type;
|
|
}
|
|
|
|
extern s8 mPlib_Get_ItemNoToItemKind(mActor_name_t itemNo) {
|
|
switch (itemNo) {
|
|
case ITM_NET:
|
|
return mPlayer_ITEM_KIND_NET;
|
|
case ITM_GOLDEN_NET:
|
|
return mPlayer_ITEM_KIND_GOLD_NET;
|
|
case ITM_AXE:
|
|
return mPlayer_ITEM_KIND_AXE;
|
|
case ITM_AXE_USE_1:
|
|
return mPlayer_ITEM_KIND_AXE_USE_1;
|
|
case ITM_AXE_USE_2:
|
|
return mPlayer_ITEM_KIND_AXE_USE_2;
|
|
case ITM_AXE_USE_3:
|
|
return mPlayer_ITEM_KIND_AXE_USE_3;
|
|
case ITM_AXE_USE_4:
|
|
return mPlayer_ITEM_KIND_AXE_USE_4;
|
|
case ITM_AXE_USE_5:
|
|
return mPlayer_ITEM_KIND_AXE_USE_5;
|
|
case ITM_AXE_USE_6:
|
|
return mPlayer_ITEM_KIND_AXE_USE_6;
|
|
case ITM_AXE_USE_7:
|
|
return mPlayer_ITEM_KIND_AXE_USE_7;
|
|
case ITM_GOLDEN_AXE:
|
|
return mPlayer_ITEM_KIND_GOLD_AXE;
|
|
case ITM_UMBRELLA00:
|
|
return mPlayer_ITEM_KIND_UMBRELLA00;
|
|
case ITM_UMBRELLA01:
|
|
return mPlayer_ITEM_KIND_UMBRELLA01;
|
|
case ITM_UMBRELLA02:
|
|
return mPlayer_ITEM_KIND_UMBRELLA02;
|
|
case ITM_UMBRELLA03:
|
|
return mPlayer_ITEM_KIND_UMBRELLA03;
|
|
case ITM_UMBRELLA04:
|
|
return mPlayer_ITEM_KIND_UMBRELLA04;
|
|
case ITM_UMBRELLA05:
|
|
return mPlayer_ITEM_KIND_UMBRELLA05;
|
|
case ITM_UMBRELLA06:
|
|
return mPlayer_ITEM_KIND_UMBRELLA06;
|
|
case ITM_UMBRELLA07:
|
|
return mPlayer_ITEM_KIND_UMBRELLA07;
|
|
case ITM_UMBRELLA08:
|
|
return mPlayer_ITEM_KIND_UMBRELLA08;
|
|
case ITM_UMBRELLA09:
|
|
return mPlayer_ITEM_KIND_UMBRELLA09;
|
|
case ITM_UMBRELLA10:
|
|
return mPlayer_ITEM_KIND_UMBRELLA10;
|
|
case ITM_UMBRELLA11:
|
|
return mPlayer_ITEM_KIND_UMBRELLA11;
|
|
case ITM_UMBRELLA12:
|
|
return mPlayer_ITEM_KIND_UMBRELLA12;
|
|
case ITM_UMBRELLA13:
|
|
return mPlayer_ITEM_KIND_UMBRELLA13;
|
|
case ITM_UMBRELLA14:
|
|
return mPlayer_ITEM_KIND_UMBRELLA14;
|
|
case ITM_UMBRELLA15:
|
|
return mPlayer_ITEM_KIND_UMBRELLA15;
|
|
case ITM_UMBRELLA16:
|
|
return mPlayer_ITEM_KIND_UMBRELLA16;
|
|
case ITM_UMBRELLA17:
|
|
return mPlayer_ITEM_KIND_UMBRELLA17;
|
|
case ITM_UMBRELLA18:
|
|
return mPlayer_ITEM_KIND_UMBRELLA18;
|
|
case ITM_UMBRELLA19:
|
|
return mPlayer_ITEM_KIND_UMBRELLA19;
|
|
case ITM_UMBRELLA20:
|
|
return mPlayer_ITEM_KIND_UMBRELLA20;
|
|
case ITM_UMBRELLA21:
|
|
return mPlayer_ITEM_KIND_UMBRELLA21;
|
|
case ITM_UMBRELLA22:
|
|
return mPlayer_ITEM_KIND_UMBRELLA22;
|
|
case ITM_UMBRELLA23:
|
|
return mPlayer_ITEM_KIND_UMBRELLA23;
|
|
case ITM_UMBRELLA24:
|
|
return mPlayer_ITEM_KIND_UMBRELLA24;
|
|
case ITM_UMBRELLA25:
|
|
return mPlayer_ITEM_KIND_UMBRELLA25;
|
|
case ITM_UMBRELLA26:
|
|
return mPlayer_ITEM_KIND_UMBRELLA26;
|
|
case ITM_UMBRELLA27:
|
|
return mPlayer_ITEM_KIND_UMBRELLA27;
|
|
case ITM_UMBRELLA28:
|
|
return mPlayer_ITEM_KIND_UMBRELLA28;
|
|
case ITM_UMBRELLA29:
|
|
return mPlayer_ITEM_KIND_UMBRELLA29;
|
|
case ITM_UMBRELLA30:
|
|
return mPlayer_ITEM_KIND_UMBRELLA30;
|
|
case ITM_UMBRELLA31:
|
|
return mPlayer_ITEM_KIND_UMBRELLA31;
|
|
case ITM_MY_ORG_UMBRELLA0:
|
|
return mPlayer_ITEM_KIND_ORG_UMBRELLA00;
|
|
case ITM_MY_ORG_UMBRELLA1:
|
|
return mPlayer_ITEM_KIND_ORG_UMBRELLA01;
|
|
case ITM_MY_ORG_UMBRELLA2:
|
|
return mPlayer_ITEM_KIND_ORG_UMBRELLA02;
|
|
case ITM_MY_ORG_UMBRELLA3:
|
|
return mPlayer_ITEM_KIND_ORG_UMBRELLA03;
|
|
case ITM_MY_ORG_UMBRELLA4:
|
|
return mPlayer_ITEM_KIND_ORG_UMBRELLA04;
|
|
case ITM_MY_ORG_UMBRELLA5:
|
|
return mPlayer_ITEM_KIND_ORG_UMBRELLA05;
|
|
case ITM_MY_ORG_UMBRELLA6:
|
|
return mPlayer_ITEM_KIND_ORG_UMBRELLA06;
|
|
case ITM_MY_ORG_UMBRELLA7:
|
|
return mPlayer_ITEM_KIND_ORG_UMBRELLA07;
|
|
case ITM_ROD:
|
|
return mPlayer_ITEM_KIND_ROD;
|
|
case ITM_GOLDEN_ROD:
|
|
return mPlayer_ITEM_KIND_GOLD_ROD;
|
|
case ITM_SHOVEL:
|
|
return mPlayer_ITEM_KIND_SHOVEL;
|
|
case ITM_GOLDEN_SHOVEL:
|
|
return mPlayer_ITEM_KIND_GOLD_SHOVEL;
|
|
case ITM_RED_BALLOON:
|
|
return mPlayer_ITEM_KIND_RED_BALLOON;
|
|
case ITM_YELLOW_BALLOON:
|
|
return mPlayer_ITEM_KIND_YELLOW_BALLOON;
|
|
case ITM_BLUE_BALLOON:
|
|
return mPlayer_ITEM_KIND_BLUE_BALLOON;
|
|
case ITM_GREEN_BALLOON:
|
|
return mPlayer_ITEM_KIND_GREEN_BALLOON;
|
|
case ITM_PURPLE_BALLOON:
|
|
return mPlayer_ITEM_KIND_PURPLE_BALLOON;
|
|
case ITM_BUNNY_P_BALLOON:
|
|
return mPlayer_ITEM_KIND_BUNNY_P_BALLOON;
|
|
case ITM_BUNNY_B_BALLOON:
|
|
return mPlayer_ITEM_KIND_BUNNY_B_BALLOON;
|
|
case ITM_BUNNY_O_BALLOON:
|
|
return mPlayer_ITEM_KIND_BUNNY_O_BALLOON;
|
|
case ITM_YELLOW_PINWHEEL:
|
|
return mPlayer_ITEM_KIND_YELLOW_PINWHEEL;
|
|
case ITM_RED_PINWHEEL:
|
|
return mPlayer_ITEM_KIND_RED_PINWHEEL;
|
|
case ITM_TIGER_PINWHEEL:
|
|
return mPlayer_ITEM_KIND_TIGER_PINWHEEL;
|
|
case ITM_GREEN_PINWHEEL:
|
|
return mPlayer_ITEM_KIND_GREEN_PINWHEEL;
|
|
case ITM_PINK_PINWHEEL:
|
|
return mPlayer_ITEM_KIND_PINK_PINWHEEL;
|
|
case ITM_STRIPED_PINWHEEL:
|
|
return mPlayer_ITEM_KIND_STRIPED_PINWHEEL;
|
|
case ITM_FLOWER_PINWHEEL:
|
|
return mPlayer_ITEM_KIND_FLOWER_PINWHEEL;
|
|
case ITM_FANCY_PINWHEEL:
|
|
return mPlayer_ITEM_KIND_FANCY_PINWHEEL;
|
|
case ITM_BLUEBELL_FAN:
|
|
return mPlayer_ITEM_KIND_BLUEBELL_FAN;
|
|
case ITM_PLUM_FAN:
|
|
return mPlayer_ITEM_KIND_PLUM_FAN;
|
|
case ITM_BAMBOO_FAN:
|
|
return mPlayer_ITEM_KIND_BAMBOO_FAN;
|
|
case ITM_CLOUD_FAN:
|
|
return mPlayer_ITEM_KIND_CLOUD_FAN;
|
|
case ITM_MAPLE_FAN:
|
|
return mPlayer_ITEM_KIND_MAPLE_FAN;
|
|
case ITM_FAN_FAN:
|
|
return mPlayer_ITEM_KIND_FAN_FAN;
|
|
case ITM_FLOWER_FAN:
|
|
return mPlayer_ITEM_KIND_FLOWER_FAN;
|
|
case ITM_LEAF_FAN:
|
|
return mPlayer_ITEM_KIND_LEAF_FAN;
|
|
default:
|
|
return -1;
|
|
}
|
|
}
|
|
|
|
extern int mPlib_Get_ItemKindTOBalloonShapeType(int item_kind) {
|
|
if (mPlayer_ITEM_IS_BALLOON(item_kind) != FALSE) {
|
|
return item_kind - mPlayer_ITEM_KIND_RED_BALLOON;
|
|
}
|
|
|
|
return 0;
|
|
}
|
|
|
|
static int mPlib_Get_itemNOTOBalloonShapeType(mActor_name_t itemNo) {
|
|
return mPlib_Get_ItemKindTOBalloonShapeType(mPlib_Get_ItemNoToItemKind(itemNo));
|
|
}
|
|
|
|
extern void mPlib_request_main_release_creature_balloon_from_submenu(mActor_name_t itemNo, int gold_scoop_flag) {
|
|
mPlayer_change_data_from_submenu_c* change_data_from_submenu_p = mPlib_Get_change_data_from_submenu_p();
|
|
mPlayer_request_release_creature_c* req_release_creature_p =
|
|
&change_data_from_submenu_p->request_main_data.release_creature;
|
|
mPlayer_request_release_creature_balloon_c* release_balloon_p = &req_release_creature_p->data.balloon;
|
|
ACTOR* actorx = GET_PLAYER_ACTOR_NOW_ACTOR(); /* @unused */
|
|
|
|
change_data_from_submenu_p->requested_main_index = mPlayer_INDEX_RELEASE_CREATURE;
|
|
change_data_from_submenu_p->requested_index_pending = TRUE;
|
|
|
|
req_release_creature_p->type = mPlayer_CREATURE_BALLOON;
|
|
req_release_creature_p->gold_scoop_flag = gold_scoop_flag;
|
|
|
|
release_balloon_p->balloon_type = mPlib_Get_itemNOTOBalloonShapeType(itemNo);
|
|
}
|
|
|
|
extern void mPlib_request_main_wait_from_submenu(void) {
|
|
mPlayer_change_data_from_submenu_c* change_data_from_submenu_p = mPlib_Get_change_data_from_submenu_p();
|
|
|
|
change_data_from_submenu_p->requested_main_index = mPlayer_INDEX_WAIT;
|
|
change_data_from_submenu_p->requested_index_pending = TRUE;
|
|
}
|
|
|
|
extern void mPlib_request_main_demo_get_golden_item_from_submenu(void) {
|
|
mPlayer_change_data_from_submenu_c* change_data_from_submenu_p = mPlib_Get_change_data_from_submenu_p();
|
|
|
|
change_data_from_submenu_p->requested_main_index = mPlayer_INDEX_DEMO_GET_GOLDEN_ITEM;
|
|
change_data_from_submenu_p->requested_index_pending = TRUE;
|
|
}
|
|
|
|
extern void mPlib_request_main_mail_land_from_submenu(void) {
|
|
mPlayer_change_data_from_submenu_c* change_data_from_submenu_p = mPlib_Get_change_data_from_submenu_p();
|
|
|
|
change_data_from_submenu_p->requested_main_index = mPlayer_INDEX_MAIL_LAND;
|
|
change_data_from_submenu_p->requested_index_pending = TRUE;
|
|
}
|
|
|
|
extern void mPlib_request_main_demo_wait_from_submenu(ACTOR* speak_actor_p) {
|
|
mPlayer_change_data_from_submenu_c* change_data_from_submenu_p = mPlib_Get_change_data_from_submenu_p();
|
|
mPlayer_request_demo_wait_c* req_demo_wait_p = &change_data_from_submenu_p->request_main_data.demo_wait;
|
|
|
|
change_data_from_submenu_p->requested_main_index = mPlayer_INDEX_DEMO_WAIT;
|
|
change_data_from_submenu_p->requested_index_pending = TRUE;
|
|
|
|
req_demo_wait_p->umbrella_flag = FALSE;
|
|
req_demo_wait_p->label = (u32)speak_actor_p;
|
|
|
|
if (speak_actor_p != NULL) {
|
|
mPlib_Set_able_force_speak_label(speak_actor_p);
|
|
}
|
|
}
|
|
|
|
extern void mPlib_Set_unable_wade(int v) {
|
|
Common_Set(unable_wade, v);
|
|
}
|
|
|
|
extern int mPlib_Get_unable_wade(void) {
|
|
return Common_Get(unable_wade);
|
|
}
|
|
|
|
extern int mPlib_Check_able_force_speak_label(GAME* game, ACTOR* label) {
|
|
if (Common_Get(player_actor_exists) == FALSE) {
|
|
return FALSE;
|
|
}
|
|
|
|
return GET_PLAYER_ACTOR_GAME(game)->Check_able_force_speak_label_proc(game, label);
|
|
}
|
|
|
|
extern void mPlib_Set_able_force_speak_label(ACTOR* label) {
|
|
if (Common_Get(player_actor_exists)) {
|
|
GET_PLAYER_ACTOR_NOW()->able_force_speak_label = (u32)label;
|
|
}
|
|
}
|
|
|
|
extern void mPlib_Reset_able_force_speak_label(void) {
|
|
mPlib_Set_able_force_speak_label(NULL);
|
|
}
|
|
|
|
extern u8 ply_1_get_change12_tex_index[];
|
|
extern u8 ply_1_kokeru_a12_tex_index[];
|
|
extern u8 ply_1_kokeru_getup_a12_tex_index[];
|
|
extern u8 ply_1_kokeru_getup_n12_tex_index[];
|
|
extern u8 ply_1_kokeru_n12_tex_index[];
|
|
extern u8 ply_1_axe_swing12_tex_index[];
|
|
extern u8 ply_1_kokeru12_tex_index[];
|
|
extern u8 ply_1_kokeru_getup12_tex_index[];
|
|
extern u8 ply_1_axe_hane12_tex_index[];
|
|
extern u8 ply_1_axe_suka12_tex_index[];
|
|
extern u8 ply_1_get_t12_tex_index[];
|
|
extern u8 ply_1_menu_change12_tex_index[];
|
|
extern u8 ply_1_not_sao_swing12_tex_index[];
|
|
extern u8 ply_1_not_dig12_tex_index[];
|
|
extern u8 ply_1_dig_suka12_tex_index[];
|
|
extern u8 ply_1_shake12_tex_index[];
|
|
extern u8 ply_1_eat12_tex_index[];
|
|
extern u8 ply_1_gaaan12_tex_index[];
|
|
extern u8 ply_1_deru12_tex_index[];
|
|
extern u8 ply_1_guratuku12_tex_index[];
|
|
extern u8 ply_1_otiru12_tex_index[];
|
|
extern u8 ply_1_biku12_tex_index[];
|
|
extern u8 ply_1_hati12_tex_index[];
|
|
extern u8 ply_1_hati22_tex_index[];
|
|
extern u8 ply_1_hati32_tex_index[];
|
|
extern u8 ply_1_deru22_tex_index[];
|
|
extern u8 ply_1_otiru22_tex_index[];
|
|
extern u8 ply_1_itazura12_tex_index[];
|
|
extern u8 ply_1_yatta12_tex_index[];
|
|
extern u8 ply_1_yatta22_tex_index[];
|
|
extern u8 ply_1_yatta32_tex_index[];
|
|
extern u8 ply_1_mosquito12_tex_index[];
|
|
extern u8 ply_1_axe_break12_tex_index[];
|
|
|
|
extern u8* mPlib_Get_PlayerEyeTexAnimation_p(int anim_idx) {
|
|
if (anim_idx >= 0 && anim_idx < mPlayer_ANIM_NUM) {
|
|
static u8* const eye_tex_index_table[] = {
|
|
NULL,
|
|
NULL,
|
|
NULL,
|
|
NULL,
|
|
NULL,
|
|
NULL,
|
|
NULL,
|
|
NULL,
|
|
NULL,
|
|
NULL,
|
|
NULL,
|
|
ply_1_get_change12_tex_index,
|
|
NULL,
|
|
NULL,
|
|
NULL,
|
|
NULL,
|
|
NULL,
|
|
NULL,
|
|
NULL,
|
|
NULL,
|
|
NULL,
|
|
NULL,
|
|
NULL,
|
|
NULL,
|
|
NULL,
|
|
ply_1_kokeru_a12_tex_index,
|
|
ply_1_kokeru_getup_a12_tex_index,
|
|
ply_1_kokeru_getup_n12_tex_index,
|
|
ply_1_kokeru_n12_tex_index,
|
|
NULL,
|
|
NULL,
|
|
ply_1_axe_swing12_tex_index,
|
|
NULL,
|
|
ply_1_kokeru12_tex_index,
|
|
ply_1_kokeru_getup12_tex_index,
|
|
NULL,
|
|
NULL,
|
|
NULL,
|
|
NULL,
|
|
NULL,
|
|
NULL,
|
|
NULL,
|
|
NULL,
|
|
NULL,
|
|
NULL,
|
|
NULL,
|
|
NULL,
|
|
NULL,
|
|
NULL,
|
|
NULL,
|
|
NULL,
|
|
NULL,
|
|
NULL,
|
|
NULL,
|
|
NULL,
|
|
NULL,
|
|
NULL,
|
|
NULL,
|
|
NULL,
|
|
NULL,
|
|
ply_1_axe_hane12_tex_index,
|
|
ply_1_axe_suka12_tex_index,
|
|
NULL,
|
|
NULL,
|
|
ply_1_get_t12_tex_index,
|
|
NULL,
|
|
NULL,
|
|
NULL,
|
|
NULL,
|
|
NULL,
|
|
NULL,
|
|
NULL,
|
|
NULL,
|
|
ply_1_menu_change12_tex_index,
|
|
NULL,
|
|
ply_1_not_sao_swing12_tex_index,
|
|
NULL,
|
|
NULL,
|
|
NULL,
|
|
NULL,
|
|
ply_1_not_dig12_tex_index,
|
|
NULL,
|
|
NULL,
|
|
NULL,
|
|
NULL,
|
|
ply_1_dig_suka12_tex_index,
|
|
NULL,
|
|
NULL,
|
|
NULL,
|
|
NULL,
|
|
NULL,
|
|
NULL,
|
|
NULL,
|
|
NULL,
|
|
NULL,
|
|
NULL,
|
|
NULL,
|
|
ply_1_shake12_tex_index,
|
|
NULL,
|
|
NULL,
|
|
NULL,
|
|
NULL,
|
|
NULL,
|
|
NULL,
|
|
NULL,
|
|
NULL,
|
|
NULL,
|
|
NULL,
|
|
NULL,
|
|
ply_1_eat12_tex_index,
|
|
ply_1_gaaan12_tex_index,
|
|
NULL,
|
|
ply_1_deru12_tex_index,
|
|
ply_1_guratuku12_tex_index,
|
|
NULL,
|
|
ply_1_otiru12_tex_index,
|
|
NULL,
|
|
NULL,
|
|
ply_1_biku12_tex_index,
|
|
ply_1_hati12_tex_index,
|
|
ply_1_hati22_tex_index,
|
|
ply_1_hati32_tex_index,
|
|
NULL,
|
|
ply_1_deru22_tex_index,
|
|
ply_1_otiru22_tex_index,
|
|
ply_1_itazura12_tex_index,
|
|
NULL,
|
|
NULL,
|
|
ply_1_yatta12_tex_index,
|
|
ply_1_yatta22_tex_index,
|
|
ply_1_yatta32_tex_index,
|
|
NULL,
|
|
ply_1_mosquito12_tex_index,
|
|
NULL,
|
|
NULL,
|
|
NULL,
|
|
NULL,
|
|
NULL,
|
|
NULL,
|
|
NULL,
|
|
NULL,
|
|
ply_1_axe_break12_tex_index,
|
|
NULL,
|
|
NULL,
|
|
NULL,
|
|
NULL,
|
|
NULL,
|
|
NULL,
|
|
NULL,
|
|
NULL,
|
|
NULL,
|
|
NULL,
|
|
NULL,
|
|
NULL,
|
|
NULL,
|
|
NULL,
|
|
NULL,
|
|
};
|
|
|
|
return eye_tex_index_table[anim_idx];
|
|
}
|
|
|
|
return NULL;
|
|
}
|
|
|
|
extern u8 ply_1_get_change11_tex_index[];
|
|
extern u8 ply_1_kokeru_a11_tex_index[];
|
|
extern u8 ply_1_kokeru_getup_a11_tex_index[];
|
|
extern u8 ply_1_kokeru_getup_n11_tex_index[];
|
|
extern u8 ply_1_kokeru_n11_tex_index[];
|
|
extern u8 ply_1_axe_swing11_tex_index[];
|
|
extern u8 ply_1_kokeru11_tex_index[];
|
|
extern u8 ply_1_kokeru_getup11_tex_index[];
|
|
extern u8 ply_1_axe_hane11_tex_index[];
|
|
extern u8 ply_1_axe_suka11_tex_index[];
|
|
extern u8 ply_1_get_t11_tex_index[];
|
|
extern u8 ply_1_get_t21_tex_index[];
|
|
extern u8 ply_1_not_get_t11_tex_index[];
|
|
extern u8 ply_1_menu_change11_tex_index[];
|
|
extern u8 ply_1_not_sao_swing11_tex_index[];
|
|
extern u8 ply_1_not_dig11_tex_index[];
|
|
extern u8 ply_1_dig_suka11_tex_index[];
|
|
extern u8 ply_1_eat11_tex_index[];
|
|
extern u8 ply_1_gaaan11_tex_index[];
|
|
extern u8 ply_1_deru11_tex_index[];
|
|
extern u8 ply_1_guratuku11_tex_index[];
|
|
extern u8 ply_1_mogaku11_tex_index[];
|
|
extern u8 ply_1_otiru11_tex_index[];
|
|
extern u8 ply_1_biku11_tex_index[];
|
|
extern u8 ply_1_hati11_tex_index[];
|
|
extern u8 ply_1_hati21_tex_index[];
|
|
extern u8 ply_1_hati31_tex_index[];
|
|
extern u8 ply_1_deru21_tex_index[];
|
|
extern u8 ply_1_otiru21_tex_index[];
|
|
extern u8 ply_1_itazura11_tex_index[];
|
|
extern u8 ply_1_yatta11_tex_index[];
|
|
extern u8 ply_1_yatta21_tex_index[];
|
|
extern u8 ply_1_yatta31_tex_index[];
|
|
extern u8 ply_1_mosquito11_tex_index[];
|
|
extern u8 ply_1_axe_break11_tex_index[];
|
|
|
|
extern u8* mPlib_Get_PlayerMouthTexAnimation_p(int anim_idx) {
|
|
if (anim_idx >= 0 && anim_idx < mPlayer_ANIM_NUM) {
|
|
static u8* const mouth_tex_index_table[] = {
|
|
NULL,
|
|
NULL,
|
|
NULL,
|
|
NULL,
|
|
NULL,
|
|
NULL,
|
|
NULL,
|
|
NULL,
|
|
NULL,
|
|
NULL,
|
|
NULL,
|
|
ply_1_get_change11_tex_index,
|
|
NULL,
|
|
NULL,
|
|
NULL,
|
|
NULL,
|
|
NULL,
|
|
NULL,
|
|
NULL,
|
|
NULL,
|
|
NULL,
|
|
NULL,
|
|
NULL,
|
|
NULL,
|
|
NULL,
|
|
ply_1_kokeru_a11_tex_index,
|
|
ply_1_kokeru_getup_a11_tex_index,
|
|
ply_1_kokeru_getup_n11_tex_index,
|
|
ply_1_kokeru_n11_tex_index,
|
|
NULL,
|
|
NULL,
|
|
ply_1_axe_swing11_tex_index,
|
|
NULL,
|
|
ply_1_kokeru11_tex_index,
|
|
ply_1_kokeru_getup11_tex_index,
|
|
NULL,
|
|
NULL,
|
|
NULL,
|
|
NULL,
|
|
NULL,
|
|
NULL,
|
|
NULL,
|
|
NULL,
|
|
NULL,
|
|
NULL,
|
|
NULL,
|
|
NULL,
|
|
NULL,
|
|
NULL,
|
|
NULL,
|
|
NULL,
|
|
NULL,
|
|
NULL,
|
|
NULL,
|
|
NULL,
|
|
NULL,
|
|
NULL,
|
|
NULL,
|
|
NULL,
|
|
NULL,
|
|
ply_1_axe_hane11_tex_index,
|
|
ply_1_axe_suka11_tex_index,
|
|
NULL,
|
|
NULL,
|
|
ply_1_get_t11_tex_index,
|
|
ply_1_get_t21_tex_index,
|
|
NULL,
|
|
NULL,
|
|
NULL,
|
|
NULL,
|
|
NULL,
|
|
ply_1_not_get_t11_tex_index,
|
|
NULL,
|
|
ply_1_menu_change11_tex_index,
|
|
NULL,
|
|
ply_1_not_sao_swing11_tex_index,
|
|
NULL,
|
|
NULL,
|
|
NULL,
|
|
NULL,
|
|
ply_1_not_dig11_tex_index,
|
|
NULL,
|
|
NULL,
|
|
NULL,
|
|
NULL,
|
|
ply_1_dig_suka11_tex_index,
|
|
NULL,
|
|
NULL,
|
|
NULL,
|
|
NULL,
|
|
NULL,
|
|
NULL,
|
|
NULL,
|
|
NULL,
|
|
NULL,
|
|
NULL,
|
|
NULL,
|
|
NULL,
|
|
NULL,
|
|
NULL,
|
|
NULL,
|
|
NULL,
|
|
NULL,
|
|
NULL,
|
|
NULL,
|
|
NULL,
|
|
NULL,
|
|
NULL,
|
|
NULL,
|
|
ply_1_eat11_tex_index,
|
|
ply_1_gaaan11_tex_index,
|
|
NULL,
|
|
ply_1_deru11_tex_index,
|
|
ply_1_guratuku11_tex_index,
|
|
ply_1_mogaku11_tex_index,
|
|
ply_1_otiru11_tex_index,
|
|
NULL,
|
|
NULL,
|
|
ply_1_biku11_tex_index,
|
|
ply_1_hati11_tex_index,
|
|
ply_1_hati21_tex_index,
|
|
ply_1_hati31_tex_index,
|
|
NULL,
|
|
ply_1_deru21_tex_index,
|
|
ply_1_otiru21_tex_index,
|
|
ply_1_itazura11_tex_index,
|
|
NULL,
|
|
NULL,
|
|
ply_1_yatta11_tex_index,
|
|
ply_1_yatta21_tex_index,
|
|
ply_1_yatta31_tex_index,
|
|
NULL,
|
|
ply_1_mosquito11_tex_index,
|
|
NULL,
|
|
NULL,
|
|
NULL,
|
|
NULL,
|
|
NULL,
|
|
NULL,
|
|
NULL,
|
|
NULL,
|
|
ply_1_axe_break11_tex_index,
|
|
NULL,
|
|
NULL,
|
|
NULL,
|
|
NULL,
|
|
NULL,
|
|
NULL,
|
|
NULL,
|
|
NULL,
|
|
NULL,
|
|
NULL,
|
|
NULL,
|
|
NULL,
|
|
NULL,
|
|
NULL,
|
|
NULL,
|
|
};
|
|
|
|
return mouth_tex_index_table[anim_idx];
|
|
}
|
|
|
|
return NULL;
|
|
}
|
|
|
|
extern u8* mPlib_Get_eye_tex_p(int idx) {
|
|
if (idx >= 0 && idx < mPlayer_EYE_TEX_NUM) {
|
|
u8* face_tex_p = mPlib_get_player_face_p(gamePT);
|
|
|
|
if (face_tex_p != NULL) {
|
|
return face_tex_p + idx * 0x100;
|
|
}
|
|
}
|
|
|
|
return NULL;
|
|
}
|
|
|
|
extern u8* mPlib_Get_mouth_tex_p(int idx) {
|
|
if (idx >= 0 && idx < mPlayer_MOUTH_TEX_NUM) {
|
|
u8* face_tex_p = mPlib_get_player_face_p(gamePT);
|
|
|
|
if (face_tex_p != NULL) {
|
|
face_tex_p += (mPlayer_EYE_TEX_NUM * 0x100) + idx * 0x100;
|
|
return face_tex_p;
|
|
}
|
|
}
|
|
|
|
return NULL;
|
|
}
|
|
|
|
extern int mPlib_request_main_invade_type1(GAME* game) {
|
|
return GET_PLAYER_ACTOR_GAME(game)->request_main_invade_all_proc(game, mPlayer_REQUEST_PRIORITY_2);
|
|
}
|
|
|
|
extern int mPlib_request_main_refuse_type1(GAME* game) {
|
|
return GET_PLAYER_ACTOR_GAME(game)->request_main_refuse_all_proc(game, mPlayer_REQUEST_PRIORITY_34);
|
|
}
|
|
|
|
extern int mPlib_request_main_wait_type3(GAME* game) {
|
|
return GET_PLAYER_ACTOR_GAME(game)->request_main_return_demo_all_proc(game, mPlayer_INDEX_WAIT, 3.0f,
|
|
mPlayer_REQUEST_PRIORITY_19);
|
|
}
|
|
|
|
extern int mPlib_request_main_demo_get_golden_item2_type1(GAME* game, int golden_item_type) {
|
|
return GET_PLAYER_ACTOR_GAME(game)->request_main_demo_get_golden_item2_all_proc(game, golden_item_type,
|
|
mPlayer_REQUEST_PRIORITY_34);
|
|
}
|
|
|
|
extern int mPlib_request_main_talk_end_type1(GAME* game, int wait_demo, int demo_get_golden_axe) {
|
|
if (wait_demo == FALSE) {
|
|
if (demo_get_golden_axe == FALSE) {
|
|
return GET_PLAYER_ACTOR_GAME(game)->request_main_return_demo_all_proc(game, mPlayer_INDEX_WAIT, 3.0f,
|
|
mPlayer_REQUEST_PRIORITY_19);
|
|
} else {
|
|
return GET_PLAYER_ACTOR_GAME(game)->request_main_demo_get_golden_axe_wait_all_proc(
|
|
game, mPlayer_REQUEST_PRIORITY_33);
|
|
}
|
|
} else {
|
|
return mPlib_request_main_demo_wait_type1(game, FALSE, NULL);
|
|
}
|
|
}
|
|
|
|
extern int mPlib_request_main_talk_type1(GAME* game, ACTOR* talk_actor_p, int turn_flag, int umbrella_flag) {
|
|
return GET_PLAYER_ACTOR_GAME(game)->request_main_talk_all_proc(game, talk_actor_p, turn_flag, -5.0f, umbrella_flag,
|
|
mPlayer_REQUEST_PRIORITY_19);
|
|
}
|
|
|
|
extern int mPlib_request_main_hold_type1(GAME* game, int ftr_no, int player_direct, const xyz_t* player_pos_p) {
|
|
return GET_PLAYER_ACTOR_GAME(game)->request_main_hold_all_proc(game, ftr_no, player_direct, player_pos_p, -5.0f, 1,
|
|
mPlayer_REQUEST_PRIORITY_9);
|
|
}
|
|
|
|
extern int mPlib_request_main_recieve_wait_type1(GAME* game, mActor_name_t item, int counter_flag) {
|
|
GET_PLAYER_ACTOR_GAME(game)->request_main_recieve_wait_all_proc(
|
|
game, GET_PLAYER_ACTOR_GAME(game)->main_data.talk.talk_actor_p,
|
|
GET_PLAYER_ACTOR_GAME(game)->main_data.talk.turn_flag, GET_PLAYER_ACTOR_GAME(game)->now_main_index, item,
|
|
counter_flag, mPlayer_REQUEST_PRIORITY_19);
|
|
}
|
|
|
|
extern int mPlib_request_main_give_type1(GAME* game, mActor_name_t item, int mode, int present, int on_surface) {
|
|
PLAYER_ACTOR* player = GET_PLAYER_ACTOR_GAME(game);
|
|
int return_main_index = player->now_main_index;
|
|
ACTOR* talk_actor_p;
|
|
int turn_flag;
|
|
|
|
if (return_main_index == mPlayer_INDEX_TALK) {
|
|
talk_actor_p = player->main_data.talk.talk_actor_p;
|
|
turn_flag = player->main_data.talk.turn_flag;
|
|
} else {
|
|
talk_actor_p = NULL;
|
|
turn_flag = FALSE;
|
|
}
|
|
|
|
GET_PLAYER_ACTOR_GAME(game)->request_main_give_all_proc(game, talk_actor_p, turn_flag, return_main_index, item,
|
|
mode, present, on_surface, mPlayer_REQUEST_PRIORITY_19);
|
|
}
|
|
|
|
extern int mPlib_request_main_sitdown_type1(GAME* game, int direct, const xyz_t* pos_p, int ftr_no) {
|
|
return GET_PLAYER_ACTOR_GAME(game)->request_main_sitdown_all_proc(game, direct, pos_p, ftr_no,
|
|
mPlayer_REQUEST_PRIORITY_2);
|
|
}
|
|
|
|
extern int mPlib_request_main_close_furniture_type1(GAME* game) {
|
|
return GET_PLAYER_ACTOR_GAME(game)->request_main_close_furniture_all_proc(game, mPlayer_REQUEST_PRIORITY_23);
|
|
}
|
|
|
|
extern int mPlib_request_main_lie_bed_type1(GAME* game, int direct, const xyz_t* pos_p, int head_direct, int ftr_no) {
|
|
return GET_PLAYER_ACTOR_GAME(game)->request_main_lie_bed_all_proc(game, direct, pos_p, head_direct, ftr_no,
|
|
mPlayer_REQUEST_PRIORITY_9);
|
|
}
|
|
|
|
extern int mPlib_request_main_hide_type1(GAME* game) {
|
|
return GET_PLAYER_ACTOR_GAME(game)->request_main_hide_all_proc(game, mPlayer_REQUEST_PRIORITY_43);
|
|
}
|
|
|
|
extern int mPlib_request_main_groundhog_type1(GAME* game) {
|
|
return GET_PLAYER_ACTOR_GAME(game)->request_main_groundhog_proc(game, mPlayer_REQUEST_PRIORITY_43);
|
|
}
|
|
|
|
extern int mPlib_request_main_door_type1(GAME* game, const xyz_t* pos_p, s16 angle_y, int door_type, void* door_label) {
|
|
return GET_PLAYER_ACTOR_GAME(game)->request_main_door_all_proc(game, pos_p, angle_y, door_type, door_label,
|
|
mPlayer_REQUEST_PRIORITY_7) != FALSE;
|
|
}
|
|
|
|
extern int mPlib_request_main_door_type2(GAME* game, const xyz_t* pos_p, s16 angle_y, int door_type, void* door_label) {
|
|
return GET_PLAYER_ACTOR_GAME(game)->request_main_door_all_proc(game, pos_p, angle_y, door_type, door_label,
|
|
mPlayer_REQUEST_PRIORITY_19);
|
|
}
|
|
|
|
extern int mPlib_request_main_outdoor_type1(GAME* game, int is_start_demo, int door_type) {
|
|
return GET_PLAYER_ACTOR_GAME(game)->request_main_outdoor_all_proc(game, is_start_demo, door_type,
|
|
mPlayer_REQUEST_PRIORITY_43);
|
|
}
|
|
|
|
extern int mPlib_request_main_wash_car_type1(GAME* game, const xyz_t* car_pos_p, const xyz_t* ret_pos_p,
|
|
s16 ret_angle_y, ACTOR* ctrl_actor_p) {
|
|
return GET_PLAYER_ACTOR_GAME(game)->request_main_wash_car_all_proc(game, car_pos_p, ret_pos_p, ret_angle_y,
|
|
ctrl_actor_p, mPlayer_REQUEST_PRIORITY_19);
|
|
}
|
|
|
|
extern int mPlib_request_main_rotate_octagon_type1(GAME* game, const xyz_t* pos_p, s16 angle_y) {
|
|
if (mPlib_get_player_actor_main_index(game) == mPlayer_INDEX_TALK) {
|
|
return GET_PLAYER_ACTOR_GAME(game)->request_main_rotate_octagon_all_proc(
|
|
game, GET_PLAYER_ACTOR_GAME(game)->main_data.talk.talk_actor_p,
|
|
GET_PLAYER_ACTOR_GAME(game)->main_data.talk.turn_flag, GET_PLAYER_ACTOR_GAME(game)->now_main_index, pos_p,
|
|
angle_y, mPlayer_REQUEST_PRIORITY_19);
|
|
} else {
|
|
return GET_PLAYER_ACTOR_GAME(game)->request_main_rotate_octagon_all_proc(
|
|
game, NULL, FALSE, GET_PLAYER_ACTOR_GAME(game)->now_main_index, pos_p, angle_y,
|
|
mPlayer_REQUEST_PRIORITY_19);
|
|
}
|
|
}
|
|
|
|
extern int mPlib_request_main_throw_money_type1(GAME* game, const xyz_t* pos_p, s16 angle_y) {
|
|
return GET_PLAYER_ACTOR_GAME(game)->request_main_throw_money_all_proc(game, pos_p, angle_y,
|
|
mPlayer_REQUEST_PRIORITY_19);
|
|
}
|
|
|
|
extern int mPlib_request_main_pray_type1(GAME* game, const xyz_t* pos_p, s16 angle_y) {
|
|
return GET_PLAYER_ACTOR_GAME(game)->request_main_pray_all_proc(game, pos_p, angle_y, mPlayer_REQUEST_PRIORITY_19);
|
|
}
|
|
|
|
extern int mPlib_request_main_mail_jump_type1(GAME* game, const xyz_t* pos_p, s16 angle_y) {
|
|
return GET_PLAYER_ACTOR_GAME(game)->request_main_mail_jump_all_proc(game, pos_p, angle_y,
|
|
mPlayer_REQUEST_PRIORITY_9);
|
|
}
|
|
|
|
extern int mPlib_request_main_stung_bee_type1(GAME* game) {
|
|
return GET_PLAYER_ACTOR_GAME(game)->request_main_stung_bee_all_proc(game, mPlayer_REQUEST_PRIORITY_25);
|
|
}
|
|
|
|
extern int mPlib_request_main_stung_mosquito_type1(void* label) {
|
|
return GET_PLAYER_ACTOR_NOW()->request_main_stung_mosquito_all_proc(gamePT, label, mPlayer_REQUEST_PRIORITY_25);
|
|
}
|
|
|
|
extern int mPlib_request_main_switch_on_lighthouse_type1(GAME* game, const xyz_t* pos_p, s16 angle_y) {
|
|
return GET_PLAYER_ACTOR_NOW()->request_main_switch_on_lighthouse_all_proc(game, pos_p, angle_y,
|
|
mPlayer_REQUEST_PRIORITY_9);
|
|
}
|
|
|
|
extern int mPlib_request_main_demo_geton_boat_type1(f32 goal_x, f32 goal_z, s16 angleY) {
|
|
ACTOR* actorx = GET_PLAYER_ACTOR_NOW_ACTOR();
|
|
xyz_t goal_pos;
|
|
|
|
goal_pos.x = goal_x;
|
|
goal_pos.z = goal_z;
|
|
goal_pos.y = actorx->world.position.y;
|
|
|
|
return GET_PLAYER_ACTOR_NOW()->request_main_demo_geton_boat_all_proc(gamePT, &goal_pos, angleY,
|
|
mPlayer_REQUEST_PRIORITY_19);
|
|
}
|
|
|
|
extern int mPlib_request_main_demo_getoff_boat_standup_type1(const xyz_t* pos_p, s16 angleY) {
|
|
return GET_PLAYER_ACTOR_NOW()->request_main_demo_getoff_boat_standup_all_proc(gamePT, pos_p, angleY,
|
|
mPlayer_REQUEST_PRIORITY_19);
|
|
}
|
|
|
|
extern int mPlib_request_main_shock_type1(GAME* game, f32 time, s16 angle_y, int axe_swing) {
|
|
return GET_PLAYER_ACTOR_GAME(game)->request_main_shock_all_proc(game, time, angle_y, FALSE, axe_swing,
|
|
mPlayer_REQUEST_PRIORITY_14);
|
|
}
|
|
|
|
extern int mPlib_request_main_change_cloth_forNPC_type1(GAME* game, mActor_name_t cloth_item, u16 cloth_idx,
|
|
int try_on_flag) {
|
|
return GET_PLAYER_ACTOR_GAME(game)->request_main_change_cloth_forNPC_proc(game, cloth_item, cloth_idx, try_on_flag);
|
|
}
|
|
|
|
extern int mPlib_request_main_push_snowball_type1(GAME* game, void* label) {
|
|
return GET_PLAYER_ACTOR_GAME(game)->request_main_push_snowball_all_proc(game, label, FALSE,
|
|
mPlayer_REQUEST_PRIORITY_2);
|
|
}
|
|
|
|
extern int mPlib_request_main_push_snowball_end_type1(GAME* game) {
|
|
if (mPlib_get_player_actor_main_index(game) == mPlayer_INDEX_PUSH_SNOWBALL) {
|
|
return GET_PLAYER_ACTOR_GAME(game)->request_main_wait_all_proc(game, -5.0f, 0.0f, 0,
|
|
mPlayer_REQUEST_PRIORITY_1);
|
|
}
|
|
|
|
return FALSE;
|
|
}
|
|
|
|
extern int mPlib_request_main_demo_wait_type1(GAME* game, int umbrella_flag, void* label) {
|
|
return GET_PLAYER_ACTOR_GAME(game)->request_main_demo_wait_all_proc(game, umbrella_flag, label,
|
|
mPlayer_REQUEST_PRIORITY_19);
|
|
}
|
|
|
|
extern int mPlib_request_main_demo_walk_type1(GAME* game, f32 goal_x, f32 goal_z, f32 speed, int wait_flag) {
|
|
return GET_PLAYER_ACTOR_GAME(game)->request_main_demo_walk_all_proc(game, goal_x, goal_z, speed, wait_flag,
|
|
mPlayer_REQUEST_PRIORITY_19);
|
|
}
|
|
|
|
extern int mPlib_request_main_demo_geton_train_type1(GAME* game, const xyz_t* pos_p) {
|
|
return GET_PLAYER_ACTOR_GAME(game)->request_main_demo_geton_train_all_proc(game, pos_p, DEG2SHORT_ANGLE2(180.0f),
|
|
mPlayer_REQUEST_PRIORITY_19);
|
|
}
|
|
|
|
extern int mPlib_request_main_demo_getoff_train_type1(GAME* game) {
|
|
return GET_PLAYER_ACTOR_GAME(game)->request_main_demo_getoff_train_all_proc(
|
|
game, &GET_PLAYER_ACTOR_GAME_ACTOR(game)->world.position,
|
|
GET_PLAYER_ACTOR_GAME_ACTOR(game)->shape_info.rotation.y, mPlayer_REQUEST_PRIORITY_19);
|
|
}
|
|
|
|
extern int mPlib_request_main_demo_standing_train_type1(GAME* game) {
|
|
return GET_PLAYER_ACTOR_GAME(game)->request_main_demo_standing_train_all_proc(game, mPlayer_REQUEST_PRIORITY_19);
|
|
}
|
|
|
|
extern int mPlib_check_request_main_talk_type1_priority(GAME* game) {
|
|
int res = FALSE;
|
|
|
|
if (GET_PLAYER_ACTOR_GAME(game)->check_request_main_priority_proc(game, mPlayer_REQUEST_PRIORITY_19) > 0) {
|
|
if (GET_PLAYER_ACTOR_GAME(game)->check_cancel_request_change_proc_index_proc(mPlayer_INDEX_TALK) == FALSE) {
|
|
if (mPlib_get_player_actor_main_index(game) != mPlayer_INDEX_DEMO_WAIT &&
|
|
mPlib_get_player_actor_main_index(game) != mPlayer_INDEX_DEMO_WALK &&
|
|
mPlib_get_player_actor_main_index(game) != mPlayer_INDEX_TIRED &&
|
|
mPlib_get_player_actor_main_index(game) != mPlayer_INDEX_TALK &&
|
|
mPlib_get_player_actor_main_index(game) != mPlayer_INDEX_WASH_CAR &&
|
|
mPlib_get_player_actor_main_index(game) != mPlayer_INDEX_DEMO_STANDING_TRAIN) {
|
|
res = TRUE;
|
|
}
|
|
}
|
|
}
|
|
|
|
return res;
|
|
}
|
|
|
|
extern int mPlib_check_request_main_speak_type1_priority(GAME* game) {
|
|
int res = FALSE;
|
|
|
|
if (GET_PLAYER_ACTOR_GAME(game)->check_request_main_priority_proc(game, mPlayer_REQUEST_PRIORITY_19) > 0) {
|
|
if (GET_PLAYER_ACTOR_GAME(game)->check_cancel_request_change_proc_index_proc(mPlayer_INDEX_TALK) == FALSE) {
|
|
res = TRUE;
|
|
}
|
|
}
|
|
|
|
return res;
|
|
}
|
|
|
|
extern int mPlib_check_request_main_door_type1_priority(GAME* game) {
|
|
int res = FALSE;
|
|
|
|
if (GET_PLAYER_ACTOR_GAME(game)->check_request_main_priority_proc(game, mPlayer_REQUEST_PRIORITY_7) > 0) {
|
|
if (GET_PLAYER_ACTOR_GAME(game)->check_cancel_request_change_proc_index_proc(mPlayer_INDEX_DOOR) == FALSE) {
|
|
res = TRUE;
|
|
}
|
|
}
|
|
|
|
return res;
|
|
}
|
|
|
|
extern int mPlib_check_request_main_door_type2_priority(GAME* game) {
|
|
int res = FALSE;
|
|
|
|
if (GET_PLAYER_ACTOR_GAME(game)->check_request_main_priority_proc(game, mPlayer_REQUEST_PRIORITY_19) > 0) {
|
|
if (GET_PLAYER_ACTOR_GAME(game)->check_cancel_request_change_proc_index_proc(mPlayer_INDEX_DOOR) == FALSE) {
|
|
res = TRUE;
|
|
}
|
|
}
|
|
|
|
return res;
|
|
}
|
|
|
|
extern int mPlib_check_request_main_wade_priority(GAME* game) {
|
|
int res;
|
|
|
|
if (mPlib_get_player_actor_request_main_index(game) == mPlayer_INDEX_WADE_SNOWBALL) {
|
|
res = FALSE;
|
|
|
|
if (GET_PLAYER_ACTOR_GAME(game)->check_request_main_priority_proc(game, mPlayer_REQUEST_PRIORITY_2) > 0) {
|
|
if (GET_PLAYER_ACTOR_GAME(game)->check_cancel_request_change_proc_index_proc(mPlayer_INDEX_WADE_SNOWBALL) ==
|
|
FALSE) {
|
|
res = TRUE;
|
|
}
|
|
}
|
|
} else {
|
|
res = FALSE;
|
|
|
|
if (GET_PLAYER_ACTOR_GAME(game)->check_request_main_priority_proc(game, mPlayer_REQUEST_PRIORITY_2) > 0) {
|
|
if (GET_PLAYER_ACTOR_GAME(game)->check_cancel_request_change_proc_index_proc(mPlayer_INDEX_WADE) == FALSE) {
|
|
res = TRUE;
|
|
}
|
|
}
|
|
}
|
|
|
|
return res;
|
|
}
|
|
|
|
extern int mPlib_check_request_main_demo_wade_priority(GAME* game) {
|
|
int res = FALSE;
|
|
|
|
if (GET_PLAYER_ACTOR_GAME(game)->check_request_main_priority_proc(game, mPlayer_REQUEST_PRIORITY_19) > 0) {
|
|
if (GET_PLAYER_ACTOR_GAME(game)->check_cancel_request_change_proc_index_proc(mPlayer_INDEX_DEMO_WADE) ==
|
|
FALSE) {
|
|
res = TRUE;
|
|
}
|
|
}
|
|
|
|
return res;
|
|
}
|
|
|
|
extern int mPlib_check_request_main_demo_geton_boat_wade_priority(GAME* game) {
|
|
int res = FALSE;
|
|
|
|
if (GET_PLAYER_ACTOR_GAME(game)->check_request_main_priority_proc(game, mPlayer_REQUEST_PRIORITY_19) > 0) {
|
|
if (GET_PLAYER_ACTOR_GAME(game)->check_cancel_request_change_proc_index_proc(
|
|
mPlayer_INDEX_DEMO_GETON_BOAT_WADE) == FALSE) {
|
|
res = TRUE;
|
|
}
|
|
}
|
|
|
|
return res;
|
|
}
|
|
|
|
static int mPlib_strength_request_main_index_priority(GAME* game, int priority) {
|
|
PLAYER_ACTOR* player = GET_PLAYER_ACTOR_GAME(game);
|
|
|
|
if (player->requested_main_index_priority < priority) {
|
|
player->requested_main_index_priority = priority;
|
|
return TRUE;
|
|
}
|
|
|
|
return FALSE;
|
|
}
|
|
|
|
extern int mPlib_strength_request_main_wade_priority(GAME* game) {
|
|
if (mPlib_get_player_actor_main_index(game) == mPlayer_INDEX_WADE) {
|
|
return TRUE;
|
|
}
|
|
|
|
if (mPlib_get_player_actor_request_main_index(game) == mPlayer_INDEX_WADE) {
|
|
mPlib_strength_request_main_index_priority(game, mPlayer_REQUEST_PRIORITY_19);
|
|
return TRUE;
|
|
}
|
|
|
|
return FALSE;
|
|
}
|
|
|
|
extern int mPlib_strength_request_main_demo_wade_priority(GAME* game) {
|
|
if (mPlib_get_player_actor_main_index(game) == mPlayer_INDEX_DEMO_WADE) {
|
|
return TRUE;
|
|
}
|
|
|
|
if (mPlib_get_player_actor_request_main_index(game) == mPlayer_INDEX_DEMO_WADE) {
|
|
mPlib_strength_request_main_index_priority(game, mPlayer_REQUEST_PRIORITY_19);
|
|
return TRUE;
|
|
}
|
|
|
|
return FALSE;
|
|
}
|
|
|
|
extern int mPlib_strength_request_main_wade_snowball_priority(GAME* game) {
|
|
if (mPlib_get_player_actor_main_index(game) == mPlayer_INDEX_WADE_SNOWBALL) {
|
|
return TRUE;
|
|
}
|
|
|
|
if (mPlib_get_player_actor_request_main_index(game) == mPlayer_INDEX_WADE_SNOWBALL) {
|
|
mPlib_strength_request_main_index_priority(game, mPlayer_REQUEST_PRIORITY_19);
|
|
return TRUE;
|
|
}
|
|
|
|
return FALSE;
|
|
}
|
|
|
|
extern int mPlib_strength_request_main_demo_geton_boat_wade_priority(GAME* game) {
|
|
if (mPlib_get_player_actor_main_index(game) == mPlayer_INDEX_DEMO_GETON_BOAT_WADE) {
|
|
return TRUE;
|
|
}
|
|
|
|
if (mPlib_get_player_actor_request_main_index(game) == mPlayer_INDEX_DEMO_GETON_BOAT_WADE) {
|
|
mPlib_strength_request_main_index_priority(game, mPlayer_REQUEST_PRIORITY_19);
|
|
return TRUE;
|
|
}
|
|
|
|
return FALSE;
|
|
}
|
|
|
|
extern int mPlib_strength_request_main_door_priority(GAME* game) {
|
|
if (mPlib_get_player_actor_main_index(game) == mPlayer_INDEX_DOOR) {
|
|
return TRUE;
|
|
}
|
|
|
|
if (mPlib_get_player_actor_request_main_index(game) == mPlayer_INDEX_DOOR) {
|
|
mPlib_strength_request_main_index_priority(game, mPlayer_REQUEST_PRIORITY_19);
|
|
return TRUE;
|
|
}
|
|
|
|
return FALSE;
|
|
}
|
|
|
|
extern int mPlib_check_request_main_outdoor_priority(GAME* game) {
|
|
return TRUE;
|
|
}
|
|
|
|
extern int mPlib_Check_SetOrderSubmenu(void) {
|
|
mPlayer_change_data_from_submenu_c* change_data_from_submenu_p = mPlib_Get_change_data_from_submenu_p();
|
|
|
|
return change_data_from_submenu_p->requested_index_pending != FALSE;
|
|
}
|
|
|
|
static int mPlib_check_request_change_item(void) {
|
|
int idx;
|
|
|
|
if (Common_Get(player_actor_exists) == FALSE) {
|
|
return TRUE;
|
|
}
|
|
|
|
if (mPlib_check_DynamicLinkFile_m_player() == FALSE) {
|
|
return TRUE;
|
|
}
|
|
|
|
idx = GET_PLAYER_ACTOR_GAME(gamePT)->check_request_change_item_proc(gamePT);
|
|
return mPlayer_MAIN_INDEX_VALID(idx);
|
|
}
|
|
|
|
static int mPlib_CheckScene_AbleSubmenu(void) {
|
|
|
|
if (Common_Get(player_actor_exists) == FALSE) {
|
|
return FALSE;
|
|
}
|
|
|
|
if (mPlib_check_DynamicLinkFile_m_player() == FALSE) {
|
|
return FALSE;
|
|
}
|
|
|
|
return GET_PLAYER_ACTOR_GAME(gamePT)->CheckScene_AbleSubmenu_proc();
|
|
}
|
|
|
|
extern int mPlib_able_submenu_type1(GAME* game) {
|
|
int res = FALSE;
|
|
|
|
if (GET_PLAYER_ACTOR_GAME(game)->check_request_main_priority_proc(game, mPlayer_REQUEST_PRIORITY_19) > 0 &&
|
|
mPlib_Check_SetOrderSubmenu() == FALSE && mPlib_check_request_change_item() == FALSE &&
|
|
mPlib_check_player_warp_forEvent() == FALSE &&
|
|
GET_PLAYER_ACTOR_GAME(game)->able_submenu_request_main_index_proc(game) && mPlib_CheckScene_AbleSubmenu()) {
|
|
res = TRUE;
|
|
}
|
|
|
|
return res;
|
|
}
|
|
|
|
static int mPlib_check_priority_event_type1(GAME* game) {
|
|
return GET_PLAYER_ACTOR_GAME(game)->check_request_main_priority_proc(game, mPlayer_REQUEST_PRIORITY_17) > 0;
|
|
}
|
|
|
|
extern int mPlib_check_player_open_umbrella(GAME* game) {
|
|
PLAYER_ACTOR* player = GET_PLAYER_ACTOR_GAME(game);
|
|
|
|
if (player->umbrella_actor != NULL) {
|
|
UMBRELLA_ACTOR* umbrella_actor = (UMBRELLA_ACTOR*)player->umbrella_actor;
|
|
|
|
if (umbrella_actor->opened_fully) {
|
|
return TRUE;
|
|
}
|
|
}
|
|
|
|
return FALSE;
|
|
}
|
|
|
|
extern int mPlib_check_player_outdoor_start(GAME* game) {
|
|
if (mPlib_get_player_actor_main_index(game) == mPlayer_INDEX_OUTDOOR) {
|
|
mPlayer_main_outdoor_c* outdoor_p = &GET_PLAYER_ACTOR_GAME(game)->main_data.outdoor;
|
|
|
|
if (outdoor_p->is_demo) {
|
|
return TRUE;
|
|
}
|
|
}
|
|
|
|
return FALSE;
|
|
}
|
|
|
|
extern int mPlib_check_label_player_demo_wait(GAME* game, void* label) {
|
|
if (mPlib_get_player_actor_main_index(game) == mPlayer_INDEX_DEMO_WAIT) {
|
|
mPlayer_main_demo_wait_c* demo_wait_p = &GET_PLAYER_ACTOR_GAME(game)->main_data.demo_wait;
|
|
|
|
if (demo_wait_p->label == (u32)label) {
|
|
return TRUE;
|
|
}
|
|
}
|
|
|
|
return FALSE;
|
|
}
|
|
|
|
extern void mPlib_Set_goal_player_demo_walk(f32 pos_x, f32 pos_z, f32 speed) {
|
|
mDemo_Set_OrderValue(mDemo_ORDER_PLAYER, 2, (int)pos_x);
|
|
mDemo_Set_OrderValue(mDemo_ORDER_PLAYER, 4, (int)pos_z);
|
|
mDemo_Set_OrderValue(mDemo_ORDER_PLAYER, 7, (int)(speed * 100.0f));
|
|
}
|
|
|
|
extern void mPlib_Get_goal_player_demo_walk(f32* pos_x_p, f32* pos_z_p, f32* speed_p) {
|
|
*pos_x_p = (f32)(int)mDemo_Get_OrderValue(mDemo_ORDER_PLAYER, 2);
|
|
*pos_z_p = (f32)(int)mDemo_Get_OrderValue(mDemo_ORDER_PLAYER, 4);
|
|
*speed_p = (f32)(int)mDemo_Get_OrderValue(mDemo_ORDER_PLAYER, 7) * 0.01f;
|
|
}
|
|
|
|
extern void mPlib_Set_continue_player_after_demo_walk(int value) {
|
|
mDemo_Set_OrderValue(mDemo_ORDER_PLAYER, 8, value);
|
|
}
|
|
|
|
extern int mPlib_Get_continue_player_after_demo_walk(void) {
|
|
return mDemo_Get_OrderValue(mDemo_ORDER_PLAYER, 8);
|
|
}
|
|
|
|
extern void mPlib_Set_end_player_demo_walk(int value) {
|
|
mDemo_Set_OrderValue(mDemo_ORDER_PLAYER, 9, value);
|
|
}
|
|
|
|
extern int mPlib_Get_end_player_demo_walk(void) {
|
|
return mDemo_Get_OrderValue(mDemo_ORDER_PLAYER, 9);
|
|
}
|
|
|
|
extern int mPlib_Get_space_putin_item(void) {
|
|
return mPr_GetPossessionItemIdxWithCond(Now_Private, EMPTY_NO, mPr_ITEM_COND_NORMAL);
|
|
}
|
|
|
|
extern int mPlib_Get_space_putin_item_forTICKET(mActor_name_t* item_p) {
|
|
mActor_name_t item = *item_p;
|
|
|
|
if (ITEM_NAME_GET_TYPE(item) == NAME_TYPE_ITEM1 && ITEM_NAME_GET_CAT(item) == ITEM1_CAT_TICKET) {
|
|
int ticket_month = (item >> 3) & 0xF;
|
|
int ticket_count = 1 + (item & 7);
|
|
int ticket_begin = ITM_TICKET_START | (ticket_month << 3);
|
|
int ticket_end = ticket_begin + (5 - ticket_count);
|
|
int idx = mPr_GetPossessionItemIdxKindWithCond(Now_Private, ticket_begin, ticket_end, mPr_ITEM_COND_NORMAL);
|
|
|
|
if (idx >= 0) {
|
|
*item_p = Now_Private->inventory.pockets[idx] + ticket_count;
|
|
return idx;
|
|
}
|
|
} else if (ITEM_IS_PAPER(item)) {
|
|
int paper_base = item - ITM_PAPER_START;
|
|
int paper_type = PAPER2TYPE(paper_base);
|
|
int paper_num = PAPER2STACK(paper_base) + 1;
|
|
int i;
|
|
|
|
for (i = 4 - paper_num; i > 0; i--) {
|
|
mActor_name_t paper_item = ITM_PAPER_START + paper_type + (i - 1) * PAPER_UNIQUE_NUM;
|
|
int idx = mPr_GetPossessionItemIdxWithCond(Now_Private, paper_item, mPr_ITEM_COND_NORMAL);
|
|
|
|
if (idx != -1) {
|
|
*item_p = (mActor_name_t)(ITM_PAPER_START + paper_type + (i + paper_num - 1) * PAPER_UNIQUE_NUM);
|
|
return idx;
|
|
}
|
|
}
|
|
}
|
|
|
|
return mPlib_Get_space_putin_item();
|
|
}
|
|
|
|
extern int mPlib_Get_space_putin_item_forHITODAMA(mActor_name_t* item_p) {
|
|
mActor_name_t item = *item_p;
|
|
|
|
if (ITEM_IS_WISP(item)) {
|
|
int hitodama_count = ITEM_IS_WISP(item) ? (1 + (item - ITM_SPIRIT0)) : 0;
|
|
mActor_name_t hitodama_begin = ITM_SPIRIT0;
|
|
mActor_name_t hitodama_end = hitodama_begin + (5 - hitodama_count);
|
|
int idx = mPr_GetPossessionItemIdxKindWithCond(Now_Private, hitodama_begin, hitodama_end, mPr_ITEM_COND_NORMAL);
|
|
|
|
if (idx >= 0) {
|
|
*item_p = Now_Private->inventory.pockets[idx] + hitodama_count;
|
|
return idx;
|
|
}
|
|
}
|
|
|
|
return mPlib_Get_space_putin_item();
|
|
}
|
|
|
|
extern int mPlib_able_player_warp_forEvent(void) {
|
|
if (mPlib_check_DynamicLinkFile_m_player() == FALSE) {
|
|
return FALSE;
|
|
}
|
|
|
|
if (mPlib_check_player_warp_forEvent()) {
|
|
return FALSE;
|
|
}
|
|
|
|
if (mEv_CheckFirstIntro()) {
|
|
return FALSE;
|
|
}
|
|
|
|
if (Common_Get(player_actor_exists) == FALSE) {
|
|
return FALSE;
|
|
}
|
|
|
|
if (Common_Get(complete_payment_type) != mPlayer_COMPLETE_PAYMENT_TYPE_NONE) {
|
|
return FALSE;
|
|
}
|
|
|
|
if (Common_Get(fail_emu_flag) != FALSE) {
|
|
return FALSE;
|
|
}
|
|
|
|
if (mPlib_Check_SetOrderSubmenu()) {
|
|
return FALSE;
|
|
}
|
|
|
|
if (mPlib_check_request_change_item()) {
|
|
return FALSE;
|
|
}
|
|
|
|
if (mPlib_check_priority_event_type1(gamePT)) {
|
|
return GET_PLAYER_ACTOR_NOW()->check_cancel_event_without_priority_proc(gamePT) == FALSE;
|
|
}
|
|
|
|
if (mPlib_get_player_actor_main_index(gamePT) == mPlayer_INDEX_RELAX_ROD ||
|
|
mPlib_get_player_actor_main_index(gamePT) == mPlayer_INDEX_READY_NET ||
|
|
mPlib_get_player_actor_main_index(gamePT) == mPlayer_INDEX_READY_WALK_NET ||
|
|
mPlib_get_player_actor_main_index(gamePT) == mPlayer_INDEX_HOLD ||
|
|
mPlib_get_player_actor_main_index(gamePT) == mPlayer_INDEX_SITDOWN_WAIT ||
|
|
mPlib_get_player_actor_main_index(gamePT) == mPlayer_INDEX_WAIT_BED ||
|
|
mPlib_get_player_actor_main_index(gamePT) == mPlayer_INDEX_STRUGGLE_PITFALL) {
|
|
if (GET_PLAYER_ACTOR_NOW()->requested_main_index_changed == FALSE) {
|
|
return TRUE;
|
|
}
|
|
}
|
|
|
|
return FALSE;
|
|
}
|
|
|
|
extern int mPlib_request_player_warp_forEvent(void) {
|
|
Common_Set(player_warp_request, TRUE);
|
|
return TRUE;
|
|
}
|
|
|
|
extern int mPlib_cancel_player_warp_forEvent(void) {
|
|
Common_Set(player_warp_request, FALSE);
|
|
return TRUE;
|
|
}
|
|
|
|
extern int mPlib_check_player_warp_forEvent(void) {
|
|
return Common_Get(player_warp_request);
|
|
}
|
|
|
|
extern int mPlib_Check_HitAxe(xyz_t* pos_p) {
|
|
return GET_PLAYER_ACTOR_NOW()->Check_HitAxe_proc(GET_PLAYER_ACTOR_NOW_ACTOR(), pos_p);
|
|
}
|
|
|
|
extern int mPlib_Check_VibUnit_OneFrame(const xyz_t* pos_p) {
|
|
return GET_PLAYER_ACTOR_NOW()->Check_VibUnit_OneFrame_proc(GET_PLAYER_ACTOR_NOW_ACTOR(), pos_p);
|
|
}
|
|
|
|
extern int mPlib_Check_StopNet(xyz_t* pos_p) {
|
|
return GET_PLAYER_ACTOR_NOW()->Check_StopNet_proc(GET_PLAYER_ACTOR_NOW_ACTOR(), pos_p);
|
|
}
|
|
|
|
extern u32 mPlib_Get_item_net_catch_label(void) {
|
|
return GET_PLAYER_ACTOR_NOW()->Get_item_net_catch_label_proc(GET_PLAYER_ACTOR_NOW_ACTOR());
|
|
}
|
|
|
|
extern int mPlib_Change_item_net_catch_label(u32 label, s8 type) {
|
|
return GET_PLAYER_ACTOR_NOW()->Change_item_net_catch_label_proc(GET_PLAYER_ACTOR_NOW_ACTOR(), label, type);
|
|
}
|
|
|
|
extern int mPlib_Check_HitScoop(xyz_t* pos_p) {
|
|
return GET_PLAYER_ACTOR_NOW()->Check_HitScoop_proc(GET_PLAYER_ACTOR_NOW_ACTOR(), pos_p);
|
|
}
|
|
|
|
extern int mPlib_Check_DigScoop(xyz_t* pos_p) {
|
|
return GET_PLAYER_ACTOR_NOW()->Check_DigScoop_proc(GET_PLAYER_ACTOR_NOW_ACTOR(), pos_p);
|
|
}
|
|
|
|
extern int mPlib_Get_address_able_display(void) {
|
|
return GET_PLAYER_ACTOR_NOW()->address_able_display;
|
|
}
|
|
|
|
static ACTOR* mPlib_Search_exist_npc_inCircle_forScoop(GAME* game, const xyz_t* pos_p, f32 radius_sq) {
|
|
GAME_PLAY* play = (GAME_PLAY*)game;
|
|
Actor_info* actor_info = &play->actor_info;
|
|
Actor_list* npc_actor_list = &actor_info->list[ACTOR_PART_NPC];
|
|
ACTOR* actor = npc_actor_list->actor;
|
|
f32 pos_x = pos_p->x;
|
|
f32 pos_z = pos_p->z;
|
|
|
|
for (actor; actor != NULL; actor = actor->next_actor) {
|
|
f32 dx = actor->world.position.x - pos_x;
|
|
f32 dz = actor->world.position.z - pos_z;
|
|
|
|
if (Math3DVecLengthSquare2D(dx, dz) < radius_sq) {
|
|
NPC_ACTOR* npc_actor = (NPC_ACTOR*)actor;
|
|
|
|
if (npc_actor->condition_info.hide_flg == FALSE) {
|
|
return actor;
|
|
}
|
|
}
|
|
}
|
|
|
|
return NULL;
|
|
}
|
|
|
|
static ACTOR* mPlib_Search_exist_psnowman_inCircle_forScoop(GAME* game, const xyz_t* pos_p, f32 radius_sq) {
|
|
GAME_PLAY* play = (GAME_PLAY*)game;
|
|
Actor_info* actor_info = &play->actor_info;
|
|
Actor_list* bg_actor_list = &actor_info->list[ACTOR_PART_BG];
|
|
ACTOR* actor = bg_actor_list->actor;
|
|
f32 pos_x = pos_p->x;
|
|
f32 pos_z = pos_p->z;
|
|
|
|
for (actor; actor != NULL; actor = actor->next_actor) {
|
|
if (actor->id == mAc_PROFILE_PSNOWMAN) {
|
|
f32 dx = actor->world.position.x - pos_x;
|
|
f32 dz = actor->world.position.z - pos_z;
|
|
|
|
if (Math3DVecLengthSquare2D(dx, dz) < radius_sq) {
|
|
return actor;
|
|
}
|
|
}
|
|
}
|
|
|
|
return NULL;
|
|
}
|
|
|
|
static ACTOR* mPlib_Search_exist_snowball_forScoop(GAME* game, const xyz_t* pos_p) {
|
|
GAME_PLAY* play = (GAME_PLAY*)game;
|
|
Actor_info* actor_info = &play->actor_info;
|
|
Actor_list* bg_actor_list = &actor_info->list[ACTOR_PART_BG];
|
|
ACTOR* actor = bg_actor_list->actor;
|
|
f32 pos_x = pos_p->x;
|
|
f32 pos_y = pos_p->y;
|
|
f32 pos_z = pos_p->z;
|
|
|
|
for (actor; actor != NULL; actor = actor->next_actor) {
|
|
if (actor->id == mAc_PROFILE_SNOWMAN) {
|
|
SNOWMAN_ACTOR* snowball = (SNOWMAN_ACTOR*)actor;
|
|
f32 dy = actor->world.position.y - pos_y;
|
|
f32 abs_dy = ABS(dy);
|
|
f32 radius = MIN(10.0f + 20.0f * snowball->normalized_scale, 19.0f);
|
|
|
|
if (abs_dy <= 35.0f) {
|
|
f32 dx = actor->world.position.x - pos_x;
|
|
f32 dz = actor->world.position.z - pos_z;
|
|
f32 len;
|
|
f32 sq_radius;
|
|
|
|
radius += 19.0f;
|
|
len = Math3DVecLengthSquare2D(dx, dz);
|
|
sq_radius = SQ(radius);
|
|
|
|
if (len < sq_radius) {
|
|
return actor;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
return NULL;
|
|
}
|
|
|
|
static ACTOR* mPlib_Search_exist_ball_forScoop(GAME* game, const xyz_t* pos_p) {
|
|
GAME_PLAY* play = (GAME_PLAY*)game;
|
|
Actor_info* actor_info = &play->actor_info;
|
|
Actor_list* bg_actor_list = &actor_info->list[ACTOR_PART_BG];
|
|
ACTOR* actor = bg_actor_list->actor;
|
|
f32 pos_x = pos_p->x;
|
|
f32 pos_y = pos_p->y;
|
|
f32 pos_z = pos_p->z;
|
|
|
|
for (actor; actor != NULL; actor = actor->next_actor) {
|
|
if (actor->id == mAc_PROFILE_BALL) {
|
|
f32 dy = actor->world.position.y - pos_y;
|
|
f32 abs_dy = ABS(dy);
|
|
|
|
if (abs_dy <= 20.0f) {
|
|
f32 dx = actor->world.position.x - pos_x;
|
|
f32 dz = actor->world.position.z - pos_z;
|
|
|
|
if (Math3DVecLengthSquare2D(dx, dz) < SQ(39.0f)) {
|
|
return actor;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
return NULL;
|
|
}
|
|
|
|
extern int mPlib_Check_scoop_after(GAME* game, xyz_t* pos_p, mActor_name_t* item_p, ACTOR** reflect_actor_pp,
|
|
int gold_scoop) {
|
|
ACTOR* player_actor = GET_PLAYER_ACTOR_GAME_ACTOR(game);
|
|
xyz_t* player_pos_p = &player_actor->world.position;
|
|
int player_ux;
|
|
int player_uz;
|
|
int field_type = Common_Get(field_type);
|
|
|
|
if (reflect_actor_pp != NULL) {
|
|
*reflect_actor_pp = NULL;
|
|
}
|
|
|
|
*item_p = EMPTY_NO;
|
|
|
|
if (field_type == mFI_FIELDTYPE2_FG) {
|
|
if (mFI_Wpos2UtNum(&player_ux, &player_uz, *player_pos_p)) {
|
|
// clang-format off
|
|
static const int add_num[8][2] = {
|
|
{ -1, -1 },
|
|
{ 0, -1 },
|
|
{ 1, -1 },
|
|
{ -1, 0 },
|
|
// { 0, 0 }, <--- player pos
|
|
{ 1, 0 },
|
|
{ -1, 1 },
|
|
{ 0, 1 },
|
|
{ 1, 1 },
|
|
};
|
|
// clang-format on
|
|
xyz_t unit_pos[8];
|
|
int unit_num[8][2];
|
|
int unit_exist[8];
|
|
xyz_t center_ut_pos;
|
|
xyz_t unit_dist[8];
|
|
s16 unit_angle_y[8];
|
|
int unit_abs_diff_angle_y[8];
|
|
f32 player_pos_x = player_pos_p->x;
|
|
f32 player_pos_y = player_pos_p->y;
|
|
f32 player_pos_z = player_pos_p->z;
|
|
int idx = 0;
|
|
int min_angle_y;
|
|
int player_angle_y;
|
|
int i;
|
|
|
|
mFI_UtNum2CenterWpos(¢er_ut_pos, player_ux, player_uz);
|
|
|
|
/* Get the center position for each surrounding unit and if it exists or not */
|
|
for (i = 0; i < 8; i++) {
|
|
unit_num[i][0] = player_ux + add_num[i][0];
|
|
unit_num[i][1] = player_uz + add_num[i][1];
|
|
unit_exist[i] = mFI_UtNum2CenterWpos(&unit_pos[i], unit_num[i][0], unit_num[i][1]);
|
|
unit_pos[i].y = player_pos_y;
|
|
|
|
if (unit_exist[i] == FALSE) {
|
|
unit_pos[i].x = center_ut_pos.x + unit_num[i][0] * mFI_UT_WORLDSIZE_X_F;
|
|
unit_pos[i].z = center_ut_pos.z + unit_num[i][1] * mFI_UT_WORLDSIZE_Z_F;
|
|
}
|
|
}
|
|
|
|
/* Calculate distance and angle to center of each surrounding unit */
|
|
for (i = 0; i < 8; i++) {
|
|
unit_dist[i].x = unit_pos[i].x - player_pos_x;
|
|
unit_dist[i].z = unit_pos[i].z - player_pos_z;
|
|
unit_angle_y[i] = atans_table(unit_dist[i].z, unit_dist[i].x);
|
|
}
|
|
|
|
player_angle_y = player_actor->shape_info.rotation.y;
|
|
min_angle_y = DEG2SHORT_ANGLE2(360.0f);
|
|
|
|
/* Find the closest unit in relation to player's rotation */
|
|
for (i = 0; i < 8; i++) {
|
|
int diff_angle_y = unit_angle_y[i] - player_angle_y;
|
|
|
|
unit_abs_diff_angle_y[i] = ABS(diff_angle_y);
|
|
|
|
if (unit_abs_diff_angle_y[i] > DEG2SHORT_ANGLE2(180.0f)) {
|
|
unit_abs_diff_angle_y[i] = DEG2SHORT_ANGLE2(360.0f) - unit_abs_diff_angle_y[i];
|
|
}
|
|
|
|
if (min_angle_y > unit_abs_diff_angle_y[i]) {
|
|
min_angle_y = unit_abs_diff_angle_y[i];
|
|
idx = i;
|
|
}
|
|
}
|
|
|
|
/* Special handling for diagonal units */
|
|
if (idx == 0 || idx == 2 || idx == 5 || idx == 7) {
|
|
int near_wall;
|
|
int too_far_away = FALSE;
|
|
int check_ut0;
|
|
int check_ut1;
|
|
int wall0 = FALSE;
|
|
int wall1 = FALSE;
|
|
f32 base_ut_y = mCoBG_GetBgY_OnlyCenter_FromWpos2(unit_pos[idx], 0.0f);
|
|
|
|
if (idx == 0) {
|
|
check_ut0 = 1;
|
|
check_ut1 = 3;
|
|
} else if (idx == 2) {
|
|
check_ut0 = 1;
|
|
check_ut1 = 4;
|
|
} else if (idx == 5) {
|
|
check_ut0 = 3;
|
|
check_ut1 = 6;
|
|
} else {
|
|
check_ut0 = 4;
|
|
check_ut1 = 6;
|
|
}
|
|
|
|
if (unit_exist[check_ut0]) {
|
|
f32 ground0 = mCoBG_GetBgY_OnlyCenter_FromWpos2(unit_pos[check_ut0], 0.0f);
|
|
f32 ground1 = mCoBG_Wpos2BgUtCenterHeight_AddColumn(unit_pos[check_ut0]);
|
|
|
|
/* If the base ground position and the 'column' height aren't the same, and our ground position is
|
|
* less than the 'column' height, there must be a wall in front of us. */
|
|
if (ground0 != ground1 && base_ut_y < ground1) {
|
|
wall0 = TRUE;
|
|
}
|
|
}
|
|
|
|
if (unit_exist[check_ut1]) {
|
|
f32 ground0 = mCoBG_GetBgY_OnlyCenter_FromWpos2(unit_pos[check_ut1], 0.0f);
|
|
f32 ground1 = mCoBG_Wpos2BgUtCenterHeight_AddColumn(unit_pos[check_ut1]);
|
|
|
|
/* If the base ground position and the 'column' height aren't the same, and our ground position is
|
|
* less than the 'column' height, there must be a wall in front of us. */
|
|
if (ground0 != ground1 && base_ut_y < ground1) {
|
|
wall1 = TRUE;
|
|
}
|
|
}
|
|
|
|
/* If both units diagonally have a wall then we've definitely hit a wall */
|
|
if (wall0 && wall1) {
|
|
near_wall = TRUE;
|
|
} else {
|
|
near_wall = FALSE;
|
|
}
|
|
|
|
if (near_wall == FALSE) {
|
|
f32 dist = Math3DVecLengthSquare2D(unit_dist[idx].z, unit_dist[idx].x);
|
|
|
|
if (SQ(63.245553f) > dist) {
|
|
too_far_away = FALSE;
|
|
} else {
|
|
too_far_away = TRUE;
|
|
}
|
|
}
|
|
|
|
if (too_far_away || near_wall) {
|
|
min_angle_y = DEG2SHORT_ANGLE2(360.0f);
|
|
|
|
if (min_angle_y > unit_abs_diff_angle_y[1]) {
|
|
min_angle_y = unit_abs_diff_angle_y[1];
|
|
idx = 1;
|
|
}
|
|
|
|
if (min_angle_y > unit_abs_diff_angle_y[3]) {
|
|
min_angle_y = unit_abs_diff_angle_y[3];
|
|
idx = 3;
|
|
}
|
|
|
|
if (min_angle_y > unit_abs_diff_angle_y[4]) {
|
|
min_angle_y = unit_abs_diff_angle_y[4];
|
|
idx = 4;
|
|
}
|
|
|
|
if (min_angle_y > unit_abs_diff_angle_y[6]) {
|
|
min_angle_y = unit_abs_diff_angle_y[6];
|
|
idx = 6;
|
|
}
|
|
}
|
|
}
|
|
|
|
if (unit_exist[idx] == FALSE) {
|
|
*pos_p = unit_pos[idx];
|
|
return mPlayer_INDEX_AIR_SCOOP;
|
|
} else {
|
|
mActor_name_t* scoop_fg_p = mFI_UtNum2UtFG(unit_num[idx][0], unit_num[idx][1]);
|
|
mActor_name_t scoop_fg = scoop_fg_p == NULL ? EMPTY_NO : *scoop_fg_p;
|
|
int is_stump;
|
|
int is_stone_tencoin;
|
|
int is_tree;
|
|
int is_rsv;
|
|
int is_special_scoop_item;
|
|
|
|
is_stump = FALSE;
|
|
is_stone_tencoin = FALSE;
|
|
is_tree = FALSE;
|
|
is_rsv = FALSE;
|
|
is_special_scoop_item = TRUE;
|
|
|
|
if (IS_ITEM_TREE_STUMP(scoop_fg) != FALSE) {
|
|
is_stump = TRUE;
|
|
} else if (IS_ITEM_STONE_TC(scoop_fg) != FALSE) {
|
|
is_stone_tencoin = TRUE;
|
|
} else if (IS_ITEM_HITTABLE_TREE(scoop_fg) != FALSE) {
|
|
is_tree = TRUE;
|
|
} else if (scoop_fg == DUMMY_RESERVE) {
|
|
is_rsv = TRUE;
|
|
} else {
|
|
is_special_scoop_item = FALSE;
|
|
}
|
|
|
|
{
|
|
f32 diff_col_y;
|
|
f32 diff_pos_y;
|
|
f32 tmp_y;
|
|
|
|
unit_pos[idx].y = mCoBG_Wpos2BgUtCenterHeight_AddColumn(unit_pos[idx]);
|
|
diff_col_y = unit_pos[idx].y - mCoBG_GetBgY_OnlyCenter_FromWpos2(unit_pos[idx], 0.0f);
|
|
diff_pos_y = unit_pos[idx].y - player_pos_p->y;
|
|
*pos_p = unit_pos[idx];
|
|
|
|
if (is_special_scoop_item && diff_pos_y > diff_col_y) {
|
|
return mPlayer_INDEX_REFLECT_SCOOP;
|
|
}
|
|
|
|
if (is_special_scoop_item && diff_pos_y < -diff_col_y) {
|
|
return mPlayer_INDEX_AIR_SCOOP;
|
|
}
|
|
|
|
if (!is_special_scoop_item && diff_pos_y > 63.245552f) {
|
|
return mPlayer_INDEX_REFLECT_SCOOP;
|
|
}
|
|
|
|
if (!is_special_scoop_item && diff_pos_y < -63.245552f) {
|
|
return mPlayer_INDEX_AIR_SCOOP;
|
|
}
|
|
|
|
if (is_stump || is_stone_tencoin || is_tree || is_rsv) {
|
|
pos_p->y = mCoBG_GetBgY_OnlyCenter_FromWpos2(*pos_p, 0.0f);
|
|
diff_pos_y = pos_p->y - player_pos_p->y;
|
|
}
|
|
|
|
{
|
|
xyz_t start_pos = *player_pos_p;
|
|
xyz_t end_pos = *pos_p;
|
|
xyz_t rev_pos;
|
|
xyz_t start2_pos = *player_pos_p;
|
|
xyz_t end2_pos = *pos_p;
|
|
xyz_t rev2_pos;
|
|
xyz_t rev3_pos;
|
|
xyz_t rev4_pos;
|
|
|
|
start_pos.y += 1.0f;
|
|
end_pos.y += 1.0f;
|
|
start2_pos.y -= 1.0f;
|
|
end2_pos.y -= 1.0f;
|
|
|
|
if (is_stump) {
|
|
mCoBG_LineCheck_RemoveFg(&rev_pos, start_pos, end_pos, &mNT_ItIsStump,
|
|
mCoBG_LINECHECK_CAT_WALL);
|
|
mCoBG_LineCheck_RemoveFg(&rev3_pos, end_pos, start_pos, &mNT_ItIsStump,
|
|
mCoBG_LINECHECK_CAT_WALL);
|
|
mCoBG_LineCheck_RemoveFg(&rev2_pos, start2_pos, end2_pos, &mNT_ItIsStump,
|
|
mCoBG_LINECHECK_CAT_WALL);
|
|
mCoBG_LineCheck_RemoveFg(&rev4_pos, end2_pos, start2_pos, &mNT_ItIsStump,
|
|
mCoBG_LINECHECK_CAT_WALL);
|
|
} else if (is_stone_tencoin) {
|
|
mCoBG_LineCheck_RemoveFg(&rev_pos, start_pos, end_pos, &mNT_ItIsStoneCoin10,
|
|
mCoBG_LINECHECK_CAT_WALL);
|
|
mCoBG_LineCheck_RemoveFg(&rev3_pos, end_pos, start_pos, &mNT_ItIsStoneCoin10,
|
|
mCoBG_LINECHECK_CAT_WALL);
|
|
mCoBG_LineCheck_RemoveFg(&rev2_pos, start2_pos, end2_pos, &mNT_ItIsStoneCoin10,
|
|
mCoBG_LINECHECK_CAT_WALL);
|
|
mCoBG_LineCheck_RemoveFg(&rev4_pos, end2_pos, start2_pos, &mNT_ItIsStoneCoin10,
|
|
mCoBG_LINECHECK_CAT_WALL);
|
|
} else if (is_rsv) {
|
|
mCoBG_LineCheck_RemoveFg(&rev_pos, start_pos, end_pos, &mNT_ItIsReserveDummy,
|
|
mCoBG_LINECHECK_CAT_WALL);
|
|
mCoBG_LineCheck_RemoveFg(&rev3_pos, end_pos, start_pos, &mNT_ItIsReserveDummy,
|
|
mCoBG_LINECHECK_CAT_WALL);
|
|
mCoBG_LineCheck_RemoveFg(&rev2_pos, start2_pos, end2_pos, &mNT_ItIsReserveDummy,
|
|
mCoBG_LINECHECK_CAT_WALL);
|
|
mCoBG_LineCheck_RemoveFg(&rev4_pos, end2_pos, start2_pos, &mNT_ItIsReserveDummy,
|
|
mCoBG_LINECHECK_CAT_WALL);
|
|
} else if (!is_tree) {
|
|
mCoBG_LineCheck_RemoveFg(&rev_pos, start_pos, end_pos, NULL, mCoBG_LINECHECK_CAT_WALL);
|
|
mCoBG_LineCheck_RemoveFg(&rev3_pos, end_pos, start_pos, NULL, mCoBG_LINECHECK_CAT_WALL);
|
|
mCoBG_LineCheck_RemoveFg(&rev2_pos, start2_pos, end2_pos, NULL, mCoBG_LINECHECK_CAT_WALL);
|
|
mCoBG_LineCheck_RemoveFg(&rev4_pos, end2_pos, start2_pos, NULL, mCoBG_LINECHECK_CAT_WALL);
|
|
}
|
|
|
|
if (!is_tree) {
|
|
if (((rev_pos.x != 0.0f || rev_pos.y != 0.0f || rev_pos.z != 0.0f) &&
|
|
(rev2_pos.x != 0.0f || rev2_pos.y != 0.0f || rev2_pos.z != 0.0f)) ||
|
|
((rev3_pos.x != 0.0f || rev3_pos.y != 0.0f || rev3_pos.z != 0.0f) &&
|
|
(rev4_pos.x != 0.0f || rev4_pos.y != 0.0f || rev4_pos.z != 0.0f))) {
|
|
if (diff_pos_y >= 0.0f) {
|
|
return mPlayer_INDEX_REFLECT_SCOOP;
|
|
} else {
|
|
return mPlayer_INDEX_AIR_SCOOP;
|
|
}
|
|
}
|
|
}
|
|
|
|
{
|
|
int dig_status;
|
|
int hit_flag = FALSE;
|
|
ACTOR* hit_actor_p;
|
|
mActor_name_t hit_item;
|
|
|
|
dig_status = mFI_GetDigStatus(&hit_item, *pos_p, gold_scoop);
|
|
|
|
/* Don't let the player hit NPCs with the shovel */
|
|
hit_actor_p = mPlib_Search_exist_npc_inCircle_forScoop(game, pos_p, SQ(39.0f));
|
|
if (hit_actor_p != NULL) {
|
|
return mPlayer_INDEX_AIR_SCOOP;
|
|
}
|
|
|
|
hit_actor_p = mPlib_Search_exist_psnowman_inCircle_forScoop(game, pos_p, SQ(39.0f));
|
|
if (hit_actor_p != NULL) {
|
|
hit_flag = TRUE;
|
|
}
|
|
|
|
if (hit_actor_p == NULL) {
|
|
hit_actor_p = mPlib_Search_exist_snowball_forScoop(game, pos_p);
|
|
if (hit_actor_p != NULL) {
|
|
hit_flag = TRUE;
|
|
}
|
|
}
|
|
|
|
if (hit_actor_p == NULL) {
|
|
hit_actor_p = mPlib_Search_exist_ball_forScoop(game, pos_p);
|
|
if (hit_actor_p != NULL) {
|
|
hit_flag = TRUE;
|
|
}
|
|
}
|
|
|
|
if (reflect_actor_pp != NULL) {
|
|
*reflect_actor_pp = hit_actor_p;
|
|
}
|
|
|
|
if (scoop_fg != hit_item) {
|
|
*item_p = hit_item;
|
|
} else {
|
|
*item_p = scoop_fg;
|
|
}
|
|
|
|
if (is_tree) {
|
|
return mPlayer_INDEX_REFLECT_SCOOP;
|
|
}
|
|
|
|
if (is_rsv) {
|
|
return mPlayer_INDEX_REFLECT_SCOOP;
|
|
}
|
|
|
|
switch (dig_status) {
|
|
case mFI_DIGSTATUS_FILLIN:
|
|
if (hit_flag) {
|
|
return mPlayer_INDEX_REFLECT_SCOOP;
|
|
} else if (is_stone_tencoin) {
|
|
return mPlayer_INDEX_REFLECT_SCOOP;
|
|
} else {
|
|
return mPlayer_INDEX_FILL_SCOOP;
|
|
}
|
|
break;
|
|
case mFI_DIGSTATUS_DIG:
|
|
case mFI_DIGSTATUS_PUT_ITEM:
|
|
if (hit_flag) {
|
|
return mPlayer_INDEX_REFLECT_SCOOP;
|
|
} else if (is_stone_tencoin) {
|
|
return mPlayer_INDEX_REFLECT_SCOOP;
|
|
} else {
|
|
return mPlayer_INDEX_DIG_SCOOP;
|
|
}
|
|
break;
|
|
case mFI_DIGSTATUS_GET_ITEM:
|
|
if (hit_flag) {
|
|
return mPlayer_INDEX_REFLECT_SCOOP;
|
|
} else if (is_stone_tencoin) {
|
|
return mPlayer_INDEX_REFLECT_SCOOP;
|
|
} else {
|
|
return mPlayer_INDEX_GET_SCOOP;
|
|
}
|
|
break;
|
|
case mFI_DIGSTATUS_MISS:
|
|
return mPlayer_INDEX_AIR_SCOOP;
|
|
default:
|
|
if (is_stone_tencoin) {
|
|
*item_p = scoop_fg;
|
|
}
|
|
return mPlayer_INDEX_REFLECT_SCOOP;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
return -1;
|
|
}
|
|
|
|
extern int mPlib_Check_scene_able_change_camera_pos(void) {
|
|
if (mFI_CheckFieldData()) {
|
|
int field_type = mFI_GET_TYPE(mFI_GetFieldId());
|
|
|
|
return (field_type == mFI_FIELD_NPCROOM0 || field_type == mFI_FIELD_PLAYER0_ROOM ||
|
|
Save_Get(scene_no) == SCENE_MUSEUM_ROOM_FOSSIL || Save_Get(scene_no) == SCENE_MUSEUM_ROOM_PAINTING ||
|
|
Save_Get(scene_no) == SCENE_MUSEUM_ROOM_INSECT || Save_Get(scene_no) == SCENE_MUSEUM_ROOM_FISH);
|
|
}
|
|
|
|
return FALSE;
|
|
}
|
|
|
|
extern int mPlib_Check_RotateOctagon(void) {
|
|
return GET_PLAYER_ACTOR_NOW()->Check_RotateOctagon_proc(gamePT);
|
|
}
|
|
|
|
extern int mPlib_Set_EndWashCar(void) {
|
|
if (mPlib_get_player_actor_main_index(gamePT) == mPlayer_INDEX_WASH_CAR) {
|
|
PLAYER_ACTOR* player = GET_PLAYER_ACTOR_NOW();
|
|
mPlayer_main_wash_car_c* wash_car_p = &player->main_data.wash_car;
|
|
|
|
wash_car_p->ret_order = TRUE;
|
|
return TRUE;
|
|
}
|
|
|
|
return FALSE;
|
|
}
|
|
|
|
extern int mPlib_Set_AnimeSpeedWashCar(f32 anime_speed) {
|
|
if (mPlib_get_player_actor_main_index(gamePT) == mPlayer_INDEX_WASH_CAR) {
|
|
PLAYER_ACTOR* player = GET_PLAYER_ACTOR_NOW();
|
|
|
|
player->keyframe0.frame_control.speed = anime_speed;
|
|
player->keyframe1.frame_control.speed = anime_speed;
|
|
return TRUE;
|
|
}
|
|
|
|
return FALSE;
|
|
}
|
|
|
|
extern int mPlib_Check_now_handin_item_kind(void) {
|
|
return GET_PLAYER_ACTOR_NOW()->item_kind;
|
|
}
|
|
|
|
extern int mPlib_Check_now_handin_item(void) {
|
|
return GET_PLAYER_ACTOR_NOW()->item_kind >= 0;
|
|
}
|
|
|
|
extern void mPlib_Set_able_hand_all_item_in_demo(s8 v) {
|
|
GET_PLAYER_ACTOR_NOW()->able_hand_all_item_in_demo = v;
|
|
}
|
|
|
|
extern int mPlib_Get_status_for_bee(void) {
|
|
return GET_PLAYER_ACTOR_NOW()->Get_status_for_bee_proc(GET_PLAYER_ACTOR_NOW_ACTOR());
|
|
}
|
|
|
|
extern int mPlib_Check_end_stung_bee(void) {
|
|
return GET_PLAYER_ACTOR_NOW()->Check_end_stung_bee_proc(GET_PLAYER_ACTOR_NOW_ACTOR());
|
|
}
|
|
|
|
extern int mPlib_Check_Label_main_push_snowball(void* label) {
|
|
return GET_PLAYER_ACTOR_NOW()->Check_Label_main_push_snowball_proc(gamePT, label);
|
|
}
|
|
|
|
extern int mPlib_Check_Label_main_wade_snowball(void* label) {
|
|
return GET_PLAYER_ACTOR_NOW()->Check_Label_main_wade_snowball_proc(gamePT, label);
|
|
}
|
|
|
|
extern int mPlib_Set_ScrollDemo_forWade_snowball(int dir, const xyz_t* snowball_dist_p) {
|
|
return GET_PLAYER_ACTOR_NOW()->Set_ScrollDemo_forWade_snowball_proc(GET_PLAYER_ACTOR_NOW_ACTOR(), dir,
|
|
snowball_dist_p);
|
|
}
|
|
|
|
extern int mPlib_GetSnowballPos_forWadeSnowball(xyz_t* pos_p) {
|
|
return GET_PLAYER_ACTOR_NOW()->GetSnowballPos_forWadeSnowball_proc(GET_PLAYER_ACTOR_NOW_ACTOR(), pos_p);
|
|
}
|
|
|
|
extern int mPlib_CheckCondition_forWadeSnowball(const xyz_t* pos_p, s16 angle_y) {
|
|
return GET_PLAYER_ACTOR_NOW()->CheckCondition_forWadeSnowball_proc(gamePT, pos_p, angle_y);
|
|
}
|
|
|
|
extern int mPlib_SetParam_for_push_snowball(const xyz_t* pos_p, s16 angle_y, f32 anim_speed) {
|
|
return GET_PLAYER_ACTOR_NOW()->SetParam_for_push_snowball_proc(gamePT, pos_p, angle_y, anim_speed);
|
|
}
|
|
|
|
extern void mPlib_Set_crash_snowball_for_wade(int v) {
|
|
GET_PLAYER_ACTOR_NOW()->crash_snowball_for_wade = v;
|
|
}
|
|
|
|
static mPlayer_Controller_Data_c controller_data_for_title_demo;
|
|
|
|
extern mPlayer_Controller_Data_c* mPlib_Get_controller_data_for_title_demo_p(void) {
|
|
return &controller_data_for_title_demo;
|
|
}
|
|
|
|
extern void mPlib_Clear_controller_data_for_title_demo(void) {
|
|
bzero(&controller_data_for_title_demo, sizeof(controller_data_for_title_demo));
|
|
controller_data_for_title_demo.equipped_item = ITM_PAPER_START; /* @BUG - this should be a tool, not paper */
|
|
}
|
|
|
|
extern void mPlib_SetData1_controller_data_for_title_demo(int btn_a, int btn_b, f32 stick_x, f32 stick_y) {
|
|
mCon_calc(&controller_data_for_title_demo.mcon, stick_x, stick_y);
|
|
|
|
if (controller_data_for_title_demo.trigger_btn_a == FALSE && btn_a != FALSE) {
|
|
controller_data_for_title_demo.trigger_btn_a = TRUE;
|
|
} else {
|
|
controller_data_for_title_demo.trigger_btn_a = FALSE;
|
|
}
|
|
controller_data_for_title_demo.btn_a = btn_a;
|
|
|
|
if (controller_data_for_title_demo.trigger_btn_b == FALSE && btn_b != FALSE) {
|
|
controller_data_for_title_demo.trigger_btn_b = TRUE;
|
|
} else {
|
|
controller_data_for_title_demo.trigger_btn_b = FALSE;
|
|
}
|
|
controller_data_for_title_demo.btn_b = btn_b;
|
|
}
|
|
|
|
extern void mPlib_SetData2_controller_data_for_title_demo(mActor_name_t item) {
|
|
controller_data_for_title_demo.equipped_item = item;
|
|
}
|
|
|
|
extern int mPlib_Check_CorrectPlayerPos_forEvent(void) {
|
|
if (Common_Get(player_actor_exists)) {
|
|
int main_index = GET_PLAYER_ACTOR_NOW()->now_main_index;
|
|
|
|
if (mPlayer_MAIN_INDEX_VALID(main_index) != FALSE) {
|
|
// clang-format off
|
|
static const s8 data[] = {
|
|
FALSE,
|
|
FALSE,
|
|
FALSE,
|
|
FALSE,
|
|
FALSE,
|
|
FALSE,
|
|
FALSE,
|
|
FALSE,
|
|
FALSE,
|
|
FALSE,
|
|
FALSE,
|
|
FALSE,
|
|
FALSE,
|
|
FALSE,
|
|
FALSE,
|
|
FALSE,
|
|
FALSE,
|
|
FALSE,
|
|
FALSE,
|
|
FALSE,
|
|
FALSE,
|
|
FALSE,
|
|
FALSE,
|
|
FALSE,
|
|
FALSE,
|
|
FALSE,
|
|
TRUE,
|
|
TRUE,
|
|
TRUE,
|
|
TRUE,
|
|
FALSE,
|
|
FALSE,
|
|
FALSE,
|
|
FALSE,
|
|
FALSE,
|
|
TRUE,
|
|
TRUE,
|
|
FALSE,
|
|
FALSE,
|
|
FALSE,
|
|
FALSE,
|
|
FALSE,
|
|
FALSE,
|
|
FALSE,
|
|
FALSE,
|
|
FALSE,
|
|
FALSE,
|
|
FALSE,
|
|
FALSE,
|
|
FALSE,
|
|
FALSE,
|
|
FALSE,
|
|
FALSE,
|
|
FALSE,
|
|
FALSE,
|
|
FALSE,
|
|
FALSE,
|
|
FALSE,
|
|
FALSE,
|
|
FALSE,
|
|
FALSE,
|
|
FALSE,
|
|
FALSE,
|
|
FALSE,
|
|
FALSE,
|
|
FALSE,
|
|
FALSE,
|
|
FALSE,
|
|
FALSE,
|
|
FALSE,
|
|
FALSE,
|
|
FALSE,
|
|
FALSE,
|
|
FALSE,
|
|
FALSE,
|
|
FALSE,
|
|
FALSE,
|
|
FALSE,
|
|
FALSE,
|
|
FALSE,
|
|
FALSE,
|
|
FALSE,
|
|
FALSE,
|
|
FALSE,
|
|
FALSE,
|
|
FALSE,
|
|
FALSE,
|
|
FALSE,
|
|
FALSE,
|
|
FALSE,
|
|
FALSE,
|
|
FALSE,
|
|
FALSE,
|
|
FALSE,
|
|
FALSE,
|
|
FALSE,
|
|
FALSE,
|
|
FALSE,
|
|
FALSE,
|
|
FALSE,
|
|
FALSE,
|
|
FALSE,
|
|
FALSE,
|
|
FALSE,
|
|
FALSE,
|
|
FALSE,
|
|
FALSE,
|
|
FALSE,
|
|
FALSE,
|
|
FALSE,
|
|
FALSE,
|
|
FALSE,
|
|
FALSE,
|
|
FALSE,
|
|
FALSE,
|
|
FALSE,
|
|
FALSE,
|
|
FALSE,
|
|
FALSE,
|
|
FALSE,
|
|
FALSE,
|
|
};
|
|
// clang-format on
|
|
|
|
return data[main_index];
|
|
}
|
|
}
|
|
|
|
return FALSE;
|
|
}
|
|
|
|
extern int mPlib_Check_UKI_COMEBACK_STATUS(void) {
|
|
if (Common_Get(player_actor_exists)) {
|
|
PLAYER_ACTOR* player = GET_PLAYER_ACTOR_NOW();
|
|
|
|
if (player->fishing_rod_actor_p) {
|
|
UKI_ACTOR* uki_actor = (UKI_ACTOR*)player->fishing_rod_actor_p;
|
|
|
|
return uki_actor->status == aUKI_STATUS_COMEBACK;
|
|
}
|
|
}
|
|
|
|
return FALSE;
|
|
}
|
|
|
|
extern int mPlib_Check_tree_shaken(const xyz_t* pos_p) {
|
|
return GET_PLAYER_ACTOR_NOW()->Check_tree_shaken_proc(GET_PLAYER_ACTOR_NOW_ACTOR(), pos_p);
|
|
}
|
|
|
|
extern int mPlib_Check_tree_shaken_little(const xyz_t* pos_p) {
|
|
return GET_PLAYER_ACTOR_NOW()->Check_tree_shaken_little_proc(GET_PLAYER_ACTOR_NOW_ACTOR(), pos_p);
|
|
}
|
|
|
|
extern int mPlib_Check_tree_shaken_big(const xyz_t* pos_p) {
|
|
return GET_PLAYER_ACTOR_NOW()->Check_tree_shaken_big_proc(GET_PLAYER_ACTOR_NOW_ACTOR(), pos_p);
|
|
}
|
|
|
|
extern mActor_name_t mPlib_Get_itemNo_forWindow(void) {
|
|
if (Common_Get(player_actor_exists) == FALSE) {
|
|
return EMPTY_NO;
|
|
}
|
|
|
|
if (SubmenuArea_IsPlayer() == FALSE) {
|
|
return EMPTY_NO;
|
|
}
|
|
|
|
return GET_PLAYER_ACTOR_NOW()->Get_itemNo_forWindow_proc(GET_PLAYER_ACTOR_NOW_ACTOR());
|
|
}
|
|
|
|
extern int mPlib_able_birth_bee(void) {
|
|
if (mEv_CheckFirstIntro() != FALSE || Common_Get(reset_flag) != FALSE ||
|
|
Common_Get(player_bee_chase_flag) != FALSE || mEv_CheckTitleDemo() > 0) {
|
|
return FALSE;
|
|
}
|
|
|
|
return TRUE;
|
|
}
|
|
|
|
extern int mPlib_check_able_change_camera_normal_index(void) {
|
|
if (Common_Get(player_actor_exists) == FALSE) {
|
|
return EMPTY_NO;
|
|
}
|
|
|
|
if (SubmenuArea_IsPlayer() == FALSE) {
|
|
return EMPTY_NO;
|
|
}
|
|
|
|
return GET_PLAYER_ACTOR_NOW()->check_able_change_camera_normal_index_proc(GET_PLAYER_ACTOR_NOW_ACTOR());
|
|
}
|
|
|
|
extern int mPlib_check_player_actor_main_index_Furniture_Move(GAME* game) {
|
|
int res = FALSE;
|
|
|
|
if (mPlib_get_player_actor_main_index(game) == mPlayer_INDEX_PUSH ||
|
|
mPlib_get_player_actor_main_index(game) == mPlayer_INDEX_PULL) {
|
|
res = TRUE;
|
|
}
|
|
|
|
return res;
|
|
}
|
|
|
|
extern int mPlib_check_player_actor_main_index_RecieveMove(GAME* game) {
|
|
int res = FALSE;
|
|
|
|
if (mPlib_get_player_actor_main_index(game) == mPlayer_INDEX_RECIEVE_WAIT ||
|
|
mPlib_get_player_actor_main_index(game) == mPlayer_INDEX_RECIEVE_STRETCH ||
|
|
mPlib_get_player_actor_main_index(game) == mPlayer_INDEX_RECIEVE ||
|
|
mPlib_get_player_actor_main_index(game) == mPlayer_INDEX_RECIEVE_PUTAWAY) {
|
|
res = TRUE;
|
|
}
|
|
|
|
return res;
|
|
}
|
|
|
|
extern int mPlib_check_player_actor_main_index_Pitfall(GAME* game) {
|
|
int res = FALSE;
|
|
|
|
if (mPlib_get_player_actor_main_index(game) == mPlayer_INDEX_READY_PITFALL ||
|
|
mPlib_get_player_actor_main_index(game) == mPlayer_INDEX_FALL_PITFALL ||
|
|
mPlib_get_player_actor_main_index(game) == mPlayer_INDEX_STRUGGLE_PITFALL ||
|
|
mPlib_get_player_actor_main_index(game) == mPlayer_INDEX_CLIMBUP_PITFALL) {
|
|
res = TRUE;
|
|
}
|
|
|
|
return res;
|
|
}
|
|
|
|
extern int mPlib_check_player_actor_main_index_OutDoorMove(GAME* game) {
|
|
if (mPlib_get_player_actor_main_index(game) == mPlayer_INDEX_DMA ||
|
|
mPlib_get_player_actor_main_index(game) == mPlayer_INDEX_INTRO ||
|
|
mPlib_get_player_actor_main_index(game) == mPlayer_INDEX_OUTDOOR ||
|
|
mPlib_get_player_actor_main_index(game) == mPlayer_INDEX_COMPLETE_PAYMENT ||
|
|
mPlib_get_player_actor_main_index(game) == mPlayer_INDEX_RETURN_OUTDOOR ||
|
|
mPlib_get_player_actor_main_index(game) == mPlayer_INDEX_RETURN_OUTDOOR2 ||
|
|
mPlib_get_player_actor_main_index(game) == mPlayer_INDEX_TAKEOUT_ITEM) {
|
|
return TRUE;
|
|
}
|
|
|
|
return FALSE;
|
|
}
|
|
|
|
extern int mPlib_check_player_actor_main_index_OutDoorMove2(GAME* game) {
|
|
if (mPlib_get_player_actor_main_index(game) == mPlayer_INDEX_DMA ||
|
|
mPlib_get_player_actor_main_index(game) == mPlayer_INDEX_INTRO ||
|
|
mPlib_get_player_actor_main_index(game) == mPlayer_INDEX_OUTDOOR ||
|
|
mPlib_get_player_actor_main_index(game) == mPlayer_INDEX_RETURN_OUTDOOR ||
|
|
mPlib_get_player_actor_main_index(game) == mPlayer_INDEX_COMPLETE_PAYMENT ||
|
|
mPlib_get_player_actor_main_index(game) == mPlayer_INDEX_TAKEOUT_ITEM) {
|
|
return TRUE;
|
|
}
|
|
|
|
return FALSE;
|
|
}
|
|
|
|
extern int mPlib_check_player_actor_main_index_AllWade(GAME* game) {
|
|
if (mPlib_get_player_actor_main_index(game) == mPlayer_INDEX_WADE ||
|
|
mPlib_get_player_actor_main_index(game) == mPlayer_INDEX_DEMO_WADE ||
|
|
mPlib_get_player_actor_main_index(game) == mPlayer_INDEX_WADE_SNOWBALL ||
|
|
mPlib_get_player_actor_main_index(game) == mPlayer_INDEX_DEMO_GETON_BOAT_WADE) {
|
|
return TRUE;
|
|
}
|
|
|
|
return FALSE;
|
|
}
|
|
|
|
extern int mPlib_check_player_actor_main_index_catch_insect(GAME* game) {
|
|
return (mPlib_Get_item_net_catch_label() != 0 &&
|
|
mPlib_get_player_actor_main_index(game) == mPlayer_INDEX_SWING_NET) ||
|
|
mPlib_get_player_actor_main_index(game) == mPlayer_INDEX_PULL_NET ||
|
|
mPlib_get_player_actor_main_index(game) == mPlayer_INDEX_NOTICE_NET ||
|
|
mPlib_get_player_actor_main_index(game) == mPlayer_INDEX_PUTAWAY_NET;
|
|
}
|
|
|
|
extern int mPlib_check_player_actor_main_index_catch_fish(GAME* game) {
|
|
return mPlib_get_player_actor_main_index(game) == mPlayer_INDEX_FLY_ROD ||
|
|
mPlib_get_player_actor_main_index(game) == mPlayer_INDEX_NOTICE_ROD ||
|
|
mPlib_get_player_actor_main_index(game) == mPlayer_INDEX_PUTAWAY_ROD;
|
|
}
|
|
|
|
extern int mPlib_check_player_actor_start_switch_on_lighthouse(GAME* game) {
|
|
if (mPlib_get_player_actor_main_index(game) == mPlayer_INDEX_SWITCH_ON_LIGHTHOUSE &&
|
|
GET_PLAYER_ACTOR_GAME(game)->keyframe0.frame_control.current_frame > 1.0f) {
|
|
return TRUE;
|
|
}
|
|
|
|
return FALSE;
|
|
}
|
|
|
|
extern int mPlib_Check_stung_mosquito(void* label) {
|
|
return GET_PLAYER_ACTOR_NOW()->Check_stung_mosquito_proc(gamePT, label);
|
|
}
|
|
|
|
extern void mPlib_Set_boat_angleZ(s16 angle_z) {
|
|
GET_PLAYER_ACTOR_NOW()->boat_angleZ = angle_z;
|
|
}
|
|
|
|
extern int mPlib_CheckButtonOnly_forDush(void) {
|
|
return chkButton(BUTTON_B) || chkButton(BUTTON_L) || chkButton(BUTTON_R);
|
|
}
|
|
|
|
extern int mPlib_Check_golden_item_get_demo_end(int gold_item_type) {
|
|
static u8 data[] = {
|
|
(1 << mPlayer_GOLDEN_ITEM_TYPE_AXE),
|
|
(1 << mPlayer_GOLDEN_ITEM_TYPE_NET),
|
|
(1 << mPlayer_GOLDEN_ITEM_TYPE_ROD),
|
|
(1 << mPlayer_GOLDEN_ITEM_TYPE_SHOVEL),
|
|
};
|
|
|
|
return data[gold_item_type] & Now_Private->golden_items_collected;
|
|
}
|
|
|
|
extern void mPlib_Set_change_color_request(void) {
|
|
PLAYER_ACTOR* player = GET_PLAYER_ACTOR_NOW();
|
|
|
|
player->change_color_request = TRUE;
|
|
}
|