summaryrefslogtreecommitdiff
path: root/include/d/actor/d_a_e_ws.h
blob: ada0509d248fbee77b8a2180522e6ac444231221 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
#ifndef D_A_E_WS_H
#define D_A_E_WS_H

#include "f_op/f_op_actor_mng.h"
#include "m_Do/m_Do_ext.h"
#include "d/d_bg_s_acch.h"
#include "d/d_cc_d.h"
#include "d/d_cc_uty.h"

/**
 * @ingroup actors-enemies
 * @class daE_WS_c
 * @brief Wall Skulltula
 * 
 * @details 
 * 
 */
class daE_WS_c : public fopEn_enemy_c {
public:
    enum daE_WS_Action_e {
        ACTION_WAIT_e,
        ACTION_ATTACK_e,
        ACTION_DOWN_e,
        ACTION_WIND_DOWN_e,
    };

    int draw();
    void setBck(int, u8, f32, f32);
    void setFootSound();
    void setActionMode(int);
    f32 calcTargetDist(cXyz, cXyz);
    s16 calcTargetAngle(cXyz, cXyz);
    bool checkInSearchRange(cXyz, cXyz);
    int checkPlayerPos();
    bool checkAttackEnd();
    void executeWait();
    void executeAttack();
    void executeDown();
    void executeWindDown();
    void damage_check();
    void action();
    void mtx_set();
    void cc_set();
    int execute();
    void checkInitialWall();
    bool checkBeforeBg(s16);
    bool checkWall();
    int _delete();
    int CreateHeap();
    int create();

    /* 0x5AC */ request_of_phase_process_class mPhase;
    /* 0x5B4 */ mDoExt_McaMorfSO* mAnm_p;
    /* 0x5B8 */ Z2CreatureEnemy mSound;
    /* 0x65C */ cXyz mHomePos;
    /* 0x668 */ csXyz mTargetWallAngle;
    /* 0x66E */ csXyz mWallAngle;
    /* 0x674 */ f32 mDownColor;
    /* 0x678 */ f32 mBodyScale;
    /* 0x67C */ int mAction;
    /* 0x680 */ int mMode;
    /* 0x684 */ u32 mShadowId;
    /* 0x688 */ s16 mTargetAngle;
    /* 0x68A */ s16 mStepAngle;
    /* 0x68C */ u8 mWaitTimer;
    /* 0x68E */ s16 mInvulnerabilityTimer;
    /* 0x690 */ u8 mIsReturnHome;
    /* 0x691 */ u8 arg0;
    /* 0x692 */ u8 bitSw;
    /* 0x694 */ dBgS_AcchCir mBgc;
    /* 0x6D4 */ dBgS_ObjAcch mAcch;
    /* 0x8AC */ dCcD_Stts mCcStts;
    /* 0x8E8 */ dCcD_Sph mCcSph;
    /* 0xA20 */ dCcD_Sph mCcBokkuriSph;
    /* 0xB58 */ dCcU_AtInfo mAtInfo;
    /* 0xB7C */ u8 mHioSet;
};

STATIC_ASSERT(sizeof(daE_WS_c) == 0xb80);


#endif /* D_A_E_WS_H */