summaryrefslogtreecommitdiff
path: root/src/d/event/d_event_lib.cpp
blob: fc72ea7eadf1fdb06f8c396a9c6bf5f5df26ccc1 (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
//
// Generated By: dol2asm
// Translation Unit: d/event/d_event_lib
//

#include "d/event/d_event_lib.h"
#include "d/com/d_com_inf_game.h"
#include "d/event/d_event_manager.h"
#include "dol2asm.h"
#include "dolphin/types.h"
#include "f_op/f_op_actor_mng.h"

//
// Declarations:
//

/* ############################################################################################## */
/* 803A82B8-803A82C4 0053D8 000C+00 1/1 0/0 0/0 .data            cNullVec__6Z2Calc */
SECTION_DATA static u8 cNullVec__6Z2Calc[12] = {
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
};

/* 8004886C-800488A4 0431AC 0038+00 0/0 0/0 23/23 .text eventUpdate__17dEvLib_callback_cFv */
BOOL dEvLib_callback_c::eventUpdate() {
    if (mAction == NULL) {
        return FALSE;
    } else {
        executeAction();
        return TRUE;
    }
}

/* ############################################################################################## */
/* 804246E0-804246F8 051400 0018+00 2/2 0/0 0/0 .bss             l_startAction */
static action_class<dEvLib_callback_c> l_startAction(&dEvLib_callback_c::initStart,
                                                     &dEvLib_callback_c::executeStart);
/* 804246F8-80424710 051418 0018+00 2/2 0/0 0/0 .bss             l_runAction */
static action_class<dEvLib_callback_c> l_runAction(&dEvLib_callback_c::initRun,
                                                   &dEvLib_callback_c::executeRun);

/* 800488A4-80048940 0431E4 009C+00 1/1 0/0 1/1 .text            setEvent__17dEvLib_callback_cFiii
 */
BOOL dEvLib_callback_c::setEvent(int mapToolId, int eventIdx, int param_2) {
    if (mAction != NULL) {
        return FALSE;
    } else {
        mActor->mEvtInfo.setMapToolId(mapToolId);
        if (mapToolId != 0xFF && eventIdx == 0xFF) {
            eventIdx = i_dComIfGp_getEventManager().getEventIdx(mActor, mapToolId);
        }
        mActor->mEvtInfo.setEventId(eventIdx);
        _C = param_2;
        return setAction(&l_startAction);
    }
}

/* 80048940-80048970 043280 0030+00 0/0 0/0 21/21 .text orderEvent__17dEvLib_callback_cFiii */
void dEvLib_callback_c::orderEvent(int param_0, int param_1, int param_2) {
    setEvent(param_0, param_1, param_2 != 0 ? 0x101 : 1);
}

/* 80048970-800489A8 0432B0 0038+00 3/3 0/0 0/0 .text
 * setAction__17dEvLib_callback_cFP33action_class<17dEvLib_callback_c> */
BOOL dEvLib_callback_c::setAction(action_class<dEvLib_callback_c>* action) {
    mAction = action;
    if (mAction == NULL) {
        return FALSE;
    } else {
        return initAction();
    }
}

/* 800489A8-800489F8 0432E8 0050+00 1/1 0/0 0/0 .text            initAction__17dEvLib_callback_cFv
 */
BOOL dEvLib_callback_c::initAction() {
    if (!mAction->getInit()) {
        return TRUE;
    } else {
        return (this->*(mAction->getInit()))();
    }
}

/* 800489F8-80048A50 043338 0058+00 1/1 0/0 0/0 .text executeAction__17dEvLib_callback_cFv */
BOOL dEvLib_callback_c::executeAction() {
    if (!mAction->getExecute()) {
        return TRUE;
    } else {
        return (this->*(mAction->getExecute()))();
    }
}

/* 80048A50-80048A70 043390 0020+00 1/0 0/0 0/0 .text            initStart__17dEvLib_callback_cFv */
BOOL dEvLib_callback_c::initStart() {
    return executeStart();
}

/* 80048A70-80048B1C 0433B0 00AC+00 2/1 0/0 0/0 .text            executeStart__17dEvLib_callback_cFv
 */
BOOL dEvLib_callback_c::executeStart() {
    if (!mActor->mEvtInfo.checkCommandDemoAccrpt()) {
        if (mActor->mEvtInfo.getMapToolId() != 0xFF) {
            fopAcM_orderMapToolEvent(mActor, mActor->mEvtInfo.getMapToolId(),
                                     mActor->mEvtInfo.getEventId(), 0xFFFF, _C, 0);
        } else {
            fopAcM_orderOtherEventId(mActor, mActor->mEvtInfo.getEventId(),
                                     mActor->mEvtInfo.getMapToolId(), 0xFFFF, 0, _C);
        }
        mActor->mEvtInfo.i_onCondition(2);
        return TRUE;
    } else {
        return setAction(&l_runAction);
    }
}

/* 80048B1C-80048B48 04345C 002C+00 1/0 0/0 0/0 .text            initRun__17dEvLib_callback_cFv */
BOOL dEvLib_callback_c::initRun() {
    return eventStart();
}

/* 80048B48-80048BD8 043488 0090+00 1/0 0/0 0/0 .text            executeRun__17dEvLib_callback_cFv
 */
BOOL dEvLib_callback_c::executeRun() {
    if (!i_dComIfGp_getEventManager().endCheck(mActor->mEvtInfo.getEventId())) {
        return eventRun();
    } else {
        i_dComIfGp_getEvent().reset();
        setAction(NULL);
        return eventEnd();
    }
}