Terraria v1.4.4.9
Terraria source code documentation
Loading...
Searching...
No Matches
MapHelper.cs
Go to the documentation of this file.
1using System;
3using System.IO;
5using Ionic.Zlib;
7using Terraria.ID;
8using Terraria.IO;
11
12namespace Terraria.Map;
13
14public static class MapHelper
15{
16 private struct OldMapHelper
17 {
18 public byte misc;
19
20 public byte misc2;
21
22 public bool active()
23 {
24 if ((misc & 1) == 1)
25 {
26 return true;
27 }
28 return false;
29 }
30
31 public bool water()
32 {
33 if ((misc & 2) == 2)
34 {
35 return true;
36 }
37 return false;
38 }
39
40 public bool lava()
41 {
42 if ((misc & 4) == 4)
43 {
44 return true;
45 }
46 return false;
47 }
48
49 public bool honey()
50 {
51 if ((misc2 & 0x40) == 64)
52 {
53 return true;
54 }
55 return false;
56 }
57
58 public bool changed()
59 {
60 if ((misc & 8) == 8)
61 {
62 return true;
63 }
64 return false;
65 }
66
67 public bool wall()
68 {
69 if ((misc & 0x10) == 16)
70 {
71 return true;
72 }
73 return false;
74 }
75
76 public byte option()
77 {
78 byte b = 0;
79 if ((misc & 0x20) == 32)
80 {
81 b++;
82 }
83 if ((misc & 0x40) == 64)
84 {
85 b += 2;
86 }
87 if ((misc & 0x80) == 128)
88 {
89 b += 4;
90 }
91 if ((misc2 & 1) == 1)
92 {
93 b += 8;
94 }
95 return b;
96 }
97
98 public byte color()
99 {
100 return (byte)((misc2 & 0x1E) >> 1);
101 }
102 }
103
104 public const int drawLoopMilliseconds = 5;
105
106 private const int HeaderEmpty = 0;
107
108 private const int HeaderTile = 1;
109
110 private const int HeaderWall = 2;
111
112 private const int HeaderWater = 3;
113
114 private const int HeaderLava = 4;
115
116 private const int HeaderHoney = 5;
117
118 private const int HeaderHeavenAndHell = 6;
119
120 private const int HeaderBackground = 7;
121
122 private const int Header2_ReadHeader3Bit = 1;
123
124 private const int Header2Color1 = 2;
125
126 private const int Header2Color2 = 4;
127
128 private const int Header2Color3 = 8;
129
130 private const int Header2Color4 = 16;
131
132 private const int Header2Color5 = 32;
133
134 private const int Header2ShimmerBit = 64;
135
136 private const int Header2_UnusedBit8 = 128;
137
138 private const int Header3_ReservedForHeader4Bit = 1;
139
140 private const int Header3_UnusudBit2 = 2;
141
142 private const int Header3_UnusudBit3 = 4;
143
144 private const int Header3_UnusudBit4 = 8;
145
146 private const int Header3_UnusudBit5 = 16;
147
148 private const int Header3_UnusudBit6 = 32;
149
150 private const int Header3_UnusudBit7 = 64;
151
152 private const int Header3_UnusudBit8 = 128;
153
154 private const int maxTileOptions = 12;
155
156 private const int maxWallOptions = 2;
157
158 private const int maxLiquidTypes = 4;
159
160 private const int maxSkyGradients = 256;
161
162 private const int maxDirtGradients = 256;
163
164 private const int maxRockGradients = 256;
165
166 public static int maxUpdateTile = 1000;
167
168 public static int numUpdateTile = 0;
169
170 public static short[] updateTileX = new short[maxUpdateTile];
171
172 public static short[] updateTileY = new short[maxUpdateTile];
173
174 private static object IOLock = new object();
175
176 public static int[] tileOptionCounts;
177
178 public static int[] wallOptionCounts;
179
180 public static ushort[] tileLookup;
181
182 public static ushort[] wallLookup;
183
184 private static ushort tilePosition;
185
186 private static ushort wallPosition;
187
188 private static ushort liquidPosition;
189
190 private static ushort skyPosition;
191
192 private static ushort dirtPosition;
193
194 private static ushort rockPosition;
195
196 private static ushort hellPosition;
197
198 private static Color[] colorLookup;
199
200 private static ushort[] snowTypes;
201
202 private static ushort wallRangeStart;
203
204 private static ushort wallRangeEnd;
205
206 public static bool noStatusText = false;
207
208 public static void Initialize()
209 {
210 Color[][] array = new Color[TileID.Count][];
211 for (int i = 0; i < TileID.Count; i++)
212 {
213 array[i] = new Color[12];
214 }
215 array[656][0] = new Color(21, 124, 212);
216 array[624][0] = new Color(210, 91, 77);
217 array[621][0] = new Color(250, 250, 250);
218 array[622][0] = new Color(235, 235, 249);
219 array[518][0] = new Color(26, 196, 84);
220 array[518][1] = new Color(48, 208, 234);
221 array[518][2] = new Color(135, 196, 26);
222 array[519][0] = new Color(28, 216, 109);
223 array[519][1] = new Color(107, 182, 0);
224 array[519][2] = new Color(75, 184, 230);
225 array[519][3] = new Color(208, 80, 80);
226 array[519][4] = new Color(141, 137, 223);
227 array[519][5] = new Color(182, 175, 130);
228 array[549][0] = new Color(54, 83, 20);
229 array[528][0] = new Color(182, 175, 130);
230 array[529][0] = new Color(99, 150, 8);
231 array[529][1] = new Color(139, 154, 64);
232 array[529][2] = new Color(34, 129, 168);
233 array[529][3] = new Color(180, 82, 82);
234 array[529][4] = new Color(113, 108, 205);
235 Color color = new Color(151, 107, 75);
236 array[0][0] = color;
237 array[668][0] = color;
238 array[5][0] = color;
239 array[5][1] = new Color(182, 175, 130);
240 Color color2 = new Color(127, 127, 127);
241 array[583][0] = color2;
242 array[584][0] = color2;
243 array[585][0] = color2;
244 array[586][0] = color2;
245 array[587][0] = color2;
246 array[588][0] = color2;
247 array[589][0] = color2;
248 array[590][0] = color2;
249 array[595][0] = color;
250 array[596][0] = color;
251 array[615][0] = color;
252 array[616][0] = color;
253 array[634][0] = new Color(145, 120, 120);
254 array[633][0] = new Color(210, 140, 100);
255 array[637][0] = new Color(200, 120, 75);
256 array[638][0] = new Color(200, 120, 75);
257 array[30][0] = color;
258 array[191][0] = color;
259 array[272][0] = new Color(121, 119, 101);
260 color = new Color(128, 128, 128);
261 array[1][0] = color;
262 array[38][0] = color;
263 array[48][0] = color;
264 array[130][0] = color;
265 array[138][0] = color;
266 array[664][0] = color;
267 array[273][0] = color;
268 array[283][0] = color;
269 array[618][0] = color;
270 array[654][0] = new Color(200, 44, 28);
271 array[2][0] = new Color(28, 216, 94);
272 array[477][0] = new Color(28, 216, 94);
273 array[492][0] = new Color(78, 193, 227);
274 color = new Color(26, 196, 84);
275 array[3][0] = color;
276 array[192][0] = color;
277 array[73][0] = new Color(27, 197, 109);
278 array[52][0] = new Color(23, 177, 76);
279 array[353][0] = new Color(28, 216, 94);
280 array[20][0] = new Color(163, 116, 81);
281 array[6][0] = new Color(140, 101, 80);
282 color = new Color(150, 67, 22);
283 array[7][0] = color;
284 array[47][0] = color;
285 array[284][0] = color;
286 array[682][0] = color;
287 array[560][0] = color;
288 color = new Color(185, 164, 23);
289 array[8][0] = color;
290 array[45][0] = color;
291 array[680][0] = color;
292 array[560][2] = color;
293 color = new Color(185, 194, 195);
294 array[9][0] = color;
295 array[46][0] = color;
296 array[681][0] = color;
297 array[560][1] = color;
298 color = new Color(98, 95, 167);
299 array[22][0] = color;
300 array[140][0] = color;
301 array[23][0] = new Color(141, 137, 223);
302 array[24][0] = new Color(122, 116, 218);
303 array[636][0] = new Color(122, 116, 218);
304 array[25][0] = new Color(109, 90, 128);
305 array[37][0] = new Color(104, 86, 84);
306 array[39][0] = new Color(181, 62, 59);
307 array[40][0] = new Color(146, 81, 68);
308 array[41][0] = new Color(66, 84, 109);
309 array[677][0] = new Color(66, 84, 109);
310 array[481][0] = new Color(66, 84, 109);
311 array[43][0] = new Color(84, 100, 63);
312 array[678][0] = new Color(84, 100, 63);
313 array[482][0] = new Color(84, 100, 63);
314 array[44][0] = new Color(107, 68, 99);
315 array[679][0] = new Color(107, 68, 99);
316 array[483][0] = new Color(107, 68, 99);
317 array[53][0] = new Color(186, 168, 84);
318 color = new Color(190, 171, 94);
319 array[151][0] = color;
320 array[154][0] = color;
321 array[274][0] = color;
322 array[328][0] = new Color(200, 246, 254);
323 array[329][0] = new Color(15, 15, 15);
324 array[54][0] = new Color(200, 246, 254);
325 array[56][0] = new Color(43, 40, 84);
326 array[75][0] = new Color(26, 26, 26);
327 array[683][0] = new Color(100, 90, 190);
328 array[57][0] = new Color(68, 68, 76);
329 color = new Color(142, 66, 66);
330 array[58][0] = color;
331 array[76][0] = color;
332 array[684][0] = color;
333 color = new Color(92, 68, 73);
334 array[59][0] = color;
335 array[120][0] = color;
336 array[60][0] = new Color(143, 215, 29);
337 array[61][0] = new Color(135, 196, 26);
338 array[74][0] = new Color(96, 197, 27);
339 array[62][0] = new Color(121, 176, 24);
340 array[233][0] = new Color(107, 182, 29);
341 array[652][0] = array[233][0];
342 array[651][0] = array[233][0];
343 array[63][0] = new Color(110, 140, 182);
344 array[64][0] = new Color(196, 96, 114);
345 array[65][0] = new Color(56, 150, 97);
346 array[66][0] = new Color(160, 118, 58);
347 array[67][0] = new Color(140, 58, 166);
348 array[68][0] = new Color(125, 191, 197);
349 array[566][0] = new Color(233, 180, 90);
350 array[70][0] = new Color(93, 127, 255);
351 color = new Color(182, 175, 130);
352 array[71][0] = color;
353 array[72][0] = color;
354 array[190][0] = color;
355 array[578][0] = new Color(172, 155, 110);
356 color = new Color(73, 120, 17);
357 array[80][0] = color;
358 array[484][0] = color;
359 array[188][0] = color;
360 array[80][1] = new Color(87, 84, 151);
361 array[80][2] = new Color(34, 129, 168);
362 array[80][3] = new Color(130, 56, 55);
363 color = new Color(11, 80, 143);
364 array[107][0] = color;
365 array[121][0] = color;
366 array[685][0] = color;
367 color = new Color(91, 169, 169);
368 array[108][0] = color;
369 array[122][0] = color;
370 array[686][0] = color;
371 color = new Color(128, 26, 52);
372 array[111][0] = color;
373 array[150][0] = color;
374 array[109][0] = new Color(78, 193, 227);
375 array[110][0] = new Color(48, 186, 135);
376 array[113][0] = new Color(48, 208, 234);
377 array[115][0] = new Color(33, 171, 207);
378 array[112][0] = new Color(103, 98, 122);
379 color = new Color(238, 225, 218);
380 array[116][0] = color;
381 array[118][0] = color;
382 array[117][0] = new Color(181, 172, 190);
383 array[119][0] = new Color(107, 92, 108);
384 array[123][0] = new Color(106, 107, 118);
385 array[124][0] = new Color(73, 51, 36);
386 array[131][0] = new Color(52, 52, 52);
387 array[145][0] = new Color(192, 30, 30);
388 array[146][0] = new Color(43, 192, 30);
389 color = new Color(211, 236, 241);
390 array[147][0] = color;
391 array[148][0] = color;
392 array[152][0] = new Color(128, 133, 184);
393 array[153][0] = new Color(239, 141, 126);
394 array[155][0] = new Color(131, 162, 161);
395 array[156][0] = new Color(170, 171, 157);
396 array[157][0] = new Color(104, 100, 126);
397 color = new Color(145, 81, 85);
398 array[158][0] = color;
399 array[232][0] = color;
400 array[575][0] = new Color(125, 61, 65);
401 array[159][0] = new Color(148, 133, 98);
402 array[161][0] = new Color(144, 195, 232);
403 array[162][0] = new Color(184, 219, 240);
404 array[163][0] = new Color(174, 145, 214);
405 array[164][0] = new Color(218, 182, 204);
406 array[170][0] = new Color(27, 109, 69);
407 array[171][0] = new Color(33, 135, 85);
408 color = new Color(129, 125, 93);
409 array[166][0] = color;
410 array[175][0] = color;
411 array[167][0] = new Color(62, 82, 114);
412 color = new Color(132, 157, 127);
413 array[168][0] = color;
414 array[176][0] = color;
415 color = new Color(152, 171, 198);
416 array[169][0] = color;
417 array[177][0] = color;
418 array[179][0] = new Color(49, 134, 114);
419 array[180][0] = new Color(126, 134, 49);
420 array[181][0] = new Color(134, 59, 49);
421 array[182][0] = new Color(43, 86, 140);
422 array[183][0] = new Color(121, 49, 134);
423 array[381][0] = new Color(254, 121, 2);
424 array[687][0] = new Color(254, 121, 2);
425 array[534][0] = new Color(114, 254, 2);
426 array[689][0] = new Color(114, 254, 2);
427 array[536][0] = new Color(0, 197, 208);
428 array[690][0] = new Color(0, 197, 208);
429 array[539][0] = new Color(208, 0, 126);
430 array[688][0] = new Color(208, 0, 126);
431 array[625][0] = new Color(220, 12, 237);
432 array[691][0] = new Color(220, 12, 237);
433 array[627][0] = new Color(255, 76, 76);
434 array[627][1] = new Color(255, 195, 76);
435 array[627][2] = new Color(195, 255, 76);
436 array[627][3] = new Color(76, 255, 76);
437 array[627][4] = new Color(76, 255, 195);
438 array[627][5] = new Color(76, 195, 255);
439 array[627][6] = new Color(77, 76, 255);
440 array[627][7] = new Color(196, 76, 255);
441 array[627][8] = new Color(255, 76, 195);
442 array[512][0] = new Color(49, 134, 114);
443 array[513][0] = new Color(126, 134, 49);
444 array[514][0] = new Color(134, 59, 49);
445 array[515][0] = new Color(43, 86, 140);
446 array[516][0] = new Color(121, 49, 134);
447 array[517][0] = new Color(254, 121, 2);
448 array[535][0] = new Color(114, 254, 2);
449 array[537][0] = new Color(0, 197, 208);
450 array[540][0] = new Color(208, 0, 126);
451 array[626][0] = new Color(220, 12, 237);
452 for (int j = 0; j < array[628].Length; j++)
453 {
454 array[628][j] = array[627][j];
455 }
456 for (int k = 0; k < array[692].Length; k++)
457 {
458 array[692][k] = array[627][k];
459 }
460 for (int l = 0; l < array[160].Length; l++)
461 {
462 array[160][l] = array[627][l];
463 }
464 array[184][0] = new Color(29, 106, 88);
465 array[184][1] = new Color(94, 100, 36);
466 array[184][2] = new Color(96, 44, 40);
467 array[184][3] = new Color(34, 63, 102);
468 array[184][4] = new Color(79, 35, 95);
469 array[184][5] = new Color(253, 62, 3);
470 array[184][6] = new Color(22, 123, 62);
471 array[184][7] = new Color(0, 106, 148);
472 array[184][8] = new Color(148, 0, 132);
473 array[184][9] = new Color(122, 24, 168);
474 array[184][10] = new Color(220, 20, 20);
475 array[189][0] = new Color(223, 255, 255);
476 array[193][0] = new Color(56, 121, 255);
477 array[194][0] = new Color(157, 157, 107);
478 array[195][0] = new Color(134, 22, 34);
479 array[196][0] = new Color(147, 144, 178);
480 array[197][0] = new Color(97, 200, 225);
481 array[198][0] = new Color(62, 61, 52);
482 array[199][0] = new Color(208, 80, 80);
483 array[201][0] = new Color(203, 61, 64);
484 array[205][0] = new Color(186, 50, 52);
485 array[200][0] = new Color(216, 152, 144);
486 array[202][0] = new Color(213, 178, 28);
487 array[203][0] = new Color(128, 44, 45);
488 array[204][0] = new Color(125, 55, 65);
489 array[206][0] = new Color(124, 175, 201);
490 array[208][0] = new Color(88, 105, 118);
491 array[211][0] = new Color(191, 233, 115);
492 array[213][0] = new Color(137, 120, 67);
493 array[214][0] = new Color(103, 103, 103);
494 array[221][0] = new Color(239, 90, 50);
495 array[222][0] = new Color(231, 96, 228);
496 array[223][0] = new Color(57, 85, 101);
497 array[224][0] = new Color(107, 132, 139);
498 array[225][0] = new Color(227, 125, 22);
499 array[226][0] = new Color(141, 56, 0);
500 array[229][0] = new Color(255, 156, 12);
501 array[659][0] = new Color(247, 228, 254);
502 array[230][0] = new Color(131, 79, 13);
503 array[234][0] = new Color(53, 44, 41);
504 array[235][0] = new Color(214, 184, 46);
505 array[236][0] = new Color(149, 232, 87);
506 array[237][0] = new Color(255, 241, 51);
507 array[238][0] = new Color(225, 128, 206);
508 array[655][0] = new Color(225, 128, 206);
509 array[243][0] = new Color(198, 196, 170);
510 array[248][0] = new Color(219, 71, 38);
511 array[249][0] = new Color(235, 38, 231);
512 array[250][0] = new Color(86, 85, 92);
513 array[251][0] = new Color(235, 150, 23);
514 array[252][0] = new Color(153, 131, 44);
515 array[253][0] = new Color(57, 48, 97);
516 array[254][0] = new Color(248, 158, 92);
517 array[255][0] = new Color(107, 49, 154);
518 array[256][0] = new Color(154, 148, 49);
519 array[257][0] = new Color(49, 49, 154);
520 array[258][0] = new Color(49, 154, 68);
521 array[259][0] = new Color(154, 49, 77);
522 array[260][0] = new Color(85, 89, 118);
523 array[261][0] = new Color(154, 83, 49);
524 array[262][0] = new Color(221, 79, 255);
525 array[263][0] = new Color(250, 255, 79);
526 array[264][0] = new Color(79, 102, 255);
527 array[265][0] = new Color(79, 255, 89);
528 array[266][0] = new Color(255, 79, 79);
529 array[267][0] = new Color(240, 240, 247);
530 array[268][0] = new Color(255, 145, 79);
531 array[287][0] = new Color(79, 128, 17);
532 color = new Color(122, 217, 232);
533 array[275][0] = color;
534 array[276][0] = color;
535 array[277][0] = color;
536 array[278][0] = color;
537 array[279][0] = color;
538 array[280][0] = color;
539 array[281][0] = color;
540 array[282][0] = color;
541 array[285][0] = color;
542 array[286][0] = color;
543 array[288][0] = color;
544 array[289][0] = color;
545 array[290][0] = color;
546 array[291][0] = color;
547 array[292][0] = color;
548 array[293][0] = color;
549 array[294][0] = color;
550 array[295][0] = color;
551 array[296][0] = color;
552 array[297][0] = color;
553 array[298][0] = color;
554 array[299][0] = color;
555 array[309][0] = color;
556 array[310][0] = color;
557 array[413][0] = color;
558 array[339][0] = color;
559 array[542][0] = color;
560 array[632][0] = color;
561 array[640][0] = color;
562 array[643][0] = color;
563 array[644][0] = color;
564 array[645][0] = color;
565 array[358][0] = color;
566 array[359][0] = color;
567 array[360][0] = color;
568 array[361][0] = color;
569 array[362][0] = color;
570 array[363][0] = color;
571 array[364][0] = color;
572 array[391][0] = color;
573 array[392][0] = color;
574 array[393][0] = color;
575 array[394][0] = color;
576 array[414][0] = color;
577 array[505][0] = color;
578 array[543][0] = color;
579 array[598][0] = color;
580 array[521][0] = color;
581 array[522][0] = color;
582 array[523][0] = color;
583 array[524][0] = color;
584 array[525][0] = color;
585 array[526][0] = color;
586 array[527][0] = color;
587 array[532][0] = color;
588 array[533][0] = color;
589 array[538][0] = color;
590 array[544][0] = color;
591 array[629][0] = color;
592 array[550][0] = color;
593 array[551][0] = color;
594 array[553][0] = color;
595 array[554][0] = color;
596 array[555][0] = color;
597 array[556][0] = color;
598 array[558][0] = color;
599 array[559][0] = color;
600 array[580][0] = color;
601 array[582][0] = color;
602 array[599][0] = color;
603 array[600][0] = color;
604 array[601][0] = color;
605 array[602][0] = color;
606 array[603][0] = color;
607 array[604][0] = color;
608 array[605][0] = color;
609 array[606][0] = color;
610 array[607][0] = color;
611 array[608][0] = color;
612 array[609][0] = color;
613 array[610][0] = color;
614 array[611][0] = color;
615 array[612][0] = color;
616 array[619][0] = color;
617 array[620][0] = color;
618 array[630][0] = new Color(117, 145, 73);
619 array[631][0] = new Color(122, 234, 225);
620 array[552][0] = array[53][0];
621 array[564][0] = new Color(87, 127, 220);
622 array[408][0] = new Color(85, 83, 82);
623 array[409][0] = new Color(85, 83, 82);
624 array[669][0] = new Color(83, 46, 57);
625 array[670][0] = new Color(91, 87, 167);
626 array[671][0] = new Color(23, 33, 81);
627 array[672][0] = new Color(53, 133, 103);
628 array[673][0] = new Color(11, 67, 80);
629 array[674][0] = new Color(40, 49, 60);
630 array[675][0] = new Color(21, 13, 77);
631 array[676][0] = new Color(195, 201, 215);
632 array[415][0] = new Color(249, 75, 7);
633 array[416][0] = new Color(0, 160, 170);
634 array[417][0] = new Color(160, 87, 234);
635 array[418][0] = new Color(22, 173, 254);
636 array[489][0] = new Color(255, 29, 136);
637 array[490][0] = new Color(211, 211, 211);
638 array[311][0] = new Color(117, 61, 25);
639 array[312][0] = new Color(204, 93, 73);
640 array[313][0] = new Color(87, 150, 154);
641 array[4][0] = new Color(253, 221, 3);
642 array[4][1] = new Color(253, 221, 3);
643 color = new Color(253, 221, 3);
644 array[93][0] = color;
645 array[33][0] = color;
646 array[174][0] = color;
647 array[100][0] = color;
648 array[98][0] = color;
649 array[173][0] = color;
650 color = new Color(119, 105, 79);
651 array[11][0] = color;
652 array[10][0] = color;
653 array[593][0] = color;
654 array[594][0] = color;
655 color = new Color(191, 142, 111);
656 array[14][0] = color;
657 array[469][0] = color;
658 array[486][0] = color;
659 array[488][0] = new Color(127, 92, 69);
660 array[487][0] = color;
661 array[487][1] = color;
662 array[15][0] = color;
663 array[15][1] = color;
664 array[497][0] = color;
665 array[18][0] = color;
666 array[19][0] = color;
667 array[19][1] = Color.Black;
668 array[55][0] = color;
669 array[79][0] = color;
670 array[86][0] = color;
671 array[87][0] = color;
672 array[88][0] = color;
673 array[89][0] = color;
674 array[89][1] = color;
675 array[89][2] = new Color(105, 107, 125);
676 array[94][0] = color;
677 array[101][0] = color;
678 array[104][0] = color;
679 array[106][0] = color;
680 array[114][0] = color;
681 array[128][0] = color;
682 array[139][0] = color;
683 array[172][0] = color;
684 array[216][0] = color;
685 array[269][0] = color;
686 array[334][0] = color;
687 array[471][0] = color;
688 array[470][0] = color;
689 array[475][0] = color;
690 array[377][0] = color;
691 array[380][0] = color;
692 array[395][0] = color;
693 array[573][0] = color;
694 array[12][0] = new Color(174, 24, 69);
695 array[665][0] = new Color(174, 24, 69);
696 array[639][0] = new Color(110, 105, 255);
697 array[13][0] = new Color(133, 213, 247);
698 color = new Color(144, 148, 144);
699 array[17][0] = color;
700 array[90][0] = color;
701 array[96][0] = color;
702 array[97][0] = color;
703 array[99][0] = color;
704 array[132][0] = color;
705 array[142][0] = color;
706 array[143][0] = color;
707 array[144][0] = color;
708 array[207][0] = color;
709 array[209][0] = color;
710 array[212][0] = color;
711 array[217][0] = color;
712 array[218][0] = color;
713 array[219][0] = color;
714 array[220][0] = color;
715 array[228][0] = color;
716 array[300][0] = color;
717 array[301][0] = color;
718 array[302][0] = color;
719 array[303][0] = color;
720 array[304][0] = color;
721 array[305][0] = color;
722 array[306][0] = color;
723 array[307][0] = color;
724 array[308][0] = color;
725 array[567][0] = color;
726 array[349][0] = new Color(144, 148, 144);
727 array[531][0] = new Color(144, 148, 144);
728 array[105][0] = new Color(144, 148, 144);
729 array[105][1] = new Color(177, 92, 31);
730 array[105][2] = new Color(201, 188, 170);
731 array[137][0] = new Color(144, 148, 144);
732 array[137][1] = new Color(141, 56, 0);
733 array[137][2] = new Color(144, 148, 144);
734 array[16][0] = new Color(140, 130, 116);
735 array[26][0] = new Color(119, 101, 125);
736 array[26][1] = new Color(214, 127, 133);
737 array[36][0] = new Color(230, 89, 92);
738 array[28][0] = new Color(151, 79, 80);
739 array[28][1] = new Color(90, 139, 140);
740 array[28][2] = new Color(192, 136, 70);
741 array[28][3] = new Color(203, 185, 151);
742 array[28][4] = new Color(73, 56, 41);
743 array[28][5] = new Color(148, 159, 67);
744 array[28][6] = new Color(138, 172, 67);
745 array[28][7] = new Color(226, 122, 47);
746 array[28][8] = new Color(198, 87, 93);
747 for (int m = 0; m < array[653].Length; m++)
748 {
749 array[653][m] = array[28][m];
750 }
751 array[29][0] = new Color(175, 105, 128);
752 array[51][0] = new Color(192, 202, 203);
753 array[31][0] = new Color(141, 120, 168);
754 array[31][1] = new Color(212, 105, 105);
755 array[32][0] = new Color(151, 135, 183);
756 array[42][0] = new Color(251, 235, 127);
757 array[50][0] = new Color(170, 48, 114);
758 array[85][0] = new Color(192, 192, 192);
759 array[69][0] = new Color(190, 150, 92);
760 array[77][0] = new Color(238, 85, 70);
761 array[81][0] = new Color(245, 133, 191);
762 array[78][0] = new Color(121, 110, 97);
763 array[141][0] = new Color(192, 59, 59);
764 array[129][0] = new Color(255, 117, 224);
765 array[129][1] = new Color(255, 117, 224);
766 array[126][0] = new Color(159, 209, 229);
767 array[125][0] = new Color(141, 175, 255);
768 array[103][0] = new Color(141, 98, 77);
769 array[95][0] = new Color(255, 162, 31);
770 array[92][0] = new Color(213, 229, 237);
771 array[91][0] = new Color(13, 88, 130);
772 array[215][0] = new Color(254, 121, 2);
773 array[592][0] = new Color(254, 121, 2);
774 array[316][0] = new Color(157, 176, 226);
775 array[317][0] = new Color(118, 227, 129);
776 array[318][0] = new Color(227, 118, 215);
777 array[319][0] = new Color(96, 68, 48);
778 array[320][0] = new Color(203, 185, 151);
779 array[321][0] = new Color(96, 77, 64);
780 array[574][0] = new Color(76, 57, 44);
781 array[322][0] = new Color(198, 170, 104);
782 array[635][0] = new Color(145, 120, 120);
783 array[149][0] = new Color(220, 50, 50);
784 array[149][1] = new Color(0, 220, 50);
785 array[149][2] = new Color(50, 50, 220);
786 array[133][0] = new Color(231, 53, 56);
787 array[133][1] = new Color(192, 189, 221);
788 array[134][0] = new Color(166, 187, 153);
789 array[134][1] = new Color(241, 129, 249);
790 array[102][0] = new Color(229, 212, 73);
791 array[35][0] = new Color(226, 145, 30);
792 array[34][0] = new Color(235, 166, 135);
793 array[136][0] = new Color(213, 203, 204);
794 array[231][0] = new Color(224, 194, 101);
795 array[239][0] = new Color(224, 194, 101);
796 array[240][0] = new Color(120, 85, 60);
797 array[240][1] = new Color(99, 50, 30);
798 array[240][2] = new Color(153, 153, 117);
799 array[240][3] = new Color(112, 84, 56);
800 array[240][4] = new Color(234, 231, 226);
801 array[241][0] = new Color(77, 74, 72);
802 array[244][0] = new Color(200, 245, 253);
803 color = new Color(99, 50, 30);
804 array[242][0] = color;
805 array[245][0] = color;
806 array[246][0] = color;
807 array[242][1] = new Color(185, 142, 97);
808 array[247][0] = new Color(140, 150, 150);
809 array[271][0] = new Color(107, 250, 255);
810 array[270][0] = new Color(187, 255, 107);
811 array[581][0] = new Color(255, 150, 150);
812 array[660][0] = new Color(255, 150, 150);
813 array[572][0] = new Color(255, 186, 212);
814 array[572][1] = new Color(209, 201, 255);
815 array[572][2] = new Color(200, 254, 255);
816 array[572][3] = new Color(199, 255, 211);
817 array[572][4] = new Color(180, 209, 255);
818 array[572][5] = new Color(255, 220, 214);
819 array[314][0] = new Color(181, 164, 125);
820 array[324][0] = new Color(228, 213, 173);
821 array[351][0] = new Color(31, 31, 31);
822 array[424][0] = new Color(146, 155, 187);
823 array[429][0] = new Color(220, 220, 220);
824 array[445][0] = new Color(240, 240, 240);
825 array[21][0] = new Color(174, 129, 92);
826 array[21][1] = new Color(233, 207, 94);
827 array[21][2] = new Color(137, 128, 200);
828 array[21][3] = new Color(160, 160, 160);
829 array[21][4] = new Color(106, 210, 255);
830 array[441][0] = array[21][0];
831 array[441][1] = array[21][1];
832 array[441][2] = array[21][2];
833 array[441][3] = array[21][3];
834 array[441][4] = array[21][4];
835 array[27][0] = new Color(54, 154, 54);
836 array[27][1] = new Color(226, 196, 49);
837 color = new Color(246, 197, 26);
838 array[82][0] = color;
839 array[83][0] = color;
840 array[84][0] = color;
841 color = new Color(76, 150, 216);
842 array[82][1] = color;
843 array[83][1] = color;
844 array[84][1] = color;
845 color = new Color(185, 214, 42);
846 array[82][2] = color;
847 array[83][2] = color;
848 array[84][2] = color;
849 color = new Color(167, 203, 37);
850 array[82][3] = color;
851 array[83][3] = color;
852 array[84][3] = color;
853 array[591][6] = color;
854 color = new Color(32, 168, 117);
855 array[82][4] = color;
856 array[83][4] = color;
857 array[84][4] = color;
858 color = new Color(177, 69, 49);
859 array[82][5] = color;
860 array[83][5] = color;
861 array[84][5] = color;
862 color = new Color(40, 152, 240);
863 array[82][6] = color;
864 array[83][6] = color;
865 array[84][6] = color;
866 array[591][1] = new Color(246, 197, 26);
867 array[591][2] = new Color(76, 150, 216);
868 array[591][3] = new Color(32, 168, 117);
869 array[591][4] = new Color(40, 152, 240);
870 array[591][5] = new Color(114, 81, 56);
871 array[591][6] = new Color(141, 137, 223);
872 array[591][7] = new Color(208, 80, 80);
873 array[591][8] = new Color(177, 69, 49);
874 array[165][0] = new Color(115, 173, 229);
875 array[165][1] = new Color(100, 100, 100);
876 array[165][2] = new Color(152, 152, 152);
877 array[165][3] = new Color(227, 125, 22);
878 array[178][0] = new Color(208, 94, 201);
879 array[178][1] = new Color(233, 146, 69);
880 array[178][2] = new Color(71, 146, 251);
881 array[178][3] = new Color(60, 226, 133);
882 array[178][4] = new Color(250, 30, 71);
883 array[178][5] = new Color(166, 176, 204);
884 array[178][6] = new Color(255, 217, 120);
885 color = new Color(99, 99, 99);
886 array[185][0] = color;
887 array[186][0] = color;
888 array[187][0] = color;
889 array[565][0] = color;
890 array[579][0] = color;
891 color = new Color(114, 81, 56);
892 array[185][1] = color;
893 array[186][1] = color;
894 array[187][1] = color;
895 array[591][0] = color;
896 color = new Color(133, 133, 101);
897 array[185][2] = color;
898 array[186][2] = color;
899 array[187][2] = color;
900 color = new Color(151, 200, 211);
901 array[185][3] = color;
902 array[186][3] = color;
903 array[187][3] = color;
904 color = new Color(177, 183, 161);
905 array[185][4] = color;
906 array[186][4] = color;
907 array[187][4] = color;
908 color = new Color(134, 114, 38);
909 array[185][5] = color;
910 array[186][5] = color;
911 array[187][5] = color;
912 color = new Color(82, 62, 66);
913 array[185][6] = color;
914 array[186][6] = color;
915 array[187][6] = color;
916 color = new Color(143, 117, 121);
917 array[185][7] = color;
918 array[186][7] = color;
919 array[187][7] = color;
920 color = new Color(177, 92, 31);
921 array[185][8] = color;
922 array[186][8] = color;
923 array[187][8] = color;
924 color = new Color(85, 73, 87);
925 array[185][9] = color;
926 array[186][9] = color;
927 array[187][9] = color;
928 color = new Color(26, 196, 84);
929 array[185][10] = color;
930 array[186][10] = color;
931 array[187][10] = color;
932 Color[] array2 = array[647];
933 for (int n = 0; n < array2.Length; n++)
934 {
935 array2[n] = array[186][n];
936 }
937 array2 = array[648];
938 for (int num = 0; num < array2.Length; num++)
939 {
940 array2[num] = array[187][num];
941 }
942 array2 = array[650];
943 for (int num2 = 0; num2 < array2.Length; num2++)
944 {
945 array2[num2] = array[185][num2];
946 }
947 array2 = array[649];
948 for (int num3 = 0; num3 < array2.Length; num3++)
949 {
950 array2[num3] = array[185][num3];
951 }
952 array[227][0] = new Color(74, 197, 155);
953 array[227][1] = new Color(54, 153, 88);
954 array[227][2] = new Color(63, 126, 207);
955 array[227][3] = new Color(240, 180, 4);
956 array[227][4] = new Color(45, 68, 168);
957 array[227][5] = new Color(61, 92, 0);
958 array[227][6] = new Color(216, 112, 152);
959 array[227][7] = new Color(200, 40, 24);
960 array[227][8] = new Color(113, 45, 133);
961 array[227][9] = new Color(235, 137, 2);
962 array[227][10] = new Color(41, 152, 135);
963 array[227][11] = new Color(198, 19, 78);
964 array[373][0] = new Color(9, 61, 191);
965 array[374][0] = new Color(253, 32, 3);
966 array[375][0] = new Color(255, 156, 12);
967 array[461][0] = new Color(212, 192, 100);
968 array[461][1] = new Color(137, 132, 156);
969 array[461][2] = new Color(148, 122, 112);
970 array[461][3] = new Color(221, 201, 206);
971 array[323][0] = new Color(182, 141, 86);
972 array[325][0] = new Color(129, 125, 93);
973 array[326][0] = new Color(9, 61, 191);
974 array[327][0] = new Color(253, 32, 3);
975 array[507][0] = new Color(5, 5, 5);
976 array[508][0] = new Color(5, 5, 5);
977 array[330][0] = new Color(226, 118, 76);
978 array[331][0] = new Color(161, 172, 173);
979 array[332][0] = new Color(204, 181, 72);
980 array[333][0] = new Color(190, 190, 178);
981 array[335][0] = new Color(217, 174, 137);
982 array[336][0] = new Color(253, 62, 3);
983 array[337][0] = new Color(144, 148, 144);
984 array[338][0] = new Color(85, 255, 160);
985 array[315][0] = new Color(235, 114, 80);
986 array[641][0] = new Color(235, 125, 150);
987 array[340][0] = new Color(96, 248, 2);
988 array[341][0] = new Color(105, 74, 202);
989 array[342][0] = new Color(29, 240, 255);
990 array[343][0] = new Color(254, 202, 80);
991 array[344][0] = new Color(131, 252, 245);
992 array[345][0] = new Color(255, 156, 12);
993 array[346][0] = new Color(149, 212, 89);
994 array[642][0] = new Color(149, 212, 89);
995 array[347][0] = new Color(236, 74, 79);
996 array[348][0] = new Color(44, 26, 233);
997 array[350][0] = new Color(55, 97, 155);
998 array[352][0] = new Color(238, 97, 94);
999 array[354][0] = new Color(141, 107, 89);
1000 array[355][0] = new Color(141, 107, 89);
1001 array[463][0] = new Color(155, 214, 240);
1002 array[491][0] = new Color(60, 20, 160);
1003 array[464][0] = new Color(233, 183, 128);
1004 array[465][0] = new Color(51, 84, 195);
1005 array[466][0] = new Color(205, 153, 73);
1006 array[356][0] = new Color(233, 203, 24);
1007 array[663][0] = new Color(24, 203, 233);
1008 array[357][0] = new Color(168, 178, 204);
1009 array[367][0] = new Color(168, 178, 204);
1010 array[561][0] = new Color(148, 158, 184);
1011 array[365][0] = new Color(146, 136, 205);
1012 array[366][0] = new Color(223, 232, 233);
1013 array[368][0] = new Color(50, 46, 104);
1014 array[369][0] = new Color(50, 46, 104);
1015 array[576][0] = new Color(30, 26, 84);
1016 array[370][0] = new Color(127, 116, 194);
1017 array[49][0] = new Color(89, 201, 255);
1018 array[372][0] = new Color(252, 128, 201);
1019 array[646][0] = new Color(108, 133, 140);
1020 array[371][0] = new Color(249, 101, 189);
1021 array[376][0] = new Color(160, 120, 92);
1022 array[378][0] = new Color(160, 120, 100);
1023 array[379][0] = new Color(251, 209, 240);
1024 array[382][0] = new Color(28, 216, 94);
1025 array[383][0] = new Color(221, 136, 144);
1026 array[384][0] = new Color(131, 206, 12);
1027 array[385][0] = new Color(87, 21, 144);
1028 array[386][0] = new Color(127, 92, 69);
1029 array[387][0] = new Color(127, 92, 69);
1030 array[388][0] = new Color(127, 92, 69);
1031 array[389][0] = new Color(127, 92, 69);
1032 array[390][0] = new Color(253, 32, 3);
1033 array[397][0] = new Color(212, 192, 100);
1034 array[396][0] = new Color(198, 124, 78);
1035 array[577][0] = new Color(178, 104, 58);
1036 array[398][0] = new Color(100, 82, 126);
1037 array[399][0] = new Color(77, 76, 66);
1038 array[400][0] = new Color(96, 68, 117);
1039 array[401][0] = new Color(68, 60, 51);
1040 array[402][0] = new Color(174, 168, 186);
1041 array[403][0] = new Color(205, 152, 186);
1042 array[404][0] = new Color(212, 148, 88);
1043 array[405][0] = new Color(140, 140, 140);
1044 array[406][0] = new Color(120, 120, 120);
1045 array[407][0] = new Color(255, 227, 132);
1046 array[411][0] = new Color(227, 46, 46);
1047 array[494][0] = new Color(227, 227, 227);
1048 array[421][0] = new Color(65, 75, 90);
1049 array[422][0] = new Color(65, 75, 90);
1050 array[425][0] = new Color(146, 155, 187);
1051 array[426][0] = new Color(168, 38, 47);
1052 array[430][0] = new Color(39, 168, 96);
1053 array[431][0] = new Color(39, 94, 168);
1054 array[432][0] = new Color(242, 221, 100);
1055 array[433][0] = new Color(224, 100, 242);
1056 array[434][0] = new Color(197, 193, 216);
1057 array[427][0] = new Color(183, 53, 62);
1058 array[435][0] = new Color(54, 183, 111);
1059 array[436][0] = new Color(54, 109, 183);
1060 array[437][0] = new Color(255, 236, 115);
1061 array[438][0] = new Color(239, 115, 255);
1062 array[439][0] = new Color(212, 208, 231);
1063 array[440][0] = new Color(238, 51, 53);
1064 array[440][1] = new Color(13, 107, 216);
1065 array[440][2] = new Color(33, 184, 115);
1066 array[440][3] = new Color(255, 221, 62);
1067 array[440][4] = new Color(165, 0, 236);
1068 array[440][5] = new Color(223, 230, 238);
1069 array[440][6] = new Color(207, 101, 0);
1070 array[419][0] = new Color(88, 95, 114);
1071 array[419][1] = new Color(214, 225, 236);
1072 array[419][2] = new Color(25, 131, 205);
1073 array[423][0] = new Color(245, 197, 1);
1074 array[423][1] = new Color(185, 0, 224);
1075 array[423][2] = new Color(58, 240, 111);
1076 array[423][3] = new Color(50, 107, 197);
1077 array[423][4] = new Color(253, 91, 3);
1078 array[423][5] = new Color(254, 194, 20);
1079 array[423][6] = new Color(174, 195, 215);
1080 array[420][0] = new Color(99, 255, 107);
1081 array[420][1] = new Color(99, 255, 107);
1082 array[420][4] = new Color(99, 255, 107);
1083 array[420][2] = new Color(218, 2, 5);
1084 array[420][3] = new Color(218, 2, 5);
1085 array[420][5] = new Color(218, 2, 5);
1086 array[476][0] = new Color(160, 160, 160);
1087 array[410][0] = new Color(75, 139, 166);
1088 array[480][0] = new Color(120, 50, 50);
1089 array[509][0] = new Color(50, 50, 60);
1090 array[657][0] = new Color(35, 205, 215);
1091 array[658][0] = new Color(200, 105, 230);
1092 array[412][0] = new Color(75, 139, 166);
1093 array[443][0] = new Color(144, 148, 144);
1094 array[442][0] = new Color(3, 144, 201);
1095 array[444][0] = new Color(191, 176, 124);
1096 array[446][0] = new Color(255, 66, 152);
1097 array[447][0] = new Color(179, 132, 255);
1098 array[448][0] = new Color(0, 206, 180);
1099 array[449][0] = new Color(91, 186, 240);
1100 array[450][0] = new Color(92, 240, 91);
1101 array[451][0] = new Color(240, 91, 147);
1102 array[452][0] = new Color(255, 150, 181);
1103 array[453][0] = new Color(179, 132, 255);
1104 array[453][1] = new Color(0, 206, 180);
1105 array[453][2] = new Color(255, 66, 152);
1106 array[454][0] = new Color(174, 16, 176);
1107 array[455][0] = new Color(48, 225, 110);
1108 array[456][0] = new Color(179, 132, 255);
1109 array[457][0] = new Color(150, 164, 206);
1110 array[457][1] = new Color(255, 132, 184);
1111 array[457][2] = new Color(74, 255, 232);
1112 array[457][3] = new Color(215, 159, 255);
1113 array[457][4] = new Color(229, 219, 234);
1114 array[458][0] = new Color(211, 198, 111);
1115 array[459][0] = new Color(190, 223, 232);
1116 array[460][0] = new Color(141, 163, 181);
1117 array[462][0] = new Color(231, 178, 28);
1118 array[467][0] = new Color(129, 56, 121);
1119 array[467][1] = new Color(255, 249, 59);
1120 array[467][2] = new Color(161, 67, 24);
1121 array[467][3] = new Color(89, 70, 72);
1122 array[467][4] = new Color(233, 207, 94);
1123 array[467][5] = new Color(254, 158, 35);
1124 array[467][6] = new Color(34, 221, 151);
1125 array[467][7] = new Color(249, 170, 236);
1126 array[467][8] = new Color(35, 200, 254);
1127 array[467][9] = new Color(190, 200, 200);
1128 array[467][10] = new Color(230, 170, 100);
1129 array[467][11] = new Color(165, 168, 26);
1130 for (int num4 = 0; num4 < 12; num4++)
1131 {
1132 array[468][num4] = array[467][num4];
1133 }
1134 array[472][0] = new Color(190, 160, 140);
1135 array[473][0] = new Color(85, 114, 123);
1136 array[474][0] = new Color(116, 94, 97);
1137 array[478][0] = new Color(108, 34, 35);
1138 array[479][0] = new Color(178, 114, 68);
1139 array[485][0] = new Color(198, 134, 88);
1140 array[492][0] = new Color(78, 193, 227);
1141 array[492][0] = new Color(78, 193, 227);
1142 array[493][0] = new Color(250, 249, 252);
1143 array[493][1] = new Color(240, 90, 90);
1144 array[493][2] = new Color(98, 230, 92);
1145 array[493][3] = new Color(95, 197, 238);
1146 array[493][4] = new Color(241, 221, 100);
1147 array[493][5] = new Color(213, 92, 237);
1148 array[494][0] = new Color(224, 219, 236);
1149 array[495][0] = new Color(253, 227, 215);
1150 array[496][0] = new Color(165, 159, 153);
1151 array[498][0] = new Color(202, 174, 165);
1152 array[499][0] = new Color(160, 187, 142);
1153 array[500][0] = new Color(254, 158, 35);
1154 array[501][0] = new Color(34, 221, 151);
1155 array[502][0] = new Color(249, 170, 236);
1156 array[503][0] = new Color(35, 200, 254);
1157 array[506][0] = new Color(61, 61, 61);
1158 array[510][0] = new Color(191, 142, 111);
1159 array[511][0] = new Color(187, 68, 74);
1160 array[520][0] = new Color(224, 219, 236);
1161 array[545][0] = new Color(255, 126, 145);
1162 array[530][0] = new Color(107, 182, 0);
1163 array[530][1] = new Color(23, 154, 209);
1164 array[530][2] = new Color(238, 97, 94);
1165 array[530][3] = new Color(113, 108, 205);
1166 array[546][0] = new Color(60, 60, 60);
1167 array[557][0] = new Color(60, 60, 60);
1168 array[547][0] = new Color(120, 110, 100);
1169 array[548][0] = new Color(120, 110, 100);
1170 array[562][0] = new Color(165, 168, 26);
1171 array[563][0] = new Color(165, 168, 26);
1172 array[571][0] = new Color(165, 168, 26);
1173 array[568][0] = new Color(248, 203, 233);
1174 array[569][0] = new Color(203, 248, 218);
1175 array[570][0] = new Color(160, 242, 255);
1176 array[597][0] = new Color(28, 216, 94);
1177 array[597][1] = new Color(183, 237, 20);
1178 array[597][2] = new Color(185, 83, 200);
1179 array[597][3] = new Color(131, 128, 168);
1180 array[597][4] = new Color(38, 142, 214);
1181 array[597][5] = new Color(229, 154, 9);
1182 array[597][6] = new Color(142, 227, 234);
1183 array[597][7] = new Color(98, 111, 223);
1184 array[597][8] = new Color(241, 233, 158);
1185 array[617][0] = new Color(233, 207, 94);
1186 Color color3 = new Color(250, 100, 50);
1187 array[548][1] = color3;
1188 array[613][0] = color3;
1189 array[614][0] = color3;
1190 array[623][0] = new Color(220, 210, 245);
1191 array[661][0] = new Color(141, 137, 223);
1192 array[662][0] = new Color(208, 80, 80);
1193 array[666][0] = new Color(115, 60, 40);
1194 array[667][0] = new Color(247, 228, 254);
1195 Color[] array3 = new Color[4]
1196 {
1197 new Color(9, 61, 191),
1198 new Color(253, 32, 3),
1199 new Color(254, 194, 20),
1200 new Color(161, 127, 255)
1201 };
1202 Color[][] array4 = new Color[WallID.Count][];
1203 for (int num5 = 0; num5 < WallID.Count; num5++)
1204 {
1205 array4[num5] = new Color[2];
1206 }
1207 array4[158][0] = new Color(107, 49, 154);
1208 array4[163][0] = new Color(154, 148, 49);
1209 array4[162][0] = new Color(49, 49, 154);
1210 array4[160][0] = new Color(49, 154, 68);
1211 array4[161][0] = new Color(154, 49, 77);
1212 array4[159][0] = new Color(85, 89, 118);
1213 array4[157][0] = new Color(154, 83, 49);
1214 array4[154][0] = new Color(221, 79, 255);
1215 array4[166][0] = new Color(250, 255, 79);
1216 array4[165][0] = new Color(79, 102, 255);
1217 array4[156][0] = new Color(79, 255, 89);
1218 array4[164][0] = new Color(255, 79, 79);
1219 array4[155][0] = new Color(240, 240, 247);
1220 array4[153][0] = new Color(255, 145, 79);
1221 array4[169][0] = new Color(5, 5, 5);
1222 array4[224][0] = new Color(57, 55, 52);
1223 array4[323][0] = new Color(55, 25, 33);
1224 array4[324][0] = new Color(60, 55, 145);
1225 array4[325][0] = new Color(10, 5, 50);
1226 array4[326][0] = new Color(30, 105, 75);
1227 array4[327][0] = new Color(5, 45, 55);
1228 array4[328][0] = new Color(20, 25, 35);
1229 array4[329][0] = new Color(15, 10, 50);
1230 array4[330][0] = new Color(153, 164, 187);
1231 array4[225][0] = new Color(68, 68, 68);
1232 array4[226][0] = new Color(148, 138, 74);
1233 array4[227][0] = new Color(95, 137, 191);
1234 array4[170][0] = new Color(59, 39, 22);
1235 array4[171][0] = new Color(59, 39, 22);
1236 color = new Color(52, 52, 52);
1237 array4[1][0] = color;
1238 array4[53][0] = color;
1239 array4[52][0] = color;
1240 array4[51][0] = color;
1241 array4[50][0] = color;
1242 array4[49][0] = color;
1243 array4[48][0] = color;
1244 array4[44][0] = color;
1245 array4[346][0] = color;
1246 array4[5][0] = color;
1247 color = new Color(88, 61, 46);
1248 array4[2][0] = color;
1249 array4[16][0] = color;
1250 array4[59][0] = color;
1251 array4[3][0] = new Color(61, 58, 78);
1252 array4[4][0] = new Color(73, 51, 36);
1253 array4[6][0] = new Color(91, 30, 30);
1254 color = new Color(27, 31, 42);
1255 array4[7][0] = color;
1256 array4[17][0] = color;
1257 array4[331][0] = color;
1258 color = new Color(32, 40, 45);
1259 array4[94][0] = color;
1260 array4[100][0] = color;
1261 color = new Color(44, 41, 50);
1262 array4[95][0] = color;
1263 array4[101][0] = color;
1264 color = new Color(31, 39, 26);
1265 array4[8][0] = color;
1266 array4[18][0] = color;
1267 array4[332][0] = color;
1268 color = new Color(36, 45, 44);
1269 array4[98][0] = color;
1270 array4[104][0] = color;
1271 color = new Color(38, 49, 50);
1272 array4[99][0] = color;
1273 array4[105][0] = color;
1274 color = new Color(41, 28, 36);
1275 array4[9][0] = color;
1276 array4[19][0] = color;
1277 array4[333][0] = color;
1278 color = new Color(72, 50, 77);
1279 array4[96][0] = color;
1280 array4[102][0] = color;
1281 color = new Color(78, 50, 69);
1282 array4[97][0] = color;
1283 array4[103][0] = color;
1284 array4[10][0] = new Color(74, 62, 12);
1285 array4[334][0] = new Color(74, 62, 12);
1286 array4[11][0] = new Color(46, 56, 59);
1287 array4[335][0] = new Color(46, 56, 59);
1288 array4[12][0] = new Color(75, 32, 11);
1289 array4[336][0] = new Color(75, 32, 11);
1290 array4[13][0] = new Color(67, 37, 37);
1291 array4[338][0] = new Color(67, 37, 37);
1292 color = new Color(15, 15, 15);
1293 array4[14][0] = color;
1294 array4[337][0] = color;
1295 array4[20][0] = color;
1296 array4[15][0] = new Color(52, 43, 45);
1297 array4[22][0] = new Color(113, 99, 99);
1298 array4[23][0] = new Color(38, 38, 43);
1299 array4[24][0] = new Color(53, 39, 41);
1300 array4[25][0] = new Color(11, 35, 62);
1301 array4[339][0] = new Color(11, 35, 62);
1302 array4[26][0] = new Color(21, 63, 70);
1303 array4[340][0] = new Color(21, 63, 70);
1304 array4[27][0] = new Color(88, 61, 46);
1305 array4[27][1] = new Color(52, 52, 52);
1306 array4[28][0] = new Color(81, 84, 101);
1307 array4[29][0] = new Color(88, 23, 23);
1308 array4[30][0] = new Color(28, 88, 23);
1309 array4[31][0] = new Color(78, 87, 99);
1310 color = new Color(69, 67, 41);
1311 array4[34][0] = color;
1312 array4[37][0] = color;
1313 array4[32][0] = new Color(86, 17, 40);
1314 array4[33][0] = new Color(49, 47, 83);
1315 array4[35][0] = new Color(51, 51, 70);
1316 array4[36][0] = new Color(87, 59, 55);
1317 array4[38][0] = new Color(49, 57, 49);
1318 array4[39][0] = new Color(78, 79, 73);
1319 array4[45][0] = new Color(60, 59, 51);
1320 array4[46][0] = new Color(48, 57, 47);
1321 array4[47][0] = new Color(71, 77, 85);
1322 array4[40][0] = new Color(85, 102, 103);
1323 array4[41][0] = new Color(52, 50, 62);
1324 array4[42][0] = new Color(71, 42, 44);
1325 array4[43][0] = new Color(73, 66, 50);
1326 array4[54][0] = new Color(40, 56, 50);
1327 array4[55][0] = new Color(49, 48, 36);
1328 array4[56][0] = new Color(43, 33, 32);
1329 array4[57][0] = new Color(31, 40, 49);
1330 array4[58][0] = new Color(48, 35, 52);
1331 array4[60][0] = new Color(1, 52, 20);
1332 array4[61][0] = new Color(55, 39, 26);
1333 array4[62][0] = new Color(39, 33, 26);
1334 array4[69][0] = new Color(43, 42, 68);
1335 array4[70][0] = new Color(30, 70, 80);
1336 array4[341][0] = new Color(100, 40, 1);
1337 array4[342][0] = new Color(92, 30, 72);
1338 array4[343][0] = new Color(42, 81, 1);
1339 array4[344][0] = new Color(1, 81, 109);
1340 array4[345][0] = new Color(56, 22, 97);
1341 color = new Color(30, 80, 48);
1342 array4[63][0] = color;
1343 array4[65][0] = color;
1344 array4[66][0] = color;
1345 array4[68][0] = color;
1346 color = new Color(53, 80, 30);
1347 array4[64][0] = color;
1348 array4[67][0] = color;
1349 array4[78][0] = new Color(63, 39, 26);
1350 array4[244][0] = new Color(63, 39, 26);
1351 array4[71][0] = new Color(78, 105, 135);
1352 array4[72][0] = new Color(52, 84, 12);
1353 array4[73][0] = new Color(190, 204, 223);
1354 color = new Color(64, 62, 80);
1355 array4[74][0] = color;
1356 array4[80][0] = color;
1357 array4[75][0] = new Color(65, 65, 35);
1358 array4[76][0] = new Color(20, 46, 104);
1359 array4[77][0] = new Color(61, 13, 16);
1360 array4[79][0] = new Color(51, 47, 96);
1361 array4[81][0] = new Color(101, 51, 51);
1362 array4[82][0] = new Color(77, 64, 34);
1363 array4[83][0] = new Color(62, 38, 41);
1364 array4[234][0] = new Color(60, 36, 39);
1365 array4[84][0] = new Color(48, 78, 93);
1366 array4[85][0] = new Color(54, 63, 69);
1367 color = new Color(138, 73, 38);
1368 array4[86][0] = color;
1369 array4[108][0] = color;
1370 color = new Color(50, 15, 8);
1371 array4[87][0] = color;
1372 array4[112][0] = color;
1373 array4[109][0] = new Color(94, 25, 17);
1374 array4[110][0] = new Color(125, 36, 122);
1375 array4[111][0] = new Color(51, 35, 27);
1376 array4[113][0] = new Color(135, 58, 0);
1377 array4[114][0] = new Color(65, 52, 15);
1378 array4[115][0] = new Color(39, 42, 51);
1379 array4[116][0] = new Color(89, 26, 27);
1380 array4[117][0] = new Color(126, 123, 115);
1381 array4[118][0] = new Color(8, 50, 19);
1382 array4[119][0] = new Color(95, 21, 24);
1383 array4[120][0] = new Color(17, 31, 65);
1384 array4[121][0] = new Color(192, 173, 143);
1385 array4[122][0] = new Color(114, 114, 131);
1386 array4[123][0] = new Color(136, 119, 7);
1387 array4[124][0] = new Color(8, 72, 3);
1388 array4[125][0] = new Color(117, 132, 82);
1389 array4[126][0] = new Color(100, 102, 114);
1390 array4[127][0] = new Color(30, 118, 226);
1391 array4[128][0] = new Color(93, 6, 102);
1392 array4[129][0] = new Color(64, 40, 169);
1393 array4[130][0] = new Color(39, 34, 180);
1394 array4[131][0] = new Color(87, 94, 125);
1395 array4[132][0] = new Color(6, 6, 6);
1396 array4[133][0] = new Color(69, 72, 186);
1397 array4[134][0] = new Color(130, 62, 16);
1398 array4[135][0] = new Color(22, 123, 163);
1399 array4[136][0] = new Color(40, 86, 151);
1400 array4[137][0] = new Color(183, 75, 15);
1401 array4[138][0] = new Color(83, 80, 100);
1402 array4[139][0] = new Color(115, 65, 68);
1403 array4[140][0] = new Color(119, 108, 81);
1404 array4[141][0] = new Color(59, 67, 71);
1405 array4[142][0] = new Color(222, 216, 202);
1406 array4[143][0] = new Color(90, 112, 105);
1407 array4[144][0] = new Color(62, 28, 87);
1408 array4[146][0] = new Color(120, 59, 19);
1409 array4[147][0] = new Color(59, 59, 59);
1410 array4[148][0] = new Color(229, 218, 161);
1411 array4[149][0] = new Color(73, 59, 50);
1412 array4[151][0] = new Color(102, 75, 34);
1413 array4[167][0] = new Color(70, 68, 51);
1414 Color color4 = new Color(125, 100, 100);
1415 array4[316][0] = color4;
1416 array4[317][0] = color4;
1417 array4[172][0] = new Color(163, 96, 0);
1418 array4[242][0] = new Color(5, 5, 5);
1419 array4[243][0] = new Color(5, 5, 5);
1420 array4[173][0] = new Color(94, 163, 46);
1421 array4[174][0] = new Color(117, 32, 59);
1422 array4[175][0] = new Color(20, 11, 203);
1423 array4[176][0] = new Color(74, 69, 88);
1424 array4[177][0] = new Color(60, 30, 30);
1425 array4[183][0] = new Color(111, 117, 135);
1426 array4[179][0] = new Color(111, 117, 135);
1427 array4[178][0] = new Color(111, 117, 135);
1428 array4[184][0] = new Color(25, 23, 54);
1429 array4[181][0] = new Color(25, 23, 54);
1430 array4[180][0] = new Color(25, 23, 54);
1431 array4[182][0] = new Color(74, 71, 129);
1432 array4[185][0] = new Color(52, 52, 52);
1433 array4[186][0] = new Color(38, 9, 66);
1434 array4[216][0] = new Color(158, 100, 64);
1435 array4[217][0] = new Color(62, 45, 75);
1436 array4[218][0] = new Color(57, 14, 12);
1437 array4[219][0] = new Color(96, 72, 133);
1438 array4[187][0] = new Color(149, 80, 51);
1439 array4[235][0] = new Color(140, 75, 48);
1440 array4[220][0] = new Color(67, 55, 80);
1441 array4[221][0] = new Color(64, 37, 29);
1442 array4[222][0] = new Color(70, 51, 91);
1443 array4[188][0] = new Color(82, 63, 80);
1444 array4[189][0] = new Color(65, 61, 77);
1445 array4[190][0] = new Color(64, 65, 92);
1446 array4[191][0] = new Color(76, 53, 84);
1447 array4[192][0] = new Color(144, 67, 52);
1448 array4[193][0] = new Color(149, 48, 48);
1449 array4[194][0] = new Color(111, 32, 36);
1450 array4[195][0] = new Color(147, 48, 55);
1451 array4[196][0] = new Color(97, 67, 51);
1452 array4[197][0] = new Color(112, 80, 62);
1453 array4[198][0] = new Color(88, 61, 46);
1454 array4[199][0] = new Color(127, 94, 76);
1455 array4[200][0] = new Color(143, 50, 123);
1456 array4[201][0] = new Color(136, 120, 131);
1457 array4[202][0] = new Color(219, 92, 143);
1458 array4[203][0] = new Color(113, 64, 150);
1459 array4[204][0] = new Color(74, 67, 60);
1460 array4[205][0] = new Color(60, 78, 59);
1461 array4[206][0] = new Color(0, 54, 21);
1462 array4[207][0] = new Color(74, 97, 72);
1463 array4[208][0] = new Color(40, 37, 35);
1464 array4[209][0] = new Color(77, 63, 66);
1465 array4[210][0] = new Color(111, 6, 6);
1466 array4[211][0] = new Color(88, 67, 59);
1467 array4[212][0] = new Color(88, 87, 80);
1468 array4[213][0] = new Color(71, 71, 67);
1469 array4[214][0] = new Color(76, 52, 60);
1470 array4[215][0] = new Color(89, 48, 59);
1471 array4[223][0] = new Color(51, 18, 4);
1472 array4[228][0] = new Color(160, 2, 75);
1473 array4[229][0] = new Color(100, 55, 164);
1474 array4[230][0] = new Color(0, 117, 101);
1475 array4[236][0] = new Color(127, 49, 44);
1476 array4[231][0] = new Color(110, 90, 78);
1477 array4[232][0] = new Color(47, 69, 75);
1478 array4[233][0] = new Color(91, 67, 70);
1479 array4[237][0] = new Color(200, 44, 18);
1480 array4[238][0] = new Color(24, 93, 66);
1481 array4[239][0] = new Color(160, 87, 234);
1482 array4[240][0] = new Color(6, 106, 255);
1483 array4[245][0] = new Color(102, 102, 102);
1484 array4[315][0] = new Color(181, 230, 29);
1485 array4[246][0] = new Color(61, 58, 78);
1486 array4[247][0] = new Color(52, 43, 45);
1487 array4[248][0] = new Color(81, 84, 101);
1488 array4[249][0] = new Color(85, 102, 103);
1489 array4[250][0] = new Color(52, 52, 52);
1490 array4[251][0] = new Color(52, 52, 52);
1491 array4[252][0] = new Color(52, 52, 52);
1492 array4[253][0] = new Color(52, 52, 52);
1493 array4[254][0] = new Color(52, 52, 52);
1494 array4[255][0] = new Color(52, 52, 52);
1495 array4[314][0] = new Color(52, 52, 52);
1496 array4[256][0] = new Color(40, 56, 50);
1497 array4[257][0] = new Color(49, 48, 36);
1498 array4[258][0] = new Color(43, 33, 32);
1499 array4[259][0] = new Color(31, 40, 49);
1500 array4[260][0] = new Color(48, 35, 52);
1501 array4[261][0] = new Color(88, 61, 46);
1502 array4[262][0] = new Color(55, 39, 26);
1503 array4[263][0] = new Color(39, 33, 26);
1504 array4[264][0] = new Color(43, 42, 68);
1505 array4[265][0] = new Color(30, 70, 80);
1506 array4[266][0] = new Color(78, 105, 135);
1507 array4[267][0] = new Color(51, 47, 96);
1508 array4[268][0] = new Color(101, 51, 51);
1509 array4[269][0] = new Color(62, 38, 41);
1510 array4[270][0] = new Color(59, 39, 22);
1511 array4[271][0] = new Color(59, 39, 22);
1512 array4[272][0] = new Color(111, 117, 135);
1513 array4[273][0] = new Color(25, 23, 54);
1514 array4[274][0] = new Color(52, 52, 52);
1515 array4[275][0] = new Color(149, 80, 51);
1516 array4[276][0] = new Color(82, 63, 80);
1517 array4[277][0] = new Color(65, 61, 77);
1518 array4[278][0] = new Color(64, 65, 92);
1519 array4[279][0] = new Color(76, 53, 84);
1520 array4[280][0] = new Color(144, 67, 52);
1521 array4[281][0] = new Color(149, 48, 48);
1522 array4[282][0] = new Color(111, 32, 36);
1523 array4[283][0] = new Color(147, 48, 55);
1524 array4[284][0] = new Color(97, 67, 51);
1525 array4[285][0] = new Color(112, 80, 62);
1526 array4[286][0] = new Color(88, 61, 46);
1527 array4[287][0] = new Color(127, 94, 76);
1528 array4[288][0] = new Color(143, 50, 123);
1529 array4[289][0] = new Color(136, 120, 131);
1530 array4[290][0] = new Color(219, 92, 143);
1531 array4[291][0] = new Color(113, 64, 150);
1532 array4[292][0] = new Color(74, 67, 60);
1533 array4[293][0] = new Color(60, 78, 59);
1534 array4[294][0] = new Color(0, 54, 21);
1535 array4[295][0] = new Color(74, 97, 72);
1536 array4[296][0] = new Color(40, 37, 35);
1537 array4[297][0] = new Color(77, 63, 66);
1538 array4[298][0] = new Color(111, 6, 6);
1539 array4[299][0] = new Color(88, 67, 59);
1540 array4[300][0] = new Color(88, 87, 80);
1541 array4[301][0] = new Color(71, 71, 67);
1542 array4[302][0] = new Color(76, 52, 60);
1543 array4[303][0] = new Color(89, 48, 59);
1544 array4[304][0] = new Color(158, 100, 64);
1545 array4[305][0] = new Color(62, 45, 75);
1546 array4[306][0] = new Color(57, 14, 12);
1547 array4[307][0] = new Color(96, 72, 133);
1548 array4[308][0] = new Color(67, 55, 80);
1549 array4[309][0] = new Color(64, 37, 29);
1550 array4[310][0] = new Color(70, 51, 91);
1551 array4[311][0] = new Color(51, 18, 4);
1552 array4[312][0] = new Color(78, 110, 51);
1553 array4[313][0] = new Color(78, 110, 51);
1554 array4[319][0] = new Color(105, 51, 108);
1555 array4[320][0] = new Color(75, 30, 15);
1556 array4[321][0] = new Color(91, 108, 130);
1557 array4[322][0] = new Color(91, 108, 130);
1558 Color[] array5 = new Color[256];
1559 Color color5 = new Color(50, 40, 255);
1560 Color color6 = new Color(145, 185, 255);
1561 for (int num6 = 0; num6 < array5.Length; num6++)
1562 {
1563 float num7 = (float)num6 / (float)array5.Length;
1564 float num8 = 1f - num7;
1565 array5[num6] = new Color((byte)((float)(int)color5.R * num8 + (float)(int)color6.R * num7), (byte)((float)(int)color5.G * num8 + (float)(int)color6.G * num7), (byte)((float)(int)color5.B * num8 + (float)(int)color6.B * num7));
1566 }
1567 Color[] array6 = new Color[256];
1568 Color color7 = new Color(88, 61, 46);
1569 Color color8 = new Color(37, 78, 123);
1570 for (int num9 = 0; num9 < array6.Length; num9++)
1571 {
1572 float num10 = (float)num9 / 255f;
1573 float num11 = 1f - num10;
1574 array6[num9] = new Color((byte)((float)(int)color7.R * num11 + (float)(int)color8.R * num10), (byte)((float)(int)color7.G * num11 + (float)(int)color8.G * num10), (byte)((float)(int)color7.B * num11 + (float)(int)color8.B * num10));
1575 }
1576 Color[] array7 = new Color[256];
1577 Color color9 = new Color(74, 67, 60);
1578 color8 = new Color(53, 70, 97);
1579 for (int num12 = 0; num12 < array7.Length; num12++)
1580 {
1581 float num13 = (float)num12 / 255f;
1582 float num14 = 1f - num13;
1583 array7[num12] = new Color((byte)((float)(int)color9.R * num14 + (float)(int)color8.R * num13), (byte)((float)(int)color9.G * num14 + (float)(int)color8.G * num13), (byte)((float)(int)color9.B * num14 + (float)(int)color8.B * num13));
1584 }
1585 Color color10 = new Color(50, 44, 38);
1586 int num15 = 0;
1587 tileOptionCounts = new int[TileID.Count];
1588 for (int num16 = 0; num16 < TileID.Count; num16++)
1589 {
1590 Color[] array8 = array[num16];
1591 int num17;
1592 for (num17 = 0; num17 < 12 && !(array8[num17] == Color.Transparent); num17++)
1593 {
1594 }
1595 tileOptionCounts[num16] = num17;
1596 num15 += num17;
1597 }
1598 wallOptionCounts = new int[WallID.Count];
1599 for (int num18 = 0; num18 < WallID.Count; num18++)
1600 {
1601 Color[] array9 = array4[num18];
1602 int num19;
1603 for (num19 = 0; num19 < 2 && !(array9[num19] == Color.Transparent); num19++)
1604 {
1605 }
1606 wallOptionCounts[num18] = num19;
1607 num15 += num19;
1608 }
1609 num15 += 774;
1610 colorLookup = new Color[num15];
1612 ushort num20 = (tilePosition = 1);
1613 tileLookup = new ushort[TileID.Count];
1614 for (int num21 = 0; num21 < TileID.Count; num21++)
1615 {
1616 if (tileOptionCounts[num21] > 0)
1617 {
1618 _ = array[num21];
1619 tileLookup[num21] = num20;
1620 for (int num22 = 0; num22 < tileOptionCounts[num21]; num22++)
1621 {
1622 colorLookup[num20] = array[num21][num22];
1623 num20++;
1624 }
1625 }
1626 else
1627 {
1628 tileLookup[num21] = 0;
1629 }
1630 }
1631 wallPosition = num20;
1632 wallLookup = new ushort[WallID.Count];
1633 wallRangeStart = num20;
1634 for (int num23 = 0; num23 < WallID.Count; num23++)
1635 {
1636 if (wallOptionCounts[num23] > 0)
1637 {
1638 _ = array4[num23];
1639 wallLookup[num23] = num20;
1640 for (int num24 = 0; num24 < wallOptionCounts[num23]; num24++)
1641 {
1642 colorLookup[num20] = array4[num23][num24];
1643 num20++;
1644 }
1645 }
1646 else
1647 {
1648 wallLookup[num23] = 0;
1649 }
1650 }
1651 wallRangeEnd = num20;
1652 liquidPosition = num20;
1653 for (int num25 = 0; num25 < 4; num25++)
1654 {
1655 colorLookup[num20] = array3[num25];
1656 num20++;
1657 }
1658 skyPosition = num20;
1659 for (int num26 = 0; num26 < 256; num26++)
1660 {
1661 colorLookup[num20] = array5[num26];
1662 num20++;
1663 }
1664 dirtPosition = num20;
1665 for (int num27 = 0; num27 < 256; num27++)
1666 {
1667 colorLookup[num20] = array6[num27];
1668 num20++;
1669 }
1670 rockPosition = num20;
1671 for (int num28 = 0; num28 < 256; num28++)
1672 {
1673 colorLookup[num20] = array7[num28];
1674 num20++;
1675 }
1676 hellPosition = num20;
1677 colorLookup[num20] = color10;
1678 snowTypes = new ushort[6];
1679 snowTypes[0] = tileLookup[147];
1680 snowTypes[1] = tileLookup[161];
1681 snowTypes[2] = tileLookup[162];
1682 snowTypes[3] = tileLookup[163];
1683 snowTypes[4] = tileLookup[164];
1684 snowTypes[5] = tileLookup[200];
1686 }
1687
1688 public static void ResetMapData()
1689 {
1690 numUpdateTile = 0;
1691 }
1692
1693 public static bool HasOption(int tileType, int option)
1694 {
1695 return option < tileOptionCounts[tileType];
1696 }
1697
1698 public static int TileToLookup(int tileType, int option)
1699 {
1700 return tileLookup[tileType] + option;
1701 }
1702
1703 public static int LookupCount()
1704 {
1705 return colorLookup.Length;
1706 }
1707
1708 private static void MapColor(ushort type, ref Color oldColor, byte colorType)
1709 {
1710 Color color = WorldGen.paintColor(colorType);
1711 float num = (float)(int)oldColor.R / 255f;
1712 float num2 = (float)(int)oldColor.G / 255f;
1713 float num3 = (float)(int)oldColor.B / 255f;
1714 if (num2 > num)
1715 {
1716 float num4 = num;
1717 num = num2;
1718 num2 = num4;
1719 }
1720 if (num3 > num)
1721 {
1722 float num5 = num;
1723 num = num3;
1724 num3 = num5;
1725 }
1726 switch (colorType)
1727 {
1728 case 29:
1729 {
1730 float num7 = num3 * 0.3f;
1731 oldColor.R = (byte)((float)(int)color.R * num7);
1732 oldColor.G = (byte)((float)(int)color.G * num7);
1733 oldColor.B = (byte)((float)(int)color.B * num7);
1734 break;
1735 }
1736 case 30:
1737 if (type >= wallRangeStart && type <= wallRangeEnd)
1738 {
1739 oldColor.R = (byte)((float)(255 - oldColor.R) * 0.5f);
1740 oldColor.G = (byte)((float)(255 - oldColor.G) * 0.5f);
1741 oldColor.B = (byte)((float)(255 - oldColor.B) * 0.5f);
1742 }
1743 else
1744 {
1745 oldColor.R = (byte)(255 - oldColor.R);
1746 oldColor.G = (byte)(255 - oldColor.G);
1747 oldColor.B = (byte)(255 - oldColor.B);
1748 }
1749 break;
1750 default:
1751 {
1752 float num6 = num;
1753 oldColor.R = (byte)((float)(int)color.R * num6);
1754 oldColor.G = (byte)((float)(int)color.G * num6);
1755 oldColor.B = (byte)((float)(int)color.B * num6);
1756 break;
1757 }
1758 }
1759 }
1760
1761 public static Color GetMapTileXnaColor(ref MapTile tile)
1762 {
1763 Color oldColor = colorLookup[tile.Type];
1764 byte color = tile.Color;
1765 if (color > 0)
1766 {
1767 MapColor(tile.Type, ref oldColor, color);
1768 }
1769 if (tile.Light == byte.MaxValue)
1770 {
1771 return oldColor;
1772 }
1773 float num = (float)(int)tile.Light / 255f;
1774 oldColor.R = (byte)((float)(int)oldColor.R * num);
1775 oldColor.G = (byte)((float)(int)oldColor.G * num);
1776 oldColor.B = (byte)((float)(int)oldColor.B * num);
1777 return oldColor;
1778 }
1779
1780 public static MapTile CreateMapTile(int i, int j, byte Light)
1781 {
1782 Tile tile = Main.tile[i, j];
1783 if (tile == null)
1784 {
1785 return default(MapTile);
1786 }
1787 int num = 0;
1788 int num2 = Light;
1789 _ = Main.Map[i, j];
1790 int num3 = 0;
1791 int baseOption = 0;
1792 if (tile.active())
1793 {
1794 int num4 = tile.type;
1795 num3 = tileLookup[num4];
1796 bool flag = tile.invisibleBlock();
1797 if (tile.fullbrightBlock() && !flag)
1798 {
1799 num2 = 255;
1800 }
1801 if (flag)
1802 {
1803 num3 = 0;
1804 }
1805 else if (num4 == 5)
1806 {
1807 if (WorldGen.IsThisAMushroomTree(i, j))
1808 {
1809 baseOption = 1;
1810 }
1811 num = tile.color();
1812 }
1813 else
1814 {
1815 switch (num4)
1816 {
1817 case 51:
1818 if ((i + j) % 2 == 0)
1819 {
1820 num3 = 0;
1821 }
1822 break;
1823 case 19:
1824 if (tile.frameY == 864)
1825 {
1826 num3 = 0;
1827 }
1828 break;
1829 case 184:
1830 if (tile.frameX / 22 == 10)
1831 {
1832 num4 = 627;
1833 num3 = tileLookup[num4];
1834 }
1835 break;
1836 }
1837 if (num3 != 0)
1838 {
1839 GetTileBaseOption(i, j, num4, tile, ref baseOption);
1840 num = ((num4 != 160) ? tile.color() : 0);
1841 }
1842 }
1843 }
1844 if (num3 == 0)
1845 {
1846 bool flag2 = tile.invisibleWall();
1847 if (tile.wall > 0 && tile.fullbrightWall() && !flag2)
1848 {
1849 num2 = 255;
1850 }
1851 if (tile.liquid > 32)
1852 {
1853 int num5 = tile.liquidType();
1854 num3 = liquidPosition + num5;
1855 }
1856 else if (!tile.invisibleWall() && tile.wall > 0 && tile.wall < WallID.Count)
1857 {
1858 int wall = tile.wall;
1859 num3 = wallLookup[wall];
1860 num = tile.wallColor();
1861 switch (wall)
1862 {
1863 case 21:
1864 case 88:
1865 case 89:
1866 case 90:
1867 case 91:
1868 case 92:
1869 case 93:
1870 case 168:
1871 case 241:
1872 num = 0;
1873 break;
1874 case 27:
1875 baseOption = i % 2;
1876 break;
1877 default:
1878 baseOption = 0;
1879 break;
1880 }
1881 }
1882 }
1883 if (num3 == 0)
1884 {
1885 if ((double)j < Main.worldSurface)
1886 {
1887 if (Main.remixWorld)
1888 {
1889 num2 = 5;
1890 num3 = 100;
1891 }
1892 else
1893 {
1894 int num6 = (byte)(255.0 * ((double)j / Main.worldSurface));
1895 num3 = skyPosition + num6;
1896 num2 = 255;
1897 num = 0;
1898 }
1899 }
1900 else if (j < Main.UnderworldLayer)
1901 {
1902 num = 0;
1903 byte b = 0;
1904 float num7 = Main.screenPosition.X / 16f - 5f;
1905 float num8 = (Main.screenPosition.X + (float)Main.screenWidth) / 16f + 5f;
1906 float num9 = Main.screenPosition.Y / 16f - 5f;
1907 float num10 = (Main.screenPosition.Y + (float)Main.screenHeight) / 16f + 5f;
1908 if (((float)i < num7 || (float)i > num8 || (float)j < num9 || (float)j > num10) && i > 40 && i < Main.maxTilesX - 40 && j > 40 && j < Main.maxTilesY - 40)
1909 {
1910 for (int k = i - 36; k <= i + 30; k += 10)
1911 {
1912 for (int l = j - 36; l <= j + 30; l += 10)
1913 {
1914 int type = Main.Map[k, l].Type;
1915 for (int m = 0; m < snowTypes.Length; m++)
1916 {
1917 if (snowTypes[m] == type)
1918 {
1919 b = byte.MaxValue;
1920 k = i + 31;
1921 l = j + 31;
1922 break;
1923 }
1924 }
1925 }
1926 }
1927 }
1928 else
1929 {
1930 float num11 = (float)Main.SceneMetrics.SnowTileCount / (float)SceneMetrics.SnowTileMax;
1931 num11 *= 255f;
1932 if (num11 > 255f)
1933 {
1934 num11 = 255f;
1935 }
1936 b = (byte)num11;
1937 }
1938 num3 = ((!((double)j < Main.rockLayer)) ? (rockPosition + b) : (dirtPosition + b));
1939 }
1940 else
1941 {
1942 num3 = hellPosition;
1943 }
1944 }
1945 return MapTile.Create((ushort)(num3 + baseOption), (byte)num2, (byte)num);
1946 }
1947
1948 public static void GetTileBaseOption(int x, int y, int tileType, Tile tileCache, ref int baseOption)
1949 {
1950 switch (tileType)
1951 {
1952 case 89:
1953 switch (tileCache.frameX / 54)
1954 {
1955 case 0:
1956 case 21:
1957 case 23:
1958 baseOption = 0;
1959 break;
1960 case 43:
1961 baseOption = 2;
1962 break;
1963 default:
1964 baseOption = 1;
1965 break;
1966 }
1967 break;
1968 case 160:
1969 case 627:
1970 case 628:
1971 case 692:
1972 baseOption = (x + y) % 9;
1973 break;
1974 case 461:
1975 if (Main.player[Main.myPlayer].ZoneCorrupt)
1976 {
1977 baseOption = 1;
1978 }
1979 else if (Main.player[Main.myPlayer].ZoneCrimson)
1980 {
1981 baseOption = 2;
1982 }
1983 else if (Main.player[Main.myPlayer].ZoneHallow)
1984 {
1985 baseOption = 3;
1986 }
1987 break;
1988 case 80:
1989 {
1990 WorldGen.GetCactusType(x, y, tileCache.frameX, tileCache.frameY, out var evil, out var good, out var crimson);
1991 if (evil)
1992 {
1993 baseOption = 1;
1994 }
1995 else if (good)
1996 {
1997 baseOption = 2;
1998 }
1999 else if (crimson)
2000 {
2001 baseOption = 3;
2002 }
2003 else
2004 {
2005 baseOption = 0;
2006 }
2007 break;
2008 }
2009 case 529:
2010 {
2011 int num2 = y + 1;
2012 WorldGen.GetBiomeInfluence(x, x, num2, num2, out var corruptCount, out var crimsonCount, out var hallowedCount);
2013 int num3 = corruptCount;
2014 if (num3 < crimsonCount)
2015 {
2016 num3 = crimsonCount;
2017 }
2018 if (num3 < hallowedCount)
2019 {
2020 num3 = hallowedCount;
2021 }
2022 int num4 = 0;
2023 num4 = ((corruptCount == 0 && crimsonCount == 0 && hallowedCount == 0) ? ((x < WorldGen.beachDistance || x > Main.maxTilesX - WorldGen.beachDistance) ? 1 : 0) : ((hallowedCount == num3) ? 2 : ((crimsonCount != num3) ? 4 : 3)));
2024 baseOption = num4;
2025 break;
2026 }
2027 case 530:
2028 {
2029 int num8 = y - tileCache.frameY % 36 / 18 + 2;
2030 int num9 = x - tileCache.frameX % 54 / 18;
2031 WorldGen.GetBiomeInfluence(num9, num9 + 3, num8, num8, out var corruptCount2, out var crimsonCount2, out var hallowedCount2);
2032 int num10 = corruptCount2;
2033 if (num10 < crimsonCount2)
2034 {
2035 num10 = crimsonCount2;
2036 }
2037 if (num10 < hallowedCount2)
2038 {
2039 num10 = hallowedCount2;
2040 }
2041 int num11 = 0;
2042 num11 = ((corruptCount2 != 0 || crimsonCount2 != 0 || hallowedCount2 != 0) ? ((hallowedCount2 == num10) ? 1 : ((crimsonCount2 != num10) ? 3 : 2)) : 0);
2043 baseOption = num11;
2044 break;
2045 }
2046 case 19:
2047 {
2048 int num6 = tileCache.frameY / 18;
2049 baseOption = 0;
2050 if (num6 == 48)
2051 {
2052 baseOption = 1;
2053 }
2054 break;
2055 }
2056 case 15:
2057 {
2058 int num13 = tileCache.frameY / 40;
2059 baseOption = 0;
2060 if (num13 == 1 || num13 == 20)
2061 {
2062 baseOption = 1;
2063 }
2064 break;
2065 }
2066 case 518:
2067 case 519:
2068 baseOption = tileCache.frameY / 18;
2069 break;
2070 case 4:
2071 if (tileCache.frameX < 66)
2072 {
2073 baseOption = 1;
2074 }
2075 baseOption = 0;
2076 break;
2077 case 572:
2078 baseOption = tileCache.frameY / 36;
2079 break;
2080 case 21:
2081 case 441:
2082 switch (tileCache.frameX / 36)
2083 {
2084 case 1:
2085 case 2:
2086 case 10:
2087 case 13:
2088 case 15:
2089 baseOption = 1;
2090 break;
2091 case 3:
2092 case 4:
2093 baseOption = 2;
2094 break;
2095 case 6:
2096 baseOption = 3;
2097 break;
2098 case 11:
2099 case 17:
2100 baseOption = 4;
2101 break;
2102 default:
2103 baseOption = 0;
2104 break;
2105 }
2106 break;
2107 case 467:
2108 case 468:
2109 {
2110 int num = tileCache.frameX / 36;
2111 switch (num)
2112 {
2113 case 0:
2114 case 1:
2115 case 2:
2116 case 3:
2117 case 4:
2118 case 5:
2119 case 6:
2120 case 7:
2121 case 8:
2122 case 9:
2123 case 10:
2124 case 11:
2125 baseOption = num;
2126 break;
2127 case 12:
2128 case 13:
2129 baseOption = 10;
2130 break;
2131 case 14:
2132 baseOption = 0;
2133 break;
2134 case 15:
2135 baseOption = 10;
2136 break;
2137 case 16:
2138 baseOption = 3;
2139 break;
2140 default:
2141 baseOption = 0;
2142 break;
2143 }
2144 break;
2145 }
2146 case 560:
2147 {
2148 int num = tileCache.frameX / 36;
2149 if ((uint)num <= 2u)
2150 {
2151 baseOption = num;
2152 }
2153 else
2154 {
2155 baseOption = 0;
2156 }
2157 break;
2158 }
2159 case 28:
2160 case 653:
2161 if (tileCache.frameY < 144)
2162 {
2163 baseOption = 0;
2164 }
2165 else if (tileCache.frameY < 252)
2166 {
2167 baseOption = 1;
2168 }
2169 else if (tileCache.frameY < 360 || (tileCache.frameY > 900 && tileCache.frameY < 1008))
2170 {
2171 baseOption = 2;
2172 }
2173 else if (tileCache.frameY < 468)
2174 {
2175 baseOption = 3;
2176 }
2177 else if (tileCache.frameY < 576)
2178 {
2179 baseOption = 4;
2180 }
2181 else if (tileCache.frameY < 684)
2182 {
2183 baseOption = 5;
2184 }
2185 else if (tileCache.frameY < 792)
2186 {
2187 baseOption = 6;
2188 }
2189 else if (tileCache.frameY < 898)
2190 {
2191 baseOption = 8;
2192 }
2193 else if (tileCache.frameY < 1006)
2194 {
2195 baseOption = 7;
2196 }
2197 else if (tileCache.frameY < 1114)
2198 {
2199 baseOption = 0;
2200 }
2201 else if (tileCache.frameY < 1222)
2202 {
2203 baseOption = 3;
2204 }
2205 else
2206 {
2207 baseOption = 7;
2208 }
2209 break;
2210 case 27:
2211 if (tileCache.frameY < 34)
2212 {
2213 baseOption = 1;
2214 }
2215 else
2216 {
2217 baseOption = 0;
2218 }
2219 break;
2220 case 31:
2221 if (tileCache.frameX >= 36)
2222 {
2223 baseOption = 1;
2224 }
2225 else
2226 {
2227 baseOption = 0;
2228 }
2229 break;
2230 case 26:
2231 if (tileCache.frameX >= 54)
2232 {
2233 baseOption = 1;
2234 }
2235 else
2236 {
2237 baseOption = 0;
2238 }
2239 break;
2240 case 137:
2241 switch (tileCache.frameY / 18)
2242 {
2243 default:
2244 baseOption = 0;
2245 break;
2246 case 1:
2247 case 2:
2248 case 3:
2249 case 4:
2250 baseOption = 1;
2251 break;
2252 case 5:
2253 baseOption = 2;
2254 break;
2255 }
2256 break;
2257 case 82:
2258 case 83:
2259 case 84:
2260 if (tileCache.frameX < 18)
2261 {
2262 baseOption = 0;
2263 }
2264 else if (tileCache.frameX < 36)
2265 {
2266 baseOption = 1;
2267 }
2268 else if (tileCache.frameX < 54)
2269 {
2270 baseOption = 2;
2271 }
2272 else if (tileCache.frameX < 72)
2273 {
2274 baseOption = 3;
2275 }
2276 else if (tileCache.frameX < 90)
2277 {
2278 baseOption = 4;
2279 }
2280 else if (tileCache.frameX < 108)
2281 {
2282 baseOption = 5;
2283 }
2284 else
2285 {
2286 baseOption = 6;
2287 }
2288 break;
2289 case 591:
2290 baseOption = tileCache.frameX / 36;
2291 break;
2292 case 105:
2293 if (tileCache.frameX >= 1548 && tileCache.frameX <= 1654)
2294 {
2295 baseOption = 1;
2296 }
2297 else if (tileCache.frameX >= 1656 && tileCache.frameX <= 1798)
2298 {
2299 baseOption = 2;
2300 }
2301 else
2302 {
2303 baseOption = 0;
2304 }
2305 break;
2306 case 133:
2307 if (tileCache.frameX < 52)
2308 {
2309 baseOption = 0;
2310 }
2311 else
2312 {
2313 baseOption = 1;
2314 }
2315 break;
2316 case 134:
2317 if (tileCache.frameX < 28)
2318 {
2319 baseOption = 0;
2320 }
2321 else
2322 {
2323 baseOption = 1;
2324 }
2325 break;
2326 case 149:
2327 baseOption = y % 3;
2328 break;
2329 case 165:
2330 if (tileCache.frameX < 54)
2331 {
2332 baseOption = 0;
2333 }
2334 else if (tileCache.frameX < 106)
2335 {
2336 baseOption = 1;
2337 }
2338 else if (tileCache.frameX >= 216)
2339 {
2340 baseOption = 1;
2341 }
2342 else if (tileCache.frameX < 162)
2343 {
2344 baseOption = 2;
2345 }
2346 else
2347 {
2348 baseOption = 3;
2349 }
2350 break;
2351 case 178:
2352 if (tileCache.frameX < 18)
2353 {
2354 baseOption = 0;
2355 }
2356 else if (tileCache.frameX < 36)
2357 {
2358 baseOption = 1;
2359 }
2360 else if (tileCache.frameX < 54)
2361 {
2362 baseOption = 2;
2363 }
2364 else if (tileCache.frameX < 72)
2365 {
2366 baseOption = 3;
2367 }
2368 else if (tileCache.frameX < 90)
2369 {
2370 baseOption = 4;
2371 }
2372 else if (tileCache.frameX < 108)
2373 {
2374 baseOption = 5;
2375 }
2376 else
2377 {
2378 baseOption = 6;
2379 }
2380 break;
2381 case 184:
2382 if (tileCache.frameX < 22)
2383 {
2384 baseOption = 0;
2385 }
2386 else if (tileCache.frameX < 44)
2387 {
2388 baseOption = 1;
2389 }
2390 else if (tileCache.frameX < 66)
2391 {
2392 baseOption = 2;
2393 }
2394 else if (tileCache.frameX < 88)
2395 {
2396 baseOption = 3;
2397 }
2398 else if (tileCache.frameX < 110)
2399 {
2400 baseOption = 4;
2401 }
2402 else if (tileCache.frameX < 132)
2403 {
2404 baseOption = 5;
2405 }
2406 else if (tileCache.frameX < 154)
2407 {
2408 baseOption = 6;
2409 }
2410 else if (tileCache.frameX < 176)
2411 {
2412 baseOption = 7;
2413 }
2414 else if (tileCache.frameX < 198)
2415 {
2416 baseOption = 8;
2417 }
2418 else if (tileCache.frameX < 220)
2419 {
2420 baseOption = 9;
2421 }
2422 else if (tileCache.frameX < 242)
2423 {
2424 baseOption = 10;
2425 }
2426 break;
2427 case 650:
2428 {
2429 int num = tileCache.frameX / 36;
2430 int num12 = tileCache.frameY / 18 - 1;
2431 num += num12 * 18;
2432 if (num < 6 || num == 19 || num == 20 || num == 21 || num == 22 || num == 23 || num == 24 || num == 33 || num == 38 || num == 39 || num == 40)
2433 {
2434 baseOption = 0;
2435 }
2436 else if (num < 16)
2437 {
2438 baseOption = 2;
2439 }
2440 else if (num < 19 || num == 31 || num == 32)
2441 {
2442 baseOption = 1;
2443 }
2444 else if (num < 31)
2445 {
2446 baseOption = 3;
2447 }
2448 else if (num < 38)
2449 {
2450 baseOption = 4;
2451 }
2452 else if (num < 59)
2453 {
2454 baseOption = 0;
2455 }
2456 else if (num < 62)
2457 {
2458 baseOption = 1;
2459 }
2460 break;
2461 }
2462 case 649:
2463 {
2464 int num = tileCache.frameX / 18;
2465 if (num < 6 || num == 28 || num == 29 || num == 30 || num == 31 || num == 32)
2466 {
2467 baseOption = 0;
2468 }
2469 else if (num < 12 || num == 33 || num == 34 || num == 35)
2470 {
2471 baseOption = 1;
2472 }
2473 else if (num < 28)
2474 {
2475 baseOption = 2;
2476 }
2477 else if (num < 48)
2478 {
2479 baseOption = 3;
2480 }
2481 else if (num < 54)
2482 {
2483 baseOption = 4;
2484 }
2485 else if (num < 72)
2486 {
2487 baseOption = 0;
2488 }
2489 else if (num == 72)
2490 {
2491 baseOption = 1;
2492 }
2493 break;
2494 }
2495 case 185:
2496 {
2497 int num;
2498 if (tileCache.frameY < 18)
2499 {
2500 num = tileCache.frameX / 18;
2501 if (num < 6 || num == 28 || num == 29 || num == 30 || num == 31 || num == 32)
2502 {
2503 baseOption = 0;
2504 }
2505 else if (num < 12 || num == 33 || num == 34 || num == 35)
2506 {
2507 baseOption = 1;
2508 }
2509 else if (num < 28)
2510 {
2511 baseOption = 2;
2512 }
2513 else if (num < 48)
2514 {
2515 baseOption = 3;
2516 }
2517 else if (num < 54)
2518 {
2519 baseOption = 4;
2520 }
2521 else if (num < 72)
2522 {
2523 baseOption = 0;
2524 }
2525 else if (num == 72)
2526 {
2527 baseOption = 1;
2528 }
2529 break;
2530 }
2531 num = tileCache.frameX / 36;
2532 int num7 = tileCache.frameY / 18 - 1;
2533 num += num7 * 18;
2534 if (num < 6 || num == 19 || num == 20 || num == 21 || num == 22 || num == 23 || num == 24 || num == 33 || num == 38 || num == 39 || num == 40)
2535 {
2536 baseOption = 0;
2537 }
2538 else if (num < 16)
2539 {
2540 baseOption = 2;
2541 }
2542 else if (num < 19 || num == 31 || num == 32)
2543 {
2544 baseOption = 1;
2545 }
2546 else if (num < 31)
2547 {
2548 baseOption = 3;
2549 }
2550 else if (num < 38)
2551 {
2552 baseOption = 4;
2553 }
2554 else if (num < 59)
2555 {
2556 baseOption = 0;
2557 }
2558 else if (num < 62)
2559 {
2560 baseOption = 1;
2561 }
2562 break;
2563 }
2564 case 186:
2565 case 647:
2566 {
2567 int num = tileCache.frameX / 54;
2568 if (num < 7)
2569 {
2570 baseOption = 2;
2571 }
2572 else if (num < 22 || num == 33 || num == 34 || num == 35)
2573 {
2574 baseOption = 0;
2575 }
2576 else if (num < 25)
2577 {
2578 baseOption = 1;
2579 }
2580 else if (num == 25)
2581 {
2582 baseOption = 5;
2583 }
2584 else if (num < 32)
2585 {
2586 baseOption = 3;
2587 }
2588 break;
2589 }
2590 case 187:
2591 case 648:
2592 {
2593 int num = tileCache.frameX / 54;
2594 int num5 = tileCache.frameY / 36;
2595 num += num5 * 36;
2596 if (num < 3 || num == 14 || num == 15 || num == 16)
2597 {
2598 baseOption = 0;
2599 }
2600 else if (num < 6)
2601 {
2602 baseOption = 6;
2603 }
2604 else if (num < 9)
2605 {
2606 baseOption = 7;
2607 }
2608 else if (num < 14)
2609 {
2610 baseOption = 4;
2611 }
2612 else if (num < 18)
2613 {
2614 baseOption = 4;
2615 }
2616 else if (num < 23)
2617 {
2618 baseOption = 8;
2619 }
2620 else if (num < 25)
2621 {
2622 baseOption = 0;
2623 }
2624 else if (num < 29)
2625 {
2626 baseOption = 1;
2627 }
2628 else if (num < 47)
2629 {
2630 baseOption = 0;
2631 }
2632 else if (num < 50)
2633 {
2634 baseOption = 1;
2635 }
2636 else if (num < 52)
2637 {
2638 baseOption = 10;
2639 }
2640 else if (num < 55)
2641 {
2642 baseOption = 2;
2643 }
2644 break;
2645 }
2646 case 227:
2647 baseOption = tileCache.frameX / 34;
2648 break;
2649 case 129:
2650 if (tileCache.frameX >= 324)
2651 {
2652 baseOption = 1;
2653 }
2654 else
2655 {
2656 baseOption = 0;
2657 }
2658 break;
2659 case 240:
2660 {
2661 int num = tileCache.frameX / 54;
2662 int num14 = tileCache.frameY / 54;
2663 num += num14 * 36;
2664 if ((num < 0 || num > 11) && (num < 47 || num > 53))
2665 {
2666 switch (num)
2667 {
2668 case 72:
2669 case 73:
2670 case 75:
2671 break;
2672 case 12:
2673 case 13:
2674 case 14:
2675 case 15:
2676 baseOption = 1;
2677 return;
2678 default:
2679 switch (num)
2680 {
2681 case 16:
2682 case 17:
2683 baseOption = 2;
2684 break;
2685 default:
2686 if (num < 63 || num > 71)
2687 {
2688 switch (num)
2689 {
2690 case 74:
2691 case 76:
2692 case 77:
2693 case 78:
2694 case 79:
2695 case 80:
2696 case 81:
2697 case 82:
2698 case 83:
2699 case 84:
2700 case 85:
2701 case 86:
2702 case 87:
2703 case 88:
2704 case 89:
2705 case 90:
2706 case 91:
2707 case 92:
2708 break;
2709 default:
2710 if (num >= 41 && num <= 45)
2711 {
2712 baseOption = 3;
2713 }
2714 else if (num == 46)
2715 {
2716 baseOption = 4;
2717 }
2718 return;
2719 }
2720 }
2721 goto case 18;
2722 case 18:
2723 case 19:
2724 case 20:
2725 case 21:
2726 case 22:
2727 case 23:
2728 case 24:
2729 case 25:
2730 case 26:
2731 case 27:
2732 case 28:
2733 case 29:
2734 case 30:
2735 case 31:
2736 case 32:
2737 case 33:
2738 case 34:
2739 case 35:
2740 baseOption = 1;
2741 break;
2742 }
2743 return;
2744 }
2745 }
2746 baseOption = 0;
2747 break;
2748 }
2749 case 242:
2750 {
2751 int num = tileCache.frameY / 72;
2752 if (tileCache.frameX / 106 == 0 && num >= 22 && num <= 24)
2753 {
2754 baseOption = 1;
2755 }
2756 else
2757 {
2758 baseOption = 0;
2759 }
2760 break;
2761 }
2762 case 440:
2763 {
2764 int num = tileCache.frameX / 54;
2765 if (num > 6)
2766 {
2767 num = 6;
2768 }
2769 baseOption = num;
2770 break;
2771 }
2772 case 457:
2773 {
2774 int num = tileCache.frameX / 36;
2775 if (num > 4)
2776 {
2777 num = 4;
2778 }
2779 baseOption = num;
2780 break;
2781 }
2782 case 453:
2783 {
2784 int num = tileCache.frameX / 36;
2785 if (num > 2)
2786 {
2787 num = 2;
2788 }
2789 baseOption = num;
2790 break;
2791 }
2792 case 419:
2793 {
2794 int num = tileCache.frameX / 18;
2795 if (num > 2)
2796 {
2797 num = 2;
2798 }
2799 baseOption = num;
2800 break;
2801 }
2802 case 428:
2803 {
2804 int num = tileCache.frameY / 18;
2805 if (num > 3)
2806 {
2807 num = 3;
2808 }
2809 baseOption = num;
2810 break;
2811 }
2812 case 420:
2813 {
2814 int num = tileCache.frameY / 18;
2815 if (num > 5)
2816 {
2817 num = 5;
2818 }
2819 baseOption = num;
2820 break;
2821 }
2822 case 423:
2823 {
2824 int num = tileCache.frameY / 18;
2825 if (num > 6)
2826 {
2827 num = 6;
2828 }
2829 baseOption = num;
2830 break;
2831 }
2832 case 493:
2833 if (tileCache.frameX < 18)
2834 {
2835 baseOption = 0;
2836 }
2837 else if (tileCache.frameX < 36)
2838 {
2839 baseOption = 1;
2840 }
2841 else if (tileCache.frameX < 54)
2842 {
2843 baseOption = 2;
2844 }
2845 else if (tileCache.frameX < 72)
2846 {
2847 baseOption = 3;
2848 }
2849 else if (tileCache.frameX < 90)
2850 {
2851 baseOption = 4;
2852 }
2853 else
2854 {
2855 baseOption = 5;
2856 }
2857 break;
2858 case 548:
2859 if (tileCache.frameX / 54 < 7)
2860 {
2861 baseOption = 0;
2862 }
2863 else
2864 {
2865 baseOption = 1;
2866 }
2867 break;
2868 case 597:
2869 {
2870 int num = tileCache.frameX / 54;
2871 if ((uint)num <= 8u)
2872 {
2873 baseOption = num;
2874 }
2875 else
2876 {
2877 baseOption = 0;
2878 }
2879 break;
2880 }
2881 default:
2882 baseOption = 0;
2883 break;
2884 }
2885 }
2886
2887 public static void SaveMap()
2888 {
2889 if ((Main.ActivePlayerFileData.IsCloudSave && SocialAPI.Cloud == null) || !Main.mapEnabled || !Monitor.TryEnter(IOLock))
2890 {
2891 return;
2892 }
2893 try
2894 {
2896 }
2897 catch (Exception value)
2898 {
2899 using StreamWriter streamWriter = new StreamWriter("client-crashlog.txt", append: true);
2900 streamWriter.WriteLine(DateTime.Now);
2901 streamWriter.WriteLine(value);
2902 streamWriter.WriteLine("");
2903 }
2904 finally
2905 {
2907 }
2908 }
2909
2910 private static void InternalSaveMap()
2911 {
2912 //IL_00ac: Unknown result type (might be due to invalid IL or missing references)
2913 //IL_00b3: Expected O, but got Unknown
2914 bool isCloudSave = Main.ActivePlayerFileData.IsCloudSave;
2915 string text = Main.playerPathName.Substring(0, Main.playerPathName.Length - 4);
2916 if (!isCloudSave)
2917 {
2919 }
2921 text = ((!Main.ActiveWorldFileData.UseGuidAsMapName) ? (text + Main.worldID + ".map") : string.Concat(text, Main.ActiveWorldFileData.UniqueId, ".map"));
2922 new Stopwatch().Start();
2923 if (!Main.gameMenu)
2924 {
2925 noStatusText = true;
2926 }
2927 using (MemoryStream memoryStream = new MemoryStream(4000))
2928 {
2929 using BinaryWriter binaryWriter = new BinaryWriter(memoryStream);
2930 DeflateStream val = new DeflateStream((Stream)memoryStream, (CompressionMode)0);
2931 try
2932 {
2933 int num = 0;
2934 byte[] array = new byte[16384];
2935 binaryWriter.Write(279);
2936 Main.MapFileMetadata.IncrementAndWrite(binaryWriter);
2937 binaryWriter.Write(Main.worldName);
2938 binaryWriter.Write(Main.worldID);
2939 binaryWriter.Write(Main.maxTilesY);
2940 binaryWriter.Write(Main.maxTilesX);
2941 binaryWriter.Write((short)TileID.Count);
2942 binaryWriter.Write((short)WallID.Count);
2943 binaryWriter.Write((short)4);
2944 binaryWriter.Write((short)256);
2945 binaryWriter.Write((short)256);
2946 binaryWriter.Write((short)256);
2947 byte b = 1;
2948 byte b2 = 0;
2949 int i;
2950 for (i = 0; i < TileID.Count; i++)
2951 {
2952 if (tileOptionCounts[i] != 1)
2953 {
2954 b2 |= b;
2955 }
2956 if (b == 128)
2957 {
2958 binaryWriter.Write(b2);
2959 b2 = 0;
2960 b = 1;
2961 }
2962 else
2963 {
2964 b <<= 1;
2965 }
2966 }
2967 if (b != 1)
2968 {
2969 binaryWriter.Write(b2);
2970 }
2971 i = 0;
2972 b = 1;
2973 b2 = 0;
2974 for (; i < WallID.Count; i++)
2975 {
2976 if (wallOptionCounts[i] != 1)
2977 {
2978 b2 |= b;
2979 }
2980 if (b == 128)
2981 {
2982 binaryWriter.Write(b2);
2983 b2 = 0;
2984 b = 1;
2985 }
2986 else
2987 {
2988 b <<= 1;
2989 }
2990 }
2991 if (b != 1)
2992 {
2993 binaryWriter.Write(b2);
2994 }
2995 for (i = 0; i < TileID.Count; i++)
2996 {
2997 if (tileOptionCounts[i] != 1)
2998 {
2999 binaryWriter.Write((byte)tileOptionCounts[i]);
3000 }
3001 }
3002 for (i = 0; i < WallID.Count; i++)
3003 {
3004 if (wallOptionCounts[i] != 1)
3005 {
3006 binaryWriter.Write((byte)wallOptionCounts[i]);
3007 }
3008 }
3009 binaryWriter.Flush();
3010 for (int j = 0; j < Main.maxTilesY; j++)
3011 {
3012 if (!noStatusText)
3013 {
3014 float num2 = (float)j / (float)Main.maxTilesY;
3015 Main.statusText = Lang.gen[66].Value + " " + (int)(num2 * 100f + 1f) + "%";
3016 }
3017 int num3;
3018 for (num3 = 0; num3 < Main.maxTilesX; num3++)
3019 {
3020 MapTile mapTile = Main.Map[num3, j];
3021 byte b4;
3022 byte b3;
3023 byte b5 = (b4 = (b3 = 0));
3024 int num4 = 0;
3025 bool flag = true;
3026 bool flag2 = true;
3027 int num5 = 0;
3028 int num6 = 0;
3029 byte b6 = 0;
3030 int num7;
3031 ushort num8;
3032 if (mapTile.Light <= 18)
3033 {
3034 flag2 = false;
3035 flag = false;
3036 num7 = 0;
3037 num8 = 0;
3038 num4 = 0;
3039 int num9 = num3 + 1;
3040 int num10 = Main.maxTilesX - num3 - 1;
3041 while (num10 > 0 && Main.Map[num9, j].Light <= 18)
3042 {
3043 num4++;
3044 num10--;
3045 num9++;
3046 }
3047 }
3048 else
3049 {
3050 b6 = mapTile.Color;
3051 num8 = mapTile.Type;
3052 if (num8 < wallPosition)
3053 {
3054 num7 = 1;
3055 num8 -= tilePosition;
3056 }
3057 else if (num8 < liquidPosition)
3058 {
3059 num7 = 2;
3060 num8 -= wallPosition;
3061 }
3062 else if (num8 < skyPosition)
3063 {
3064 int num11 = num8 - liquidPosition;
3065 if (num11 == 3)
3066 {
3067 b4 = (byte)(b4 | 0x40u);
3068 num11 = 0;
3069 }
3070 num7 = 3 + num11;
3071 flag = false;
3072 }
3073 else if (num8 < dirtPosition)
3074 {
3075 num7 = 6;
3076 flag2 = false;
3077 flag = false;
3078 }
3079 else if (num8 < hellPosition)
3080 {
3081 num7 = 7;
3082 num8 = ((num8 >= rockPosition) ? ((ushort)(num8 - rockPosition)) : ((ushort)(num8 - dirtPosition)));
3083 }
3084 else
3085 {
3086 num7 = 6;
3087 flag = false;
3088 }
3089 if (mapTile.Light == byte.MaxValue)
3090 {
3091 flag2 = false;
3092 }
3093 if (flag2)
3094 {
3095 num4 = 0;
3096 int num9 = num3 + 1;
3097 int num10 = Main.maxTilesX - num3 - 1;
3098 num5 = num9;
3099 while (num10 > 0)
3100 {
3101 MapTile other = Main.Map[num9, j];
3102 if (mapTile.EqualsWithoutLight(ref other))
3103 {
3104 num10--;
3105 num4++;
3106 num9++;
3107 continue;
3108 }
3109 num6 = num9;
3110 break;
3111 }
3112 }
3113 else
3114 {
3115 num4 = 0;
3116 int num9 = num3 + 1;
3117 int num10 = Main.maxTilesX - num3 - 1;
3118 while (num10 > 0)
3119 {
3120 MapTile other2 = Main.Map[num9, j];
3121 if (!mapTile.Equals(ref other2))
3122 {
3123 break;
3124 }
3125 num10--;
3126 num4++;
3127 num9++;
3128 }
3129 }
3130 }
3131 if (b6 > 0)
3132 {
3133 b4 |= (byte)(b6 << 1);
3134 }
3135 if (b3 != 0)
3136 {
3137 b4 = (byte)(b4 | 1u);
3138 }
3139 if (b4 != 0)
3140 {
3141 b5 = (byte)(b5 | 1u);
3142 }
3143 b5 |= (byte)(num7 << 1);
3144 if (flag && num8 > 255)
3145 {
3146 b5 = (byte)(b5 | 0x10u);
3147 }
3148 if (flag2)
3149 {
3150 b5 = (byte)(b5 | 0x20u);
3151 }
3152 if (num4 > 0)
3153 {
3154 b5 = ((num4 <= 255) ? ((byte)(b5 | 0x40u)) : ((byte)(b5 | 0x80u)));
3155 }
3156 array[num] = b5;
3157 num++;
3158 if (b4 != 0)
3159 {
3160 array[num] = b4;
3161 num++;
3162 }
3163 if (b3 != 0)
3164 {
3165 array[num] = b3;
3166 num++;
3167 }
3168 if (flag)
3169 {
3170 array[num] = (byte)num8;
3171 num++;
3172 if (num8 > 255)
3173 {
3174 array[num] = (byte)(num8 >> 8);
3175 num++;
3176 }
3177 }
3178 if (flag2)
3179 {
3180 array[num] = mapTile.Light;
3181 num++;
3182 }
3183 if (num4 > 0)
3184 {
3185 array[num] = (byte)num4;
3186 num++;
3187 if (num4 > 255)
3188 {
3189 array[num] = (byte)(num4 >> 8);
3190 num++;
3191 }
3192 }
3193 for (int k = num5; k < num6; k++)
3194 {
3195 array[num] = Main.Map[k, j].Light;
3196 num++;
3197 }
3198 num3 += num4;
3199 if (num >= 4096)
3200 {
3201 ((Stream)(object)val).Write(array, 0, num);
3202 num = 0;
3203 }
3204 }
3205 }
3206 if (num > 0)
3207 {
3208 ((Stream)(object)val).Write(array, 0, num);
3209 }
3210 ((Stream)(object)val).Dispose();
3211 FileUtilities.WriteAllBytes(text, memoryStream.ToArray(), isCloudSave);
3212 }
3213 finally
3214 {
3215 ((IDisposable)val)?.Dispose();
3216 }
3217 }
3218 noStatusText = false;
3219 }
3220
3221 public static void LoadMapVersion1(BinaryReader fileIO, int release)
3222 {
3223 string text = fileIO.ReadString();
3224 int num = fileIO.ReadInt32();
3225 int num2 = fileIO.ReadInt32();
3226 int num3 = fileIO.ReadInt32();
3227 if (text != Main.worldName || num != Main.worldID || num3 != Main.maxTilesX || num2 != Main.maxTilesY)
3228 {
3229 throw new Exception("Map meta-data is invalid.");
3230 }
3231 OldMapHelper oldMapHelper = default(OldMapHelper);
3232 for (int i = 0; i < Main.maxTilesX; i++)
3233 {
3234 float num4 = (float)i / (float)Main.maxTilesX;
3235 Main.statusText = Lang.gen[67].Value + " " + (int)(num4 * 100f + 1f) + "%";
3236 for (int j = 0; j < Main.maxTilesY; j++)
3237 {
3238 if (fileIO.ReadBoolean())
3239 {
3240 int num5 = ((release <= 77) ? fileIO.ReadByte() : fileIO.ReadUInt16());
3241 byte b = fileIO.ReadByte();
3242 oldMapHelper.misc = fileIO.ReadByte();
3243 if (release >= 50)
3244 {
3245 oldMapHelper.misc2 = fileIO.ReadByte();
3246 }
3247 else
3248 {
3249 oldMapHelper.misc2 = 0;
3250 }
3251 bool flag = false;
3252 int num6 = oldMapHelper.option();
3253 int num7;
3254 if (oldMapHelper.active())
3255 {
3256 num7 = num6 + tileLookup[num5];
3257 }
3258 else if (oldMapHelper.water())
3259 {
3260 num7 = liquidPosition;
3261 }
3262 else if (oldMapHelper.lava())
3263 {
3264 num7 = liquidPosition + 1;
3265 }
3266 else if (oldMapHelper.honey())
3267 {
3268 num7 = liquidPosition + 2;
3269 }
3270 else if (oldMapHelper.wall())
3271 {
3272 num7 = num6 + wallLookup[num5];
3273 }
3274 else if ((double)j < Main.worldSurface)
3275 {
3276 flag = true;
3277 int num8 = (byte)(256.0 * ((double)j / Main.worldSurface));
3278 num7 = skyPosition + num8;
3279 }
3280 else if ((double)j < Main.rockLayer)
3281 {
3282 flag = true;
3283 if (num5 > 255)
3284 {
3285 num5 = 255;
3286 }
3287 num7 = num5 + dirtPosition;
3288 }
3289 else if (j < Main.UnderworldLayer)
3290 {
3291 flag = true;
3292 if (num5 > 255)
3293 {
3294 num5 = 255;
3295 }
3296 num7 = num5 + rockPosition;
3297 }
3298 else
3299 {
3300 num7 = hellPosition;
3301 }
3302 MapTile tile = MapTile.Create((ushort)num7, b, 0);
3303 Main.Map.SetTile(i, j, ref tile);
3304 int num9 = fileIO.ReadInt16();
3305 if (b == byte.MaxValue)
3306 {
3307 while (num9 > 0)
3308 {
3309 num9--;
3310 j++;
3311 if (flag)
3312 {
3313 if ((double)j < Main.worldSurface)
3314 {
3315 flag = true;
3316 int num10 = (byte)(256.0 * ((double)j / Main.worldSurface));
3317 num7 = skyPosition + num10;
3318 }
3319 else if ((double)j < Main.rockLayer)
3320 {
3321 flag = true;
3322 num7 = num5 + dirtPosition;
3323 }
3324 else if (j < Main.UnderworldLayer)
3325 {
3326 flag = true;
3327 num7 = num5 + rockPosition;
3328 }
3329 else
3330 {
3331 flag = true;
3332 num7 = hellPosition;
3333 }
3334 tile.Type = (ushort)num7;
3335 }
3336 Main.Map.SetTile(i, j, ref tile);
3337 }
3338 continue;
3339 }
3340 while (num9 > 0)
3341 {
3342 j++;
3343 num9--;
3344 b = fileIO.ReadByte();
3345 if (b <= 18)
3346 {
3347 continue;
3348 }
3349 tile.Light = b;
3350 if (flag)
3351 {
3352 if ((double)j < Main.worldSurface)
3353 {
3354 flag = true;
3355 int num11 = (byte)(256.0 * ((double)j / Main.worldSurface));
3356 num7 = skyPosition + num11;
3357 }
3358 else if ((double)j < Main.rockLayer)
3359 {
3360 flag = true;
3361 num7 = num5 + dirtPosition;
3362 }
3363 else if (j < Main.UnderworldLayer)
3364 {
3365 flag = true;
3366 num7 = num5 + rockPosition;
3367 }
3368 else
3369 {
3370 flag = true;
3371 num7 = hellPosition;
3372 }
3373 tile.Type = (ushort)num7;
3374 }
3375 Main.Map.SetTile(i, j, ref tile);
3376 }
3377 }
3378 else
3379 {
3380 int num12 = fileIO.ReadInt16();
3381 j += num12;
3382 }
3383 }
3384 }
3385 }
3386
3387 public static void LoadMapVersion2(BinaryReader fileIO, int release)
3388 {
3389 //IL_0388: Unknown result type (might be due to invalid IL or missing references)
3390 //IL_0392: Expected O, but got Unknown
3391 if (release >= 135)
3392 {
3393 Main.MapFileMetadata = FileMetadata.Read(fileIO, FileType.Map);
3394 }
3395 else
3396 {
3397 Main.MapFileMetadata = FileMetadata.FromCurrentSettings(FileType.Map);
3398 }
3399 fileIO.ReadString();
3400 int num = fileIO.ReadInt32();
3401 int num2 = fileIO.ReadInt32();
3402 int num3 = fileIO.ReadInt32();
3403 if (num != Main.worldID || num3 != Main.maxTilesX || num2 != Main.maxTilesY)
3404 {
3405 throw new Exception("Map meta-data is invalid.");
3406 }
3407 short num4 = fileIO.ReadInt16();
3408 short num5 = fileIO.ReadInt16();
3409 short num6 = fileIO.ReadInt16();
3410 short num7 = fileIO.ReadInt16();
3411 short num8 = fileIO.ReadInt16();
3412 short num9 = fileIO.ReadInt16();
3413 bool[] array = new bool[num4];
3414 byte b = 0;
3415 byte b2 = 128;
3416 for (int i = 0; i < num4; i++)
3417 {
3418 if (b2 == 128)
3419 {
3420 b = fileIO.ReadByte();
3421 b2 = 1;
3422 }
3423 else
3424 {
3425 b2 <<= 1;
3426 }
3427 if ((b & b2) == b2)
3428 {
3429 array[i] = true;
3430 }
3431 }
3432 bool[] array2 = new bool[num5];
3433 b = 0;
3434 b2 = 128;
3435 for (int i = 0; i < num5; i++)
3436 {
3437 if (b2 == 128)
3438 {
3439 b = fileIO.ReadByte();
3440 b2 = 1;
3441 }
3442 else
3443 {
3444 b2 <<= 1;
3445 }
3446 if ((b & b2) == b2)
3447 {
3448 array2[i] = true;
3449 }
3450 }
3451 byte[] array3 = new byte[num4];
3452 ushort num10 = 0;
3453 for (int i = 0; i < num4; i++)
3454 {
3455 if (array[i])
3456 {
3457 array3[i] = fileIO.ReadByte();
3458 }
3459 else
3460 {
3461 array3[i] = 1;
3462 }
3463 num10 += array3[i];
3464 }
3465 byte[] array4 = new byte[num5];
3466 ushort num11 = 0;
3467 for (int i = 0; i < num5; i++)
3468 {
3469 if (array2[i])
3470 {
3471 array4[i] = fileIO.ReadByte();
3472 }
3473 else
3474 {
3475 array4[i] = 1;
3476 }
3477 num11 += array4[i];
3478 }
3479 ushort[] array5 = new ushort[num10 + num11 + num6 + num7 + num8 + num9 + 2];
3480 array5[0] = 0;
3481 ushort num12 = 1;
3482 ushort num13 = 1;
3483 ushort num14 = num13;
3484 for (int i = 0; i < TileID.Count; i++)
3485 {
3486 if (i < num4)
3487 {
3488 int num15 = array3[i];
3489 int num16 = tileOptionCounts[i];
3490 for (int j = 0; j < num16; j++)
3491 {
3492 if (j < num15)
3493 {
3494 array5[num13] = num12;
3495 num13++;
3496 }
3497 num12++;
3498 }
3499 }
3500 else
3501 {
3502 num12 += (ushort)tileOptionCounts[i];
3503 }
3504 }
3505 ushort num17 = num13;
3506 for (int i = 0; i < WallID.Count; i++)
3507 {
3508 if (i < num5)
3509 {
3510 int num18 = array4[i];
3511 int num19 = wallOptionCounts[i];
3512 for (int k = 0; k < num19; k++)
3513 {
3514 if (k < num18)
3515 {
3516 array5[num13] = num12;
3517 num13++;
3518 }
3519 num12++;
3520 }
3521 }
3522 else
3523 {
3524 num12 += (ushort)wallOptionCounts[i];
3525 }
3526 }
3527 ushort num20 = num13;
3528 for (int i = 0; i < 4; i++)
3529 {
3530 if (i < num6)
3531 {
3532 array5[num13] = num12;
3533 num13++;
3534 }
3535 num12++;
3536 }
3537 ushort num21 = num13;
3538 for (int i = 0; i < 256; i++)
3539 {
3540 if (i < num7)
3541 {
3542 array5[num13] = num12;
3543 num13++;
3544 }
3545 num12++;
3546 }
3547 ushort num22 = num13;
3548 for (int i = 0; i < 256; i++)
3549 {
3550 if (i < num8)
3551 {
3552 array5[num13] = num12;
3553 num13++;
3554 }
3555 num12++;
3556 }
3557 ushort num23 = num13;
3558 for (int i = 0; i < 256; i++)
3559 {
3560 if (i < num9)
3561 {
3562 array5[num13] = num12;
3563 num13++;
3564 }
3565 num12++;
3566 }
3567 ushort num24 = num13;
3568 array5[num13] = num12;
3569 BinaryReader binaryReader = ((release < 93) ? new BinaryReader(fileIO.BaseStream) : new BinaryReader((Stream)new DeflateStream(fileIO.BaseStream, (CompressionMode)1)));
3570 for (int l = 0; l < Main.maxTilesY; l++)
3571 {
3572 float num25 = (float)l / (float)Main.maxTilesY;
3573 Main.statusText = Lang.gen[67].Value + " " + (int)(num25 * 100f + 1f) + "%";
3574 for (int m = 0; m < Main.maxTilesX; m++)
3575 {
3576 byte b3 = binaryReader.ReadByte();
3577 byte b4 = (byte)(((b3 & 1) == 1) ? binaryReader.ReadByte() : 0);
3578 if ((b4 & 1) == 1)
3579 {
3580 binaryReader.ReadByte();
3581 }
3582 byte b5 = (byte)((b3 & 0xE) >> 1);
3583 bool flag;
3584 switch (b5)
3585 {
3586 case 0:
3587 flag = false;
3588 break;
3589 case 1:
3590 case 2:
3591 case 7:
3592 flag = true;
3593 break;
3594 case 3:
3595 case 4:
3596 case 5:
3597 flag = false;
3598 break;
3599 case 6:
3600 flag = false;
3601 break;
3602 default:
3603 flag = false;
3604 break;
3605 }
3606 ushort num26 = (ushort)(flag ? (((b3 & 0x10) != 16) ? binaryReader.ReadByte() : binaryReader.ReadUInt16()) : 0);
3607 byte b6 = (((b3 & 0x20) != 32) ? byte.MaxValue : binaryReader.ReadByte());
3608 int num27 = (byte)((b3 & 0xC0) >> 6) switch
3609 {
3610 0 => 0,
3611 1 => binaryReader.ReadByte(),
3612 2 => binaryReader.ReadInt16(),
3613 _ => 0,
3614 };
3615 switch (b5)
3616 {
3617 case 0:
3618 m += num27;
3619 continue;
3620 case 1:
3621 num26 += num14;
3622 break;
3623 case 2:
3624 num26 += num17;
3625 break;
3626 case 3:
3627 case 4:
3628 case 5:
3629 {
3630 int num28 = b5 - 3;
3631 if ((b4 & 0x40) == 64)
3632 {
3633 num28 = 3;
3634 }
3635 num26 += (ushort)(num20 + num28);
3636 break;
3637 }
3638 case 6:
3639 if ((double)l < Main.worldSurface)
3640 {
3641 ushort num29 = (ushort)((double)num7 * ((double)l / Main.worldSurface));
3642 num26 += (ushort)(num21 + num29);
3643 }
3644 else
3645 {
3646 num26 = num24;
3647 }
3648 break;
3649 case 7:
3650 num26 = ((!((double)l < Main.rockLayer)) ? ((ushort)(num26 + num23)) : ((ushort)(num26 + num22)));
3651 break;
3652 }
3653 MapTile tile = MapTile.Create(array5[num26], b6, (byte)((uint)(b4 >> 1) & 0x1Fu));
3654 Main.Map.SetTile(m, l, ref tile);
3655 if (b6 == byte.MaxValue)
3656 {
3657 while (num27 > 0)
3658 {
3659 m++;
3660 Main.Map.SetTile(m, l, ref tile);
3661 num27--;
3662 }
3663 continue;
3664 }
3665 while (num27 > 0)
3666 {
3667 m++;
3668 tile = tile.WithLight(binaryReader.ReadByte());
3669 Main.Map.SetTile(m, l, ref tile);
3670 num27--;
3671 }
3672 }
3673 }
3674 binaryReader.Close();
3675 }
3676}
virtual bool ReadBoolean()
virtual byte ReadByte()
virtual string ReadString()
virtual ushort ReadUInt16()
virtual int ReadInt32()
virtual Stream BaseStream
virtual void Close()
virtual short ReadInt16()
static readonly char DirectorySeparatorChar
Definition Path.cs:71
override void WriteLine(string? value)
static void Exit(object obj)
static bool TryEnter(object obj)
Definition Monitor.cs:36
static readonly ushort Count
Definition TileID.cs:1698
static readonly ushort Count
Definition WallID.cs:753
static FileMetadata Read(BinaryReader reader, FileType expectedType)
static FileMetadata FromCurrentSettings(FileType type)
static LocalizedText[] gen
Definition Lang.cs:22
static void BuildMapAtlas()
Definition Lang.cs:565
static SceneMetrics SceneMetrics
Definition Main.cs:1344
static int maxTilesY
Definition Main.cs:1116
static FileMetadata MapFileMetadata
Definition Main.cs:363
static WorldFileData ActiveWorldFileData
Definition Main.cs:1946
static double worldSurface
Definition Main.cs:1272
static string playerPathName
Definition Main.cs:2835
static int myPlayer
Definition Main.cs:1801
static double rockLayer
Definition Main.cs:1274
static int screenHeight
Definition Main.cs:1721
static string worldName
Definition Main.cs:1260
static int maxTilesX
Definition Main.cs:1114
static Tile[,] tile
Definition Main.cs:1675
static WorldMap Map
Definition Main.cs:1673
static PlayerFileData ActivePlayerFileData
Definition Main.cs:1940
static int worldID
Definition Main.cs:1262
static bool mapEnabled
Definition Main.cs:906
static int screenWidth
Definition Main.cs:1719
static int UnderworldLayer
Definition Main.cs:2825
static bool gameMenu
Definition Main.cs:1926
static Player[] player
Definition Main.cs:1803
static bool remixWorld
Definition Main.cs:349
static ushort[] snowTypes
Definition MapHelper.cs:200
static ushort rockPosition
Definition MapHelper.cs:194
static short[] updateTileY
Definition MapHelper.cs:172
const int drawLoopMilliseconds
Definition MapHelper.cs:104
const int Header2_ReadHeader3Bit
Definition MapHelper.cs:122
static void MapColor(ushort type, ref Color oldColor, byte colorType)
static ushort dirtPosition
Definition MapHelper.cs:192
static ushort tilePosition
Definition MapHelper.cs:184
const int Header3_UnusudBit4
Definition MapHelper.cs:144
static bool noStatusText
Definition MapHelper.cs:206
static void LoadMapVersion2(BinaryReader fileIO, int release)
static Color[] colorLookup
Definition MapHelper.cs:198
const int Header3_UnusudBit3
Definition MapHelper.cs:142
const int HeaderBackground
Definition MapHelper.cs:120
static void LoadMapVersion1(BinaryReader fileIO, int release)
static MapTile CreateMapTile(int i, int j, byte Light)
const int Header3_UnusudBit5
Definition MapHelper.cs:146
const int Header2_UnusedBit8
Definition MapHelper.cs:136
const int Header3_UnusudBit2
Definition MapHelper.cs:140
static object IOLock
Definition MapHelper.cs:174
const int maxDirtGradients
Definition MapHelper.cs:162
const int Header3_UnusudBit7
Definition MapHelper.cs:150
static Color GetMapTileXnaColor(ref MapTile tile)
static int TileToLookup(int tileType, int option)
static void InternalSaveMap()
static int numUpdateTile
Definition MapHelper.cs:168
static int maxUpdateTile
Definition MapHelper.cs:166
static ushort wallPosition
Definition MapHelper.cs:186
const int Header2ShimmerBit
Definition MapHelper.cs:134
static void ResetMapData()
static ushort[] wallLookup
Definition MapHelper.cs:182
static void GetTileBaseOption(int x, int y, int tileType, Tile tileCache, ref int baseOption)
const int maxSkyGradients
Definition MapHelper.cs:160
const int maxRockGradients
Definition MapHelper.cs:164
const int HeaderHeavenAndHell
Definition MapHelper.cs:118
static ushort wallRangeEnd
Definition MapHelper.cs:204
static int[] tileOptionCounts
Definition MapHelper.cs:176
static ushort[] tileLookup
Definition MapHelper.cs:180
static void Initialize()
Definition MapHelper.cs:208
static ushort hellPosition
Definition MapHelper.cs:196
const int Header3_ReservedForHeader4Bit
Definition MapHelper.cs:138
static ushort skyPosition
Definition MapHelper.cs:190
static int LookupCount()
const int Header3_UnusudBit8
Definition MapHelper.cs:152
static ushort liquidPosition
Definition MapHelper.cs:188
const int Header3_UnusudBit6
Definition MapHelper.cs:148
static void SaveMap()
static ushort wallRangeStart
Definition MapHelper.cs:202
static short[] updateTileX
Definition MapHelper.cs:170
static int[] wallOptionCounts
Definition MapHelper.cs:178
static bool HasOption(int tileType, int option)
static Terraria.Social.Base.CloudSocialModule Cloud
Definition SocialAPI.cs:18
byte color()
Definition Tile.cs:555
void liquidType(int liquidType)
Definition Tile.cs:233
bool fullbrightWall()
Definition Tile.cs:694
bool invisibleWall()
Definition Tile.cs:521
byte liquid
Definition Tile.cs:12
bool fullbrightBlock()
Definition Tile.cs:538
short frameY
Definition Tile.cs:24
ushort type
Definition Tile.cs:8
short frameX
Definition Tile.cs:22
bool invisibleBlock()
Definition Tile.cs:504
bool active()
Definition Tile.cs:565
ushort wall
Definition Tile.cs:10
byte wallColor()
Definition Tile.cs:352
static void ProtectedInvoke(Action action)
static void WriteAllBytes(string path, byte[] data, bool cloud)
static bool TryCreatingDirectory(string folderPath)
Definition Utils.cs:754
static void GetCactusType(int tileX, int tileY, int frameX, int frameY, out bool evil, out bool good, out bool crimson)
static void GetBiomeInfluence(int startX, int endX, int startY, int endY, out int corruptCount, out int crimsonCount, out int hallowedCount)
static readonly int beachDistance
Definition WorldGen.cs:928
static bool IsThisAMushroomTree(int i, int j)
static Color paintColor(int color)
static Color Transparent
Definition Color.cs:76
static DateTime Now
Definition DateTime.cs:103
MapTile WithLight(byte light)
Definition MapTile.cs:74
bool Equals(ref MapTile other)
Definition MapTile.cs:49
static MapTile Create(ushort type, byte light, byte color)
Definition MapTile.cs:79
bool EqualsWithoutLight(ref MapTile other)
Definition MapTile.cs:58