d_a_npc_so (#970)

* d_a_npc_so

* Rebase

* Revert files

* fix compilation errors

* review comments

---------

Co-authored-by: LagoLunatic <LagoLunatic@users.noreply.github.com>
This commit is contained in:
Maide
2026-09-27 17:55:38 +01:00
committed by GitHub
parent 734652d00d
commit 564ab15b6b
6 changed files with 2790 additions and 463 deletions
+1 -1
View File
@@ -1578,7 +1578,7 @@ config.libs = [
ActorRel(Matching, "d_a_mflft"),
ActorRel(MatchingFor("GZLJ01", "GZLE01", "GZLP01"), "d_a_npc_cb1"),
ActorRel(MatchingFor("GZLJ01", "GZLE01", "GZLP01"), "d_a_npc_md"),
ActorRel(NonMatching, "d_a_npc_so"),
ActorRel(Matching, "d_a_npc_so"),
ActorRel(Matching, "d_a_nzg"),
ActorRel(NonMatching, "d_a_obj_aygr"),
ActorRel(NonMatching, "d_a_obj_balancelift"),
+115 -27
View File
@@ -2,35 +2,64 @@
#define D_A_NPC_SO_H
#include "f_op/f_op_actor.h"
#include "d/d_cc_d.h"
#include "d/d_npc.h"
#include "d/d_jnt_hit.h"
#include "d/d_particle.h"
#include "m_Do/m_Do_hostIO.h"
#include "d/d_lib.h"
class J3DNode;
struct dCcD_SrcSph;
class daNpc_So_c : public fopAc_ac_c {
class daNpc_So_c : public fopNpc_npc_c {
typedef void (daNpc_So_c::*ModeFunc)();
typedef void (daNpc_So_c::*CutFunc)();
public:
enum Proc_e {
PROC_INIT_e,
PROC_RUN_e,
};
enum Mode_e {
/* 0 */ MODE_WAIT_e,
/* 1 */ MODE_HIDE_e,
/* 2 */ MODE_JUMP_e,
/* 3 */ MODE_SWIM_e,
/* 4 */ MODE_NEAR_SWIM_e,
/* 5 */ MODE_EVENT_FIRST_WAIT_e,
/* 6 */ MODE_EVENT_FIRST_e,
/* 7 */ MODE_EVENT_FIRST_END_e,
/* 8 */ MODE_EVENT_ESA_e,
/* 9 */ MODE_EVENT_MAPOPEN_e,
/* 10 */ MODE_EVENT_BOW_e,
/* 11 */ MODE_TALK_e,
/* 12 */ MODE_DISAPPEAR_e,
/* 13 */ MODE_DEBUG_e,
/* 14 */ MODE_GET_RUPEE_e,
/* 15 */ MODE_EVENT_TRIFORCE_e,
};
int getMiniGameRestArrow() { return 10 - mB78; }
void isAnm(signed char) {}
void modeProcInit(int) {}
void _searchEsa(fopAc_ac_c*);
void* _searchEsa(fopAc_ac_c*);
void _nodeControl(J3DNode*, J3DModel*);
void _searchTagSo(fopAc_ac_c*);
void _searchMinigameTagSo(fopAc_ac_c*);
void XyCheckCB(int);
void XyEventCB(int);
void _createHeap();
void jntHitCreateHeap();
void checkTgHit();
void* _searchTagSo(fopAc_ac_c*);
void* _searchMinigameTagSo(fopAc_ac_c*);
s16 XyCheckCB(int);
s16 XyEventCB(int);
BOOL _createHeap();
bool jntHitCreateHeap();
bool checkTgHit();
void offsetZero();
void offsetDive();
void offsetSwim();
void offsetAppear();
void getMsg();
void next_msgStatus(unsigned long*);
u32 getMsg();
u16 next_msgStatus(u32*);
void lookBack();
void setAttention();
void setAnm(signed char, bool);
@@ -127,24 +156,83 @@ public:
void initCam();
void moveCam();
static const s32 m_heapsize;
static const char m_arc_name[];
static const dCcD_SrcSph m_sph_src;
public:
/* Place member variables here */
#if VERSION == VERSION_DEMO
/* 0x290 */ u8 m290[0xB70 - 0x290];
#else
/* 0x290 */ u8 m290[0xB78 - 0x290];
/* 0x6C4 */ u8 m6C4[0x6CC - 0x6C4];
/* 0x6CC */ s32 m6CC;
/* 0x6D0 */ s16 m6D0;
/* 0x6D2 */ s8 m6D2;
/* 0x6D3 */ s8 m6D3;
/* 0x6D4 */ s8 m6D4;
/* 0x6D8 */ int m6D8;
/* 0x6DC */ dCcD_Stts mStts2;
/* 0x718 */ dCcD_Sph mSph;
/* 0x844 */ request_of_phase_process_class mPhase;
/* 0x84C */ mDoExt_McaMorf* mpMorf;
/* 0x850 */ J3DModel* mpModel;
/* 0x854 */ mDoExt_btpAnm mBtpAnm;
#if VERSION > VERSION_DEMO
/* 0x868 */ int m868;
/* 0x86C */ s16 m86C;
#endif
/* 0xB78 */ int mB78;
};
class daNpc_So_HIO_c {
public:
daNpc_So_HIO_c();
public:
/* Place member variables here */
};
/* 0x870 */ dBgS_ObjAcch mAcch;
/* 0xA34 */ dBgS_AcchCir mAcchCir;
/* 0xA74 */ s32 mA74;
/* 0xA78 */ u8 mA78;
/* 0xA79 */ u8 mA79;
/* 0xA7C */ f32 mA7C;
/* 0xA80 */ cXyz mA80;
/* 0xA8C */ u8 mA8C[0xA90 - 0xA8C];
/* 0xA90 */ int mA90;
/* 0xA94 */ u8 mA94[0xA9C - 0xA94];
/* 0xA9C */ int mA9C;
/* 0xAA0 */ u8 mAA0[0xAA8 - 0xAA0];
/* 0xAA8 */ JntHit_c* mJntHit;
/* 0xAAC */ cXyz mAAC;
/* 0xAB8 */ u8 mAB8[0xAE8 - 0xAB8];
/* 0xAE8 */ dPa_rippleEcallBack mAE8;
/* 0xAFC */ f32 mAFC;
/* 0xB00 */ f32 mB00;
/* 0xB04 */ f32 mB04;
/* 0xB08 */ f32 mB08;
/* 0xB0C */ u8 mB0C;
/* 0xB10 */ dLib_circle_path_c mB10;
/* 0xB34 */ f32 mB34;
/* 0xB38 */ cXyz mB38;
/* 0xB44 */ cXyz mB44;
/* 0xB50 */ s16 mB50;
/* 0xB54 */ cXyz mB54;
/* 0xB60 */ cXyz mB60;
/* 0xB6C */ s32 mB6C;
/* 0xB70 */ u8 mB70;
/* 0xB74 */ s32 mB74;
/* 0xB78 */ s32 mB78;
/* 0xB7C */ s32 mB7C;
/* 0xB80 */ s32 mB80;
/* 0xB84 */ u8 mB84;
/* 0xB88 */ f32 mB88;
/* 0xB8C */ f32 mB8C;
/* 0xB90 */ cXyz mB90;
/* 0xB9C */ s16 mB9C;
/* 0xBA0 */ cXyz mBA0;
/* 0xBAC */ s16 mBAC;
/* 0xBAE */ u8 mBAE;
/* 0xBB0 */ cXyz mBB0;
/* 0xBBC */ s32 mBBC;
/* 0xBC0 */ cXyz mBC0;
/* 0xBCC */ cXyz mBCC;
/* 0xBD8 */ u8 mBD8;
/* 0xBD9 */ u8 mBD9;
/* 0xBDA */ bool mBDA;
/* 0xBDB */ bool mBDB;
/* 0xBDC */ s16 mBDC;
/* 0xBDE */ u8 mBDE;
#if VERSION > VERSION_DEMO
/* 0xBE0 */ int mBE0;
#endif
}; // Size: 0xBE4
#endif /* D_A_NPC_SO_H */
+2
View File
@@ -414,6 +414,7 @@ public:
u8 fmapOpenCheck() { return mFmapOpen; }
void fmapOpenOn() { mFmapOpen = 1; }
void fmapOpenFishOn() { mFmapOpen = 2; }
void fmapOpenOff() { mFmapOpen = 0; }
s16 getItemMagicCount() { return mItemMagicCount; }
@@ -4403,6 +4404,7 @@ inline u16 dComIfGp_getWaveFrame() { return g_dComIfG_gameInfo.play.getWaveFrame
inline u8 dComIfGp_fmapOpenCheck() { return g_dComIfG_gameInfo.play.fmapOpenCheck(); }
inline void dComIfGp_fmapOpenOn() { g_dComIfG_gameInfo.play.fmapOpenOn(); }
inline void dComIfGp_fmapOpenFishOn() { g_dComIfG_gameInfo.play.fmapOpenFishOn(); }
inline void dComIfGp_fmapOpenOff() { g_dComIfG_gameInfo.play.fmapOpenOff(); }
+1812 -389
View File
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
+1 -1
View File
@@ -143,7 +143,7 @@ void dComIfG_play_c::itemInit() {
}
mMelodyNum = 0;
mFmapOpen = false;
mFmapOpen = 0;
mNameOpen = 0;
field_0x4953 = 0;
field_0x4954 = 0;