10 #include "../stdafx.h"
11 #include "../map_func.h"
12 #include "../core/bitmath_func.hpp"
18 #include "../safeguards.h"
20 static uint32 _map_dim_x;
21 static uint32 _map_dim_y;
29 static void Save_MAPS()
36 static void Load_MAPS()
42 static void Check_MAPS()
49 static const uint MAP_SL_BUF_SIZE = 4096;
51 static void Load_MAPT()
53 std::array<byte, MAP_SL_BUF_SIZE> buf;
57 SlArray(buf.data(), MAP_SL_BUF_SIZE, SLE_UINT8);
58 for (uint j = 0; j != MAP_SL_BUF_SIZE; j++)
_m[i++].type = buf[j];
62 static void Save_MAPT()
64 std::array<byte, MAP_SL_BUF_SIZE> buf;
69 for (uint j = 0; j != MAP_SL_BUF_SIZE; j++) buf[j] =
_m[i++].type;
70 SlArray(buf.data(), MAP_SL_BUF_SIZE, SLE_UINT8);
74 static void Load_MAPH()
76 std::array<byte, MAP_SL_BUF_SIZE> buf;
80 SlArray(buf.data(), MAP_SL_BUF_SIZE, SLE_UINT8);
81 for (uint j = 0; j != MAP_SL_BUF_SIZE; j++)
_m[i++].height = buf[j];
85 static void Save_MAPH()
87 std::array<byte, MAP_SL_BUF_SIZE> buf;
92 for (uint j = 0; j != MAP_SL_BUF_SIZE; j++) buf[j] =
_m[i++].height;
93 SlArray(buf.data(), MAP_SL_BUF_SIZE, SLE_UINT8);
97 static void Load_MAP1()
99 std::array<byte, MAP_SL_BUF_SIZE> buf;
103 SlArray(buf.data(), MAP_SL_BUF_SIZE, SLE_UINT8);
104 for (uint j = 0; j != MAP_SL_BUF_SIZE; j++)
_m[i++].m1 = buf[j];
108 static void Save_MAP1()
110 std::array<byte, MAP_SL_BUF_SIZE> buf;
115 for (uint j = 0; j != MAP_SL_BUF_SIZE; j++) buf[j] =
_m[i++].m1;
116 SlArray(buf.data(), MAP_SL_BUF_SIZE, SLE_UINT8);
120 static void Load_MAP2()
122 std::array<uint16, MAP_SL_BUF_SIZE> buf;
126 SlArray(buf.data(), MAP_SL_BUF_SIZE,
130 for (uint j = 0; j != MAP_SL_BUF_SIZE; j++)
_m[i++].m2 = buf[j];
134 static void Save_MAP2()
136 std::array<uint16, MAP_SL_BUF_SIZE> buf;
141 for (uint j = 0; j != MAP_SL_BUF_SIZE; j++) buf[j] =
_m[i++].m2;
142 SlArray(buf.data(), MAP_SL_BUF_SIZE, SLE_UINT16);
146 static void Load_MAP3()
148 std::array<byte, MAP_SL_BUF_SIZE> buf;
152 SlArray(buf.data(), MAP_SL_BUF_SIZE, SLE_UINT8);
153 for (uint j = 0; j != MAP_SL_BUF_SIZE; j++)
_m[i++].m3 = buf[j];
157 static void Save_MAP3()
159 std::array<byte, MAP_SL_BUF_SIZE> buf;
164 for (uint j = 0; j != MAP_SL_BUF_SIZE; j++) buf[j] =
_m[i++].m3;
165 SlArray(buf.data(), MAP_SL_BUF_SIZE, SLE_UINT8);
169 static void Load_MAP4()
171 std::array<byte, MAP_SL_BUF_SIZE> buf;
175 SlArray(buf.data(), MAP_SL_BUF_SIZE, SLE_UINT8);
176 for (uint j = 0; j != MAP_SL_BUF_SIZE; j++)
_m[i++].m4 = buf[j];
180 static void Save_MAP4()
182 std::array<byte, MAP_SL_BUF_SIZE> buf;
187 for (uint j = 0; j != MAP_SL_BUF_SIZE; j++) buf[j] =
_m[i++].m4;
188 SlArray(buf.data(), MAP_SL_BUF_SIZE, SLE_UINT8);
192 static void Load_MAP5()
194 std::array<byte, MAP_SL_BUF_SIZE> buf;
198 SlArray(buf.data(), MAP_SL_BUF_SIZE, SLE_UINT8);
199 for (uint j = 0; j != MAP_SL_BUF_SIZE; j++)
_m[i++].m5 = buf[j];
203 static void Save_MAP5()
205 std::array<byte, MAP_SL_BUF_SIZE> buf;
210 for (uint j = 0; j != MAP_SL_BUF_SIZE; j++) buf[j] =
_m[i++].m5;
211 SlArray(buf.data(), MAP_SL_BUF_SIZE, SLE_UINT8);
215 static void Load_MAP6()
217 std::array<byte, MAP_SL_BUF_SIZE> buf;
223 SlArray(buf.data(), 1024, SLE_UINT8);
224 for (uint j = 0; j != 1024; j++) {
225 _me[i++].
m6 =
GB(buf[j], 0, 2);
226 _me[i++].
m6 =
GB(buf[j], 2, 2);
227 _me[i++].
m6 =
GB(buf[j], 4, 2);
228 _me[i++].
m6 =
GB(buf[j], 6, 2);
233 SlArray(buf.data(), MAP_SL_BUF_SIZE, SLE_UINT8);
234 for (uint j = 0; j != MAP_SL_BUF_SIZE; j++)
_me[i++].m6 = buf[j];
239 static void Save_MAP6()
241 std::array<byte, MAP_SL_BUF_SIZE> buf;
246 for (uint j = 0; j != MAP_SL_BUF_SIZE; j++) buf[j] =
_me[i++].m6;
247 SlArray(buf.data(), MAP_SL_BUF_SIZE, SLE_UINT8);
251 static void Load_MAP7()
253 std::array<byte, MAP_SL_BUF_SIZE> buf;
257 SlArray(buf.data(), MAP_SL_BUF_SIZE, SLE_UINT8);
258 for (uint j = 0; j != MAP_SL_BUF_SIZE; j++)
_me[i++].m7 = buf[j];
262 static void Save_MAP7()
264 std::array<byte, MAP_SL_BUF_SIZE> buf;
269 for (uint j = 0; j != MAP_SL_BUF_SIZE; j++) buf[j] =
_me[i++].m7;
270 SlArray(buf.data(), MAP_SL_BUF_SIZE, SLE_UINT8);
274 static void Load_MAP8()
276 std::array<uint16, MAP_SL_BUF_SIZE> buf;
280 SlArray(buf.data(), MAP_SL_BUF_SIZE, SLE_UINT16);
281 for (uint j = 0; j != MAP_SL_BUF_SIZE; j++)
_me[i++].m8 = buf[j];
285 static void Save_MAP8()
287 std::array<uint16, MAP_SL_BUF_SIZE> buf;
292 for (uint j = 0; j != MAP_SL_BUF_SIZE; j++) buf[j] =
_me[i++].m8;
293 SlArray(buf.data(), MAP_SL_BUF_SIZE, SLE_UINT16);
299 {
'MAPS', Save_MAPS, Load_MAPS,
nullptr, Check_MAPS, CH_RIFF },
300 {
'MAPT', Save_MAPT, Load_MAPT,
nullptr,
nullptr, CH_RIFF },
301 {
'MAPH', Save_MAPH, Load_MAPH,
nullptr,
nullptr, CH_RIFF },
302 {
'MAPO', Save_MAP1, Load_MAP1,
nullptr,
nullptr, CH_RIFF },
303 {
'MAP2', Save_MAP2, Load_MAP2,
nullptr,
nullptr, CH_RIFF },
304 {
'M3LO', Save_MAP3, Load_MAP3,
nullptr,
nullptr, CH_RIFF },
305 {
'M3HI', Save_MAP4, Load_MAP4,
nullptr,
nullptr, CH_RIFF },
306 {
'MAP5', Save_MAP5, Load_MAP5,
nullptr,
nullptr, CH_RIFF },
307 {
'MAPE', Save_MAP6, Load_MAP6,
nullptr,
nullptr, CH_RIFF },
308 {
'MAP7', Save_MAP7, Load_MAP7,
nullptr,
nullptr, CH_RIFF },
309 {
'MAP8', Save_MAP8, Load_MAP8,
nullptr,
nullptr, CH_RIFF |
CH_LAST },