summaryrefslogtreecommitdiff
path: root/src/d/col/bg/d_bg_w_base.cpp
blob: 4efd510945d46dfdd71b178ec21863b41a478624 (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

#include "d/col/bg/d_bg_w_base.h"

#include "d/col/bg/d_bg_s.h"

dBgW_Base::dBgW_Base() {
    ClrDBgWBase();
}

dBgW_Base::~dBgW_Base() {
    if (ChkUsed()) {
        dBgS::GetInstance()->Release(this);
    }
    if (GetRegistId() != BG_ID_MAX) {
        dBgS::GetInstance()->UnRegist(this);
    }
    ClrDBgWBase();
}

void dBgW_Base::ClrDBgWBase() {
    // Regswap?

    mRoomId = 0xFF;
    mPriority = 2;
    field_0x2E = 0xFF;
    // A set to 0 is required. I think 0x24 may be flags, so an unset then set?
    field_0x24 = 0;
    field_0x24 = 4;
    mRegistId = BG_ID_MAX;
    field_0x2F = 0xFF;
    mDiffShapeAngleY = 0;
    mOldShapeAngleY = 0;
    SetPushPullCallback(nullptr);
    ClearMap();
    field_0x20 = 0;
    field_0x22 = 0xFFFF;
}

bool dBgW_Base::ChkMemoryError() {
    return false;
}

void dBgW_Base::CallRideCallback(dAcObjBase_c *, dAcObjBase_c *) {
    // No Call
}

void dBgW_Base::CallArrowStickCallback(dAcObjBase_c *, dAcObjBase_c *, mVec3_c &) {
    // No Call
}

bool dBgW_Base::CallUnkCallback(dAcObjBase_c *, dAcObjBase_c *) {
    return false;
}

void dBgW_Base::CalcDiffShapeAngleY(s16 shapeAngleY) {
    mDiffShapeAngleY = shapeAngleY - mOldShapeAngleY;
    mOldShapeAngleY = shapeAngleY;
}

void dBgW_Base::SetOldShapeAngleY(s16 oldShapeAngleY) {
    mOldShapeAngleY = oldShapeAngleY;
}

BOOL dBgW_Base::InitMapStuff(mAllocator_c *pAllocator) {
    ClearMap();
    return UpdateDraw(pAllocator) != false;
}

bool dBgW_Base::fn_8034AD70() const {
    u8 val = field_0x18.field_0x00;
    if (val == 0 || val == 2) {
        return true;
    }
    return false;
}

bool dBgW_Base::fn_8034ADA0() const {
    return field_0x18.field_0x00 <= 1;
}

bool dBgW_Base::UpdateDraw(mAllocator_c * /* unused */) {
    ClearMap();
    return true;
}

void dBgW_Base::RegistBg(int id) {
    mRegistId = id;
}

void dBgW_Base::UnRegistBg() {
    mRegistId = BG_ID_MAX;
}

bool dBgW_Base::ChkReady() const {
    if (mRegistId == BG_ID_MAX || ChkNotReady()) {
        return false;
    }
    return true;
}

void dBgW_Base::Set0x2F(u8 val) {
    field_0x2F = val;
}