summaryrefslogtreecommitdiff
path: root/include/d/t/d_t_scene_change.h
blob: 017c8d584fe40256dbbfac2c92a9f440a0d4417d (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
#ifndef D_T_SCENE_CHANGE_H
#define D_T_SCENE_CHANGE_H

#include "d/t/d_tg.h"
#include "m/m_mtx.h"
#include "m/m_vec.h"

class dTgSceneChange_c : public dTg_c {
public:
    // TODO: Move this somewhere not in d_t_scene_change.
    //       The Variable gets passed to dAcPy_c::triggerExitRelated
    enum Type_e {
        /* 0x0 */ TYPE_0,
        /* 0x1 */ TYPE_1, // Restricting Movement?
        /* 0x2 */ TYPE_2,
        /* 0x3 */ TYPE_3, // Forced Walk
        /* 0x4 */ TYPE_4, // Loftwing
        /* 0x5 */ TYPE_5, // Landing on Skyloft
        /* 0x6 */ TYPE_6, // Enter/Exit Dungeon
        /* 0x7 */ TYPE_7, // Minecart
        /* 0x8 */ TYPE_8, // Cistern Rope to Basement
        /* 0x9 */ TYPE_9, // Light Pillar?
        /* 0xA */ TYPE_A, // Boat
        /* 0xB */ TYPE_B, // Actor Related
    };

    dTgSceneChange_c() {}
    virtual ~dTgSceneChange_c() {}

    virtual int create() override;
    virtual int draw() override;
    virtual int actorExecute() override;

private:
    bool checkDisabled() const;
    bool checkScrapper();

    void savePlayerPosition();

private:
    /* 0x0FC */ mMtx_c mArea;
    /* 0x12C */ u8 mSceneLink;
    /* 0x12D */ u8 mSceneType;
    /* 0x12E */ u8 mPathId;
    /* 0x12F */ u8 mEnableSceneflag;
    /* 0x130 */ u16 mEnableStoryflag;
    /* 0x132 */ u16 mDisableStoryflag;
    /* 0x134 */ bool field_0x134;
    /* 0x135 */ bool field_0x135;
    /* 0x136 */ bool field_0x136;
    /* 0x138 */ mVec3_c field_0x138; // Player position on Scrapper Stop
};

#endif