diff options
| author | TakaRikka <38417346+TakaRikka@users.noreply.github.com> | 2022-02-24 14:04:56 -0800 |
|---|---|---|
| committer | TakaRikka <38417346+TakaRikka@users.noreply.github.com> | 2022-02-24 14:04:56 -0800 |
| commit | fdaeb3437d447b5a8cff31f56edc00f5ed671b1b (patch) | |
| tree | f5ac21c079ed61c174f9d68f9c9a3f93b412ac0c /include/d | |
| parent | 9ba9d7c06cde1db164e3282550855880148dc940 (diff) | |
shop_system stuff
Diffstat (limited to 'include/d')
| -rw-r--r-- | include/d/a/d_a_npc.h | 309 | ||||
| -rw-r--r-- | include/d/a/d_a_shop_item_static.h | 48 | ||||
| -rw-r--r-- | include/d/com/d_com_inf_game.h | 27 | ||||
| -rw-r--r-- | include/d/d_attention.h | 1 | ||||
| -rw-r--r-- | include/d/d_lib.h | 5 | ||||
| -rw-r--r-- | include/d/d_select_cursor.h | 9 | ||||
| -rw-r--r-- | include/d/meter/d_meter2_info.h | 5 | ||||
| -rw-r--r-- | include/d/msg/d_msg_flow.h | 18 | ||||
| -rw-r--r-- | include/d/msg/d_msg_object.h | 25 | ||||
| -rw-r--r-- | include/d/particle/d_particle_copoly.h | 16 | ||||
| -rw-r--r-- | include/d/shop/d_shop_item_ctrl.h | 20 | ||||
| -rw-r--r-- | include/d/shop/d_shop_system.h | 161 |
12 files changed, 633 insertions, 11 deletions
diff --git a/include/d/a/d_a_npc.h b/include/d/a/d_a_npc.h index 371fecaf1f..2c77d4d274 100644 --- a/include/d/a/d_a_npc.h +++ b/include/d/a/d_a_npc.h @@ -2,5 +2,314 @@ #define D_A_D_A_NPC_H #include "dolphin/types.h" +#include "d/com/d_com_inf_game.h" +#include "global.h" + +class daNpcT_MotionSeqMngr_c { +public: + struct sequenceStepData_c {}; + + /* 80145898 */ void initialize(); + /* 801458C0 */ void play(u16, int*, f32*); + /* 80145A24 */ void checkEndSequence(); + +private: + /* 0x00 */ sequenceStepData_c* field_0x0; + /* 0x04 */ int field_0x4; + /* 0x08 */ int mNo; + /* 0x0C */ int mOffset; + /* 0x10 */ int mStepNo; + /* 0x14 */ int field_0x14; + /* 0x18 */ f32 field_0x18; + /* 0x1C */ u8 field_0x1c; + +public: + /* 8014D0C0 */ virtual ~daNpcT_MotionSeqMngr_c(); +}; + +class daNpcT_ActorMngr_c { +private: + /* 0x0 */ u32 mActorID; + +public: + /* 801456D4 */ void initialize(); + /* 801456E0 */ void entry(fopAc_ac_c*); + /* 801456FC */ void remove(); + /* 80145708 */ void getActorP(); + + /* 8014D108 */ virtual ~daNpcT_ActorMngr_c(); +}; + +class daNpcT_JntAnm_c { +private: + /* 0x000 */ daNpcT_ActorMngr_c field_0x0; + /* 0x008 */ cXyz field_0x8; + /* 0x014 */ cXyz field_0x14; + /* 0x020 */ cXyz* field_0x20; + /* 0x024 */ cXyz field_0x24; + /* 0x030 */ cXyz field_0x30[3]; + /* 0x054 */ cXyz field_0x54[3]; + /* 0x078 */ cXyz field_0x78[3]; + /* 0x09C */ cXyz field_0x9c[3]; + /* 0x0C0 */ cXyz mRad[3]; + /* 0x0E4 */ cXyz field_0xe4[3]; + /* 0x108 */ cXyz field_0x108; + /* 0x114 */ cXyz field_0x114; + /* 0x120 */ cXyz field_0x120; + /* 0x12C */ csXyz mEyeAngle; + /* 0x132 */ csXyz field_0x132; + /* 0x138 */ int mMode; + /* 0x13C */ u8 field_0x13c[4]; + /* 0x140 */ int field_0x140; + /* 0x144 */ u8 field_0x144[4]; + /* 0x148 */ f32 field_0x148; + /* 0x14C */ f32 field_0x14c; + /* 0x150 */ csXyz field_0x150; + /* 0x156 */ u8 field_0x156; + /* 0x157 */ u8 mDirectFlag; + /* 0x158 */ u8 field_0x158; + +public: + /* 80146C98 */ void initialize(); + /* 80146CD8 */ void setParam(fopAc_ac_c*, J3DModel*, cXyz*, int, int, int, f32, f32, f32, f32, + f32, f32, f32, f32, f32, f32, cXyz*); + /* 80147858 */ void calc(f32); + /* 80147C38 */ void calcJntRad(f32, f32, f32); + + /* 8014D150 */ virtual ~daNpcT_JntAnm_c(); +}; + +class daNpcT_DmgStagger_c { +public: + /* 80147DCC */ void setParam(fopAc_ac_c*, fopAc_ac_c*, s16); + /* 80147E3C */ void calc(int); + +private: + /* 0x00 */ csXyz field_0x0[2]; + /* 0x0C */ f32 field_0xc[2]; + /* 0x14 */ s16 mStagger; + /* 0x16 */ s16 field_0x16; + /* 0x18 */ u8 mRebirth; +}; + +struct daNpcT_evtData_c {}; + +struct daNpcT_faceMotionAnmData_c {}; + +struct daNpcT_pntData_c {}; + +struct daNpcT_motionAnmData_c {}; + +class mDoExt_McaMorfSO; + +class daNpcT_c : public fopAc_ac_c { +public: + /* 0x568 */ daNpcT_faceMotionAnmData_c* field_0x568; + /* 0x56C */ daNpcT_motionAnmData_c* field_0x56c; + /* 0x570 */ daNpcT_evtData_c* field_0x570; + /* 0x574 */ char** field_0x574; + /* 0x578 */ mDoExt_McaMorfSO* mMcaMorfAnm[2]; + /* 0x580 */ Z2Creature field_0x580; + /* 0x610 */ mDoExt_bckAnm mBckAnm; + /* 0x62C */ mDoExt_btpAnm mBtpAnm; + /* 0x644 */ mDoExt_btkAnm mBtkAnm; + /* 0x65C */ mDoExt_brkAnm mBrkAnm; + /* 0x674 */ mDoExt_bpkAnm mBpkAnm; + /* 0x68C */ dBgS_ObjAcch field_0x68c; + /* 0x864 */ dCcD_Stts field_0x864; + /* 0x8A0 */ dBgS_AcchCir field_0x8a0; + /* 0x8E0 */ request_of_phase_process_class field_0x8e0[10]; + /* 0x930 */ cBgS_GndChk field_0x930; + /* 0x96C */ u8 field_0xa6c[8]; + /* 0x974 */ dMsgFlow_c mFlow; + /* 0x9C0 */ dPaPoT_c field_0x9c0; + /* 0xA40 */ dCcD_Stts field_0xa40; + /* 0xA7C */ u8 field_0xa7c[4]; + /* 0xA80 */ f32 field_0xa80; + /* 0xA84 */ f32 field_0xa84; + /* 0xA89 */ u8 field_0xa88; + /* 0xA89 */ u8 field_0xa89; + /* 0xA8C */ dBgS_GndChk field_0xa8c; + /* 0xAE0 */ dBgS_LinChk field_0xae0; + /* 0xB50 */ daNpcT_MotionSeqMngr_c field_0xb50; + /* 0xB74 */ daNpcT_MotionSeqMngr_c field_0xb74; + /* 0xB98 */ daNpcT_ActorMngr_c field_0xb98; + /* 0xBA0 */ daNpcT_ActorMngr_c field_0xba0; + /* 0xBA8 */ daNpcT_JntAnm_c field_0xba8; + /* 0xD08 */ daNpcT_DmgStagger_c field_0xd08; + /* 0xD24 */ cXyz field_0xd24; + /* 0xD30 */ cXyz field_0xd30; + /* 0xD3C */ cXyz field_0xd3c; + /* 0xD48 */ cXyz field_0xd48; + /* 0xD54 */ cXyz field_0xd54; + /* 0xD60 */ cXyz field_0xd60; + /* 0xD6C */ cXyz field_0xd6c; + /* 0xD78 */ csXyz field_0xd78; + /* 0xD7E */ csXyz field_0xd7e; + /* 0xD84 */ csXyz field_0xd84; + /* 0xD8A */ csXyz field_0xd8a; + /* 0xD90 */ u32 field_0xd90; + /* 0xD94 */ u32 field_0xd94; + /* 0xD98 */ u32 field_0xd98; + /* 0xD9C */ u32 field_0xd9c; + /* 0xDA0 */ u8 field_0xda0[8]; + /* 0xDA8 */ u32 field_0xda8; + /* 0xDAC */ int field_0xdac; + /* 0xDB0 */ int mCutType; + /* 0xDB4 */ int field_0xdb4; + /* 0xDB8 */ int field_0xdb8; + /* 0xDBC */ int mTimer; + /* 0xDC0 */ int field_0xdc0; + /* 0xDC4 */ u8 field_0xdc4[4]; + /* 0xDC8 */ s16 field_0xdc8; + /* 0xDCA */ s16 field_0xdca; + /* 0xDCC */ u8 field_0xdcc[8]; + /* 0xDD4 */ s16 field_0xdd4; + /* 0xDD8 */ s16 field_0xdd8; + /* 0xDDA */ s16 field_0xdda; + /* 0xDDC */ f32 field_0xddc; + /* 0xDE0 */ f32 field_0xde0; + /* 0xDE4 */ f32 field_0xde4; + /* 0xDE8 */ u8 field_0xde8[0xC]; + /* 0xDF4 */ f32 field_0xdf4; + /* 0xDF8 */ u8 field_0xdf8[4]; + /* 0xDFC */ f32 field_0xdfc; + /* 0xE00 */ cXyz field_0xe00; + /* 0xE0C */ cXyz field_0xe0c; + /* 0xE18 */ s16 field_0xe18; + /* 0xE1A */ s16 field_0xe1a; + /* 0xE1C */ s16 field_0xe1c; + /* 0xE1E */ u16 field_0xe1e; + /* 0xE20 */ u16 field_0xe20; + /* 0xE22 */ u16 field_0xe22; + /* 0xE24 */ u8 field_0xe24; + /* 0xE25 */ u8 field_0xe25; + /* 0xE26 */ u8 field_0xe26; + /* 0xE27 */ u8 field_0xe27; + /* 0xE28 */ u8 field_0xe28; + /* 0xE29 */ u8 field_0xe29; + /* 0xE2A */ u8 field_0xe2a; + /* 0xE2B */ u8 field_0xe2b; + /* 0xE2C */ u8 field_0xe2c; + /* 0xE2D */ u8 field_0xe2d; + /* 0xE2E */ u8 field_0xe2e[2]; + /* 0xE30 */ u16 field_0xe30; + /* 0xE32 */ u8 field_0xe32; + /* 0xE33 */ u8 field_0xe33; + /* 0xE34 */ u8 field_0xe34; + /* 0xE35 */ u8 field_0xe35[7]; + /* 0xE3C vtable */ + +public: + /* 80147FA4 */ void tgHitCallBack(fopAc_ac_c*, dCcD_GObjInf*, fopAc_ac_c*, dCcD_GObjInf*); + /* 80147FD4 */ void srchActor(void*, void*); + /* 80148058 */ void getTrnsfrmAnmP(char const*, int); + /* 80148094 */ void getTrnsfrmKeyAnmP(char const*, int); + /* 801480D0 */ void getTexPtrnAnmP(char const*, int); + /* 8014810C */ void getTexSRTKeyAnmP(char const*, int); + /* 80148148 */ void getTevRegKeyAnmP(char const*, int); + /* 80148184 */ void getColorAnmP(char const*, int); + /* 801481C0 */ void setBckAnm(J3DAnmTransform*, f32, int, int, int, bool); + /* 80148204 */ void setMcaMorfAnm(J3DAnmTransformKey*, f32, f32, int, int, int); + /* 801482F8 */ void setBtpAnm(J3DAnmTexPattern*, J3DModelData*, f32, int); + /* 80148338 */ void setBtkAnm(J3DAnmTextureSRTKey*, J3DModelData*, f32, int); + /* 80148378 */ void setBrkAnm(J3DAnmTevRegKey*, J3DModelData*, f32, int); + /* 801483B8 */ void setBpkAnm(J3DAnmColor*, J3DModelData*, f32, int); + /* 801483F8 */ void loadRes(s8 const*, char const**); + /* 801484AC */ void deleteRes(s8 const*, char const**); + /* 8014852C */ void execute(); + /* 8014886C */ void draw(int, int, f32, _GXColorS10*, f32, int, int, int); + /* 80148C70 */ void setEnvTevColor(); + /* 80148CCC */ void setRoomNo(); + /* 80148D10 */ void checkEndAnm(f32); + /* 80148DD0 */ void checkEndAnm(J3DFrameCtrl*, f32); + /* 80148E4C */ void playAllAnm(); + /* 80149190 */ void setMtx(); + /* 8014924C */ void ctrlFaceMotion(); + /* 80149300 */ void ctrlMotion(); + /* 801493B8 */ void ctrlMsgAnm(int*, int*, fopAc_ac_c*, int); + /* 8014A224 */ void evtChange(); + /* 8014A388 */ void setFaceMotionAnm(int, bool); + /* 8014A908 */ void setPos(cXyz); + /* 8014AA18 */ void setAngle(s16); + /* 8014A99C */ void setAngle(csXyz); + /* 8014AA40 */ void hitChk(dCcD_GObjInf*, u32); + /* 8014AAD0 */ void setDamage(int, int, int); + /* 8014ABD0 */ void chkActorInSight(fopAc_ac_c*, f32, s16); + /* 8014ACF0 */ void chkPointInArea(cXyz, cXyz, f32, f32, f32, s16); + /* 8014ADA0 */ void chkPointInArea(cXyz, cXyz, cXyz, s16); + /* 8014AE1C */ void chkFindActor(fopAc_ac_c*, int, s16); + /* 8014B024 */ void chkWolfAction(); + /* 8014B0C8 */ void chkFindWolf(s16, int, int, f32, f32, f32, f32, int); + /* 8014B338 */ void srchPlayerActor(); + /* 8014B3EC */ void getAttnPos(fopAc_ac_c*); + /* 8014B4A4 */ void turn(s16, int, int); + /* 8014B648 */ void step(s16, int, int, int, int); + /* 8014B808 */ void calcSpeedAndAngle(cXyz, int, s16, s16); + /* 8014BB00 */ void getActorDistance(fopAc_ac_c*, int, int); + /* 8014BBF0 */ void initTalk(int, fopAc_ac_c**); + /* 8014BC78 */ void talkProc(int*, int, fopAc_ac_c**, int); + /* 8014BE2C */ void getNearestActorP(s16); + /* 8014BEE4 */ void getEvtAreaTagP(int, int); + /* 8014BFB0 */ void getShopItemTagP(); + /* 8014C030 */ void setHitodamaPrtcl(); + + /* 8014CD20 */ virtual ~daNpcT_c(); + /* 801490D4 */ virtual void ctrlBtk(); + /* 8014CC14 */ virtual void ctrlSubFaceMotion(int); + /* 8014CC40 */ virtual bool checkChangeJoint(int); + /* 8014CC38 */ virtual bool checkRemoveJoint(int); + /* 8014CC5C */ virtual s32 getBackboneJointNo(); + /* 8014CC54 */ virtual s32 getNeckJointNo(); + /* 8014CC4C */ virtual s32 getHeadJointNo(); + /* 8014CC90 */ virtual s32 getFootLJointNo(); + /* 8014CC88 */ virtual s32 getFootRJointNo(); + /* 8014D0A8 */ virtual bool getEyeballLMaterialNo(); + /* 8014D0B0 */ virtual bool getEyeballRMaterialNo(); + /* 8014D0B8 */ virtual bool getEyeballMaterialNo(); + /* 8014951C */ virtual void ctrlJoint(J3DJoint*, J3DModel*); + /* 8014CC48 */ virtual void afterJntAnm(int); + /* 8014CC24 */ virtual void setParam(); + /* 8014CC80 */ virtual bool checkChangeEvt(); + /* 8014CC78 */ virtual bool evtTalk(); + /* 8014CC70 */ virtual bool evtEndProc(); + /* 8014CC68 */ virtual bool evtCutProc(); + /* 8014CC64 */ virtual void setAfterTalkMotion(); + /* 8014997C */ virtual void evtProc(); + /* 8014CC20 */ virtual void action(); + /* 8014CC1C */ virtual void beforeMove(); + /* 8014CC18 */ virtual void afterMoved(); + /* 8014CC10 */ virtual void setAttnPos(); + /* 80149BB4 */ virtual void setFootPos(); + /* 8014CC0C */ virtual void setCollision(); + /* 80149D7C */ virtual void setFootPrtcl(cXyz*, f32, f32); + /* 8014A05C */ virtual bool checkCullDraw(); + /* 8014A064 */ virtual void twilight(); + /* 8014CC98 */ virtual bool chkXYItems(); + /* 8014A0B0 */ virtual void evtOrder(); + /* 8014CBF4 */ virtual void decTmr(); + /* 8014A324 */ virtual void clrParam(); + /* 8014CC30 */ virtual bool drawDbgInfo(); + /* 8014CC28 */ virtual void drawOtherMdl(); + /* 8014CC2C */ virtual void drawGhost(); + /* 8014CCA0 */ virtual bool afterSetFaceMotionAnm(int, int, f32, int); + /* 8014CCE0 */ virtual bool afterSetMotionAnm(int, int, f32, int); + /* 8014CCB0 */ virtual void getFaceMotionAnm(daNpcT_faceMotionAnmData_c); + /* 8014CCF0 */ virtual void getMotionAnm(daNpcT_motionAnmData_c); + /* 8014CCEC */ virtual void changeAnm(int*, int*); + /* 8014CCAC */ virtual void changeBck(int*, int*); + /* 8014CCA8 */ virtual void changeBtp(int*, int*); + /* 8014CCE8 */ virtual void changeBtk(int*, int*); + /* 8014A628 */ virtual void setMotionAnm(int, f32, int); + + static u8 const mCcDObjData[48]; + static u8 mCcDCyl[68]; + static u8 mCcDSph[64]; + static u8 mFindActorPtrs[200]; + static u8 mSrchName[2 + 2 /* padding */]; + static u8 mFindCount[4]; +}; + +STATIC_ASSERT(sizeof(daNpcT_c) == 0xE40); #endif /* D_A_D_A_NPC_H */ diff --git a/include/d/a/d_a_shop_item_static.h b/include/d/a/d_a_shop_item_static.h index c8e7d7359c..d6bc8342df 100644 --- a/include/d/a/d_a_shop_item_static.h +++ b/include/d/a/d_a_shop_item_static.h @@ -2,5 +2,53 @@ #define D_A_D_A_SHOP_ITEM_STATIC_H #include "dolphin/types.h" +#include "d/a/d_a_itembase.h" + +struct ResourceData { + char* get_arcName() const { return mArcName; } + s16 get_bmdName() const { return mBmdName; } + s16 get_btk1Name() const { return mBtkName; } + s16 get_bpk1Name() const { return mBpkName; } + s16 get_bck1Name() const { return mBckName; } + s16 get_bxa1Name() const { return mBxaName; } + s16 get_brk1Name() const { return mBrkName; } + s16 get_btp1Name() const { return mBtpName; } + + /* 0x00 */ char* mArcName; + /* 0x04 */ s16 mBmdName; + /* 0x06 */ s16 mBtkName; + /* 0x08 */ s16 mBpkName; + /* 0x0A */ s16 mBckName; + /* 0x0C */ s16 mBxaName; + /* 0x0E */ s16 mBrkName; + /* 0x10 */ s16 mBtpName; + /* 0x14 */ f32 mOffsetY; + /* 0x18 */ f32 mScale; + /* 0x1C */ s16 mAngleOffsetX; + /* 0x1E */ SVec mAngle; + /* 0x24 */ u32 mFlag; + /* 0x28 */ u8 mShadowSize; + /* 0x29 */ u8 mCollisionH; + /* 0x2A */ u8 mCollisionR; + /* 0x2B */ s8 mTevFrm; + /* 0x2C */ s8 mBtpFrm; +}; // Size: 0x30 + +class daShopItem_c : public daItemBase_c { +public: + /* 80037C14 */ csXyz* getRotateP(); + /* 80037C1C */ cXyz* getPosP(); + + u8 getShopItemID() const { return mShopItemID; } + + static ResourceData const mData[23]; + +private: + /* 0x92C */ Mtx mMtx; + /* 0x95C */ int field_0x95c; + /* 0x960 */ s16 mAngleX; + /* 0x962 */ s16 mAngleY; + /* 0x964 */ u8 mShopItemID; +}; #endif /* D_A_D_A_SHOP_ITEM_STATIC_H */ diff --git a/include/d/com/d_com_inf_game.h b/include/d/com/d_com_inf_game.h index 85a78ee2d1..d8dc4a7478 100644 --- a/include/d/com/d_com_inf_game.h +++ b/include/d/com/d_com_inf_game.h @@ -252,6 +252,16 @@ public: m3DSetFlag = flag; } + void setDoStatusForce(u8 status, u8 flag) { + mDoStatusForce = status; + mDoSetFlagForce = flag; + } + + void setAStatusForce(u8 status, u8 flag) { + mAStatusForce = status; + mASetFlagForce = flag; + } + void setItemRupeeCount(int rupees) { mItemRupeeCount += rupees; } void setItemMagicCount(s16 magic) { mItemMagicCount += magic; } void setItemMaxMagicCount(s16 max) { mItemMaxMagicCount += max; } @@ -341,6 +351,7 @@ public: void offPauseFlag() { mPauseFlag = false; } void show2dOn() { mShow2D = 1; } s8 getLayerOld() { return mLayerOld; } + void setMesgCancelButton(u8 button) { mMesgCancelButton = button; } public: /* 0x00000 */ dBgS mBgs; @@ -955,6 +966,10 @@ inline void dComIfGs_onSaveSwitch(int i_stageNo, int i_no) { g_dComIfG_gameInfo.info.getSavedata().getSave(i_stageNo).getBit().onSwitch(i_no); } +inline void dComIfGs_onSaveSwitch(int i_no) { + g_dComIfG_gameInfo.info.getMemory().getBit().onSwitch(i_no); +} + inline void dComIfGs_offSaveSwitch(int i_stageNo, int i_no) { g_dComIfG_gameInfo.info.getSavedata().getSave(i_stageNo).getBit().offSwitch(i_no); } @@ -1444,6 +1459,14 @@ inline void dComIfGp_setSButtonStatusForce(u8 status, u8 flag) { g_dComIfG_gameInfo.play.setSButtonStatusForce(status, flag); } +inline void dComIfGp_setDoStatusForce(u8 status, u8 flag) { + g_dComIfG_gameInfo.play.setDoStatusForce(status, flag); +} + +inline void dComIfGp_setAStatusForce(u8 status, u8 flag) { + g_dComIfG_gameInfo.play.setAStatusForce(status, flag); +} + inline u8 dComIfGp_getAStatus() { return g_dComIfG_gameInfo.play.getAStatus(); } @@ -1676,6 +1699,10 @@ inline void dComIfGp_offPauseFlag() { g_dComIfG_gameInfo.play.offPauseFlag(); } +inline void dComIfGp_setMesgCancelButton(u8 button) { + g_dComIfG_gameInfo.play.setMesgCancelButton(button); +} + inline s32 dComIfGp_checkStatus(u16 flags) { return g_dComIfG_gameInfo.play.checkStatus(flags); } diff --git a/include/d/d_attention.h b/include/d/d_attention.h index 4f35de5604..faafe287d9 100644 --- a/include/d/d_attention.h +++ b/include/d/d_attention.h @@ -200,6 +200,7 @@ public: /* 8016E424 */ void LockEdge(); /* 80182994 */ void GetCheckObjectCount(); /* 80182AD0 */ void keepLock(int); + /* 8014B010 */ void getDistTable(int); dAttCatch_c& getCatghTarget() { return mCatghTarget; } bool chkFlag(u32 flag) { return mFlags & flag; } diff --git a/include/d/d_lib.h b/include/d/d_lib.h index 27a0715dce..028b9b68e9 100644 --- a/include/d/d_lib.h +++ b/include/d/d_lib.h @@ -7,6 +7,11 @@ struct JKRAramArchive; u32 dLib_getExpandSizeFromAramArchive(JKRAramArchive* arc, char const* resName); struct STControl { + STControl() { + setWaitParm(15, 15, 0, 0, 0.9f, 0.5f, 0, 0x2000); + init(); + } + /* 80032044 */ STControl(s16, s16, s16, s16, f32, f32, s16, s16); /* 80032088 */ void setWaitParm(s16, s16, s16, s16, f32, f32, s16, s16); /* 800320AC */ void init(); diff --git a/include/d/d_select_cursor.h b/include/d/d_select_cursor.h index 5cb8af07a7..eee23d7f3a 100644 --- a/include/d/d_select_cursor.h +++ b/include/d/d_select_cursor.h @@ -42,7 +42,16 @@ public: /* 80194C30 */ virtual void draw(); /* 801949EC */ virtual ~dSelect_cursor_c(); + void setPos(f32 x, f32 y) { + field_0x58 = x; + field_0x5c = y; + } + private: + u8 field_0x4[0x54]; + f32 field_0x58; + f32 field_0x5c; + u8 field_0x60[0x58]; }; #endif /* D_D_SELECT_CURSOR_H */ diff --git a/include/d/meter/d_meter2_info.h b/include/d/meter/d_meter2_info.h index 8028c7daff..3615280b07 100644 --- a/include/d/meter/d_meter2_info.h +++ b/include/d/meter/d_meter2_info.h @@ -148,6 +148,7 @@ public: void offLifeGaugeSE() { mLifeGaugeSE = 0; } u8 getLifeGaugeSE() { return mLifeGaugeSE; } const char* getSaveStageName() { return mSaveStageName; } + void onShopTalkFlag() { mShopTalkFlag = true; } public: /* 0x04 */ u8 unk4[4]; @@ -430,6 +431,10 @@ inline const char* dMeter2Info_getSaveStageName() { return g_meter2_info.getSaveStageName(); } +inline void dMeter2Info_onShopTalkFlag() { + g_meter2_info.onShopTalkFlag(); +} + char* dMeter2Info_getNumberTextureName(int pIndex); #endif /* D_METER_D_METER2_INFO_H */ diff --git a/include/d/msg/d_msg_flow.h b/include/d/msg/d_msg_flow.h index f387463e3e..7682cafab4 100644 --- a/include/d/msg/d_msg_flow.h +++ b/include/d/msg/d_msg_flow.h @@ -22,10 +22,10 @@ public: /* 80249F48 */ ~dMsgFlow_c(); /* 80249F90 */ void init(fopAc_ac_c*, int, int, fopAc_ac_c**); /* 8024A13C */ void checkOpenDoor(fopAc_ac_c*, int*); - /* 8024A2D8 */ void doFlow(fopAc_ac_c*, fopAc_ac_c**, int); + /* 8024A2D8 */ int doFlow(fopAc_ac_c*, fopAc_ac_c**, int); /* 8024A424 */ void checkEventRender(int*, int*, int*, int*); /* 8024A4C4 */ void remove(); - /* 8024A528 */ void getEventId(int*); + /* 8024A528 */ u16 getEventId(int*); /* 8024A538 */ void getMsgNo(); /* 8024A540 */ void getNowMsgNo(); /* 8024A548 */ void getMsg(); @@ -47,7 +47,7 @@ public: /* 8024B180 */ void query002(mesg_flow_node_branch*, fopAc_ac_c*, int); /* 8024B208 */ void query003(mesg_flow_node_branch*, fopAc_ac_c*, int); /* 8024B250 */ void query004(mesg_flow_node_branch*, fopAc_ac_c*, int); - /* 8024B2C0 */ void query005(mesg_flow_node_branch*, fopAc_ac_c*, int); + /* 8024B2C0 */ u16 query005(mesg_flow_node_branch*, fopAc_ac_c*, int); /* 8024B2F8 */ void query006(mesg_flow_node_branch*, fopAc_ac_c*, int); /* 8024B32C */ void query007(mesg_flow_node_branch*, fopAc_ac_c*, int); /* 8024B45C */ void query008(mesg_flow_node_branch*, fopAc_ac_c*, int); @@ -140,19 +140,23 @@ public: /* 8024DA78 */ void event041(mesg_flow_node_event*, fopAc_ac_c*); /* 8024DAA8 */ bool event042(mesg_flow_node_event*, fopAc_ac_c*); + u8 isSelectMessage() { return mSelectMessage; } + void onNonStopJunpFlowFlag() { mNonStopJunpFlowFlag = 1; } + u16 getSelectNum() { return query005(NULL, NULL, 0); } + static u8 mQueryList[636]; static u8 mEventList[516]; private: /* 0x00 */ void* vtable; - /* 0x04 */ void* field_0x04; - /* 0x08 */ void* field_0x08; - /* 0x0C */ void* field_0x0c; + /* 0x04 */ void* mFlow_p; + /* 0x08 */ void* mLabelInfo_p; + /* 0x0C */ void* mFlowNodeTBL; /* 0x10 */ u16 field_0x10; /* 0x12 */ u16 field_0x12; /* 0x14 */ fopAc_ac_c* field_0x14; /* 0x18 */ int field_0x18; - /* 0x1C */ u16 field_0x1c; + /* 0x1C */ u16 mFlow; /* 0x1E */ u8 field_0x1e[2]; /* 0x20 */ int mMsg; /* 0x24 */ u8 mSelectMessage; diff --git a/include/d/msg/d_msg_object.h b/include/d/msg/d_msg_object.h index b9d4b0f6f9..df2380affc 100644 --- a/include/d/msg/d_msg_object.h +++ b/include/d/msg/d_msg_object.h @@ -79,7 +79,7 @@ public: /* 8023768C */ void getSelectBombPriceLocal(); /* 8023773C */ void setEquipBombInfoLocal(); /* 80237748 */ void updateEquipBombInfoLocal(); - /* 802378B8 */ void setShopWaitTimer(u8); + /* 802378B8 */ static void setShopWaitTimer(u8); /* 802378CC */ void setSelectWordFlagLocal(u8); /* 802378D4 */ void isHowlHearingModeLocal(); /* 80237934 */ void isCameraCancelFlag(); @@ -123,12 +123,12 @@ public: /* 8023826C */ void setTalkActor(fopAc_ac_c*); /* 8023829C */ void onMsgSendControl(); /* 802382C8 */ void offMsgSendControl(); - /* 802382F4 */ void isMsgSendControl(); - /* 80238320 */ void onMsgSend(); + /* 802382F4 */ static int isMsgSendControl(); + /* 80238320 */ static void onMsgSend(); /* 8023834C */ void offMsgSend(); /* 80238378 */ void isMsgSend(); /* 802383A4 */ void isMouthCheck(); - /* 802383D0 */ void getMessageID(); + /* 802383D0 */ static u32 getMessageID(); /* 802383E4 */ void getSmellTypeMessageID(); /* 80238410 */ void setSmellType(u8); /* 80238440 */ void getSelectCursorPos(); @@ -150,7 +150,16 @@ public: /* 80238638 */ void getItemEquipButton(); /* 8023864C */ void setSelectCancelPos(u8); + void setShopWaitTimerLocal(u8 timer) { field_0x4c9 = timer; } + u8 getSelectPushFlag() { return mSelectPushFlag; } + u8 getSelectCancelPos() { return mSelectCancelPos; } + /* 0x100 */ fopAc_ac_c* field_0x100; + /* 0x104 */ u8 field_0x104[0x9D]; + /* 0x1A1 */ u8 mSelectCancelPos; + /* 0x1A2 */ u8 mSelectPushFlag; + /* 0x1A3 */ u8 field_0x1a3[0x326]; + /* 0x4C9 */ u8 field_0x4c9; }; s16 dMsgObject_getGroupID(); @@ -163,8 +172,16 @@ inline bool dMsgObject_isTalkNowCheck() { return dMsgObject_getMsgObjectClass()->getStatus() != 1 ? true : false; } +inline u32 dMsgObject_getMessageID() { + return dMsgObject_c::getMessageID(); +} + inline void dMsgObject_readMessageGroup(mDoDvdThd_mountXArchive_c** param_0) { dMsgObject_getMsgObjectClass()->readMessageGroup(param_0); } +inline void dMsgObject_setShopWaitTimer(u8 timer) { + dMsgObject_c::setShopWaitTimer(timer); +} + #endif /* D_MSG_D_MSG_OBJECT_H */ diff --git a/include/d/particle/d_particle_copoly.h b/include/d/particle/d_particle_copoly.h index 561b75ea19..6364c0bee7 100644 --- a/include/d/particle/d_particle_copoly.h +++ b/include/d/particle/d_particle_copoly.h @@ -28,4 +28,20 @@ public: /* 0x37 */ u8 field_0x37; }; +struct dPaPoT_c { + /* 8005115C */ void setEffectTwo(dKy_tevstr_c const*, cXyz const*, u32, u32, cXyz const*, + cXyz const*, cXyz const*, csXyz const*, cXyz const*, s8, f32, + f32); + /* 80051294 */ void clearTwoAllID(); + /* 80051470 */ void getRightEffType(int) const; + /* 8005147C */ void getLeftEffType(int) const; + /* 80051494 */ void getRightEmitter(int, int); + /* 800514DC */ void getLeftEmitter(int, int); + + static u8 m_typeTwoData[36]; + static u8 m_emitterTwoData[36]; + + u8 field_0x0[0x80]; +}; + #endif /* D_PARTICLE_D_PARTICLE_COPOLY_H */ diff --git a/include/d/shop/d_shop_item_ctrl.h b/include/d/shop/d_shop_item_ctrl.h index 662cb26b8d..72f6aa0174 100644 --- a/include/d/shop/d_shop_item_ctrl.h +++ b/include/d/shop/d_shop_item_ctrl.h @@ -2,5 +2,25 @@ #define D_SHOP_D_SHOP_ITEM_CTRL_H #include "dolphin/types.h" +#include "d/a/d_a_shop_item_static.h" + +class dShopItemCtrl_c { +public: + /* 80196914 */ dShopItemCtrl_c(); + /* 801969A0 */ cXyz getCurrentPos(int); + /* 80196A3C */ bool isHomePos(int); + /* 80196AF0 */ void setRotateAnime(int); + /* 80196BA4 */ void setZoomAnime(int, cXyz*, s16, bool); + + /* 80196958 */ virtual ~dShopItemCtrl_c(); + + void setItemIndex(int i, u32 index) { mItemIndex[i] = index; } + u32 getItemIndex(int i) { return mItemIndex[i]; } + u16 getMessageIndex(int i) { return mMessageIndex[i]; } + +private: + /* 0x04 */ u32 mItemIndex[7]; + /* 0x20 */ u16 mMessageIndex[7]; +}; #endif /* D_SHOP_D_SHOP_ITEM_CTRL_H */ diff --git a/include/d/shop/d_shop_system.h b/include/d/shop/d_shop_system.h index 9728f22184..7408358232 100644 --- a/include/d/shop/d_shop_system.h +++ b/include/d/shop/d_shop_system.h @@ -2,5 +2,166 @@ #define D_SHOP_D_SHOP_SYSTEM_H #include "dolphin/types.h" +#include "d/shop/d_shop_item_ctrl.h" +#include "d/a/d_a_npc.h" + +typedef int (*ShopCam_actionFunc)(void); + +class ShopCam_action_c { +public: + /* 80196544 */ void setCamDataIdx(fopAc_ac_c*, fopAc_ac_c*, fopAc_ac_c*, fopAc_ac_c*, cXyz*, + cXyz*); + /* 80196608 */ void setCamDataIdx2(fopAc_ac_c*, fopAc_ac_c*, fopAc_ac_c*, fopAc_ac_c*, + fopAc_ac_c*, fopAc_ac_c*, fopAc_ac_c*, cXyz*, cXyz*); + /* 801968B8 */ void setMasterCamCtrPos(cXyz*); + + void setCameraSpeed(f32 param_0, f32 param_1, f32 param_2, f32 param_3) { + field_0xc0 = param_0; + field_0xc4 = param_1; + field_0xc8 = param_2; + field_0xcc = param_3; + } + + void SetSelectIdx(s16 idx) { + mSelectIdx = idx; + setCameraSpeed(0.25f, 20.0f, 0.25f, 5.0f); + } + + /* 0x00 */ int field_0x0; + /* 0x04 */ int field_0x4; + /* 0x08 */ ShopCam_actionFunc mCamActionFunc; + /* 0x0C */ u8 field_0xc[0xC]; + /* 0x18 */ fopAc_ac_c* field_0x18; + /* 0x1C */ fopAc_ac_c* field_0x1c; + /* 0x20 */ fopAc_ac_c* field_0x20; + /* 0x24 */ fopAc_ac_c* field_0x24; + /* 0x28 */ fopAc_ac_c* field_0x28; + /* 0x2C */ fopAc_ac_c* field_0x2c; + /* 0x30 */ fopAc_ac_c* field_0x30; + /* 0x34 */ f32 field_0x34; + /* 0x38 */ cXyz field_0x38; + /* 0x44 */ cXyz field_0x44; + /* 0x50 */ f32 field_0x50; + /* 0x54 */ cXyz field_0x54; + /* 0x60 */ cXyz field_0x60; + /* 0x6C */ f32 field_0x6c; + /* 0x70 */ cXyz field_0x70; + /* 0x7C */ cXyz field_0x7c; + /* 0x88 */ cXyz field_0x88; + /* 0x94 */ f32 field_0x94; + /* 0x98 */ cXyz field_0x98; + /* 0xA4 */ cXyz field_0xa4; + /* 0xB0 */ cXyz field_0xb0; + /* 0xBC */ f32 field_0xbc; + /* 0xC0 */ f32 field_0xc0; + /* 0xC4 */ f32 field_0xc4; + /* 0xC8 */ f32 field_0xc8; + /* 0xCC */ f32 field_0xcc; + /* 0xD0 */ u8 field_0xd0[4]; + /* 0xD4 */ s16 mSelectIdx; + /* 0xD6 */ s16 field_0xd6; + /* 0xD8 */ s16 field_0xd8; + /* 0xDA */ u8 field_0xda; +}; + +class dShopSystem_c : public daNpcT_c { +public: + enum { + /* 0x0 */ SEQ_WAIT, + /* 0x1 */ SEQ_START, + /* 0x2 */ SEQ_SELECT_WAIT, + /* 0x3 */ SEQ_SELECT_START, + /* 0x4 */ SEQ_SELECT, + /* 0x5 */ SEQ_MOVING, + /* 0x6 */ SEQ_DECIDE, + /* 0x7 */ SEQ_CHOOSE, + /* 0x8 */ SEQ_DECIDE_YES, + /* 0x9 */ SEQ_DECIDE_NO, + /* 0xA */ SEQ_FINISH, + }; + + /* 80197338 */ void initShopSystem(); + /* 801975C0 */ void onFlag(int); + /* 801975DC */ void offFlag(int); + /* 801975F8 */ BOOL isFlag(int); + /* 80197618 */ void onSoldOutItemFlag(int); + /* 80197634 */ void offSoldOutItemFlag(int); + /* 80197650 */ BOOL isSoldOutItemFlag(int); + /* 80197670 */ int checkController(u8, dMsgFlow_c*); + /* 80197808 */ int chooseItem3(u8); + /* 80197DD0 */ int chooseItem5(u8); + /* 80198250 */ int chooseItem4(u8); + /* 80198444 */ int moveCursor(int, u8); + /* 80198488 */ int moveCursor0(int, u8); + /* 80198708 */ int moveCursor1(int, u8); + /* 80198878 */ int drawCursor(); + /* 80198950 */ int itemRotate(); + /* 80198A2C */ int itemZoom(cXyz*); + /* 801990B0 */ int seq_wait(fopAc_ac_c*, dMsgFlow_c*); + /* 801990B8 */ int seq_start(fopAc_ac_c*, dMsgFlow_c*); + /* 8019936C */ int seq_select_wait(fopAc_ac_c*, dMsgFlow_c*); + /* 801993C4 */ int seq_select_start(fopAc_ac_c*, dMsgFlow_c*); + /* 8019959C */ int seq_select(fopAc_ac_c*, dMsgFlow_c*); + /* 80199A18 */ int seq_moving(fopAc_ac_c*, dMsgFlow_c*); + /* 80199BF8 */ int seq_decide(fopAc_ac_c*, dMsgFlow_c*); + /* 80199D14 */ int seq_choose(fopAc_ac_c*, dMsgFlow_c*); + /* 80199E28 */ int seq_decide_yes(fopAc_ac_c*, dMsgFlow_c*); + /* 80199FA4 */ int seq_decide_no(fopAc_ac_c*, dMsgFlow_c*); + /* 8019A020 */ int seq_finish(fopAc_ac_c*, dMsgFlow_c*); + /* 8019A0C0 */ bool seq_event(fopAc_ac_c*, dMsgFlow_c*); + /* 8019A0D0 */ int shop_init(bool); + /* 8019A158 */ void shop_process(fopAc_ac_c*, dMsgFlow_c*); + /* 8019A238 */ void createShopItem(int); + /* 8019A344 */ void setSeq(u8); + /* 8019A354 */ void setSoldOutFlag(); + /* 8019A364 */ void setSoldOut(); + /* 8019A4F4 */ void setSoldOutItemHide(); + /* 8019A564 */ void deleteObject(); + /* 8019A5D0 */ void searchItemActor(); + /* 8019AB00 */ int getFlowNodeNum(); + /* 8019AB1C */ void setSellItemMax(u8); + /* 8019AB24 */ bool checkShopOpen(); + /* 8019AB60 */ bool checkLeftTrigger(STControl*); + /* 8019AB84 */ bool checkRightTrigger(STControl*); + /* 8019ABA8 */ bool dpdMove(); + + /* 801974E4 */ virtual ~dShopSystem_c(); + /* 8019ACF0 */ virtual bool getResName2(int); + /* 8019ACE0 */ virtual int beforeStartSeqAction(dMsgFlow_c*, int); + /* 8019ACE8 */ virtual int beforeSelectSeqAction(dMsgFlow_c*, int); + + bool chkSpMode() { return mSpMode == 1; } + void offSpMode() { mSpMode = 0; } + u8 getEventParamU8(int param_0) { return (mEventParam >> (3 - param_0) * 8) & 0xFF; } + +private: + /* 0xE40 */ STControl* mpStick; + /* 0xE44 */ dSelect_cursor_c* mpDrawCursor; + /* 0xE48 */ dShopItemCtrl_c mItemCtrl; + /* 0xE78 */ ShopCam_action_c mShopCamAction; + /* 0xF54 */ u32 mEventParam; + /* 0xF58 */ int field_0xf58; + /* 0xF5C */ int field_0xf5c; + /* 0xF60 */ int field_0xf60; + /* 0xF64 */ int field_0xf64; + /* 0xF68 */ s16 field_0xf68; + /* 0xF6A */ u16 mFlag; + /* 0xF6C */ u16 field_0xf6c; + /* 0xF6E */ u8 mCursorPos; + /* 0xF6F */ u8 mLastCursorPos; + /* 0xF70 */ u8 mSeq; + /* 0xF71 */ u8 field_0xf71; + /* 0xF72 */ u8 mWaitTimer; + /* 0xF73 */ u8 mSoldOutFlag; + /* 0xF74 */ u8 mSoldOutItemFlags; + /* 0xF75 */ u8 mSpMode; + /* 0xF76 */ u8 field_0xf76; + /* 0xF77 */ u8 field_0xf77; + /* 0xF78 */ u8 field_0xf78; + /* 0xF79 */ u8 field_0xf79; + /* 0xF7A */ u8 field_0xf7a; +}; + +typedef int (dShopSystem_c::*processFunc)(fopAc_ac_c*, dMsgFlow_c*); #endif /* D_SHOP_D_SHOP_SYSTEM_H */ |
