-
Notifications
You must be signed in to change notification settings - Fork 2
/
backgrnd.cpp
90 lines (79 loc) · 1.38 KB
/
backgrnd.cpp
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
#include "backgrnd.h"
#include "spool.h"
#include "validate.h"
CSuper* BackgroundList;
EXPORT i16 gBackgroundIndex = 0;
// @Ok
// @Matching
void CBackground::AI(void)
{
this->mAngles += this->csVector1;
}
// @Ok
// @Matching
CBackground::CBackground(
u32 checksum,
CSVector* ang_vel)
{
this->InitItem(gObjFile);
this->mModel = Spool_GetModel(checksum, this->mRegion);
this->mFlags &= ~2u;
this->mCBodyFlags &= ~2u;
this->field_38 = 502;
this->AttachTo(reinterpret_cast<CBody**>(&BackgroundList));
this->field_F8 = gBackgroundIndex++;
}
// @Ok
CBackground::~CBackground(void)
{
this->DeleteFrom(reinterpret_cast<CBody**>(&BackgroundList));
print_if_false(gBackgroundIndex != 0, "Background index error");
--gBackgroundIndex;
}
// @NotOk
// global
void Backgrnd_On(unsigned __int16 a1)
{
CSuper* cur = BackgroundList;
if (cur)
{
while (cur)
{
if (cur->field_F8 != a1)
{
cur = reinterpret_cast<CSuper*>(cur->field_20);
}
else
{
cur->mFlags &= 0xFFFE;
break;
}
}
}
}
// @NotOk
// global
void Backgrnd_Off(unsigned __int16 a1)
{
CSuper* cur = BackgroundList;
if (cur)
{
while (cur)
{
if (cur->field_F8 != a1)
{
cur = reinterpret_cast<CSuper*>(cur->field_20);
}
else
{
cur->mFlags |= 1;
break;
}
}
}
}
void validate_CBackground(void)
{
VALIDATE_SIZE(CBackground, 0xFC);
VALIDATE(CBackground, field_F8, 0xF8);
}