summaryrefslogtreecommitdiff
path: root/src/d/actor/d_a_alldie.cpp
blob: f96bd486533c8b18e88a4f45984349d1cc97d4f1 (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
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
//
// Generated by dtk
// Translation Unit: d_a_alldie.cpp
//

#include "d/dolzel_rel.h" // IWYU pragma: keep
#include "d/actor/d_a_alldie.h"
#include "d/d_com_inf_game.h"
#include "f_op/f_op_actor_mng.h"

enum {
    ACT_WAIT,
    ACT_CHECK,
    ACT_TIMER,
};

/* 00000078-00000084       .text getSwbit__10daAlldie_cFv */
u8 daAlldie_c::getSwbit() {
    return fopAcM_GetParam(this) >> 0x8;
}

/* 00000084-0000008C       .text actionWait__10daAlldie_cFv */
BOOL daAlldie_c::actionWait() {
    return TRUE;
}

/* 0000008C-000000D8       .text actionCheck__10daAlldie_cFv */
BOOL daAlldie_c::actionCheck() {
    if (!fopAcM_myRoomSearchEnemy(fopAcM_GetRoomNo(this))) {
        setActio(ACT_TIMER);
        mTimer = 65;
    }

    return TRUE;
}

/* 000000D8-0000016C       .text actionTimer__10daAlldie_cFv */
BOOL daAlldie_c::actionTimer() {
    if (fopAcM_myRoomSearchEnemy(fopAcM_GetRoomNo(this))) {
        setActio(ACT_CHECK);
    } else if (mTimer > 0) {
        mTimer--;
    } else {
        setActio(ACT_WAIT);
        dComIfGs_onSwitch(getSwbit(), fopAcM_GetRoomNo(this));
    }
    return TRUE;
}

/* 0000016C-000001BC       .text execute__10daAlldie_cFv */
BOOL daAlldie_c::execute() {
    switch (mAction) {
    case ACT_CHECK:
        actionCheck();
        break;
    case ACT_TIMER:
        actionTimer();
        break;
    default:
        actionWait();
        break;
    }

    return TRUE;
}

cPhs_State daAlldie_c::create() {
    fopAcM_ct(this, daAlldie_c);

    if (!dComIfGs_isSwitch(getSwbit(), fopAcM_GetRoomNo(this))) {
        setActio(ACT_CHECK);
    } else {
        setActio(ACT_WAIT);
    }

    shape_angle.z = 0;
    shape_angle.x = 0;
    current.angle.z = 0;
    current.angle.x = 0;

    return cPhs_COMPLEATE_e;
}

/* 000001BC-000001C4       .text daAlldie_Draw__FP10daAlldie_c */
static BOOL daAlldie_Draw(daAlldie_c*) {
    return TRUE;
}

/* 000001C4-000001E8       .text daAlldie_Execute__FP10daAlldie_c */
static BOOL daAlldie_Execute(daAlldie_c* i_this) {
    i_this->execute();
    return TRUE;
}

/* 000001E8-000001F0       .text daAlldie_IsDelete__FP10daAlldie_c */
static BOOL daAlldie_IsDelete(daAlldie_c*) {
    return TRUE;
}

/* 000001F0-00000220       .text daAlldie_Delete__FP10daAlldie_c */
static BOOL daAlldie_Delete(daAlldie_c* i_this) {
    i_this->~daAlldie_c();
    return TRUE;
}

/* 00000220-000002CC       .text daAlldie_Create__FP10fopAc_ac_c */
static cPhs_State daAlldie_Create(fopAc_ac_c* ac) {
    return ((daAlldie_c*)ac)->create();
}

static actor_method_class l_daAlldie_Method = {
    (process_method_func)daAlldie_Create,
    (process_method_func)daAlldie_Delete,
    (process_method_func)daAlldie_Execute,
    (process_method_func)daAlldie_IsDelete,
    (process_method_func)daAlldie_Draw,
};

actor_process_profile_definition g_profile_ALLDIE = {
    /* Layer ID     */ fpcLy_CURRENT_e,
    /* List ID      */ 0x0002,
    /* List Prio    */ fpcPi_CURRENT_e,
    /* Proc Name    */ fpcNm_ALLDIE_e,
    /* Proc SubMtd  */ &g_fpcLf_Method.base,
    /* Size         */ sizeof(daAlldie_c),
    /* Size Other   */ 0,
    /* Parameters   */ 0,
    /* Leaf SubMtd  */ &g_fopAc_Method.base,
    /* Draw Prio    */ fpcDwPi_ALLDIE_e,
    /* Actor SubMtd */ &l_daAlldie_Method,
    /* Status       */ fopAcStts_UNK4000_e | fopAcStts_UNK40000_e,
    /* Group        */ fopAc_ACTOR_e,
    /* Cull Type    */ fopAc_CULLBOX_6_e,
};