11#ifndef D_A_E_SW_H
22#define D_A_E_SW_H
33
4+ #include " d/d_bg_s_acch.h"
5+ #include " d/d_cc_d.h"
6+ #include " d/d_cc_uty.h"
47#include " f_op/f_op_actor_mng.h"
58
69/* *
1215 *
1316 */
1417class daE_SW_c : public fopEn_enemy_c {
18+ public:
19+ typedef void (daE_SW_c::*actionFunc)();
20+
1521 /* 807A7460 */ void bckSet (int , f32 , u8 , f32 );
16- /* 807A7504 */ void draw ();
22+ /* 807A7504 */ int draw ();
1723 /* 807A76E4 */ void setBeforeJumpEffect ();
1824 /* 807A77CC */ void setJumpEffect ();
1925 /* 807A78B4 */ void setSmokeEffect ();
2026 /* 807A7A08 */ void setDiveEffect ();
2127 /* 807A7AC0 */ void setHideEffect ();
2228 /* 807A7B64 */ void setActionMode (s16, s16);
23- /* 807A7C50 */ void search_bomb ();
24- /* 807A7CD0 */ void bomb_check ();
25- /* 807A7D48 */ void setModeBack ();
29+ /* 807A7C50 */ fopAc_ac_c* search_bomb ();
30+ /* 807A7CD0 */ BOOL bomb_check ();
31+ /* 807A7D48 */ bool setModeBack ();
2632 /* 807A7DAC */ void checkFall ();
27- /* 807A7EFC */ void checkBeforeWall ();
33+ /* 807A7EFC */ bool checkBeforeWall ();
2834 /* 807A7F88 */ void executeWait ();
29- /* 807A8290 */ void checkRunChase ();
35+ /* 807A8290 */ int checkRunChase ();
3036 /* 807A831C */ void executeChaseSlow ();
3137 /* 807A8B98 */ void executeChaseFast ();
3238 /* 807A9580 */ void executeBomb ();
@@ -38,26 +44,26 @@ class daE_SW_c : public fopEn_enemy_c {
3844 /* 807AA91C */ void executeDamage ();
3945 /* 807AAB7C */ void executeDie ();
4046 /* 807AADCC */ void executeMaster ();
41- /* 807AAF70 */ void checkSuddenAttack (int );
47+ /* 807AAF70 */ bool checkSuddenAttack (int );
4248 /* 807AB310 */ void executeSuddenAttack ();
4349 /* 807AB5C4 */ void executeFall ();
4450 /* 807AB6C4 */ void action ();
4551 /* 807AB884 */ void mtx_set ();
4652 /* 807AB930 */ void cc_set ();
4753 /* 807ABAB0 */ void damage_check ();
4854 /* 807ABD28 */ void checkGroundSand ();
49- /* 807ABE50 */ void execute ();
50- /* 807AC170 */ void _delete ();
51- /* 807AC204 */ void CreateHeap ();
52- /* 807AC31C */ void create ();
55+ /* 807ABE50 */ int execute ();
56+ /* 807AC170 */ int _delete ();
57+ /* 807AC204 */ int CreateHeap ();
58+ /* 807AC31C */ cPhs__Step create ();
5359 /* 807ACA40 */ void d_setAction (void (daE_SW_c::*)());
5460 /* 807ACAE4 */ void d_checkFall ();
5561 /* 807ACCB0 */ void d_damage_check ();
5662 /* 807ACFF8 */ void d_action ();
57- /* 807AD10C */ void d_bomb_check ();
63+ /* 807AD10C */ bool d_bomb_check ();
5864 /* 807AD17C */ void d_bm_chase ();
5965 /* 807AD4A8 */ void d_wait ();
60- /* 807AD7C0 */ void d_chaseCheck ();
66+ /* 807AD7C0 */ bool d_chaseCheck ();
6167 /* 807ADA08 */ void d_chase ();
6268 /* 807ADE50 */ void d_attk ();
6369 /* 807AE4B4 */ void d_chance ();
@@ -67,16 +73,95 @@ class daE_SW_c : public fopEn_enemy_c {
6773 /* 807AEE44 */ void d_die ();
6874 /* 807AF01C */ void d_hook ();
6975 /* 807AF4B4 */ void d_fall ();
70- /* 807AF57C */ void d_execute ();
76+ /* 807AF57C */ int d_execute ();
77+
78+ bool d_checkAction (void (daE_SW_c::*action)()) {
79+ return field_0xafc == action;
80+ }
81+
82+ bool d_checkOldAction (void (daE_SW_c::*action)()) {
83+ return field_0xb0c == action;
84+ }
7185private:
72- /* 0x5ac */ u8 field_0x5ac[0xb18 - 0x5ac ];
86+ /* 0x5AC */ request_of_phase_process_class mPhase ;
87+ /* 0x5B4 */ mDoExt_McaMorfSO * mpModelMorf;
88+ /* 0x5B8 */ Z2CreatureEnemy mSound ;
89+ /* 0x65C */ cXyz field_0x65c;
90+ /* 0x668 */ cXyz field_0x668;
91+ /* 0x674 */ cXyz field_0x674;
92+ /* 0x680 */ s16 mMoveMode ;
93+ /* 0x682 */ s16 mActionMode ;
94+ /* 0x684 */ u8 field_0x684;
95+ /* 0x688 */ fpc_ProcID field_0x688;
96+ /* 0x68C */ u8 field_0x68c;
97+ /* 0x690 */ f32 field_0x690;
98+ /* 0x694 */ u8 field_0x694;
99+ /* 0x695 */ u8 field_0x695;
100+ /* 0x696 */ u8 field_0x696;
101+ /* 0x697 */ u8 field_0x697;
102+ /* 0x698 */ int field_0x698;
103+ /* 0x69C */ s16 field_0x69c;
104+ /* 0x69E */ s16 field_0x69e;
105+ /* 0x6A0 */ s16 field_0x6a0;
106+ /* 0x6A2 */ s16 field_0x6a2;
107+ /* 0x6A4 */ s16 field_0x6a4;
108+ /* 0x6A8 */ cXyz field_0x6a8;
109+ /* 0x6B4 */ f32 field_0x6b4;
110+ /* 0x6B8 */ f32 field_0x6b8;
111+ /* 0x6BC */ s16 field_0x6bc;
112+ /* 0x6BE */ u8 field_0x6be[0x6c8 - 0x6be ];
113+ /* 0x6C8 */ f32 field_0x6c8;
114+ /* 0x6CC */ s16 field_0x6cc;
115+ /* 0x6D0 */ f32 field_0x6d0;
116+ /* 0x6D4 */ f32 field_0x6d4;
117+ /* 0x6D8 */ f32 field_0x6d8;
118+ /* 0x6DC */ f32 field_0x6dc;
119+ /* 0x6E0 */ u32 mShadowKey ;
120+ /* 0x6E4 */ u8 field_0x6e4;
121+ /* 0x6E5 */ u8 field_0x6e5;
122+ /* 0x6E6 */ u8 field_0x6e6;
123+ /* 0x6E7 */ u8 field_0x6e7;
124+ /* 0x6E8 */ u8 field_0x6e8;
125+ /* 0x6E9 */ u8 field_0x6e9;
126+ /* 0x6EA */ s16 field_0x6ea;
127+ /* 0x6EC */ s16 field_0x6ec;
128+ /* 0x6EE */ s16 field_0x6ee;
129+ /* 0x6F0 */ s16 field_0x6f0;
130+ /* 0x6F2 */ s16 field_0x6f2;
131+ /* 0x6F4 */ u8 field_0x6f4[0x6f6 - 0x6f4 ];
132+ /* 0x6F6 */ s16 field_0x6f6;
133+ /* 0x6F8 */ dBgS_AcchCir field_0x6f8[2 ];
134+ /* 0x778 */ dBgS_ObjAcch mBgc ;
135+ /* 0x950 */ dCcD_Stts mStts ;
136+ /* 0x98C */ dCcD_Sph field_0x98c;
137+ /* 0xAC4 */ dCcU_AtInfo mAtInfo ;
138+ /* 0xAE8 */ u32 field_0xae8;
139+ /* 0xAEC */ u32 field_0xaec;
140+ /* 0xAF0 */ u32 field_0xaf0;
141+ /* 0xAF4 */ u32 field_0xaf4;
142+ /* 0xAF8 */ u8 field_0xaf8;
143+ /* 0xAF9 */ u8 field_0xaf9;
144+ /* 0xAFC */ actionFunc field_0xafc;
145+ /* 0xB0C */ actionFunc field_0xb0c;
146+ /* 0xB14 */ bool field_0xb14;
73147};
74148
75149STATIC_ASSERT (sizeof (daE_SW_c) == 0xb18);
76150
77151class daE_SW_HIO_c {
152+ public:
153+ /* サンドワーム (Sandworm) */
78154 /* 807A740C */ daE_SW_HIO_c();
79- /* 807AF870 */ ~daE_SW_HIO_c ();
155+ /* 807AF870 */ virtual ~daE_SW_HIO_c () {}
156+
157+ /* 0x04 */ s8 field_0x4;
158+ /* 0x08 */ f32 basic_size; // 基本サイズ (Basic Size)
159+ /* 0x0C */ f32 bomb_notice_dist; // 爆弾認識距離 (Bomb Recognition Distance)
160+ /* 0x10 */ f32 bomb_attack_start_range; // 爆弾攻撃開始範囲 (Bomb Attack Start Range)
161+ /* 0x14 */ f32 human_attack_init_range; // 人用攻撃開始範囲 (Human Attack Initiation Range)
162+ /* 0x18 */ f32 horse_attack_init_range; // 馬用攻撃開始範囲 (Horse Attack Initiation Range)
163+ /* 0x1C */ f32 character_notice_dist; // 人認識距離(ダンジョン用) (Character Recognition Distance (For Dungeon))
164+ /* 0x20 */ u8 movement_range_debug_display; // 移動範囲デバック表示 (Movement Range Debug Display)
80165};
81166
82167
0 commit comments