mirror of
https://github.com/ACreTeam/ac-decomp
synced 2026-09-02 16:48:05 -04:00
Implement & link ac_haniwa.c
This commit is contained in:
@@ -3,11 +3,80 @@
|
||||
|
||||
#include "types.h"
|
||||
#include "m_actor.h"
|
||||
#include "c_keyframe.h"
|
||||
#include "m_collision_obj.h"
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
typedef struct actor_haniwa_s HANIWA_ACTOR;
|
||||
|
||||
typedef void (*HANIWA_ACTOR_PROC)(ACTOR*, GAME*);
|
||||
|
||||
enum haniwa_msg {
|
||||
aHNW_MSG_NO_OWNER,
|
||||
aHNW_MSG_PROCEEDS,
|
||||
aHNW_MSG_NORMAL,
|
||||
aHNW_MSG_OTHER_OWNER,
|
||||
aHNW_MSG_NEED_FRIEND,
|
||||
|
||||
aHNW_MSG_NUM
|
||||
};
|
||||
|
||||
enum haniwa_handover {
|
||||
aHNW_HANDOVER_YES,
|
||||
aHNW_HANDOVER_NO,
|
||||
|
||||
aHNW_HANDOVER_NUM
|
||||
};
|
||||
|
||||
enum haniwa_action {
|
||||
aHNW_ACTION_WAIT,
|
||||
aHNW_ACTION_DANCE,
|
||||
aHNW_ACTION_CHECK_PROCEEDS,
|
||||
aHNW_ACTION_TALK_WITH_MASTER,
|
||||
aHNW_ACTION_TALK_WITH_MASTER2,
|
||||
aHNW_ACTION_TALK_END_WAIT,
|
||||
aHNW_ACTION_MENU_OPEN_WAIT,
|
||||
aHNW_ACTION_MENU_END_WAIT,
|
||||
aHNW_ACTION_TALK_WITH_GUEST,
|
||||
aHNW_ACTION_MENU_OPEN_WAIT_FOR_GUEST,
|
||||
aHNW_ACTION_MENU_END_WAIT_FOR_GUEST,
|
||||
aHNW_ACTION_ROOF_CHECK,
|
||||
aHNW_ACTION_SAVE_CHECK,
|
||||
aHNW_ACTION_SAVE_END_WAIT,
|
||||
aHNW_ACTION_PL_APPROACH_DOOR,
|
||||
aHNW_ACTION_DOOR_OPEN_WAIT,
|
||||
aHNW_ACTION_DOOR_OPEN_TIMER,
|
||||
|
||||
aHNW_ACTION_NUM
|
||||
};
|
||||
|
||||
struct actor_haniwa_s {
|
||||
ACTOR actor_class;
|
||||
|
||||
int saved_current_frame;
|
||||
int keyframe_state;
|
||||
|
||||
cKF_SkeletonInfo_R_c keyframe;
|
||||
int animation_state;
|
||||
|
||||
ClObjPipe_c col_pipe;
|
||||
|
||||
int action;
|
||||
char* bank_ram_start;
|
||||
s_xyz keyframe_work_area[8];
|
||||
s_xyz keyframe_morph_area[8];
|
||||
HANIWA_ACTOR_PROC action_proc;
|
||||
f32 anim_frame_speed;
|
||||
int player_approach_door_stage;
|
||||
u16 door_approach_frame;
|
||||
u8 submenu_type;
|
||||
u8 house_idx;
|
||||
u8 playing_save_bgm;
|
||||
};
|
||||
|
||||
extern ACTOR_PROFILE Haniwa_Profile;
|
||||
|
||||
#ifdef __cplusplus
|
||||
|
||||
@@ -8,6 +8,26 @@
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
typedef struct actor_intor_demo_s INTRO_DEMO_ACTOR;
|
||||
|
||||
struct actor_intor_demo_s {
|
||||
ACTOR actor_class;
|
||||
int action;
|
||||
int rcn_action;
|
||||
void (*action_proc)(ACTOR*, GAME*);
|
||||
void* train1_actor_p; // TODO: correct type
|
||||
void* station_master_actor_p; // TODO: correct type
|
||||
void* rcn_guide_actor_p; // TODO: correct type
|
||||
int player_in_intro_demo;
|
||||
int player_intro_demo_state;
|
||||
int selected_house;
|
||||
int _198;
|
||||
u8 first_field_bgm_state;
|
||||
int _1A0;
|
||||
int _1A4;
|
||||
int _1A8;
|
||||
};
|
||||
|
||||
extern ACTOR_PROFILE Intro_Demo_Profile;
|
||||
|
||||
#ifdef __cplusplus
|
||||
|
||||
@@ -8,6 +8,29 @@
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
typedef struct actor_my_house_s MY_HOUSE_ACTOR;
|
||||
|
||||
struct actor_my_house_s {
|
||||
ACTOR actor_class;
|
||||
int _174;
|
||||
cKF_SkeletonInfo_R_c keyframe;
|
||||
int _1E8;
|
||||
s_xyz work_area[15];
|
||||
s_xyz morph_area[15];
|
||||
u8 _2A0[0x2B0 - 0x2A0];
|
||||
int door_rotation_speed_idx;
|
||||
int house_no;
|
||||
int house_shape;
|
||||
int _2BC;
|
||||
int _2C0;
|
||||
int intro_flag;
|
||||
f32 door_pos_x;
|
||||
f32 door_poz_z;
|
||||
f32 door_rotation_speed;
|
||||
f32 _2D4;
|
||||
int season;
|
||||
};
|
||||
|
||||
extern ACTOR_PROFILE MyHouse_Profile;
|
||||
|
||||
#ifdef __cplusplus
|
||||
|
||||
+3
-1
@@ -7,6 +7,8 @@
|
||||
#include "m_lib.h"
|
||||
#include "m_lights.h"
|
||||
#include "m_collision_bg.h"
|
||||
#include "m_collision_obj.h"
|
||||
#include "libforest/gbi_extensions.h"
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
@@ -356,7 +358,7 @@ struct actor_s {
|
||||
/* 0x0B8 */ f32 player_distance; /* distance between actor and player actor (squared magnitude) */
|
||||
/* 0x0BC */ f32 player_distance_xz; /* distance between actor and player actor on XZ plane (magnitude) */
|
||||
/* 0x0C0 */ f32 player_distance_y; /* distance between actor and player actor on Y plane */
|
||||
/* 0x0C4 */ u8 status_data[0xDC-0xC4]; /* TODO: implement, see m_collision_obj */
|
||||
/* 0x0C4 */ Status_c status_data; /* collider info, lots of leftover stuff from OoT */
|
||||
/* 0x0DC */ Shape_Info shape_info;
|
||||
/* 0x124 */ xyz_t camera_position; /* camera position relative to actor position */
|
||||
/* 0x130 */ f32 camera_w; /* camera projection W value */
|
||||
|
||||
@@ -12,6 +12,8 @@ extern void mBGM_reset();
|
||||
extern void mBGMPsComp_make_ps_lost_fanfare(u8 bgm_no, u16 unk);
|
||||
extern void mBGMPsComp_scene_mode(int scene_mode);
|
||||
extern void mBGMPsComp_make_ps_wipe(u16 ps_wipe);
|
||||
extern void mBGMPsComp_delete_ps_demo(u8 bgm_num, u16 stop_type);
|
||||
extern void mBGMPsComp_make_ps_demo(u8 bgm_no, u16 stop_type);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
|
||||
@@ -0,0 +1,28 @@
|
||||
#ifndef M_CHOICE_H
|
||||
#define M_CHOICE_H
|
||||
|
||||
#include "types.h"
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
typedef struct choice_s mChoice_c; // TODO
|
||||
|
||||
enum choice {
|
||||
mChoice_CHOICE0,
|
||||
mChoice_CHOICE1,
|
||||
mChoice_CHOICE2,
|
||||
mChoice_CHOICE3,
|
||||
|
||||
mChoice_CHOICE_NUM
|
||||
};
|
||||
|
||||
extern mChoice_c* mChoice_Get_base_window_p();
|
||||
extern int mChoice_Get_ChoseNum(mChoice_c* choice);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif
|
||||
+5
-1
@@ -7,6 +7,7 @@
|
||||
#include "ac_structure.h"
|
||||
#include "ac_animal_logo.h"
|
||||
#include "ef_effect_control.h"
|
||||
#include "m_demo.h"
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
@@ -19,7 +20,10 @@ typedef struct clip_s {
|
||||
/* 0x080 */ void* _080[(0x08C - 0x080) / sizeof(void*)];
|
||||
/* 0x08C */ aSTR_Clip_c* structure_clip;
|
||||
/* 0x090 */ eEC_EffectControl_Clip_c* effect_clip;
|
||||
/* 0x094 */ void* _094[(0x0AC - 0x094) / sizeof(void*)];
|
||||
/* 0x094 */ void* _094[(0x0A0 - 0x094) / sizeof(void*)];
|
||||
/* 0x0A0 */ mDemo_Clip_c* demo_clip; /* can be multiple clip classes */
|
||||
/* 0x0A4 */ void* demo_clip2; /* can be multiple clip classes */
|
||||
/* 0x0A8 */ void* _0A8;
|
||||
/* 0x0AC */ aGYO_Clip_c* gyo_clip;
|
||||
/* 0x0B0 */ void* _0B0[(0x0DC - 0x0B0) / sizeof(void*)];
|
||||
/* 0x0DC */ aAL_Clip_c* animal_logo_clip;
|
||||
|
||||
@@ -71,11 +71,36 @@ typedef struct collision_check_s {
|
||||
ClObj_c* collider_table[Cl_COLLIDER_NUM];
|
||||
} CollisionCheck_c;
|
||||
|
||||
/* This appears to again be copy-paste from OoT? */
|
||||
typedef struct status_s {
|
||||
xyz_t collision_vec;
|
||||
s16 radius;
|
||||
s16 height;
|
||||
s16 offset;
|
||||
|
||||
u8 weight;
|
||||
u8 hp;
|
||||
u8 damage;
|
||||
|
||||
u8 damage_effect;
|
||||
u8 at_hit_effect;
|
||||
u8 ac_hit_effect;
|
||||
} Status_c;
|
||||
|
||||
typedef struct status_data_s {
|
||||
u8 health; // assuming this is inherited from OoT, seems largely unused
|
||||
s16 radius;
|
||||
s16 height;
|
||||
s16 offset;
|
||||
u8 weight;
|
||||
} StatusData_c;
|
||||
|
||||
extern void ClObjPipe_ct(GAME_PLAY* play, ClObjPipe_c* pipe);
|
||||
extern void ClObjPipe_dt(GAME_PLAY* play, ClObjPipe_c* pipe);
|
||||
extern void ClObjPipe_set5(GAME_PLAY* play, ClObjPipe_c* pipe, ACTOR* owner, ClObjPipeData_c* data);
|
||||
extern void CollisionCheck_Uty_ActorWorldPosSetPipeC(ACTOR* actor, ClObjPipe_c* col_pipe);
|
||||
extern int CollisionCheck_setOC(GAME_PLAY* play, CollisionCheck_c* collision_check, ClObj_c* col_obj);
|
||||
extern void CollisionCheck_Status_set3(Status_c* status, StatusData_c* data);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
|
||||
@@ -200,7 +200,9 @@ typedef struct common_data_s {
|
||||
/* 0x028860 */ f32 unused_028860;
|
||||
/* 0x028864 */ u16 unused_028864;
|
||||
/* 0x028866 */ u16 unused_028866;
|
||||
/* 0x028868 */ u8 _028868[0x028879 - 0x028868];
|
||||
/* 0x028868 */ u8 reset_flag;
|
||||
/* 0x028869 */ u8 reset_type;
|
||||
/* 0x02886A */ u8 _02886A[0x028879 - 0x02886A];
|
||||
/* 0x028879 */ u8 auto_nwrite_count;
|
||||
/* 0x02887A */ lbRTC_year_t auto_nwrite_year;
|
||||
/* 0x02887C */ u8 save_error_type; /* set to one of the mFRm_ERROR_* states when save is invalid */
|
||||
|
||||
@@ -10,12 +10,29 @@ extern "C" {
|
||||
|
||||
typedef void (*mDemo_REQUEST_PROC)(ACTOR*);
|
||||
|
||||
typedef struct demo_clip_s {
|
||||
void* class;
|
||||
int type; /* 0 = none?, 1 = intro_demo, 2 = ride_off_demo */
|
||||
} mDemo_Clip_c;
|
||||
|
||||
enum demo_clip_type {
|
||||
mDemo_CLIP_TYPE_NONE,
|
||||
mDemo_CLIP_TYPE_INTRO_DEMO,
|
||||
mDemo_CLIP_TYPE_RIDE_OFF_DEMO,
|
||||
|
||||
mDemo_CLIP_TYPE_NUM
|
||||
};
|
||||
|
||||
extern int mDemo_Request(int type, ACTOR* actor, mDemo_REQUEST_PROC request_proc);
|
||||
extern void mDemo_Set_msg_num(int msg_num);
|
||||
extern int mDemo_Check(int type, ACTOR* actor);
|
||||
extern int mDemo_Check_DiffAngle_forTalk(s16 angle);
|
||||
extern int mDemo_Check_ListenAble();
|
||||
extern void mDemo_Set_ListenAble();
|
||||
extern ACTOR* mDemo_Get_talk_actor();
|
||||
extern void mDemo_Set_OrderValue(int type, int idx, u16 value);
|
||||
extern u16 mDemo_Get_OrderValue(int type, int idx);
|
||||
extern void mDemo_Set_talk_return_demo_wait(u8 value);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
|
||||
@@ -138,6 +138,7 @@ extern u8 mFI_BkNum2BlockType();
|
||||
extern mFI_sound_source_info_c* mFI_GetSoundSourcePBlockNum(int block_x,int block_z);
|
||||
extern int mFI_Wpos2UtNum(int* ut_x, int* ut_z, xyz_t wpos);
|
||||
extern void mFI_ClearFieldData();
|
||||
extern int mFI_SetFG_common(mActor_name_t item, xyz_t wpos, int update);
|
||||
|
||||
extern void mFI_PrintNowBGNum(gfxprint_t* gfxprint);
|
||||
extern void mFI_PrintFgAttr(gfxprint_t* gfxprint);
|
||||
|
||||
@@ -19,6 +19,15 @@ extern void mMsg_aram_init();
|
||||
extern int mMsg_Check_MainHide(mMsg_Window_c* msg);
|
||||
extern void mMsg_Set_item_str(mMsg_Window_c* msg_win, int str_no, u8* item_str, int str_len);
|
||||
extern void mMsg_Set_mail_str(mMsg_Window_c* msg_win, int str_no, u8* str, int str_len);
|
||||
extern void mMsg_Set_continue_msg_num(mMsg_Window_c* msg_win, int continue_msg_num);
|
||||
extern int mMsg_Check_MainNormalContinue(mMsg_Window_c* msg_win);
|
||||
extern int mMsg_Check_main_wait(mMsg_Window_c* msg_win);
|
||||
extern int mMsg_ChangeMsgData(mMsg_Window_c* msg_win, int msg_no);
|
||||
extern void mMsg_Set_ForceNext(mMsg_Window_c* msg_win);
|
||||
extern int mMsg_Check_not_series_main_wait(mMsg_Window_c* msg_win);
|
||||
extern int mMsg_Check_MainDisappear(mMsg_Window_c* msg_win);
|
||||
extern void mMsg_request_main_disappear_wait_type1(mMsg_Window_c* msg_win);
|
||||
extern void mMsg_request_main_appear_wait_type1(mMsg_Window_c* msg_win);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
|
||||
@@ -468,6 +468,11 @@ extern int mNT_check_unknown(mActor_name_t item_no);
|
||||
|
||||
#define EXIT_DOOR 0x4080
|
||||
|
||||
#define STRUCTURE_START 0x5800
|
||||
#define HOUSE0 (STRUCTURE_START)
|
||||
#define HOUSE1 (HOUSE0 + 1)
|
||||
#define HOUSE2 (HOUSE1 + 1)
|
||||
#define HOUSE3 (HOUSE2 + 1)
|
||||
#define TRAIN_STATION 0x5809
|
||||
#define TRAIN0 0x580A
|
||||
#define TRAIN1 0x580B
|
||||
@@ -480,6 +485,15 @@ extern int mNT_check_unknown(mActor_name_t item_no);
|
||||
#define MISC_ACTOR_START 0x9000
|
||||
#define MISC_ACTOR_SAMPLE MISC_ACTOR_START
|
||||
|
||||
#define ACTOR_PROP_START 0xA000
|
||||
#define ACTOR_PROP_MAILBOX0 (ACTOR_PROP_START)
|
||||
#define ACTOR_PROP_MAILBOX1 (ACTOR_PROP_MAILBOX0 + 1)
|
||||
#define ACTOR_PROP_MAILBOX2 (ACTOR_PROP_MAILBOX1 + 1)
|
||||
#define ACTOR_PROP_MAILBOX3 (ACTOR_PROP_MAILBOX2 + 1)
|
||||
#define ACTOR_PROP_HANIWA0 (ACTOR_PROP_MAILBOX3 + 1)
|
||||
#define ACTOR_PROP_HANIWA1 (ACTOR_PROP_HANIWA0 + 1)
|
||||
#define ACTOR_PROP_HANIWA2 (ACTOR_PROP_HANIWA1 + 1)
|
||||
#define ACTOR_PROP_HANIWA3 (ACTOR_PROP_HANIWA2 + 1)
|
||||
#define TRAIN_DOOR 0xA011
|
||||
|
||||
#define SP_NPC_START 0xD000
|
||||
@@ -575,6 +589,12 @@ extern int mNT_check_unknown(mActor_name_t item_no);
|
||||
#define NPC_LOBO 0xE0B9
|
||||
#define NPC_BIFF 0xE0C2
|
||||
|
||||
#define DUMMY_START 0xF000
|
||||
#define DUMMY_HANIWA0 0xF0FB
|
||||
#define DUMMY_HANIWA1 (DUMMY_HANIWA0 + 1)
|
||||
#define DUMMY_HANIWA2 (DUMMY_HANIWA2 + 1)
|
||||
#define DUMMY_HANIWA3 (DUMMY_HANIWA2 + 1)
|
||||
|
||||
#define RSV_DOOR 0xFE1B
|
||||
#define RSV_WALL_NO 0xFFFE /* interior wall item, no collision */
|
||||
#define RSV_NO 0xFFFF /* reserved space, can't interact but no collision */
|
||||
|
||||
@@ -0,0 +1,17 @@
|
||||
#ifndef M_NEEDLEWORK_OVL_H
|
||||
#define M_NEEDLEWORK_OVL_H
|
||||
|
||||
#include "types.h"
|
||||
#include "m_submenu.h"
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
extern u8 mNW_get_image_no(Submenu* submenu, int slot_no);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif
|
||||
@@ -11,6 +11,7 @@
|
||||
#include "m_personal_id.h"
|
||||
#include "m_quest.h"
|
||||
#include "m_lib.h"
|
||||
#include "m_private_h.h"
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
@@ -199,6 +200,7 @@ extern void mNpc_ClearAnimalInfo(Animal_c* animal_p);
|
||||
extern Animal_c* mNpc_GetInAnimalP();
|
||||
extern int mNpc_GetLooks2Sex(int looks);
|
||||
extern int mNpc_CheckFreeAnimalInfo(Animal_c* animal);
|
||||
extern int mNpc_GetFriendAnimalNum(Private_c* private_p);
|
||||
|
||||
extern void mNpc_PrintRemoveInfo(gfxprint_t* gfxprint);
|
||||
extern void mNpc_PrintFriendship_fdebug(gfxprint_t* gfxprint);
|
||||
|
||||
+3
-1
@@ -14,7 +14,9 @@ typedef struct player_actor_s PLAYER_ACTOR;
|
||||
/* sizeof(struct player_actor_s) == 0x13A8 */
|
||||
struct player_actor_s {
|
||||
/* 0x0000 */ ACTOR actor_class;
|
||||
/* 0x0174 */ u8 tmp0174[0x1318 - 0x0174];
|
||||
/* 0x0174 */ u8 tmp0174[0x1300 - 0x0174];
|
||||
/* 0x1300 */ void* (*get_door_label_proc)(GAME*);
|
||||
/* 0x1304 */ u8 tmp1304[0x1318 - 0x1304];
|
||||
/* 0x1318 */ int (*Get_WadeEndPos_proc)(GAME*, xyz_t*);
|
||||
/* 0x131C */ u8 tmp131C[0x13A8 - 0x131C];
|
||||
/* TODO: finish */
|
||||
|
||||
@@ -16,6 +16,9 @@ extern mActor_name_t mPlib_Get_itemNo_forWindow();
|
||||
extern int mPlib_check_able_change_camera_normal_index();
|
||||
extern void mPlib_request_main_refuse_type1(GAME_PLAY* play);
|
||||
extern void mPlib_request_main_wait_type3(GAME_PLAY* play);
|
||||
extern void mPlib_Set_able_force_speak_label(ACTOR* actor);
|
||||
extern int mPlib_request_main_demo_walk_type1(GAME* game, f32 goal_x, f32 goal_z, f32 speed, int flag);
|
||||
extern void mPlib_Set_goal_player_demo_walk(f32 goal_x, f32 goal_z, f32 speed);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
|
||||
+6
-2
@@ -2,6 +2,7 @@
|
||||
#define M_PRIVATE_H
|
||||
|
||||
#include "types.h"
|
||||
#include "m_private_h.h"
|
||||
#include "libu64/gfxprint.h"
|
||||
#include "m_personal_id.h"
|
||||
#include "m_npc.h"
|
||||
@@ -18,6 +19,8 @@ extern "C" {
|
||||
#define FOREIGNER_NUM 1
|
||||
#define TOTAL_PLAYER_NUM (PLAYER_NUM + FOREIGNER_NUM)
|
||||
|
||||
#define mPr_WALLET_MAX 99999
|
||||
|
||||
enum {
|
||||
mPr_PLAYER_0,
|
||||
mPr_PLAYER_1,
|
||||
@@ -144,7 +147,7 @@ typedef struct player_ecard_data_s {
|
||||
/* 0x04 */ u8 card_letters_sent[mPr_ECARD_LETTER_NUM]; /* bitfield keeping track of which eCard letters have been sent to the player [0, 366] */
|
||||
} mPr_carde_data_c;
|
||||
|
||||
typedef struct private_s {
|
||||
struct private_s {
|
||||
/* 0x0000 */ PersonalID_c player_ID; /* player's id info */
|
||||
/* 0x0014 */ s8 gender; /* gender/sex of player */
|
||||
/* 0x0015 */ s8 face; /* face type of player */
|
||||
@@ -212,7 +215,7 @@ typedef struct private_s {
|
||||
/* 0x23DC */ u32 soncho_trophy_field1; /* remaining tortimer event flags */
|
||||
/* 0x23E0 */ mPr_carde_data_c ecard_letter_data; /* info relating to scanned e-Card letters */
|
||||
/* 0x2412 */ u8 unused_2412[46];
|
||||
} Private_c;
|
||||
};
|
||||
|
||||
extern s16 mPr_GetGoodsPower();
|
||||
extern s16 mPr_GetMoneyPower();
|
||||
@@ -227,6 +230,7 @@ extern void mPr_ClearPrivateInfo(Private_c* private_data);
|
||||
extern int mPr_CheckCmpPlayerName(u8* str0, u8* str1);
|
||||
extern void mPr_RandomSetPlayerData_title_demo();
|
||||
extern int mPr_GetPossessionItemSumWithCond(Private_c* priv, mActor_name_t item_no, u32 cond);
|
||||
extern int mPr_SetFreePossessionItem(Private_c* priv, mActor_name_t item_no, u32 cond);
|
||||
extern void mPr_CopyPlayerName(u8* dst, Private_c* private_p);
|
||||
|
||||
#ifdef __cplusplus
|
||||
|
||||
@@ -0,0 +1,16 @@
|
||||
#ifndef M_PRIVATE_H_H
|
||||
#define M_PRIVATE_H_H
|
||||
|
||||
#include "types.h"
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
typedef struct private_s Private_c;
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif
|
||||
@@ -103,6 +103,8 @@ struct submenu_s {
|
||||
/* 0x17C */ Submenu_Item_c items[mPr_POCKETS_SLOT_COUNT]; /* item buffer, entries are only set when an item is selected by the player */
|
||||
};
|
||||
|
||||
extern void mSM_open_submenu(Submenu* submenu, int menu_type, int arg0, int arg1);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
Reference in New Issue
Block a user