1#include <game/mapitems.h>
2
3ColorRGBA CEnvPoint::ColorValue() const
4{
5 return ColorRGBA(fx2f(v: m_aValues[0]), fx2f(v: m_aValues[1]), fx2f(v: m_aValues[2]), fx2f(v: m_aValues[3]));
6}
7
8void CEnvPoint::SetColorValue(const ColorRGBA &Color)
9{
10 m_aValues[0] = f2fx(v: Color.r);
11 m_aValues[1] = f2fx(v: Color.g);
12 m_aValues[2] = f2fx(v: Color.b);
13 m_aValues[3] = f2fx(v: Color.a);
14}
15
16bool IsValidGameTile(int Index)
17{
18 return (
19 Index == TILE_AIR ||
20 (Index >= TILE_SOLID && Index <= TILE_THROUGH) ||
21 Index == TILE_FREEZE ||
22 (Index >= TILE_UNFREEZE && Index <= TILE_DUNFREEZE) ||
23 (Index >= TILE_LFREEZE && Index <= TILE_LUNFREEZE) ||
24 (Index >= TILE_WALLJUMP && Index <= TILE_SOLO_DISABLE) ||
25 (Index >= TILE_REFILL_JUMPS && Index <= TILE_STOPA) ||
26 (Index >= TILE_CP && Index <= TILE_THROUGH_DIR) ||
27 (Index >= TILE_OLDLASER && Index <= TILE_UNLOCK_TEAM) ||
28 (Index >= TILE_NPC_DISABLE && Index <= TILE_NPH_DISABLE) ||
29 (Index >= TILE_TELE_GUN_ENABLE && Index <= TILE_TELE_GUN_DISABLE) ||
30 (Index >= TILE_TELE_GRENADE_ENABLE && Index <= TILE_TELE_GRENADE_DISABLE) ||
31 (Index >= TILE_TELE_LASER_ENABLE && Index <= TILE_TELE_LASER_DISABLE) ||
32 (Index >= TILE_NPC_ENABLE && Index <= TILE_NPH_ENABLE) ||
33 (Index >= TILE_ENTITIES_OFF_1 && Index <= TILE_ENTITIES_OFF_2) ||
34 IsValidEntity(Index));
35}
36
37bool IsValidFrontTile(int Index)
38{
39 return (
40 Index == TILE_AIR ||
41 Index == TILE_DEATH ||
42 (Index >= TILE_NOLASER && Index <= TILE_THROUGH) ||
43 Index == TILE_FREEZE ||
44 (Index >= TILE_UNFREEZE && Index <= TILE_DUNFREEZE) ||
45 (Index >= TILE_LFREEZE && Index <= TILE_LUNFREEZE) ||
46 (Index >= TILE_WALLJUMP && Index <= TILE_SOLO_DISABLE) ||
47 (Index >= TILE_REFILL_JUMPS && Index <= TILE_STOPA) ||
48 (Index >= TILE_CP && Index <= TILE_THROUGH_DIR) ||
49 (Index >= TILE_OLDLASER && Index <= TILE_UNLOCK_TEAM) ||
50 (Index >= TILE_NPC_DISABLE && Index <= TILE_NPH_DISABLE) ||
51 (Index >= TILE_TELE_GUN_ENABLE && Index <= TILE_ALLOW_BLUE_TELE_GUN) ||
52 (Index >= TILE_TELE_GRENADE_ENABLE && Index <= TILE_TELE_GRENADE_DISABLE) ||
53 (Index >= TILE_TELE_LASER_ENABLE && Index <= TILE_TELE_LASER_DISABLE) ||
54 (Index >= TILE_NPC_ENABLE && Index <= TILE_NPH_ENABLE) ||
55 (Index >= TILE_ENTITIES_OFF_1 && Index <= TILE_ENTITIES_OFF_2) ||
56 IsValidEntity(Index));
57}
58
59bool IsValidTeleTile(int Index)
60{
61 return (
62 Index == TILE_TELEINEVIL ||
63 Index == TILE_TELEINWEAPON ||
64 Index == TILE_TELEINHOOK ||
65 Index == TILE_TELEIN ||
66 Index == TILE_TELEOUT ||
67 Index == TILE_TELECHECK ||
68 Index == TILE_TELECHECKOUT ||
69 Index == TILE_TELECHECKIN ||
70 Index == TILE_TELECHECKINEVIL);
71}
72
73bool IsTeleTileCheckpoint(int Index)
74{
75 return Index == TILE_TELECHECK || Index == TILE_TELECHECKOUT;
76}
77
78bool IsTeleTileNumberUsed(int Index, bool Checkpoint)
79{
80 if(Checkpoint)
81 return IsTeleTileCheckpoint(Index);
82 return !IsTeleTileCheckpoint(Index) && Index != TILE_TELECHECKIN &&
83 Index != TILE_TELECHECKINEVIL;
84}
85
86bool IsTeleTileNumberUsedAny(int Index)
87{
88 return Index != TILE_TELECHECKIN &&
89 Index != TILE_TELECHECKINEVIL;
90}
91
92bool IsValidSpeedupTile(int Index)
93{
94 return Index == TILE_SPEED_BOOST_OLD || Index == TILE_SPEED_BOOST;
95}
96
97bool IsValidSwitchTile(int Index)
98{
99 return (
100 Index == TILE_JUMP ||
101 Index == TILE_FREEZE ||
102 Index == TILE_DFREEZE ||
103 Index == TILE_DUNFREEZE ||
104 Index == TILE_LFREEZE ||
105 Index == TILE_LUNFREEZE ||
106 Index == TILE_HIT_ENABLE ||
107 Index == TILE_HIT_DISABLE ||
108 (Index >= TILE_SWITCHTIMEDOPEN && Index <= TILE_SWITCHCLOSE) ||
109 Index == TILE_ADD_TIME ||
110 Index == TILE_SUBTRACT_TIME ||
111 Index == TILE_ALLOW_TELE_GUN ||
112 Index == TILE_ALLOW_BLUE_TELE_GUN ||
113 (IsValidEntity(Index) && Index >= ENTITY_OFFSET + ENTITY_ARMOR_1));
114}
115
116bool IsSwitchTileFlagsUsed(int Index)
117{
118 return Index != TILE_FREEZE &&
119 Index != TILE_DFREEZE &&
120 Index != TILE_DUNFREEZE;
121}
122
123bool IsSwitchTileNumberUsed(int Index)
124{
125 return Index != TILE_JUMP &&
126 Index != TILE_HIT_ENABLE &&
127 Index != TILE_HIT_DISABLE &&
128 Index != TILE_ALLOW_TELE_GUN &&
129 Index != TILE_ALLOW_BLUE_TELE_GUN;
130}
131
132bool IsSwitchTileDelayUsed(int Index)
133{
134 return Index != TILE_DFREEZE &&
135 Index != TILE_DUNFREEZE;
136}
137
138bool IsValidTuneTile(int Index)
139{
140 return Index == TILE_TUNE;
141}
142
143bool IsValidEntity(int Index)
144{
145 Index -= ENTITY_OFFSET;
146 return (
147 (Index >= ENTITY_SPAWN && Index <= ENTITY_LASER_O_FAST) ||
148 (Index >= ENTITY_PLASMAE && Index <= ENTITY_ARMOR_LASER) ||
149 (Index >= ENTITY_DRAGGER_WEAK && Index <= ENTITY_DRAGGER_STRONG_NW) ||
150 Index == ENTITY_DOOR);
151}
152
153bool IsRotatableTile(int Index)
154{
155 return (
156 Index == TILE_STOP ||
157 Index == TILE_STOPS ||
158 Index == TILE_CP ||
159 Index == TILE_CP_F ||
160 Index == TILE_THROUGH_DIR ||
161 Index == TILE_ENTITIES_OFF_1 ||
162 Index == TILE_ENTITIES_OFF_2 ||
163 Index - ENTITY_OFFSET == ENTITY_CRAZY_SHOTGUN_EX ||
164 Index - ENTITY_OFFSET == ENTITY_CRAZY_SHOTGUN ||
165 (Index - ENTITY_OFFSET >= ENTITY_ARMOR_1 && Index - ENTITY_OFFSET <= ENTITY_WEAPON_LASER) ||
166 (Index - ENTITY_OFFSET >= ENTITY_ARMOR_SHOTGUN && Index - ENTITY_OFFSET <= ENTITY_ARMOR_LASER));
167}
168
169bool IsCreditsTile(int TileIndex)
170{
171 return (
172 (TILE_CREDITS_1 == TileIndex) ||
173 (TILE_CREDITS_2 == TileIndex) ||
174 (TILE_CREDITS_3 == TileIndex) ||
175 (TILE_CREDITS_4 == TileIndex) ||
176 (TILE_CREDITS_5 == TileIndex) ||
177 (TILE_CREDITS_6 == TileIndex) ||
178 (TILE_CREDITS_7 == TileIndex) ||
179 (TILE_CREDITS_8 == TileIndex));
180}
181
182int PackColor(const CColor &Color)
183{
184 int PackedColor = 0;
185 PackedColor |= (Color.r & 0xFF) << 24;
186 PackedColor |= (Color.g & 0xFF) << 16;
187 PackedColor |= (Color.b & 0xFF) << 8;
188 PackedColor |= Color.a & 0xFF;
189 return PackedColor;
190}
191
192CColor UnpackColor(int PackedColor)
193{
194 CColor Color;
195 Color.r = (PackedColor >> 24) & 0xFF;
196 Color.g = (PackedColor >> 16) & 0xFF;
197 Color.b = (PackedColor >> 8) & 0xFF;
198 Color.a = PackedColor & 0xFF;
199 return Color;
200}
201