summaryrefslogtreecommitdiff
path: root/include/d/d_event_lib.h
blob: b0ee88a6f3995bd1c63b65917e90965208d74399 (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
#ifndef D_EVENT_D_EVENT_LIB_H
#define D_EVENT_D_EVENT_LIB_H

#include <types.h>

class fopAc_ac_c;

template <typename A0>
struct action_class {
    typedef bool (A0::*fptr)();
    fptr init;
    fptr execute;

    action_class(fptr pInit, fptr pExecute) {
        init = pInit;
        execute = pExecute;
    }

    fptr& getInit() { return init; }

    fptr& getExecute() { return execute; }
};

class dEvLib_callback_c {
public:
    dEvLib_callback_c(fopAc_ac_c* param_0) {
        mActor = param_0;
        mAction = NULL;
    }

    bool eventUpdate();
    bool setEvent(int, int, int);
    void orderEvent(int, int, int);
    bool setAction(action_class<dEvLib_callback_c>*);
    bool initAction();
    bool executeAction();
    bool initStart();
    bool executeStart();
    bool initRun();
    bool executeRun();

    virtual ~dEvLib_callback_c() {}
    virtual bool eventStart() { return true; }
    virtual bool eventRun() { return true; }
    virtual bool eventEnd() { return true; }

    /* 0x4 */ fopAc_ac_c* mActor;
    /* 0x8 */ action_class<dEvLib_callback_c>* mAction;
    /* 0xC */ u16 _C;
};

#endif /* D_EVENT_D_EVENT_LIB_H */