terraria-source-code/Map/MapHelper.cs
2021-10-26 12:45:26 -04:00

2980 lines
110 KiB
C#

// Decompiled with JetBrains decompiler
// Type: Terraria.Map.MapHelper
// Assembly: Terraria, Version=1.4.0.5, Culture=neutral, PublicKeyToken=null
// MVID: 67F9E73E-0A81-4937-A22C-5515CD405A83
// Assembly location: C:\Users\mikeyisbaeyt\Downloads\depotdownloader-2.4.5\depots\105601\6707058\Terraria.exe
using Ionic.Zlib;
using Microsoft.Xna.Framework;
using System;
using System.Diagnostics;
using System.IO;
using System.Threading;
using Terraria.IO;
using Terraria.Social;
using Terraria.Utilities;
namespace Terraria.Map
{
public static class MapHelper
{
public const int drawLoopMilliseconds = 5;
private const int HeaderEmpty = 0;
private const int HeaderTile = 1;
private const int HeaderWall = 2;
private const int HeaderWater = 3;
private const int HeaderLava = 4;
private const int HeaderHoney = 5;
private const int HeaderHeavenAndHell = 6;
private const int HeaderBackground = 7;
private const int maxTileOptions = 12;
private const int maxWallOptions = 2;
private const int maxLiquidTypes = 3;
private const int maxSkyGradients = 256;
private const int maxDirtGradients = 256;
private const int maxRockGradients = 256;
public static int maxUpdateTile = 1000;
public static int numUpdateTile = 0;
public static short[] updateTileX = new short[MapHelper.maxUpdateTile];
public static short[] updateTileY = new short[MapHelper.maxUpdateTile];
private static object IOLock = new object();
public static int[] tileOptionCounts;
public static int[] wallOptionCounts;
public static ushort[] tileLookup;
public static ushort[] wallLookup;
private static ushort tilePosition;
private static ushort wallPosition;
private static ushort liquidPosition;
private static ushort skyPosition;
private static ushort dirtPosition;
private static ushort rockPosition;
private static ushort hellPosition;
private static Color[] colorLookup;
private static ushort[] snowTypes;
private static ushort wallRangeStart;
private static ushort wallRangeEnd;
public static bool noStatusText = false;
public static void Initialize()
{
Color[][] colorArray1 = new Color[623][];
for (int index = 0; index < 623; ++index)
colorArray1[index] = new Color[12];
colorArray1[621][0] = new Color(250, 250, 250);
colorArray1[622][0] = new Color(235, 235, 249);
colorArray1[518][0] = new Color(26, 196, 84);
colorArray1[518][1] = new Color(48, 208, 234);
colorArray1[518][2] = new Color(135, 196, 26);
colorArray1[519][0] = new Color(28, 216, 109);
colorArray1[519][1] = new Color(107, 182, 0);
colorArray1[519][2] = new Color(75, 184, 230);
colorArray1[519][3] = new Color(208, 80, 80);
colorArray1[519][4] = new Color(141, 137, 223);
colorArray1[519][5] = new Color(182, 175, 130);
colorArray1[549][0] = new Color(54, 83, 20);
colorArray1[528][0] = new Color(182, 175, 130);
colorArray1[529][0] = new Color(99, 150, 8);
colorArray1[529][1] = new Color(139, 154, 64);
colorArray1[529][2] = new Color(34, 129, 168);
colorArray1[529][3] = new Color(180, 82, 82);
colorArray1[529][4] = new Color(113, 108, 205);
Color color1 = new Color(151, 107, 75);
colorArray1[0][0] = color1;
colorArray1[5][0] = color1;
colorArray1[5][1] = new Color(182, 175, 130);
Color color2 = new Color((int) sbyte.MaxValue, (int) sbyte.MaxValue, (int) sbyte.MaxValue);
colorArray1[583][0] = color2;
colorArray1[584][0] = color2;
colorArray1[585][0] = color2;
colorArray1[586][0] = color2;
colorArray1[587][0] = color2;
colorArray1[588][0] = color2;
colorArray1[589][0] = color2;
colorArray1[590][0] = color2;
colorArray1[595][0] = color1;
colorArray1[596][0] = color1;
colorArray1[615][0] = color1;
colorArray1[616][0] = color1;
colorArray1[30][0] = color1;
colorArray1[191][0] = color1;
colorArray1[272][0] = new Color(121, 119, 101);
color1 = new Color(128, 128, 128);
colorArray1[1][0] = color1;
colorArray1[38][0] = color1;
colorArray1[48][0] = color1;
colorArray1[130][0] = color1;
colorArray1[138][0] = color1;
colorArray1[273][0] = color1;
colorArray1[283][0] = color1;
colorArray1[618][0] = color1;
colorArray1[2][0] = new Color(28, 216, 94);
colorArray1[477][0] = new Color(28, 216, 94);
colorArray1[492][0] = new Color(78, 193, 227);
color1 = new Color(26, 196, 84);
colorArray1[3][0] = color1;
colorArray1[192][0] = color1;
colorArray1[73][0] = new Color(27, 197, 109);
colorArray1[52][0] = new Color(23, 177, 76);
colorArray1[353][0] = new Color(28, 216, 94);
colorArray1[20][0] = new Color(163, 116, 81);
colorArray1[6][0] = new Color(140, 101, 80);
color1 = new Color(150, 67, 22);
colorArray1[7][0] = color1;
colorArray1[47][0] = color1;
colorArray1[284][0] = color1;
colorArray1[560][0] = color1;
color1 = new Color(185, 164, 23);
colorArray1[8][0] = color1;
colorArray1[45][0] = color1;
colorArray1[560][2] = color1;
color1 = new Color(185, 194, 195);
colorArray1[9][0] = color1;
colorArray1[46][0] = color1;
colorArray1[560][1] = color1;
color1 = new Color(98, 95, 167);
colorArray1[22][0] = color1;
colorArray1[140][0] = color1;
colorArray1[23][0] = new Color(141, 137, 223);
colorArray1[24][0] = new Color(122, 116, 218);
colorArray1[25][0] = new Color(109, 90, 128);
colorArray1[37][0] = new Color(104, 86, 84);
colorArray1[39][0] = new Color(181, 62, 59);
colorArray1[40][0] = new Color(146, 81, 68);
colorArray1[41][0] = new Color(66, 84, 109);
colorArray1[481][0] = new Color(66, 84, 109);
colorArray1[43][0] = new Color(84, 100, 63);
colorArray1[482][0] = new Color(84, 100, 63);
colorArray1[44][0] = new Color(107, 68, 99);
colorArray1[483][0] = new Color(107, 68, 99);
colorArray1[53][0] = new Color(186, 168, 84);
color1 = new Color(190, 171, 94);
colorArray1[151][0] = color1;
colorArray1[154][0] = color1;
colorArray1[274][0] = color1;
colorArray1[328][0] = new Color(200, 246, 254);
colorArray1[329][0] = new Color(15, 15, 15);
colorArray1[54][0] = new Color(200, 246, 254);
colorArray1[56][0] = new Color(43, 40, 84);
colorArray1[75][0] = new Color(26, 26, 26);
colorArray1[57][0] = new Color(68, 68, 76);
color1 = new Color(142, 66, 66);
colorArray1[58][0] = color1;
colorArray1[76][0] = color1;
color1 = new Color(92, 68, 73);
colorArray1[59][0] = color1;
colorArray1[120][0] = color1;
colorArray1[60][0] = new Color(143, 215, 29);
colorArray1[61][0] = new Color(135, 196, 26);
colorArray1[74][0] = new Color(96, 197, 27);
colorArray1[62][0] = new Color(121, 176, 24);
colorArray1[233][0] = new Color(107, 182, 29);
colorArray1[63][0] = new Color(110, 140, 182);
colorArray1[64][0] = new Color(196, 96, 114);
colorArray1[65][0] = new Color(56, 150, 97);
colorArray1[66][0] = new Color(160, 118, 58);
colorArray1[67][0] = new Color(140, 58, 166);
colorArray1[68][0] = new Color(125, 191, 197);
colorArray1[566][0] = new Color(233, 180, 90);
colorArray1[70][0] = new Color(93, (int) sbyte.MaxValue, (int) byte.MaxValue);
color1 = new Color(182, 175, 130);
colorArray1[71][0] = color1;
colorArray1[72][0] = color1;
colorArray1[190][0] = color1;
colorArray1[578][0] = new Color(172, 155, 110);
color1 = new Color(73, 120, 17);
colorArray1[80][0] = color1;
colorArray1[484][0] = color1;
colorArray1[188][0] = color1;
colorArray1[80][1] = new Color(87, 84, 151);
colorArray1[80][2] = new Color(34, 129, 168);
colorArray1[80][3] = new Color(130, 56, 55);
color1 = new Color(11, 80, 143);
colorArray1[107][0] = color1;
colorArray1[121][0] = color1;
color1 = new Color(91, 169, 169);
colorArray1[108][0] = color1;
colorArray1[122][0] = color1;
color1 = new Color(128, 26, 52);
colorArray1[111][0] = color1;
colorArray1[150][0] = color1;
colorArray1[109][0] = new Color(78, 193, 227);
colorArray1[110][0] = new Color(48, 186, 135);
colorArray1[113][0] = new Color(48, 208, 234);
colorArray1[115][0] = new Color(33, 171, 207);
colorArray1[112][0] = new Color(103, 98, 122);
color1 = new Color(238, 225, 218);
colorArray1[116][0] = color1;
colorArray1[118][0] = color1;
colorArray1[117][0] = new Color(181, 172, 190);
colorArray1[119][0] = new Color(107, 92, 108);
colorArray1[123][0] = new Color(106, 107, 118);
colorArray1[124][0] = new Color(73, 51, 36);
colorArray1[131][0] = new Color(52, 52, 52);
colorArray1[145][0] = new Color(192, 30, 30);
colorArray1[146][0] = new Color(43, 192, 30);
color1 = new Color(211, 236, 241);
colorArray1[147][0] = color1;
colorArray1[148][0] = color1;
colorArray1[152][0] = new Color(128, 133, 184);
colorArray1[153][0] = new Color(239, 141, 126);
colorArray1[155][0] = new Color(131, 162, 161);
colorArray1[156][0] = new Color(170, 171, 157);
colorArray1[157][0] = new Color(104, 100, 126);
color1 = new Color(145, 81, 85);
colorArray1[158][0] = color1;
colorArray1[232][0] = color1;
colorArray1[575][0] = new Color(125, 61, 65);
colorArray1[159][0] = new Color(148, 133, 98);
colorArray1[160][0] = new Color(200, 0, 0);
colorArray1[160][1] = new Color(0, 200, 0);
colorArray1[160][2] = new Color(0, 0, 200);
colorArray1[161][0] = new Color(144, 195, 232);
colorArray1[162][0] = new Color(184, 219, 240);
colorArray1[163][0] = new Color(174, 145, 214);
colorArray1[164][0] = new Color(218, 182, 204);
colorArray1[170][0] = new Color(27, 109, 69);
colorArray1[171][0] = new Color(33, 135, 85);
color1 = new Color(129, 125, 93);
colorArray1[166][0] = color1;
colorArray1[175][0] = color1;
colorArray1[167][0] = new Color(62, 82, 114);
color1 = new Color(132, 157, (int) sbyte.MaxValue);
colorArray1[168][0] = color1;
colorArray1[176][0] = color1;
color1 = new Color(152, 171, 198);
colorArray1[169][0] = color1;
colorArray1[177][0] = color1;
colorArray1[179][0] = new Color(49, 134, 114);
colorArray1[180][0] = new Color(126, 134, 49);
colorArray1[181][0] = new Color(134, 59, 49);
colorArray1[182][0] = new Color(43, 86, 140);
colorArray1[183][0] = new Color(121, 49, 134);
colorArray1[381][0] = new Color(254, 121, 2);
colorArray1[534][0] = new Color(114, 254, 2);
colorArray1[536][0] = new Color(0, 197, 208);
colorArray1[539][0] = new Color(208, 0, 126);
colorArray1[512][0] = new Color(49, 134, 114);
colorArray1[513][0] = new Color(126, 134, 49);
colorArray1[514][0] = new Color(134, 59, 49);
colorArray1[515][0] = new Color(43, 86, 140);
colorArray1[516][0] = new Color(121, 49, 134);
colorArray1[517][0] = new Color(254, 121, 2);
colorArray1[535][0] = new Color(114, 254, 2);
colorArray1[537][0] = new Color(0, 197, 208);
colorArray1[540][0] = new Color(208, 0, 126);
colorArray1[184][0] = new Color(29, 106, 88);
colorArray1[184][1] = new Color(94, 100, 36);
colorArray1[184][2] = new Color(96, 44, 40);
colorArray1[184][3] = new Color(34, 63, 102);
colorArray1[184][4] = new Color(79, 35, 95);
colorArray1[184][5] = new Color(253, 62, 3);
colorArray1[184][6] = new Color(22, 123, 62);
colorArray1[184][7] = new Color(0, 106, 148);
colorArray1[184][8] = new Color(148, 0, 132);
colorArray1[189][0] = new Color(223, (int) byte.MaxValue, (int) byte.MaxValue);
colorArray1[193][0] = new Color(56, 121, (int) byte.MaxValue);
colorArray1[194][0] = new Color(157, 157, 107);
colorArray1[195][0] = new Color(134, 22, 34);
colorArray1[196][0] = new Color(147, 144, 178);
colorArray1[197][0] = new Color(97, 200, 225);
colorArray1[198][0] = new Color(62, 61, 52);
colorArray1[199][0] = new Color(208, 80, 80);
colorArray1[201][0] = new Color(203, 61, 64);
colorArray1[205][0] = new Color(186, 50, 52);
colorArray1[200][0] = new Color(216, 152, 144);
colorArray1[202][0] = new Color(213, 178, 28);
colorArray1[203][0] = new Color(128, 44, 45);
colorArray1[204][0] = new Color(125, 55, 65);
colorArray1[206][0] = new Color(124, 175, 201);
colorArray1[208][0] = new Color(88, 105, 118);
colorArray1[211][0] = new Color(191, 233, 115);
colorArray1[213][0] = new Color(137, 120, 67);
colorArray1[214][0] = new Color(103, 103, 103);
colorArray1[221][0] = new Color(239, 90, 50);
colorArray1[222][0] = new Color(231, 96, 228);
colorArray1[223][0] = new Color(57, 85, 101);
colorArray1[224][0] = new Color(107, 132, 139);
colorArray1[225][0] = new Color(227, 125, 22);
colorArray1[226][0] = new Color(141, 56, 0);
colorArray1[229][0] = new Color((int) byte.MaxValue, 156, 12);
colorArray1[230][0] = new Color(131, 79, 13);
colorArray1[234][0] = new Color(53, 44, 41);
colorArray1[235][0] = new Color(214, 184, 46);
colorArray1[236][0] = new Color(149, 232, 87);
colorArray1[237][0] = new Color((int) byte.MaxValue, 241, 51);
colorArray1[238][0] = new Color(225, 128, 206);
colorArray1[243][0] = new Color(198, 196, 170);
colorArray1[248][0] = new Color(219, 71, 38);
colorArray1[249][0] = new Color(235, 38, 231);
colorArray1[250][0] = new Color(86, 85, 92);
colorArray1[251][0] = new Color(235, 150, 23);
colorArray1[252][0] = new Color(153, 131, 44);
colorArray1[253][0] = new Color(57, 48, 97);
colorArray1[254][0] = new Color(248, 158, 92);
colorArray1[(int) byte.MaxValue][0] = new Color(107, 49, 154);
colorArray1[256][0] = new Color(154, 148, 49);
colorArray1[257][0] = new Color(49, 49, 154);
colorArray1[258][0] = new Color(49, 154, 68);
colorArray1[259][0] = new Color(154, 49, 77);
colorArray1[260][0] = new Color(85, 89, 118);
colorArray1[261][0] = new Color(154, 83, 49);
colorArray1[262][0] = new Color(221, 79, (int) byte.MaxValue);
colorArray1[263][0] = new Color(250, (int) byte.MaxValue, 79);
colorArray1[264][0] = new Color(79, 102, (int) byte.MaxValue);
colorArray1[265][0] = new Color(79, (int) byte.MaxValue, 89);
colorArray1[266][0] = new Color((int) byte.MaxValue, 79, 79);
colorArray1[267][0] = new Color(240, 240, 247);
colorArray1[268][0] = new Color((int) byte.MaxValue, 145, 79);
colorArray1[287][0] = new Color(79, 128, 17);
color1 = new Color(122, 217, 232);
colorArray1[275][0] = color1;
colorArray1[276][0] = color1;
colorArray1[277][0] = color1;
colorArray1[278][0] = color1;
colorArray1[279][0] = color1;
colorArray1[280][0] = color1;
colorArray1[281][0] = color1;
colorArray1[282][0] = color1;
colorArray1[285][0] = color1;
colorArray1[286][0] = color1;
colorArray1[288][0] = color1;
colorArray1[289][0] = color1;
colorArray1[290][0] = color1;
colorArray1[291][0] = color1;
colorArray1[292][0] = color1;
colorArray1[293][0] = color1;
colorArray1[294][0] = color1;
colorArray1[295][0] = color1;
colorArray1[296][0] = color1;
colorArray1[297][0] = color1;
colorArray1[298][0] = color1;
colorArray1[299][0] = color1;
colorArray1[309][0] = color1;
colorArray1[310][0] = color1;
colorArray1[413][0] = color1;
colorArray1[339][0] = color1;
colorArray1[542][0] = color1;
colorArray1[358][0] = color1;
colorArray1[359][0] = color1;
colorArray1[360][0] = color1;
colorArray1[361][0] = color1;
colorArray1[362][0] = color1;
colorArray1[363][0] = color1;
colorArray1[364][0] = color1;
colorArray1[391][0] = color1;
colorArray1[392][0] = color1;
colorArray1[393][0] = color1;
colorArray1[394][0] = color1;
colorArray1[414][0] = color1;
colorArray1[505][0] = color1;
colorArray1[543][0] = color1;
colorArray1[598][0] = color1;
colorArray1[521][0] = color1;
colorArray1[522][0] = color1;
colorArray1[523][0] = color1;
colorArray1[524][0] = color1;
colorArray1[525][0] = color1;
colorArray1[526][0] = color1;
colorArray1[527][0] = color1;
colorArray1[532][0] = color1;
colorArray1[533][0] = color1;
colorArray1[538][0] = color1;
colorArray1[544][0] = color1;
colorArray1[550][0] = color1;
colorArray1[551][0] = color1;
colorArray1[553][0] = color1;
colorArray1[554][0] = color1;
colorArray1[555][0] = color1;
colorArray1[556][0] = color1;
colorArray1[558][0] = color1;
colorArray1[559][0] = color1;
colorArray1[580][0] = color1;
colorArray1[582][0] = color1;
colorArray1[599][0] = color1;
colorArray1[600][0] = color1;
colorArray1[601][0] = color1;
colorArray1[602][0] = color1;
colorArray1[603][0] = color1;
colorArray1[604][0] = color1;
colorArray1[605][0] = color1;
colorArray1[606][0] = color1;
colorArray1[607][0] = color1;
colorArray1[608][0] = color1;
colorArray1[609][0] = color1;
colorArray1[610][0] = color1;
colorArray1[611][0] = color1;
colorArray1[612][0] = color1;
colorArray1[619][0] = color1;
colorArray1[620][0] = color1;
colorArray1[552][0] = colorArray1[53][0];
colorArray1[564][0] = new Color(87, (int) sbyte.MaxValue, 220);
colorArray1[408][0] = new Color(85, 83, 82);
colorArray1[409][0] = new Color(85, 83, 82);
colorArray1[415][0] = new Color(249, 75, 7);
colorArray1[416][0] = new Color(0, 160, 170);
colorArray1[417][0] = new Color(160, 87, 234);
colorArray1[418][0] = new Color(22, 173, 254);
colorArray1[489][0] = new Color((int) byte.MaxValue, 29, 136);
colorArray1[490][0] = new Color(211, 211, 211);
colorArray1[311][0] = new Color(117, 61, 25);
colorArray1[312][0] = new Color(204, 93, 73);
colorArray1[313][0] = new Color(87, 150, 154);
colorArray1[4][0] = new Color(253, 221, 3);
colorArray1[4][1] = new Color(253, 221, 3);
color1 = new Color(253, 221, 3);
colorArray1[93][0] = color1;
colorArray1[33][0] = color1;
colorArray1[174][0] = color1;
colorArray1[100][0] = color1;
colorArray1[98][0] = color1;
colorArray1[173][0] = color1;
color1 = new Color(119, 105, 79);
colorArray1[11][0] = color1;
colorArray1[10][0] = color1;
colorArray1[593][0] = color1;
colorArray1[594][0] = color1;
color1 = new Color(191, 142, 111);
colorArray1[14][0] = color1;
colorArray1[469][0] = color1;
colorArray1[486][0] = color1;
colorArray1[488][0] = new Color((int) sbyte.MaxValue, 92, 69);
colorArray1[487][0] = color1;
colorArray1[487][1] = color1;
colorArray1[15][0] = color1;
colorArray1[15][1] = color1;
colorArray1[497][0] = color1;
colorArray1[18][0] = color1;
colorArray1[19][0] = color1;
colorArray1[55][0] = color1;
colorArray1[79][0] = color1;
colorArray1[86][0] = color1;
colorArray1[87][0] = color1;
colorArray1[88][0] = color1;
colorArray1[89][0] = color1;
colorArray1[94][0] = color1;
colorArray1[101][0] = color1;
colorArray1[104][0] = color1;
colorArray1[106][0] = color1;
colorArray1[114][0] = color1;
colorArray1[128][0] = color1;
colorArray1[139][0] = color1;
colorArray1[172][0] = color1;
colorArray1[216][0] = color1;
colorArray1[269][0] = color1;
colorArray1[334][0] = color1;
colorArray1[471][0] = color1;
colorArray1[470][0] = color1;
colorArray1[475][0] = color1;
colorArray1[377][0] = color1;
colorArray1[380][0] = color1;
colorArray1[395][0] = color1;
colorArray1[573][0] = color1;
colorArray1[12][0] = new Color(174, 24, 69);
colorArray1[13][0] = new Color(133, 213, 247);
color1 = new Color(144, 148, 144);
colorArray1[17][0] = color1;
colorArray1[90][0] = color1;
colorArray1[96][0] = color1;
colorArray1[97][0] = color1;
colorArray1[99][0] = color1;
colorArray1[132][0] = color1;
colorArray1[142][0] = color1;
colorArray1[143][0] = color1;
colorArray1[144][0] = color1;
colorArray1[207][0] = color1;
colorArray1[209][0] = color1;
colorArray1[212][0] = color1;
colorArray1[217][0] = color1;
colorArray1[218][0] = color1;
colorArray1[219][0] = color1;
colorArray1[220][0] = color1;
colorArray1[228][0] = color1;
colorArray1[300][0] = color1;
colorArray1[301][0] = color1;
colorArray1[302][0] = color1;
colorArray1[303][0] = color1;
colorArray1[304][0] = color1;
colorArray1[305][0] = color1;
colorArray1[306][0] = color1;
colorArray1[307][0] = color1;
colorArray1[308][0] = color1;
colorArray1[567][0] = color1;
colorArray1[349][0] = new Color(144, 148, 144);
colorArray1[531][0] = new Color(144, 148, 144);
colorArray1[105][0] = new Color(144, 148, 144);
colorArray1[105][1] = new Color(177, 92, 31);
colorArray1[105][2] = new Color(201, 188, 170);
colorArray1[137][0] = new Color(144, 148, 144);
colorArray1[137][1] = new Color(141, 56, 0);
colorArray1[16][0] = new Color(140, 130, 116);
colorArray1[26][0] = new Color(119, 101, 125);
colorArray1[26][1] = new Color(214, (int) sbyte.MaxValue, 133);
colorArray1[36][0] = new Color(230, 89, 92);
colorArray1[28][0] = new Color(151, 79, 80);
colorArray1[28][1] = new Color(90, 139, 140);
colorArray1[28][2] = new Color(192, 136, 70);
colorArray1[28][3] = new Color(203, 185, 151);
colorArray1[28][4] = new Color(73, 56, 41);
colorArray1[28][5] = new Color(148, 159, 67);
colorArray1[28][6] = new Color(138, 172, 67);
colorArray1[28][7] = new Color(226, 122, 47);
colorArray1[28][8] = new Color(198, 87, 93);
colorArray1[29][0] = new Color(175, 105, 128);
colorArray1[51][0] = new Color(192, 202, 203);
colorArray1[31][0] = new Color(141, 120, 168);
colorArray1[31][1] = new Color(212, 105, 105);
colorArray1[32][0] = new Color(151, 135, 183);
colorArray1[42][0] = new Color(251, 235, (int) sbyte.MaxValue);
colorArray1[50][0] = new Color(170, 48, 114);
colorArray1[85][0] = new Color(192, 192, 192);
colorArray1[69][0] = new Color(190, 150, 92);
colorArray1[77][0] = new Color(238, 85, 70);
colorArray1[81][0] = new Color(245, 133, 191);
colorArray1[78][0] = new Color(121, 110, 97);
colorArray1[141][0] = new Color(192, 59, 59);
colorArray1[129][0] = new Color((int) byte.MaxValue, 117, 224);
colorArray1[126][0] = new Color(159, 209, 229);
colorArray1[125][0] = new Color(141, 175, (int) byte.MaxValue);
colorArray1[103][0] = new Color(141, 98, 77);
colorArray1[95][0] = new Color((int) byte.MaxValue, 162, 31);
colorArray1[92][0] = new Color(213, 229, 237);
colorArray1[91][0] = new Color(13, 88, 130);
colorArray1[215][0] = new Color(254, 121, 2);
colorArray1[592][0] = new Color(254, 121, 2);
colorArray1[316][0] = new Color(157, 176, 226);
colorArray1[317][0] = new Color(118, 227, 129);
colorArray1[318][0] = new Color(227, 118, 215);
colorArray1[319][0] = new Color(96, 68, 48);
colorArray1[320][0] = new Color(203, 185, 151);
colorArray1[321][0] = new Color(96, 77, 64);
colorArray1[574][0] = new Color(76, 57, 44);
colorArray1[322][0] = new Color(198, 170, 104);
colorArray1[149][0] = new Color(220, 50, 50);
colorArray1[149][1] = new Color(0, 220, 50);
colorArray1[149][2] = new Color(50, 50, 220);
colorArray1[133][0] = new Color(231, 53, 56);
colorArray1[133][1] = new Color(192, 189, 221);
colorArray1[134][0] = new Color(166, 187, 153);
colorArray1[134][1] = new Color(241, 129, 249);
colorArray1[102][0] = new Color(229, 212, 73);
colorArray1[49][0] = new Color(89, 201, (int) byte.MaxValue);
colorArray1[35][0] = new Color(226, 145, 30);
colorArray1[34][0] = new Color(235, 166, 135);
colorArray1[136][0] = new Color(213, 203, 204);
colorArray1[231][0] = new Color(224, 194, 101);
colorArray1[239][0] = new Color(224, 194, 101);
colorArray1[240][0] = new Color(120, 85, 60);
colorArray1[240][1] = new Color(99, 50, 30);
colorArray1[240][2] = new Color(153, 153, 117);
colorArray1[240][3] = new Color(112, 84, 56);
colorArray1[240][4] = new Color(234, 231, 226);
colorArray1[241][0] = new Color(77, 74, 72);
colorArray1[244][0] = new Color(200, 245, 253);
color1 = new Color(99, 50, 30);
colorArray1[242][0] = color1;
colorArray1[245][0] = color1;
colorArray1[246][0] = color1;
colorArray1[242][1] = new Color(185, 142, 97);
colorArray1[247][0] = new Color(140, 150, 150);
colorArray1[271][0] = new Color(107, 250, (int) byte.MaxValue);
colorArray1[270][0] = new Color(187, (int) byte.MaxValue, 107);
colorArray1[581][0] = new Color((int) byte.MaxValue, 150, 150);
colorArray1[572][0] = new Color((int) byte.MaxValue, 186, 212);
colorArray1[572][1] = new Color(209, 201, (int) byte.MaxValue);
colorArray1[572][2] = new Color(200, 254, (int) byte.MaxValue);
colorArray1[572][3] = new Color(199, (int) byte.MaxValue, 211);
colorArray1[572][4] = new Color(180, 209, (int) byte.MaxValue);
colorArray1[572][5] = new Color((int) byte.MaxValue, 220, 214);
colorArray1[314][0] = new Color(181, 164, 125);
colorArray1[324][0] = new Color(228, 213, 173);
colorArray1[351][0] = new Color(31, 31, 31);
colorArray1[424][0] = new Color(146, 155, 187);
colorArray1[429][0] = new Color(220, 220, 220);
colorArray1[445][0] = new Color(240, 240, 240);
colorArray1[21][0] = new Color(174, 129, 92);
colorArray1[21][1] = new Color(233, 207, 94);
colorArray1[21][2] = new Color(137, 128, 200);
colorArray1[21][3] = new Color(160, 160, 160);
colorArray1[21][4] = new Color(106, 210, (int) byte.MaxValue);
colorArray1[441][0] = colorArray1[21][0];
colorArray1[441][1] = colorArray1[21][1];
colorArray1[441][2] = colorArray1[21][2];
colorArray1[441][3] = colorArray1[21][3];
colorArray1[441][4] = colorArray1[21][4];
colorArray1[27][0] = new Color(54, 154, 54);
colorArray1[27][1] = new Color(226, 196, 49);
color1 = new Color(246, 197, 26);
colorArray1[82][0] = color1;
colorArray1[83][0] = color1;
colorArray1[84][0] = color1;
color1 = new Color(76, 150, 216);
colorArray1[82][1] = color1;
colorArray1[83][1] = color1;
colorArray1[84][1] = color1;
color1 = new Color(185, 214, 42);
colorArray1[82][2] = color1;
colorArray1[83][2] = color1;
colorArray1[84][2] = color1;
color1 = new Color(167, 203, 37);
colorArray1[82][3] = color1;
colorArray1[83][3] = color1;
colorArray1[84][3] = color1;
colorArray1[591][6] = color1;
color1 = new Color(32, 168, 117);
colorArray1[82][4] = color1;
colorArray1[83][4] = color1;
colorArray1[84][4] = color1;
color1 = new Color(177, 69, 49);
colorArray1[82][5] = color1;
colorArray1[83][5] = color1;
colorArray1[84][5] = color1;
color1 = new Color(40, 152, 240);
colorArray1[82][6] = color1;
colorArray1[83][6] = color1;
colorArray1[84][6] = color1;
colorArray1[591][1] = new Color(246, 197, 26);
colorArray1[591][2] = new Color(76, 150, 216);
colorArray1[591][3] = new Color(32, 168, 117);
colorArray1[591][4] = new Color(40, 152, 240);
colorArray1[591][5] = new Color(114, 81, 56);
colorArray1[591][6] = new Color(141, 137, 223);
colorArray1[591][7] = new Color(208, 80, 80);
colorArray1[591][8] = new Color(177, 69, 49);
colorArray1[165][0] = new Color(115, 173, 229);
colorArray1[165][1] = new Color(100, 100, 100);
colorArray1[165][2] = new Color(152, 152, 152);
colorArray1[165][3] = new Color(227, 125, 22);
colorArray1[178][0] = new Color(208, 94, 201);
colorArray1[178][1] = new Color(233, 146, 69);
colorArray1[178][2] = new Color(71, 146, 251);
colorArray1[178][3] = new Color(60, 226, 133);
colorArray1[178][4] = new Color(250, 30, 71);
colorArray1[178][5] = new Color(166, 176, 204);
colorArray1[178][6] = new Color((int) byte.MaxValue, 217, 120);
color1 = new Color(99, 99, 99);
colorArray1[185][0] = color1;
colorArray1[186][0] = color1;
colorArray1[187][0] = color1;
colorArray1[565][0] = color1;
colorArray1[579][0] = color1;
color1 = new Color(114, 81, 56);
colorArray1[185][1] = color1;
colorArray1[186][1] = color1;
colorArray1[187][1] = color1;
colorArray1[591][0] = color1;
color1 = new Color(133, 133, 101);
colorArray1[185][2] = color1;
colorArray1[186][2] = color1;
colorArray1[187][2] = color1;
color1 = new Color(151, 200, 211);
colorArray1[185][3] = color1;
colorArray1[186][3] = color1;
colorArray1[187][3] = color1;
color1 = new Color(177, 183, 161);
colorArray1[185][4] = color1;
colorArray1[186][4] = color1;
colorArray1[187][4] = color1;
color1 = new Color(134, 114, 38);
colorArray1[185][5] = color1;
colorArray1[186][5] = color1;
colorArray1[187][5] = color1;
color1 = new Color(82, 62, 66);
colorArray1[185][6] = color1;
colorArray1[186][6] = color1;
colorArray1[187][6] = color1;
color1 = new Color(143, 117, 121);
colorArray1[185][7] = color1;
colorArray1[186][7] = color1;
colorArray1[187][7] = color1;
color1 = new Color(177, 92, 31);
colorArray1[185][8] = color1;
colorArray1[186][8] = color1;
colorArray1[187][8] = color1;
color1 = new Color(85, 73, 87);
colorArray1[185][9] = color1;
colorArray1[186][9] = color1;
colorArray1[187][9] = color1;
color1 = new Color(26, 196, 84);
colorArray1[185][10] = color1;
colorArray1[186][10] = color1;
colorArray1[187][10] = color1;
colorArray1[227][0] = new Color(74, 197, 155);
colorArray1[227][1] = new Color(54, 153, 88);
colorArray1[227][2] = new Color(63, 126, 207);
colorArray1[227][3] = new Color(240, 180, 4);
colorArray1[227][4] = new Color(45, 68, 168);
colorArray1[227][5] = new Color(61, 92, 0);
colorArray1[227][6] = new Color(216, 112, 152);
colorArray1[227][7] = new Color(200, 40, 24);
colorArray1[227][8] = new Color(113, 45, 133);
colorArray1[227][9] = new Color(235, 137, 2);
colorArray1[227][10] = new Color(41, 152, 135);
colorArray1[227][11] = new Color(198, 19, 78);
colorArray1[373][0] = new Color(9, 61, 191);
colorArray1[374][0] = new Color(253, 32, 3);
colorArray1[375][0] = new Color((int) byte.MaxValue, 156, 12);
colorArray1[461][0] = new Color(212, 192, 100);
colorArray1[461][1] = new Color(137, 132, 156);
colorArray1[461][2] = new Color(148, 122, 112);
colorArray1[461][3] = new Color(221, 201, 206);
colorArray1[323][0] = new Color(182, 141, 86);
colorArray1[325][0] = new Color(129, 125, 93);
colorArray1[326][0] = new Color(9, 61, 191);
colorArray1[327][0] = new Color(253, 32, 3);
colorArray1[507][0] = new Color(5, 5, 5);
colorArray1[508][0] = new Color(5, 5, 5);
colorArray1[330][0] = new Color(226, 118, 76);
colorArray1[331][0] = new Color(161, 172, 173);
colorArray1[332][0] = new Color(204, 181, 72);
colorArray1[333][0] = new Color(190, 190, 178);
colorArray1[335][0] = new Color(217, 174, 137);
colorArray1[336][0] = new Color(253, 62, 3);
colorArray1[337][0] = new Color(144, 148, 144);
colorArray1[338][0] = new Color(85, (int) byte.MaxValue, 160);
colorArray1[315][0] = new Color(235, 114, 80);
colorArray1[340][0] = new Color(96, 248, 2);
colorArray1[341][0] = new Color(105, 74, 202);
colorArray1[342][0] = new Color(29, 240, (int) byte.MaxValue);
colorArray1[343][0] = new Color(254, 202, 80);
colorArray1[344][0] = new Color(131, 252, 245);
colorArray1[345][0] = new Color((int) byte.MaxValue, 156, 12);
colorArray1[346][0] = new Color(149, 212, 89);
colorArray1[347][0] = new Color(236, 74, 79);
colorArray1[348][0] = new Color(44, 26, 233);
colorArray1[350][0] = new Color(55, 97, 155);
colorArray1[352][0] = new Color(238, 97, 94);
colorArray1[354][0] = new Color(141, 107, 89);
colorArray1[355][0] = new Color(141, 107, 89);
colorArray1[463][0] = new Color(155, 214, 240);
colorArray1[491][0] = new Color(60, 20, 160);
colorArray1[464][0] = new Color(233, 183, 128);
colorArray1[465][0] = new Color(51, 84, 195);
colorArray1[466][0] = new Color(205, 153, 73);
colorArray1[356][0] = new Color(233, 203, 24);
colorArray1[357][0] = new Color(168, 178, 204);
colorArray1[367][0] = new Color(168, 178, 204);
colorArray1[561][0] = new Color(148, 158, 184);
colorArray1[365][0] = new Color(146, 136, 205);
colorArray1[366][0] = new Color(223, 232, 233);
colorArray1[368][0] = new Color(50, 46, 104);
colorArray1[369][0] = new Color(50, 46, 104);
colorArray1[576][0] = new Color(30, 26, 84);
colorArray1[370][0] = new Color((int) sbyte.MaxValue, 116, 194);
colorArray1[372][0] = new Color(252, 128, 201);
colorArray1[371][0] = new Color(249, 101, 189);
colorArray1[376][0] = new Color(160, 120, 92);
colorArray1[378][0] = new Color(160, 120, 100);
colorArray1[379][0] = new Color(251, 209, 240);
colorArray1[382][0] = new Color(28, 216, 94);
colorArray1[383][0] = new Color(221, 136, 144);
colorArray1[384][0] = new Color(131, 206, 12);
colorArray1[385][0] = new Color(87, 21, 144);
colorArray1[386][0] = new Color((int) sbyte.MaxValue, 92, 69);
colorArray1[387][0] = new Color((int) sbyte.MaxValue, 92, 69);
colorArray1[388][0] = new Color((int) sbyte.MaxValue, 92, 69);
colorArray1[389][0] = new Color((int) sbyte.MaxValue, 92, 69);
colorArray1[390][0] = new Color(253, 32, 3);
colorArray1[397][0] = new Color(212, 192, 100);
colorArray1[396][0] = new Color(198, 124, 78);
colorArray1[577][0] = new Color(178, 104, 58);
colorArray1[398][0] = new Color(100, 82, 126);
colorArray1[399][0] = new Color(77, 76, 66);
colorArray1[400][0] = new Color(96, 68, 117);
colorArray1[401][0] = new Color(68, 60, 51);
colorArray1[402][0] = new Color(174, 168, 186);
colorArray1[403][0] = new Color(205, 152, 186);
colorArray1[404][0] = new Color(212, 148, 88);
colorArray1[405][0] = new Color(140, 140, 140);
colorArray1[406][0] = new Color(120, 120, 120);
colorArray1[407][0] = new Color((int) byte.MaxValue, 227, 132);
colorArray1[411][0] = new Color(227, 46, 46);
colorArray1[494][0] = new Color(227, 227, 227);
colorArray1[421][0] = new Color(65, 75, 90);
colorArray1[422][0] = new Color(65, 75, 90);
colorArray1[425][0] = new Color(146, 155, 187);
colorArray1[426][0] = new Color(168, 38, 47);
colorArray1[430][0] = new Color(39, 168, 96);
colorArray1[431][0] = new Color(39, 94, 168);
colorArray1[432][0] = new Color(242, 221, 100);
colorArray1[433][0] = new Color(224, 100, 242);
colorArray1[434][0] = new Color(197, 193, 216);
colorArray1[427][0] = new Color(183, 53, 62);
colorArray1[435][0] = new Color(54, 183, 111);
colorArray1[436][0] = new Color(54, 109, 183);
colorArray1[437][0] = new Color((int) byte.MaxValue, 236, 115);
colorArray1[438][0] = new Color(239, 115, (int) byte.MaxValue);
colorArray1[439][0] = new Color(212, 208, 231);
colorArray1[440][0] = new Color(238, 51, 53);
colorArray1[440][1] = new Color(13, 107, 216);
colorArray1[440][2] = new Color(33, 184, 115);
colorArray1[440][3] = new Color((int) byte.MaxValue, 221, 62);
colorArray1[440][4] = new Color(165, 0, 236);
colorArray1[440][5] = new Color(223, 230, 238);
colorArray1[440][6] = new Color(207, 101, 0);
colorArray1[419][0] = new Color(88, 95, 114);
colorArray1[419][1] = new Color(214, 225, 236);
colorArray1[419][2] = new Color(25, 131, 205);
colorArray1[423][0] = new Color(245, 197, 1);
colorArray1[423][1] = new Color(185, 0, 224);
colorArray1[423][2] = new Color(58, 240, 111);
colorArray1[423][3] = new Color(50, 107, 197);
colorArray1[423][4] = new Color(253, 91, 3);
colorArray1[423][5] = new Color(254, 194, 20);
colorArray1[423][6] = new Color(174, 195, 215);
colorArray1[420][0] = new Color(99, (int) byte.MaxValue, 107);
colorArray1[420][1] = new Color(99, (int) byte.MaxValue, 107);
colorArray1[420][4] = new Color(99, (int) byte.MaxValue, 107);
colorArray1[420][2] = new Color(218, 2, 5);
colorArray1[420][3] = new Color(218, 2, 5);
colorArray1[420][5] = new Color(218, 2, 5);
colorArray1[476][0] = new Color(160, 160, 160);
colorArray1[410][0] = new Color(75, 139, 166);
colorArray1[480][0] = new Color(120, 50, 50);
colorArray1[509][0] = new Color(50, 50, 60);
colorArray1[412][0] = new Color(75, 139, 166);
colorArray1[443][0] = new Color(144, 148, 144);
colorArray1[442][0] = new Color(3, 144, 201);
colorArray1[444][0] = new Color(191, 176, 124);
colorArray1[446][0] = new Color((int) byte.MaxValue, 66, 152);
colorArray1[447][0] = new Color(179, 132, (int) byte.MaxValue);
colorArray1[448][0] = new Color(0, 206, 180);
colorArray1[449][0] = new Color(91, 186, 240);
colorArray1[450][0] = new Color(92, 240, 91);
colorArray1[451][0] = new Color(240, 91, 147);
colorArray1[452][0] = new Color((int) byte.MaxValue, 150, 181);
colorArray1[453][0] = new Color(179, 132, (int) byte.MaxValue);
colorArray1[453][1] = new Color(0, 206, 180);
colorArray1[453][2] = new Color((int) byte.MaxValue, 66, 152);
colorArray1[454][0] = new Color(174, 16, 176);
colorArray1[455][0] = new Color(48, 225, 110);
colorArray1[456][0] = new Color(179, 132, (int) byte.MaxValue);
colorArray1[457][0] = new Color(150, 164, 206);
colorArray1[457][1] = new Color((int) byte.MaxValue, 132, 184);
colorArray1[457][2] = new Color(74, (int) byte.MaxValue, 232);
colorArray1[457][3] = new Color(215, 159, (int) byte.MaxValue);
colorArray1[457][4] = new Color(229, 219, 234);
colorArray1[458][0] = new Color(211, 198, 111);
colorArray1[459][0] = new Color(190, 223, 232);
colorArray1[460][0] = new Color(141, 163, 181);
colorArray1[462][0] = new Color(231, 178, 28);
colorArray1[467][0] = new Color(129, 56, 121);
colorArray1[467][1] = new Color((int) byte.MaxValue, 249, 59);
colorArray1[467][2] = new Color(161, 67, 24);
colorArray1[467][3] = new Color(89, 70, 72);
colorArray1[467][4] = new Color(233, 207, 94);
colorArray1[467][5] = new Color(254, 158, 35);
colorArray1[467][6] = new Color(34, 221, 151);
colorArray1[467][7] = new Color(249, 170, 236);
colorArray1[467][8] = new Color(35, 200, 254);
colorArray1[467][9] = new Color(190, 200, 200);
colorArray1[467][10] = new Color(230, 170, 100);
colorArray1[467][11] = new Color(165, 168, 26);
for (int index = 0; index < 12; ++index)
colorArray1[468][index] = colorArray1[467][index];
colorArray1[472][0] = new Color(190, 160, 140);
colorArray1[473][0] = new Color(85, 114, 123);
colorArray1[474][0] = new Color(116, 94, 97);
colorArray1[478][0] = new Color(108, 34, 35);
colorArray1[479][0] = new Color(178, 114, 68);
colorArray1[485][0] = new Color(198, 134, 88);
colorArray1[492][0] = new Color(78, 193, 227);
colorArray1[492][0] = new Color(78, 193, 227);
colorArray1[493][0] = new Color(250, 249, 252);
colorArray1[493][1] = new Color(240, 90, 90);
colorArray1[493][2] = new Color(98, 230, 92);
colorArray1[493][3] = new Color(95, 197, 238);
colorArray1[493][4] = new Color(241, 221, 100);
colorArray1[493][5] = new Color(213, 92, 237);
colorArray1[494][0] = new Color(224, 219, 236);
colorArray1[495][0] = new Color(253, 227, 215);
colorArray1[496][0] = new Color(165, 159, 153);
colorArray1[498][0] = new Color(202, 174, 165);
colorArray1[499][0] = new Color(160, 187, 142);
colorArray1[500][0] = new Color(254, 158, 35);
colorArray1[501][0] = new Color(34, 221, 151);
colorArray1[502][0] = new Color(249, 170, 236);
colorArray1[503][0] = new Color(35, 200, 254);
colorArray1[506][0] = new Color(61, 61, 61);
colorArray1[510][0] = new Color(191, 142, 111);
colorArray1[511][0] = new Color(187, 68, 74);
colorArray1[520][0] = new Color(224, 219, 236);
colorArray1[545][0] = new Color((int) byte.MaxValue, 126, 145);
colorArray1[530][0] = new Color(107, 182, 0);
colorArray1[530][1] = new Color(23, 154, 209);
colorArray1[530][2] = new Color(238, 97, 94);
colorArray1[530][3] = new Color(113, 108, 205);
colorArray1[546][0] = new Color(60, 60, 60);
colorArray1[557][0] = new Color(60, 60, 60);
colorArray1[547][0] = new Color(120, 110, 100);
colorArray1[548][0] = new Color(120, 110, 100);
colorArray1[562][0] = new Color(165, 168, 26);
colorArray1[563][0] = new Color(165, 168, 26);
colorArray1[571][0] = new Color(165, 168, 26);
colorArray1[568][0] = new Color(248, 203, 233);
colorArray1[569][0] = new Color(203, 248, 218);
colorArray1[570][0] = new Color(160, 242, (int) byte.MaxValue);
colorArray1[597][0] = new Color(28, 216, 94);
colorArray1[597][1] = new Color(183, 237, 20);
colorArray1[597][2] = new Color(185, 83, 200);
colorArray1[597][3] = new Color(131, 128, 168);
colorArray1[597][4] = new Color(38, 142, 214);
colorArray1[597][5] = new Color(229, 154, 9);
colorArray1[597][6] = new Color(142, 227, 234);
colorArray1[597][7] = new Color(98, 111, 223);
colorArray1[597][8] = new Color(241, 233, 158);
colorArray1[617][0] = new Color(233, 207, 94);
Color color3 = new Color(250, 100, 50);
colorArray1[548][1] = color3;
colorArray1[613][0] = color3;
colorArray1[614][0] = color3;
Color[] colorArray2 = new Color[3]
{
new Color(9, 61, 191),
new Color(253, 32, 3),
new Color(254, 194, 20)
};
Color[][] colorArray3 = new Color[316][];
for (int index = 0; index < 316; ++index)
colorArray3[index] = new Color[2];
colorArray3[158][0] = new Color(107, 49, 154);
colorArray3[163][0] = new Color(154, 148, 49);
colorArray3[162][0] = new Color(49, 49, 154);
colorArray3[160][0] = new Color(49, 154, 68);
colorArray3[161][0] = new Color(154, 49, 77);
colorArray3[159][0] = new Color(85, 89, 118);
colorArray3[157][0] = new Color(154, 83, 49);
colorArray3[154][0] = new Color(221, 79, (int) byte.MaxValue);
colorArray3[166][0] = new Color(250, (int) byte.MaxValue, 79);
colorArray3[165][0] = new Color(79, 102, (int) byte.MaxValue);
colorArray3[156][0] = new Color(79, (int) byte.MaxValue, 89);
colorArray3[164][0] = new Color((int) byte.MaxValue, 79, 79);
colorArray3[155][0] = new Color(240, 240, 247);
colorArray3[153][0] = new Color((int) byte.MaxValue, 145, 79);
colorArray3[169][0] = new Color(5, 5, 5);
colorArray3[224][0] = new Color(57, 55, 52);
colorArray3[225][0] = new Color(68, 68, 68);
colorArray3[226][0] = new Color(148, 138, 74);
colorArray3[227][0] = new Color(95, 137, 191);
colorArray3[170][0] = new Color(59, 39, 22);
colorArray3[171][0] = new Color(59, 39, 22);
color1 = new Color(52, 52, 52);
colorArray3[1][0] = color1;
colorArray3[53][0] = color1;
colorArray3[52][0] = color1;
colorArray3[51][0] = color1;
colorArray3[50][0] = color1;
colorArray3[49][0] = color1;
colorArray3[48][0] = color1;
colorArray3[44][0] = color1;
colorArray3[5][0] = color1;
color1 = new Color(88, 61, 46);
colorArray3[2][0] = color1;
colorArray3[16][0] = color1;
colorArray3[59][0] = color1;
colorArray3[3][0] = new Color(61, 58, 78);
colorArray3[4][0] = new Color(73, 51, 36);
colorArray3[6][0] = new Color(91, 30, 30);
color1 = new Color(27, 31, 42);
colorArray3[7][0] = color1;
colorArray3[17][0] = color1;
color1 = new Color(32, 40, 45);
colorArray3[94][0] = color1;
colorArray3[100][0] = color1;
color1 = new Color(44, 41, 50);
colorArray3[95][0] = color1;
colorArray3[101][0] = color1;
color1 = new Color(31, 39, 26);
colorArray3[8][0] = color1;
colorArray3[18][0] = color1;
color1 = new Color(36, 45, 44);
colorArray3[98][0] = color1;
colorArray3[104][0] = color1;
color1 = new Color(38, 49, 50);
colorArray3[99][0] = color1;
colorArray3[105][0] = color1;
color1 = new Color(41, 28, 36);
colorArray3[9][0] = color1;
colorArray3[19][0] = color1;
color1 = new Color(72, 50, 77);
colorArray3[96][0] = color1;
colorArray3[102][0] = color1;
color1 = new Color(78, 50, 69);
colorArray3[97][0] = color1;
colorArray3[103][0] = color1;
colorArray3[10][0] = new Color(74, 62, 12);
colorArray3[11][0] = new Color(46, 56, 59);
colorArray3[12][0] = new Color(75, 32, 11);
colorArray3[13][0] = new Color(67, 37, 37);
color1 = new Color(15, 15, 15);
colorArray3[14][0] = color1;
colorArray3[20][0] = color1;
colorArray3[15][0] = new Color(52, 43, 45);
colorArray3[22][0] = new Color(113, 99, 99);
colorArray3[23][0] = new Color(38, 38, 43);
colorArray3[24][0] = new Color(53, 39, 41);
colorArray3[25][0] = new Color(11, 35, 62);
colorArray3[26][0] = new Color(21, 63, 70);
colorArray3[27][0] = new Color(88, 61, 46);
colorArray3[27][1] = new Color(52, 52, 52);
colorArray3[28][0] = new Color(81, 84, 101);
colorArray3[29][0] = new Color(88, 23, 23);
colorArray3[30][0] = new Color(28, 88, 23);
colorArray3[31][0] = new Color(78, 87, 99);
color1 = new Color(69, 67, 41);
colorArray3[34][0] = color1;
colorArray3[37][0] = color1;
colorArray3[32][0] = new Color(86, 17, 40);
colorArray3[33][0] = new Color(49, 47, 83);
colorArray3[35][0] = new Color(51, 51, 70);
colorArray3[36][0] = new Color(87, 59, 55);
colorArray3[38][0] = new Color(49, 57, 49);
colorArray3[39][0] = new Color(78, 79, 73);
colorArray3[45][0] = new Color(60, 59, 51);
colorArray3[46][0] = new Color(48, 57, 47);
colorArray3[47][0] = new Color(71, 77, 85);
colorArray3[40][0] = new Color(85, 102, 103);
colorArray3[41][0] = new Color(52, 50, 62);
colorArray3[42][0] = new Color(71, 42, 44);
colorArray3[43][0] = new Color(73, 66, 50);
colorArray3[54][0] = new Color(40, 56, 50);
colorArray3[55][0] = new Color(49, 48, 36);
colorArray3[56][0] = new Color(43, 33, 32);
colorArray3[57][0] = new Color(31, 40, 49);
colorArray3[58][0] = new Color(48, 35, 52);
colorArray3[60][0] = new Color(1, 52, 20);
colorArray3[61][0] = new Color(55, 39, 26);
colorArray3[62][0] = new Color(39, 33, 26);
colorArray3[69][0] = new Color(43, 42, 68);
colorArray3[70][0] = new Color(30, 70, 80);
color1 = new Color(30, 80, 48);
colorArray3[63][0] = color1;
colorArray3[65][0] = color1;
colorArray3[66][0] = color1;
colorArray3[68][0] = color1;
color1 = new Color(53, 80, 30);
colorArray3[64][0] = color1;
colorArray3[67][0] = color1;
colorArray3[78][0] = new Color(63, 39, 26);
colorArray3[244][0] = new Color(63, 39, 26);
colorArray3[71][0] = new Color(78, 105, 135);
colorArray3[72][0] = new Color(52, 84, 12);
colorArray3[73][0] = new Color(190, 204, 223);
color1 = new Color(64, 62, 80);
colorArray3[74][0] = color1;
colorArray3[80][0] = color1;
colorArray3[75][0] = new Color(65, 65, 35);
colorArray3[76][0] = new Color(20, 46, 104);
colorArray3[77][0] = new Color(61, 13, 16);
colorArray3[79][0] = new Color(51, 47, 96);
colorArray3[81][0] = new Color(101, 51, 51);
colorArray3[82][0] = new Color(77, 64, 34);
colorArray3[83][0] = new Color(62, 38, 41);
colorArray3[234][0] = new Color(60, 36, 39);
colorArray3[84][0] = new Color(48, 78, 93);
colorArray3[85][0] = new Color(54, 63, 69);
color1 = new Color(138, 73, 38);
colorArray3[86][0] = color1;
colorArray3[108][0] = color1;
color1 = new Color(50, 15, 8);
colorArray3[87][0] = color1;
colorArray3[112][0] = color1;
colorArray3[109][0] = new Color(94, 25, 17);
colorArray3[110][0] = new Color(125, 36, 122);
colorArray3[111][0] = new Color(51, 35, 27);
colorArray3[113][0] = new Color(135, 58, 0);
colorArray3[114][0] = new Color(65, 52, 15);
colorArray3[115][0] = new Color(39, 42, 51);
colorArray3[116][0] = new Color(89, 26, 27);
colorArray3[117][0] = new Color(126, 123, 115);
colorArray3[118][0] = new Color(8, 50, 19);
colorArray3[119][0] = new Color(95, 21, 24);
colorArray3[120][0] = new Color(17, 31, 65);
colorArray3[121][0] = new Color(192, 173, 143);
colorArray3[122][0] = new Color(114, 114, 131);
colorArray3[123][0] = new Color(136, 119, 7);
colorArray3[124][0] = new Color(8, 72, 3);
colorArray3[125][0] = new Color(117, 132, 82);
colorArray3[126][0] = new Color(100, 102, 114);
colorArray3[(int) sbyte.MaxValue][0] = new Color(30, 118, 226);
colorArray3[128][0] = new Color(93, 6, 102);
colorArray3[129][0] = new Color(64, 40, 169);
colorArray3[130][0] = new Color(39, 34, 180);
colorArray3[131][0] = new Color(87, 94, 125);
colorArray3[132][0] = new Color(6, 6, 6);
colorArray3[133][0] = new Color(69, 72, 186);
colorArray3[134][0] = new Color(130, 62, 16);
colorArray3[135][0] = new Color(22, 123, 163);
colorArray3[136][0] = new Color(40, 86, 151);
colorArray3[137][0] = new Color(183, 75, 15);
colorArray3[138][0] = new Color(83, 80, 100);
colorArray3[139][0] = new Color(115, 65, 68);
colorArray3[140][0] = new Color(119, 108, 81);
colorArray3[141][0] = new Color(59, 67, 71);
colorArray3[142][0] = new Color(17, 172, 143);
colorArray3[143][0] = new Color(90, 112, 105);
colorArray3[144][0] = new Color(62, 28, 87);
colorArray3[146][0] = new Color(120, 59, 19);
colorArray3[147][0] = new Color(59, 59, 59);
colorArray3[148][0] = new Color(229, 218, 161);
colorArray3[149][0] = new Color(73, 59, 50);
colorArray3[151][0] = new Color(102, 75, 34);
colorArray3[167][0] = new Color(70, 68, 51);
colorArray3[172][0] = new Color(163, 96, 0);
colorArray3[242][0] = new Color(5, 5, 5);
colorArray3[243][0] = new Color(5, 5, 5);
colorArray3[173][0] = new Color(94, 163, 46);
colorArray3[174][0] = new Color(117, 32, 59);
colorArray3[175][0] = new Color(20, 11, 203);
colorArray3[176][0] = new Color(74, 69, 88);
colorArray3[177][0] = new Color(60, 30, 30);
colorArray3[183][0] = new Color(111, 117, 135);
colorArray3[179][0] = new Color(111, 117, 135);
colorArray3[178][0] = new Color(111, 117, 135);
colorArray3[184][0] = new Color(25, 23, 54);
colorArray3[181][0] = new Color(25, 23, 54);
colorArray3[180][0] = new Color(25, 23, 54);
colorArray3[182][0] = new Color(74, 71, 129);
colorArray3[185][0] = new Color(52, 52, 52);
colorArray3[186][0] = new Color(38, 9, 66);
colorArray3[216][0] = new Color(158, 100, 64);
colorArray3[217][0] = new Color(62, 45, 75);
colorArray3[218][0] = new Color(57, 14, 12);
colorArray3[219][0] = new Color(96, 72, 133);
colorArray3[187][0] = new Color(149, 80, 51);
colorArray3[235][0] = new Color(140, 75, 48);
colorArray3[220][0] = new Color(67, 55, 80);
colorArray3[221][0] = new Color(64, 37, 29);
colorArray3[222][0] = new Color(70, 51, 91);
colorArray3[188][0] = new Color(82, 63, 80);
colorArray3[189][0] = new Color(65, 61, 77);
colorArray3[190][0] = new Color(64, 65, 92);
colorArray3[191][0] = new Color(76, 53, 84);
colorArray3[192][0] = new Color(144, 67, 52);
colorArray3[193][0] = new Color(149, 48, 48);
colorArray3[194][0] = new Color(111, 32, 36);
colorArray3[195][0] = new Color(147, 48, 55);
colorArray3[196][0] = new Color(97, 67, 51);
colorArray3[197][0] = new Color(112, 80, 62);
colorArray3[198][0] = new Color(88, 61, 46);
colorArray3[199][0] = new Color((int) sbyte.MaxValue, 94, 76);
colorArray3[200][0] = new Color(143, 50, 123);
colorArray3[201][0] = new Color(136, 120, 131);
colorArray3[202][0] = new Color(219, 92, 143);
colorArray3[203][0] = new Color(113, 64, 150);
colorArray3[204][0] = new Color(74, 67, 60);
colorArray3[205][0] = new Color(60, 78, 59);
colorArray3[206][0] = new Color(0, 54, 21);
colorArray3[207][0] = new Color(74, 97, 72);
colorArray3[208][0] = new Color(40, 37, 35);
colorArray3[209][0] = new Color(77, 63, 66);
colorArray3[210][0] = new Color(111, 6, 6);
colorArray3[211][0] = new Color(88, 67, 59);
colorArray3[212][0] = new Color(88, 87, 80);
colorArray3[213][0] = new Color(71, 71, 67);
colorArray3[214][0] = new Color(76, 52, 60);
colorArray3[215][0] = new Color(89, 48, 59);
colorArray3[223][0] = new Color(51, 18, 4);
colorArray3[228][0] = new Color(160, 2, 75);
colorArray3[229][0] = new Color(100, 55, 164);
colorArray3[230][0] = new Color(0, 117, 101);
colorArray3[236][0] = new Color((int) sbyte.MaxValue, 49, 44);
colorArray3[231][0] = new Color(110, 90, 78);
colorArray3[232][0] = new Color(47, 69, 75);
colorArray3[233][0] = new Color(91, 67, 70);
colorArray3[237][0] = new Color(200, 44, 18);
colorArray3[238][0] = new Color(24, 93, 66);
colorArray3[239][0] = new Color(160, 87, 234);
colorArray3[240][0] = new Color(6, 106, (int) byte.MaxValue);
colorArray3[245][0] = new Color(102, 102, 102);
colorArray3[315][0] = new Color(181, 230, 29);
colorArray3[246][0] = new Color(61, 58, 78);
colorArray3[247][0] = new Color(52, 43, 45);
colorArray3[248][0] = new Color(81, 84, 101);
colorArray3[249][0] = new Color(85, 102, 103);
colorArray3[250][0] = new Color(52, 52, 52);
colorArray3[251][0] = new Color(52, 52, 52);
colorArray3[252][0] = new Color(52, 52, 52);
colorArray3[253][0] = new Color(52, 52, 52);
colorArray3[254][0] = new Color(52, 52, 52);
colorArray3[(int) byte.MaxValue][0] = new Color(52, 52, 52);
colorArray3[314][0] = new Color(52, 52, 52);
colorArray3[256][0] = new Color(40, 56, 50);
colorArray3[257][0] = new Color(49, 48, 36);
colorArray3[258][0] = new Color(43, 33, 32);
colorArray3[259][0] = new Color(31, 40, 49);
colorArray3[260][0] = new Color(48, 35, 52);
colorArray3[261][0] = new Color(88, 61, 46);
colorArray3[262][0] = new Color(55, 39, 26);
colorArray3[263][0] = new Color(39, 33, 26);
colorArray3[264][0] = new Color(43, 42, 68);
colorArray3[265][0] = new Color(30, 70, 80);
colorArray3[266][0] = new Color(78, 105, 135);
colorArray3[267][0] = new Color(51, 47, 96);
colorArray3[268][0] = new Color(101, 51, 51);
colorArray3[269][0] = new Color(62, 38, 41);
colorArray3[270][0] = new Color(59, 39, 22);
colorArray3[271][0] = new Color(59, 39, 22);
colorArray3[272][0] = new Color(111, 117, 135);
colorArray3[273][0] = new Color(25, 23, 54);
colorArray3[274][0] = new Color(52, 52, 52);
colorArray3[275][0] = new Color(149, 80, 51);
colorArray3[276][0] = new Color(82, 63, 80);
colorArray3[277][0] = new Color(65, 61, 77);
colorArray3[278][0] = new Color(64, 65, 92);
colorArray3[279][0] = new Color(76, 53, 84);
colorArray3[280][0] = new Color(144, 67, 52);
colorArray3[281][0] = new Color(149, 48, 48);
colorArray3[282][0] = new Color(111, 32, 36);
colorArray3[283][0] = new Color(147, 48, 55);
colorArray3[284][0] = new Color(97, 67, 51);
colorArray3[285][0] = new Color(112, 80, 62);
colorArray3[286][0] = new Color(88, 61, 46);
colorArray3[287][0] = new Color((int) sbyte.MaxValue, 94, 76);
colorArray3[288][0] = new Color(143, 50, 123);
colorArray3[289][0] = new Color(136, 120, 131);
colorArray3[290][0] = new Color(219, 92, 143);
colorArray3[291][0] = new Color(113, 64, 150);
colorArray3[292][0] = new Color(74, 67, 60);
colorArray3[293][0] = new Color(60, 78, 59);
colorArray3[294][0] = new Color(0, 54, 21);
colorArray3[295][0] = new Color(74, 97, 72);
colorArray3[296][0] = new Color(40, 37, 35);
colorArray3[297][0] = new Color(77, 63, 66);
colorArray3[298][0] = new Color(111, 6, 6);
colorArray3[299][0] = new Color(88, 67, 59);
colorArray3[300][0] = new Color(88, 87, 80);
colorArray3[301][0] = new Color(71, 71, 67);
colorArray3[302][0] = new Color(76, 52, 60);
colorArray3[303][0] = new Color(89, 48, 59);
colorArray3[304][0] = new Color(158, 100, 64);
colorArray3[305][0] = new Color(62, 45, 75);
colorArray3[306][0] = new Color(57, 14, 12);
colorArray3[307][0] = new Color(96, 72, 133);
colorArray3[308][0] = new Color(67, 55, 80);
colorArray3[309][0] = new Color(64, 37, 29);
colorArray3[310][0] = new Color(70, 51, 91);
colorArray3[311][0] = new Color(51, 18, 4);
colorArray3[312][0] = new Color(78, 110, 51);
colorArray3[313][0] = new Color(78, 110, 51);
Color[] colorArray4 = new Color[256];
Color color4 = new Color(50, 40, (int) byte.MaxValue);
Color color5 = new Color(145, 185, (int) byte.MaxValue);
for (int index = 0; index < colorArray4.Length; ++index)
{
float num1 = (float) index / (float) colorArray4.Length;
float num2 = 1f - num1;
colorArray4[index] = new Color((int) (byte) ((double) color4.R * (double) num2 + (double) color5.R * (double) num1), (int) (byte) ((double) color4.G * (double) num2 + (double) color5.G * (double) num1), (int) (byte) ((double) color4.B * (double) num2 + (double) color5.B * (double) num1));
}
Color[] colorArray5 = new Color[256];
Color color6 = new Color(88, 61, 46);
Color color7 = new Color(37, 78, 123);
for (int index = 0; index < colorArray5.Length; ++index)
{
float num3 = (float) index / (float) byte.MaxValue;
float num4 = 1f - num3;
colorArray5[index] = new Color((int) (byte) ((double) color6.R * (double) num4 + (double) color7.R * (double) num3), (int) (byte) ((double) color6.G * (double) num4 + (double) color7.G * (double) num3), (int) (byte) ((double) color6.B * (double) num4 + (double) color7.B * (double) num3));
}
Color[] colorArray6 = new Color[256];
Color color8 = new Color(74, 67, 60);
color7 = new Color(53, 70, 97);
for (int index = 0; index < colorArray6.Length; ++index)
{
float num5 = (float) index / (float) byte.MaxValue;
float num6 = 1f - num5;
colorArray6[index] = new Color((int) (byte) ((double) color8.R * (double) num6 + (double) color7.R * (double) num5), (int) (byte) ((double) color8.G * (double) num6 + (double) color7.G * (double) num5), (int) (byte) ((double) color8.B * (double) num6 + (double) color7.B * (double) num5));
}
Color color9 = new Color(50, 44, 38);
int num7 = 0;
MapHelper.tileOptionCounts = new int[623];
for (int index1 = 0; index1 < 623; ++index1)
{
Color[] colorArray7 = colorArray1[index1];
int index2 = 0;
while (index2 < 12 && !(colorArray7[index2] == Color.Transparent))
++index2;
MapHelper.tileOptionCounts[index1] = index2;
num7 += index2;
}
MapHelper.wallOptionCounts = new int[316];
for (int index3 = 0; index3 < 316; ++index3)
{
Color[] colorArray8 = colorArray3[index3];
int index4 = 0;
while (index4 < 2 && !(colorArray8[index4] == Color.Transparent))
++index4;
MapHelper.wallOptionCounts[index3] = index4;
num7 += index4;
}
MapHelper.colorLookup = new Color[num7 + 773];
MapHelper.colorLookup[0] = Color.Transparent;
ushort num8 = 1;
MapHelper.tilePosition = num8;
MapHelper.tileLookup = new ushort[623];
for (int index5 = 0; index5 < 623; ++index5)
{
if (MapHelper.tileOptionCounts[index5] > 0)
{
Color[] colorArray9 = colorArray1[index5];
MapHelper.tileLookup[index5] = num8;
for (int index6 = 0; index6 < MapHelper.tileOptionCounts[index5]; ++index6)
{
MapHelper.colorLookup[(int) num8] = colorArray1[index5][index6];
++num8;
}
}
else
MapHelper.tileLookup[index5] = (ushort) 0;
}
MapHelper.wallPosition = num8;
MapHelper.wallLookup = new ushort[316];
MapHelper.wallRangeStart = num8;
for (int index7 = 0; index7 < 316; ++index7)
{
if (MapHelper.wallOptionCounts[index7] > 0)
{
Color[] colorArray10 = colorArray3[index7];
MapHelper.wallLookup[index7] = num8;
for (int index8 = 0; index8 < MapHelper.wallOptionCounts[index7]; ++index8)
{
MapHelper.colorLookup[(int) num8] = colorArray3[index7][index8];
++num8;
}
}
else
MapHelper.wallLookup[index7] = (ushort) 0;
}
MapHelper.wallRangeEnd = num8;
MapHelper.liquidPosition = num8;
for (int index = 0; index < 3; ++index)
{
MapHelper.colorLookup[(int) num8] = colorArray2[index];
++num8;
}
MapHelper.skyPosition = num8;
for (int index = 0; index < 256; ++index)
{
MapHelper.colorLookup[(int) num8] = colorArray4[index];
++num8;
}
MapHelper.dirtPosition = num8;
for (int index = 0; index < 256; ++index)
{
MapHelper.colorLookup[(int) num8] = colorArray5[index];
++num8;
}
MapHelper.rockPosition = num8;
for (int index = 0; index < 256; ++index)
{
MapHelper.colorLookup[(int) num8] = colorArray6[index];
++num8;
}
MapHelper.hellPosition = num8;
MapHelper.colorLookup[(int) num8] = color9;
MapHelper.snowTypes = new ushort[6];
MapHelper.snowTypes[0] = MapHelper.tileLookup[147];
MapHelper.snowTypes[1] = MapHelper.tileLookup[161];
MapHelper.snowTypes[2] = MapHelper.tileLookup[162];
MapHelper.snowTypes[3] = MapHelper.tileLookup[163];
MapHelper.snowTypes[4] = MapHelper.tileLookup[164];
MapHelper.snowTypes[5] = MapHelper.tileLookup[200];
Lang.BuildMapAtlas();
}
public static void ResetMapData() => MapHelper.numUpdateTile = 0;
public static bool HasOption(int tileType, int option) => option < MapHelper.tileOptionCounts[tileType];
public static int TileToLookup(int tileType, int option) => (int) MapHelper.tileLookup[tileType] + option;
public static int LookupCount() => MapHelper.colorLookup.Length;
private static void MapColor(ushort type, ref Color oldColor, byte colorType)
{
Color color = WorldGen.paintColor((int) colorType);
float num1 = (float) oldColor.R / (float) byte.MaxValue;
float num2 = (float) oldColor.G / (float) byte.MaxValue;
float num3 = (float) oldColor.B / (float) byte.MaxValue;
if ((double) num2 > (double) num1)
num1 = num2;
if ((double) num3 > (double) num1)
{
double num4 = (double) num1;
num1 = num3;
num3 = (float) num4;
}
switch (colorType)
{
case 29:
float num5 = num3 * 0.3f;
oldColor.R = (byte) ((double) color.R * (double) num5);
oldColor.G = (byte) ((double) color.G * (double) num5);
oldColor.B = (byte) ((double) color.B * (double) num5);
break;
case 30:
if ((int) type >= (int) MapHelper.wallRangeStart && (int) type <= (int) MapHelper.wallRangeEnd)
{
oldColor.R = (byte) ((double) ((int) byte.MaxValue - (int) oldColor.R) * 0.5);
oldColor.G = (byte) ((double) ((int) byte.MaxValue - (int) oldColor.G) * 0.5);
oldColor.B = (byte) ((double) ((int) byte.MaxValue - (int) oldColor.B) * 0.5);
break;
}
oldColor.R = (byte) ((uint) byte.MaxValue - (uint) oldColor.R);
oldColor.G = (byte) ((uint) byte.MaxValue - (uint) oldColor.G);
oldColor.B = (byte) ((uint) byte.MaxValue - (uint) oldColor.B);
break;
case 31:
break;
default:
float num6 = num1;
oldColor.R = (byte) ((double) color.R * (double) num6);
oldColor.G = (byte) ((double) color.G * (double) num6);
oldColor.B = (byte) ((double) color.B * (double) num6);
break;
}
}
public static Color GetMapTileXnaColor(ref MapTile tile)
{
Color oldColor = MapHelper.colorLookup[(int) tile.Type];
byte color = tile.Color;
if (color > (byte) 0)
MapHelper.MapColor(tile.Type, ref oldColor, color);
if (tile.Light == byte.MaxValue || color == (byte) 31)
return oldColor;
float num = (float) tile.Light / (float) byte.MaxValue;
oldColor.R = (byte) ((double) oldColor.R * (double) num);
oldColor.G = (byte) ((double) oldColor.G * (double) num);
oldColor.B = (byte) ((double) oldColor.B * (double) num);
return oldColor;
}
public static MapTile CreateMapTile(int i, int j, byte Light)
{
Tile tileCache = Main.tile[i, j];
if (tileCache == null)
return new MapTile();
int num1 = 0;
int num2 = (int) Light;
MapTile mapTile = Main.Map[i, j];
int num3 = 0;
int baseOption = 0;
if (tileCache.active())
{
int type = (int) tileCache.type;
num3 = (int) MapHelper.tileLookup[type];
switch (type)
{
case 5:
if (WorldGen.IsThisAMushroomTree(i, j))
baseOption = 1;
num1 = (int) tileCache.color();
goto label_11;
case 51:
if ((i + j) % 2 == 0)
{
num3 = 0;
break;
}
break;
}
if (num3 != 0)
{
num1 = type != 160 ? (int) tileCache.color() : 0;
MapHelper.GetTileBaseOption(j, tileCache, ref baseOption);
}
}
label_11:
if (num3 == 0)
{
if (tileCache.liquid > (byte) 32)
{
int num4 = (int) tileCache.liquidType();
num3 = (int) MapHelper.liquidPosition + num4;
}
else if (tileCache.wall > (ushort) 0 && tileCache.wall < (ushort) 316)
{
int wall = (int) tileCache.wall;
num3 = (int) MapHelper.wallLookup[wall];
num1 = (int) tileCache.wallColor();
switch (wall)
{
case 21:
case 88:
case 89:
case 90:
case 91:
case 92:
case 93:
case 168:
case 241:
num1 = 0;
break;
case 27:
baseOption = i % 2;
break;
default:
baseOption = 0;
break;
}
}
}
if (num3 == 0)
{
if ((double) j < Main.worldSurface)
{
int num5 = (int) (byte) ((double) byte.MaxValue * ((double) j / Main.worldSurface));
num3 = (int) MapHelper.skyPosition + num5;
num2 = (int) byte.MaxValue;
num1 = 0;
}
else if (j < Main.UnderworldLayer)
{
num1 = 0;
byte num6 = 0;
float num7 = (float) ((double) Main.screenPosition.X / 16.0 - 5.0);
float num8 = (float) (((double) Main.screenPosition.X + (double) Main.screenWidth) / 16.0 + 5.0);
float num9 = (float) ((double) Main.screenPosition.Y / 16.0 - 5.0);
float num10 = (float) (((double) Main.screenPosition.Y + (double) Main.screenHeight) / 16.0 + 5.0);
if (((double) i < (double) num7 || (double) i > (double) num8 || (double) j < (double) num9 || (double) j > (double) num10) && i > 40 && i < Main.maxTilesX - 40 && j > 40 && j < Main.maxTilesY - 40)
{
for (int x = i - 36; x <= i + 30; x += 10)
{
for (int y = j - 36; y <= j + 30; y += 10)
{
int type = (int) Main.Map[x, y].Type;
for (int index = 0; index < MapHelper.snowTypes.Length; ++index)
{
if ((int) MapHelper.snowTypes[index] == type)
{
num6 = byte.MaxValue;
x = i + 31;
y = j + 31;
break;
}
}
}
}
}
else
{
float num11 = (float) Main.SceneMetrics.SnowTileCount / (float) SceneMetrics.SnowTileMax * (float) byte.MaxValue;
if ((double) num11 > (double) byte.MaxValue)
num11 = (float) byte.MaxValue;
num6 = (byte) num11;
}
num3 = (double) j >= Main.rockLayer ? (int) MapHelper.rockPosition + (int) num6 : (int) MapHelper.dirtPosition + (int) num6;
}
else
num3 = (int) MapHelper.hellPosition;
}
return MapTile.Create((ushort) (num3 + baseOption), (byte) num2, (byte) num1);
}
public static void GetTileBaseOption(int y, Tile tileCache, ref int baseOption)
{
switch (tileCache.type)
{
case 4:
if (tileCache.frameX < (short) 66)
baseOption = 1;
baseOption = 0;
break;
case 15:
int num1 = (int) tileCache.frameY / 40;
baseOption = 0;
if (num1 != 1 && num1 != 20)
break;
baseOption = 1;
break;
case 21:
case 441:
switch ((int) tileCache.frameX / 36)
{
case 1:
case 2:
case 10:
case 13:
case 15:
baseOption = 1;
return;
case 3:
case 4:
baseOption = 2;
return;
case 6:
baseOption = 3;
return;
case 11:
case 17:
baseOption = 4;
return;
default:
baseOption = 0;
return;
}
case 26:
if (tileCache.frameX >= (short) 54)
{
baseOption = 1;
break;
}
baseOption = 0;
break;
case 27:
if (tileCache.frameY < (short) 34)
{
baseOption = 1;
break;
}
baseOption = 0;
break;
case 28:
if (tileCache.frameY < (short) 144)
{
baseOption = 0;
break;
}
if (tileCache.frameY < (short) 252)
{
baseOption = 1;
break;
}
if (tileCache.frameY < (short) 360 || tileCache.frameY > (short) 900 && tileCache.frameY < (short) 1008)
{
baseOption = 2;
break;
}
if (tileCache.frameY < (short) 468)
{
baseOption = 3;
break;
}
if (tileCache.frameY < (short) 576)
{
baseOption = 4;
break;
}
if (tileCache.frameY < (short) 684)
{
baseOption = 5;
break;
}
if (tileCache.frameY < (short) 792)
{
baseOption = 6;
break;
}
if (tileCache.frameY < (short) 898)
{
baseOption = 8;
break;
}
if (tileCache.frameY < (short) 1006)
{
baseOption = 7;
break;
}
if (tileCache.frameY < (short) 1114)
{
baseOption = 0;
break;
}
if (tileCache.frameY < (short) 1222)
{
baseOption = 3;
break;
}
baseOption = 7;
break;
case 31:
if (tileCache.frameX >= (short) 36)
{
baseOption = 1;
break;
}
baseOption = 0;
break;
case 82:
case 83:
case 84:
if (tileCache.frameX < (short) 18)
{
baseOption = 0;
break;
}
if (tileCache.frameX < (short) 36)
{
baseOption = 1;
break;
}
if (tileCache.frameX < (short) 54)
{
baseOption = 2;
break;
}
if (tileCache.frameX < (short) 72)
{
baseOption = 3;
break;
}
if (tileCache.frameX < (short) 90)
{
baseOption = 4;
break;
}
if (tileCache.frameX < (short) 108)
{
baseOption = 5;
break;
}
baseOption = 6;
break;
case 105:
if (tileCache.frameX >= (short) 1548 && tileCache.frameX <= (short) 1654)
{
baseOption = 1;
break;
}
if (tileCache.frameX >= (short) 1656 && tileCache.frameX <= (short) 1798)
{
baseOption = 2;
break;
}
baseOption = 0;
break;
case 133:
if (tileCache.frameX < (short) 52)
{
baseOption = 0;
break;
}
baseOption = 1;
break;
case 134:
if (tileCache.frameX < (short) 28)
{
baseOption = 0;
break;
}
baseOption = 1;
break;
case 137:
if (tileCache.frameY == (short) 0)
{
baseOption = 0;
break;
}
baseOption = 1;
break;
case 149:
baseOption = y % 3;
break;
case 160:
baseOption = y % 3;
break;
case 165:
if (tileCache.frameX < (short) 54)
{
baseOption = 0;
break;
}
if (tileCache.frameX < (short) 106)
{
baseOption = 1;
break;
}
if (tileCache.frameX >= (short) 216)
{
baseOption = 1;
break;
}
if (tileCache.frameX < (short) 162)
{
baseOption = 2;
break;
}
baseOption = 3;
break;
case 178:
if (tileCache.frameX < (short) 18)
{
baseOption = 0;
break;
}
if (tileCache.frameX < (short) 36)
{
baseOption = 1;
break;
}
if (tileCache.frameX < (short) 54)
{
baseOption = 2;
break;
}
if (tileCache.frameX < (short) 72)
{
baseOption = 3;
break;
}
if (tileCache.frameX < (short) 90)
{
baseOption = 4;
break;
}
if (tileCache.frameX < (short) 108)
{
baseOption = 5;
break;
}
baseOption = 6;
break;
case 184:
if (tileCache.frameX < (short) 22)
{
baseOption = 0;
break;
}
if (tileCache.frameX < (short) 44)
{
baseOption = 1;
break;
}
if (tileCache.frameX < (short) 66)
{
baseOption = 2;
break;
}
if (tileCache.frameX < (short) 88)
{
baseOption = 3;
break;
}
if (tileCache.frameX < (short) 110)
{
baseOption = 4;
break;
}
if (tileCache.frameX < (short) 132)
{
baseOption = 5;
break;
}
if (tileCache.frameX < (short) 154)
{
baseOption = 6;
break;
}
if (tileCache.frameX < (short) 176)
{
baseOption = 7;
break;
}
if (tileCache.frameX >= (short) 198)
break;
baseOption = 8;
break;
case 185:
if (tileCache.frameY < (short) 18)
{
int num2 = (int) tileCache.frameX / 18;
if (num2 < 6 || num2 == 28 || num2 == 29 || num2 == 30 || num2 == 31 || num2 == 32)
{
baseOption = 0;
break;
}
if (num2 < 12 || num2 == 33 || num2 == 34 || num2 == 35)
{
baseOption = 1;
break;
}
if (num2 < 28)
{
baseOption = 2;
break;
}
if (num2 < 48)
{
baseOption = 3;
break;
}
if (num2 < 54)
{
baseOption = 4;
break;
}
if (num2 < 72)
{
baseOption = 0;
break;
}
if (num2 != 72)
break;
baseOption = 1;
break;
}
int num3 = (int) tileCache.frameX / 36 + ((int) tileCache.frameY / 18 - 1) * 18;
if (num3 < 6 || num3 == 19 || num3 == 20 || num3 == 21 || num3 == 22 || num3 == 23 || num3 == 24 || num3 == 33 || num3 == 38 || num3 == 39 || num3 == 40)
{
baseOption = 0;
break;
}
if (num3 < 16)
{
baseOption = 2;
break;
}
if (num3 < 19 || num3 == 31 || num3 == 32)
{
baseOption = 1;
break;
}
if (num3 < 31)
{
baseOption = 3;
break;
}
if (num3 < 38)
{
baseOption = 4;
break;
}
if (num3 < 59)
{
baseOption = 0;
break;
}
if (num3 >= 62)
break;
baseOption = 1;
break;
case 186:
int num4 = (int) tileCache.frameX / 54;
if (num4 < 7)
{
baseOption = 2;
break;
}
if (num4 < 22 || num4 == 33 || num4 == 34 || num4 == 35)
{
baseOption = 0;
break;
}
if (num4 < 25)
{
baseOption = 1;
break;
}
if (num4 == 25)
{
baseOption = 5;
break;
}
if (num4 >= 32)
break;
baseOption = 3;
break;
case 187:
int num5 = (int) tileCache.frameX / 54 + (int) tileCache.frameY / 36 * 36;
if (num5 < 3 || num5 == 14 || num5 == 15 || num5 == 16)
{
baseOption = 0;
break;
}
if (num5 < 6)
{
baseOption = 6;
break;
}
if (num5 < 9)
{
baseOption = 7;
break;
}
if (num5 < 14)
{
baseOption = 4;
break;
}
if (num5 < 18)
{
baseOption = 4;
break;
}
if (num5 < 23)
{
baseOption = 8;
break;
}
if (num5 < 25)
{
baseOption = 0;
break;
}
if (num5 < 29)
{
baseOption = 1;
break;
}
if (num5 < 47)
{
baseOption = 0;
break;
}
if (num5 < 50)
{
baseOption = 1;
break;
}
if (num5 < 52)
{
baseOption = 10;
break;
}
if (num5 >= 55)
break;
baseOption = 2;
break;
case 227:
baseOption = (int) tileCache.frameX / 34;
break;
case 240:
int num6 = (int) tileCache.frameX / 54 + (int) tileCache.frameY / 54 * 36;
if (num6 >= 0 && num6 <= 11 || num6 >= 47 && num6 <= 53 || num6 == 72)
{
baseOption = 0;
break;
}
if (num6 >= 12 && num6 <= 15)
{
baseOption = 1;
break;
}
if (num6 == 16 || num6 == 17)
{
baseOption = 2;
break;
}
if (num6 >= 18 && num6 <= 35 || num6 >= 63 && num6 <= 71)
{
baseOption = 1;
break;
}
if (num6 >= 41 && num6 <= 45)
{
baseOption = 3;
break;
}
if (num6 != 46)
break;
baseOption = 4;
break;
case 242:
switch ((int) tileCache.frameY / 72)
{
case 22:
case 23:
case 24:
baseOption = 1;
return;
default:
baseOption = 0;
return;
}
case 419:
int num7 = (int) tileCache.frameX / 18;
if (num7 > 2)
num7 = 2;
baseOption = num7;
break;
case 420:
int num8 = (int) tileCache.frameY / 18;
if (num8 > 5)
num8 = 5;
baseOption = num8;
break;
case 423:
int num9 = (int) tileCache.frameY / 18;
if (num9 > 6)
num9 = 6;
baseOption = num9;
break;
case 428:
int num10 = (int) tileCache.frameY / 18;
if (num10 > 3)
num10 = 3;
baseOption = num10;
break;
case 440:
int num11 = (int) tileCache.frameX / 54;
if (num11 > 6)
num11 = 6;
baseOption = num11;
break;
case 453:
int num12 = (int) tileCache.frameX / 36;
if (num12 > 2)
num12 = 2;
baseOption = num12;
break;
case 457:
int num13 = (int) tileCache.frameX / 36;
if (num13 > 4)
num13 = 4;
baseOption = num13;
break;
case 461:
if (Main.player[Main.myPlayer].ZoneCorrupt)
{
baseOption = 1;
break;
}
if (Main.player[Main.myPlayer].ZoneCrimson)
{
baseOption = 2;
break;
}
if (!Main.player[Main.myPlayer].ZoneHallow)
break;
baseOption = 3;
break;
case 467:
case 468:
int num14 = (int) tileCache.frameX / 36;
if ((uint) num14 > 11U)
{
switch (num14)
{
case 12:
case 13:
baseOption = 10;
return;
default:
baseOption = 0;
return;
}
}
else
{
baseOption = num14;
break;
}
case 493:
if (tileCache.frameX < (short) 18)
{
baseOption = 0;
break;
}
if (tileCache.frameX < (short) 36)
{
baseOption = 1;
break;
}
if (tileCache.frameX < (short) 54)
{
baseOption = 2;
break;
}
if (tileCache.frameX < (short) 72)
{
baseOption = 3;
break;
}
if (tileCache.frameX < (short) 90)
{
baseOption = 4;
break;
}
baseOption = 5;
break;
case 518:
case 519:
baseOption = (int) tileCache.frameY / 18;
break;
case 529:
baseOption = (int) tileCache.frameY / 34;
break;
case 530:
baseOption = (int) tileCache.frameY / 36;
break;
case 548:
if ((int) tileCache.frameX / 54 < 7)
{
baseOption = 0;
break;
}
baseOption = 1;
break;
case 560:
int num15 = (int) tileCache.frameX / 36;
switch (num15)
{
case 0:
case 1:
case 2:
baseOption = num15;
return;
default:
baseOption = 0;
return;
}
case 572:
baseOption = (int) tileCache.frameY / 36;
break;
case 591:
baseOption = (int) tileCache.frameX / 36;
break;
case 597:
int num16 = (int) tileCache.frameX / 54;
switch (num16)
{
case 0:
case 1:
case 2:
case 3:
case 4:
case 5:
case 6:
case 7:
case 8:
baseOption = num16;
return;
default:
baseOption = 0;
return;
}
default:
baseOption = 0;
break;
}
}
public static void SaveMap()
{
if (Main.ActivePlayerFileData.IsCloudSave && SocialAPI.Cloud == null || !Main.mapEnabled)
return;
if (!Monitor.TryEnter(MapHelper.IOLock))
return;
try
{
FileUtilities.ProtectedInvoke(new Action(MapHelper.InternalSaveMap));
}
catch (Exception ex)
{
using (StreamWriter streamWriter = new StreamWriter("client-crashlog.txt", true))
{
streamWriter.WriteLine((object) DateTime.Now);
streamWriter.WriteLine((object) ex);
streamWriter.WriteLine("");
}
}
finally
{
Monitor.Exit(MapHelper.IOLock);
}
}
private static void InternalSaveMap()
{
bool isCloudSave = Main.ActivePlayerFileData.IsCloudSave;
string folderPath = Main.playerPathName.Substring(0, Main.playerPathName.Length - 4);
if (!isCloudSave)
Utils.TryCreatingDirectory(folderPath);
string str = folderPath + Path.DirectorySeparatorChar.ToString();
string path = !Main.ActiveWorldFileData.UseGuidAsMapName ? str + (object) Main.worldID + ".map" : str + (object) Main.ActiveWorldFileData.UniqueId + ".map";
new Stopwatch().Start();
if (!Main.gameMenu)
MapHelper.noStatusText = true;
using (MemoryStream memoryStream = new MemoryStream(4000))
{
using (BinaryWriter writer = new BinaryWriter((Stream) memoryStream))
{
using (DeflateStream deflateStream = new DeflateStream((Stream) memoryStream, (CompressionMode) 0))
{
int count = 0;
byte[] buffer = new byte[16384];
writer.Write(230);
Main.MapFileMetadata.IncrementAndWrite(writer);
writer.Write(Main.worldName);
writer.Write(Main.worldID);
writer.Write(Main.maxTilesY);
writer.Write(Main.maxTilesX);
writer.Write((short) 623);
writer.Write((short) 316);
writer.Write((short) 3);
writer.Write((short) 256);
writer.Write((short) 256);
writer.Write((short) 256);
byte num1 = 1;
byte num2 = 0;
for (int index = 0; index < 623; ++index)
{
if (MapHelper.tileOptionCounts[index] != 1)
num2 |= num1;
if (num1 == (byte) 128)
{
writer.Write(num2);
num2 = (byte) 0;
num1 = (byte) 1;
}
else
num1 <<= 1;
}
if (num1 != (byte) 1)
writer.Write(num2);
int index1 = 0;
byte num3 = 1;
byte num4 = 0;
for (; index1 < 316; ++index1)
{
if (MapHelper.wallOptionCounts[index1] != 1)
num4 |= num3;
if (num3 == (byte) 128)
{
writer.Write(num4);
num4 = (byte) 0;
num3 = (byte) 1;
}
else
num3 <<= 1;
}
if (num3 != (byte) 1)
writer.Write(num4);
for (int index2 = 0; index2 < 623; ++index2)
{
if (MapHelper.tileOptionCounts[index2] != 1)
writer.Write((byte) MapHelper.tileOptionCounts[index2]);
}
for (int index3 = 0; index3 < 316; ++index3)
{
if (MapHelper.wallOptionCounts[index3] != 1)
writer.Write((byte) MapHelper.wallOptionCounts[index3]);
}
writer.Flush();
for (int y = 0; y < Main.maxTilesY; ++y)
{
if (!MapHelper.noStatusText)
{
float num5 = (float) y / (float) Main.maxTilesY;
Main.statusText = Lang.gen[66].Value + " " + (object) (int) ((double) num5 * 100.0 + 1.0) + "%";
}
int num6;
for (int x1 = 0; x1 < Main.maxTilesX; x1 = num6 + 1)
{
MapTile mapTile = Main.Map[x1, y];
byte num7;
byte num8 = num7 = (byte) 0;
bool flag1 = true;
bool flag2 = true;
int num9 = 0;
int num10 = 0;
byte num11 = 0;
int num12;
ushort num13;
int num14;
if (mapTile.Light <= (byte) 18)
{
flag2 = false;
flag1 = false;
num12 = 0;
num13 = (ushort) 0;
num14 = 0;
int x2 = x1 + 1;
for (int index4 = Main.maxTilesX - x1 - 1; index4 > 0 && Main.Map[x2, y].Light <= (byte) 18; ++x2)
{
++num14;
--index4;
}
}
else
{
num11 = mapTile.Color;
num13 = mapTile.Type;
if ((int) num13 < (int) MapHelper.wallPosition)
{
num12 = 1;
num13 -= MapHelper.tilePosition;
}
else if ((int) num13 < (int) MapHelper.liquidPosition)
{
num12 = 2;
num13 -= MapHelper.wallPosition;
}
else if ((int) num13 < (int) MapHelper.skyPosition)
{
num12 = 3 + ((int) num13 - (int) MapHelper.liquidPosition);
flag1 = false;
}
else if ((int) num13 < (int) MapHelper.dirtPosition)
{
num12 = 6;
flag2 = false;
flag1 = false;
}
else if ((int) num13 < (int) MapHelper.hellPosition)
{
num12 = 7;
if ((int) num13 < (int) MapHelper.rockPosition)
num13 -= MapHelper.dirtPosition;
else
num13 -= MapHelper.rockPosition;
}
else
{
num12 = 6;
flag1 = false;
}
if (mapTile.Light == byte.MaxValue)
flag2 = false;
if (flag2)
{
num14 = 0;
int x3 = x1 + 1;
int num15 = Main.maxTilesX - x1 - 1;
num9 = x3;
while (num15 > 0)
{
MapTile other = Main.Map[x3, y];
if (mapTile.EqualsWithoutLight(ref other))
{
--num15;
++num14;
++x3;
}
else
{
num10 = x3;
break;
}
}
}
else
{
num14 = 0;
int x4 = x1 + 1;
int num16 = Main.maxTilesX - x1 - 1;
while (num16 > 0)
{
MapTile other = Main.Map[x4, y];
if (mapTile.Equals(ref other))
{
--num16;
++num14;
++x4;
}
else
break;
}
}
}
if (num11 > (byte) 0)
num7 |= (byte) ((uint) num11 << 1);
if (num7 != (byte) 0)
num8 |= (byte) 1;
byte num17 = (byte) ((uint) num8 | (uint) (byte) (num12 << 1));
if (flag1 && num13 > (ushort) byte.MaxValue)
num17 |= (byte) 16;
if (flag2)
num17 |= (byte) 32;
if (num14 > 0)
{
if (num14 > (int) byte.MaxValue)
num17 |= (byte) 128;
else
num17 |= (byte) 64;
}
buffer[count] = num17;
++count;
if (num7 != (byte) 0)
{
buffer[count] = num7;
++count;
}
if (flag1)
{
buffer[count] = (byte) num13;
++count;
if (num13 > (ushort) byte.MaxValue)
{
buffer[count] = (byte) ((uint) num13 >> 8);
++count;
}
}
if (flag2)
{
buffer[count] = mapTile.Light;
++count;
}
if (num14 > 0)
{
buffer[count] = (byte) num14;
++count;
if (num14 > (int) byte.MaxValue)
{
buffer[count] = (byte) (num14 >> 8);
++count;
}
}
for (int x5 = num9; x5 < num10; ++x5)
{
buffer[count] = Main.Map[x5, y].Light;
++count;
}
num6 = x1 + num14;
if (count >= 4096)
{
((Stream) deflateStream).Write(buffer, 0, count);
count = 0;
}
}
}
if (count > 0)
((Stream) deflateStream).Write(buffer, 0, count);
((Stream) deflateStream).Dispose();
FileUtilities.WriteAllBytes(path, memoryStream.ToArray(), isCloudSave);
}
}
}
MapHelper.noStatusText = false;
}
public static void LoadMapVersion1(BinaryReader fileIO, int release)
{
string str = fileIO.ReadString();
int num1 = fileIO.ReadInt32();
int num2 = fileIO.ReadInt32();
int num3 = fileIO.ReadInt32();
string worldName = Main.worldName;
if (str != worldName || num1 != Main.worldID || num3 != Main.maxTilesX || num2 != Main.maxTilesY)
throw new Exception("Map meta-data is invalid.");
for (int x = 0; x < Main.maxTilesX; ++x)
{
float num4 = (float) x / (float) Main.maxTilesX;
Main.statusText = Lang.gen[67].Value + " " + (object) (int) ((double) num4 * 100.0 + 1.0) + "%";
for (int y = 0; y < Main.maxTilesY; ++y)
{
if (fileIO.ReadBoolean())
{
int index = release <= 77 ? (int) fileIO.ReadByte() : (int) fileIO.ReadUInt16();
byte light = fileIO.ReadByte();
MapHelper.OldMapHelper oldMapHelper;
oldMapHelper.misc = fileIO.ReadByte();
oldMapHelper.misc2 = release < 50 ? (byte) 0 : fileIO.ReadByte();
bool flag = false;
int num5 = (int) oldMapHelper.option();
int num6;
if (oldMapHelper.active())
num6 = num5 + (int) MapHelper.tileLookup[index];
else if (oldMapHelper.water())
num6 = (int) MapHelper.liquidPosition;
else if (oldMapHelper.lava())
num6 = (int) MapHelper.liquidPosition + 1;
else if (oldMapHelper.honey())
num6 = (int) MapHelper.liquidPosition + 2;
else if (oldMapHelper.wall())
num6 = num5 + (int) MapHelper.wallLookup[index];
else if ((double) y < Main.worldSurface)
{
flag = true;
int num7 = (int) (byte) (256.0 * ((double) y / Main.worldSurface));
num6 = (int) MapHelper.skyPosition + num7;
}
else if ((double) y < Main.rockLayer)
{
flag = true;
if (index > (int) byte.MaxValue)
index = (int) byte.MaxValue;
num6 = index + (int) MapHelper.dirtPosition;
}
else if (y < Main.UnderworldLayer)
{
flag = true;
if (index > (int) byte.MaxValue)
index = (int) byte.MaxValue;
num6 = index + (int) MapHelper.rockPosition;
}
else
num6 = (int) MapHelper.hellPosition;
MapTile tile = MapTile.Create((ushort) num6, light, (byte) 0);
Main.Map.SetTile(x, y, ref tile);
int num8 = (int) fileIO.ReadInt16();
if (light == byte.MaxValue)
{
while (num8 > 0)
{
--num8;
++y;
if (flag)
{
int num9;
if ((double) y < Main.worldSurface)
{
flag = true;
int num10 = (int) (byte) (256.0 * ((double) y / Main.worldSurface));
num9 = (int) MapHelper.skyPosition + num10;
}
else if ((double) y < Main.rockLayer)
{
flag = true;
num9 = index + (int) MapHelper.dirtPosition;
}
else if (y < Main.UnderworldLayer)
{
flag = true;
num9 = index + (int) MapHelper.rockPosition;
}
else
{
flag = true;
num9 = (int) MapHelper.hellPosition;
}
tile.Type = (ushort) num9;
}
Main.Map.SetTile(x, y, ref tile);
}
}
else
{
while (num8 > 0)
{
++y;
--num8;
byte num11 = fileIO.ReadByte();
if (num11 > (byte) 18)
{
tile.Light = num11;
if (flag)
{
int num12;
if ((double) y < Main.worldSurface)
{
flag = true;
int num13 = (int) (byte) (256.0 * ((double) y / Main.worldSurface));
num12 = (int) MapHelper.skyPosition + num13;
}
else if ((double) y < Main.rockLayer)
{
flag = true;
num12 = index + (int) MapHelper.dirtPosition;
}
else if (y < Main.UnderworldLayer)
{
flag = true;
num12 = index + (int) MapHelper.rockPosition;
}
else
{
flag = true;
num12 = (int) MapHelper.hellPosition;
}
tile.Type = (ushort) num12;
}
Main.Map.SetTile(x, y, ref tile);
}
}
}
}
else
{
int num14 = (int) fileIO.ReadInt16();
y += num14;
}
}
}
}
public static void LoadMapVersion2(BinaryReader fileIO, int release)
{
Main.MapFileMetadata = release < 135 ? FileMetadata.FromCurrentSettings(FileType.Map) : FileMetadata.Read(fileIO, FileType.Map);
string str = fileIO.ReadString();
int num1 = fileIO.ReadInt32();
int num2 = fileIO.ReadInt32();
int num3 = fileIO.ReadInt32();
string worldName = Main.worldName;
if (str != worldName || num1 != Main.worldID || num3 != Main.maxTilesX || num2 != Main.maxTilesY)
throw new Exception("Map meta-data is invalid.");
short num4 = fileIO.ReadInt16();
short num5 = fileIO.ReadInt16();
short num6 = fileIO.ReadInt16();
short num7 = fileIO.ReadInt16();
short num8 = fileIO.ReadInt16();
short num9 = fileIO.ReadInt16();
bool[] flagArray1 = new bool[(int) num4];
byte num10 = 0;
byte num11 = 128;
for (int index = 0; index < (int) num4; ++index)
{
if (num11 == (byte) 128)
{
num10 = fileIO.ReadByte();
num11 = (byte) 1;
}
else
num11 <<= 1;
if (((int) num10 & (int) num11) == (int) num11)
flagArray1[index] = true;
}
bool[] flagArray2 = new bool[(int) num5];
byte num12 = 0;
byte num13 = 128;
for (int index = 0; index < (int) num5; ++index)
{
if (num13 == (byte) 128)
{
num12 = fileIO.ReadByte();
num13 = (byte) 1;
}
else
num13 <<= 1;
if (((int) num12 & (int) num13) == (int) num13)
flagArray2[index] = true;
}
byte[] numArray1 = new byte[(int) num4];
ushort num14 = 0;
for (int index = 0; index < (int) num4; ++index)
{
numArray1[index] = !flagArray1[index] ? (byte) 1 : fileIO.ReadByte();
num14 += (ushort) numArray1[index];
}
byte[] numArray2 = new byte[(int) num5];
ushort num15 = 0;
for (int index = 0; index < (int) num5; ++index)
{
numArray2[index] = !flagArray2[index] ? (byte) 1 : fileIO.ReadByte();
num15 += (ushort) numArray2[index];
}
ushort[] numArray3 = new ushort[(int) num14 + (int) num15 + (int) num6 + (int) num7 + (int) num8 + (int) num9 + 2];
numArray3[0] = (ushort) 0;
ushort num16 = 1;
ushort num17 = 1;
ushort num18 = num17;
for (int index1 = 0; index1 < 623; ++index1)
{
if (index1 < (int) num4)
{
int num19 = (int) numArray1[index1];
int tileOptionCount = MapHelper.tileOptionCounts[index1];
for (int index2 = 0; index2 < tileOptionCount; ++index2)
{
if (index2 < num19)
{
numArray3[(int) num17] = num16;
++num17;
}
++num16;
}
}
else
num16 += (ushort) MapHelper.tileOptionCounts[index1];
}
ushort num20 = num17;
for (int index3 = 0; index3 < 316; ++index3)
{
if (index3 < (int) num5)
{
int num21 = (int) numArray2[index3];
int wallOptionCount = MapHelper.wallOptionCounts[index3];
for (int index4 = 0; index4 < wallOptionCount; ++index4)
{
if (index4 < num21)
{
numArray3[(int) num17] = num16;
++num17;
}
++num16;
}
}
else
num16 += (ushort) MapHelper.wallOptionCounts[index3];
}
ushort num22 = num17;
for (int index = 0; index < 3; ++index)
{
if (index < (int) num6)
{
numArray3[(int) num17] = num16;
++num17;
}
++num16;
}
ushort num23 = num17;
for (int index = 0; index < 256; ++index)
{
if (index < (int) num7)
{
numArray3[(int) num17] = num16;
++num17;
}
++num16;
}
ushort num24 = num17;
for (int index = 0; index < 256; ++index)
{
if (index < (int) num8)
{
numArray3[(int) num17] = num16;
++num17;
}
++num16;
}
ushort num25 = num17;
for (int index = 0; index < 256; ++index)
{
if (index < (int) num9)
{
numArray3[(int) num17] = num16;
++num17;
}
++num16;
}
ushort num26 = num17;
numArray3[(int) num17] = num16;
BinaryReader binaryReader = release < 93 ? new BinaryReader(fileIO.BaseStream) : new BinaryReader((Stream) new DeflateStream(fileIO.BaseStream, (CompressionMode) 1));
for (int y = 0; y < Main.maxTilesY; ++y)
{
float num27 = (float) y / (float) Main.maxTilesY;
Main.statusText = Lang.gen[67].Value + " " + (object) (int) ((double) num27 * 100.0 + 1.0) + "%";
for (int x = 0; x < Main.maxTilesX; ++x)
{
byte num28 = binaryReader.ReadByte();
byte num29 = ((int) num28 & 1) != 1 ? (byte) 0 : binaryReader.ReadByte();
byte num30 = (byte) (((int) num28 & 14) >> 1);
bool flag;
switch (num30)
{
case 0:
flag = false;
break;
case 1:
case 2:
case 7:
flag = true;
break;
case 3:
case 4:
case 5:
flag = false;
break;
case 6:
flag = false;
break;
default:
flag = false;
break;
}
ushort num31 = !flag ? (ushort) 0 : (((int) num28 & 16) != 16 ? (ushort) binaryReader.ReadByte() : binaryReader.ReadUInt16());
byte light = ((int) num28 & 32) != 32 ? byte.MaxValue : binaryReader.ReadByte();
int num32;
switch ((byte) (((int) num28 & 192) >> 6))
{
case 0:
num32 = 0;
break;
case 1:
num32 = (int) binaryReader.ReadByte();
break;
case 2:
num32 = (int) binaryReader.ReadInt16();
break;
default:
num32 = 0;
break;
}
switch (num30)
{
case 0:
x += num32;
break;
case 1:
num31 += num18;
goto default;
case 2:
num31 += num20;
goto default;
case 3:
case 4:
case 5:
num31 += (ushort) ((uint) num22 + ((uint) num30 - 3U));
goto default;
case 6:
if ((double) y < Main.worldSurface)
{
ushort num33 = (ushort) ((double) num7 * ((double) y / Main.worldSurface));
num31 += (ushort) ((uint) num23 + (uint) num33);
goto default;
}
else
{
num31 = num26;
goto default;
}
case 7:
if ((double) y < Main.rockLayer)
{
num31 += num24;
goto default;
}
else
{
num31 += num25;
goto default;
}
default:
MapTile tile = MapTile.Create(numArray3[(int) num31], light, (byte) ((int) num29 >> 1 & 31));
Main.Map.SetTile(x, y, ref tile);
if (light == byte.MaxValue)
{
for (; num32 > 0; --num32)
{
++x;
Main.Map.SetTile(x, y, ref tile);
}
break;
}
for (; num32 > 0; --num32)
{
++x;
tile = tile.WithLight(binaryReader.ReadByte());
Main.Map.SetTile(x, y, ref tile);
}
break;
}
}
}
binaryReader.Close();
}
private struct OldMapHelper
{
public byte misc;
public byte misc2;
public bool active() => ((int) this.misc & 1) == 1;
public bool water() => ((int) this.misc & 2) == 2;
public bool lava() => ((int) this.misc & 4) == 4;
public bool honey() => ((int) this.misc2 & 64) == 64;
public bool changed() => ((int) this.misc & 8) == 8;
public bool wall() => ((int) this.misc & 16) == 16;
public byte option()
{
byte num = 0;
if (((int) this.misc & 32) == 32)
++num;
if (((int) this.misc & 64) == 64)
num += (byte) 2;
if (((int) this.misc & 128) == 128)
num += (byte) 4;
if (((int) this.misc2 & 1) == 1)
num += (byte) 8;
return num;
}
public byte color() => (byte) (((int) this.misc2 & 30) >> 1);
}
}
}