public static int LoadWorld_Version1(BinaryReader fileIO)
{
Main.WorldFileMetadata = FileMetadata.FromCurrentSettings(FileType.World);
int versionNumber = WorldFile.versionNumber;
if (versionNumber > Main.curRelease)
{
return 1;
}
Main.worldName = fileIO.ReadString();
Main.worldID = fileIO.ReadInt32();
Main.leftWorld = fileIO.ReadInt32();
Main.rightWorld = fileIO.ReadInt32();
Main.topWorld = fileIO.ReadInt32();
Main.bottomWorld = fileIO.ReadInt32();
Main.maxTilesY = fileIO.ReadInt32();
Main.maxTilesX = fileIO.ReadInt32();
if (versionNumber >= 0x70)
{
Main.expertMode = fileIO.ReadBoolean();
}
else
{
Main.expertMode = false;
}
if (versionNumber >= 0x3f)
{
Main.moonType = fileIO.ReadByte();
}
else
{
WorldGen.RandomizeMoonState();
}
WorldGen.clearWorld();
if (versionNumber >= 0x2c)
{
Main.treeX[0] = fileIO.ReadInt32();
Main.treeX[1] = fileIO.ReadInt32();
Main.treeX[2] = fileIO.ReadInt32();
Main.treeStyle[0] = fileIO.ReadInt32();
Main.treeStyle[1] = fileIO.ReadInt32();
Main.treeStyle[2] = fileIO.ReadInt32();
Main.treeStyle[3] = fileIO.ReadInt32();
}
if (versionNumber >= 60)
{
Main.caveBackX[0] = fileIO.ReadInt32();
Main.caveBackX[1] = fileIO.ReadInt32();
Main.caveBackX[2] = fileIO.ReadInt32();
Main.caveBackStyle[0] = fileIO.ReadInt32();
Main.caveBackStyle[1] = fileIO.ReadInt32();
Main.caveBackStyle[2] = fileIO.ReadInt32();
Main.caveBackStyle[3] = fileIO.ReadInt32();
Main.iceBackStyle = fileIO.ReadInt32();
if (versionNumber >= 0x3d)
{
Main.jungleBackStyle = fileIO.ReadInt32();
Main.hellBackStyle = fileIO.ReadInt32();
}
}
else
{
WorldGen.RandomizeCaveBackgrounds();
}
Main.spawnTileX = fileIO.ReadInt32();
Main.spawnTileY = fileIO.ReadInt32();
Main.worldSurface = fileIO.ReadDouble();
Main.rockLayer = fileIO.ReadDouble();
tempTime = fileIO.ReadDouble();
tempDayTime = fileIO.ReadBoolean();
tempMoonPhase = fileIO.ReadInt32();
tempBloodMoon = fileIO.ReadBoolean();
if (versionNumber >= 0x70)
{
tempEclipse = fileIO.ReadBoolean();
Main.eclipse = tempEclipse;
}
Main.dungeonX = fileIO.ReadInt32();
Main.dungeonY = fileIO.ReadInt32();
if (versionNumber >= 0x38)
{
WorldGen.crimson = fileIO.ReadBoolean();
}
else
{
WorldGen.crimson = false;
}
NPC.downedBoss1 = fileIO.ReadBoolean();
NPC.downedBoss2 = fileIO.ReadBoolean();
NPC.downedBoss3 = fileIO.ReadBoolean();
if (versionNumber >= 0x42)
{
NPC.downedQueenBee = fileIO.ReadBoolean();
}
if (versionNumber >= 0x2c)
{
NPC.downedMechBoss1 = fileIO.ReadBoolean();
NPC.downedMechBoss2 = fileIO.ReadBoolean();
NPC.downedMechBoss3 = fileIO.ReadBoolean();
NPC.downedMechBossAny = fileIO.ReadBoolean();
}
if (versionNumber >= 0x40)
{
NPC.downedPlantBoss = fileIO.ReadBoolean();
NPC.downedGolemBoss = fileIO.ReadBoolean();
}
if (versionNumber >= 0x1d)
{
NPC.savedGoblin = fileIO.ReadBoolean();
NPC.savedWizard = fileIO.ReadBoolean();
if (versionNumber >= 0x22)
{
NPC.savedMech = fileIO.ReadBoolean();
if (versionNumber >= 80)
{
NPC.savedStylist = fileIO.ReadBoolean();
}
}
if (versionNumber >= 0x81)
{
NPC.savedTaxCollector = fileIO.ReadBoolean();
}
NPC.downedGoblins = fileIO.ReadBoolean();
}
if (versionNumber >= 0x20)
{
NPC.downedClown = fileIO.ReadBoolean();
}
if (versionNumber >= 0x25)
{
NPC.downedFrost = fileIO.ReadBoolean();
}
if (versionNumber >= 0x38)
{
NPC.downedPirates = fileIO.ReadBoolean();
}
WorldGen.shadowOrbSmashed = fileIO.ReadBoolean();
WorldGen.spawnMeteor = fileIO.ReadBoolean();
WorldGen.shadowOrbCount = fileIO.ReadByte();
if (versionNumber >= 0x17)
{
WorldGen.altarCount = fileIO.ReadInt32();
Main.hardMode = fileIO.ReadBoolean();
}
Main.invasionDelay = fileIO.ReadInt32();
Main.invasionSize = fileIO.ReadInt32();
Main.invasionType = fileIO.ReadInt32();
Main.invasionX = fileIO.ReadDouble();
if (versionNumber >= 0x71)
{
Main.sundialCooldown = fileIO.ReadByte();
}
if (versionNumber >= 0x35)
{
tempRaining = fileIO.ReadBoolean();
tempRainTime = fileIO.ReadInt32();
tempMaxRain = fileIO.ReadSingle();
}
if (versionNumber >= 0x36)
{
WorldGen.oreTier1 = fileIO.ReadInt32();
WorldGen.oreTier2 = fileIO.ReadInt32();
WorldGen.oreTier3 = fileIO.ReadInt32();
}
else if ((versionNumber >= 0x17) && (WorldGen.altarCount == 0))
{
WorldGen.oreTier1 = -1;
WorldGen.oreTier2 = -1;
WorldGen.oreTier3 = -1;
}
else
{
WorldGen.oreTier1 = 0x6b;
WorldGen.oreTier2 = 0x6c;
WorldGen.oreTier3 = 0x6f;
}
int style = 0;
int num3 = 0;
int num4 = 0;
int num5 = 0;
int num6 = 0;
int num7 = 0;
int num8 = 0;
int num9 = 0;
if (versionNumber >= 0x37)
{
style = fileIO.ReadByte();
num3 = fileIO.ReadByte();
num4 = fileIO.ReadByte();
}
if (versionNumber >= 60)
{
num5 = fileIO.ReadByte();
num6 = fileIO.ReadByte();
num7 = fileIO.ReadByte();
num8 = fileIO.ReadByte();
num9 = fileIO.ReadByte();
}
WorldGen.setBG(0, style);
WorldGen.setBG(1, num3);
WorldGen.setBG(2, num4);
WorldGen.setBG(3, num5);
WorldGen.setBG(4, num6);
WorldGen.setBG(5, num7);
WorldGen.setBG(6, num8);
WorldGen.setBG(7, num9);
if (versionNumber >= 60)
{
Main.cloudBGActive = fileIO.ReadInt32();
if (Main.cloudBGActive >= 1f)
{
Main.cloudBGAlpha = 1f;
}
else
{
Main.cloudBGAlpha = 0f;
}
}
else
{
Main.cloudBGActive = -WorldGen.genRand.Next(0x21c0, 0x15180);
}
if (versionNumber >= 0x3e)
{
Main.numClouds = fileIO.ReadInt16();
Main.windSpeedSet = fileIO.ReadSingle();
Main.windSpeed = Main.windSpeedSet;
}
else
{
WorldGen.RandomizeWeather();
}
for (int i = 0; i < Main.maxTilesX; i++)
{
float num12 = ((float)i) / ((float)Main.maxTilesX);
Main.statusText = string.Concat(new object[] { Lang.gen[0x33], " ", (int)((num12 * 100f) + 1f), "%" });
for (int n = 0; n < Main.maxTilesY; n++)
{
Tile tile = Main.tile[i, n];
int index = -1;
tile.active(fileIO.ReadBoolean());
if (tile.active())
{
if (versionNumber > 0x4d)
{
index = fileIO.ReadUInt16();
}
else
{
index = fileIO.ReadByte();
}
tile.type = (ushort)index;
if (tile.type == 0x7f)
{
tile.active(false);
}
if ((versionNumber < 0x48) && (((tile.type == 0x23) || (tile.type == 0x24)) || (((tile.type == 170) || (tile.type == 0xab)) || (tile.type == 0xac))))
{
tile.frameX = fileIO.ReadInt16();
tile.frameY = fileIO.ReadInt16();
}
else if (Main.tileFrameImportant[index])
{
if ((versionNumber < 0x1c) && (index == 4))
{
tile.frameX = 0;
tile.frameY = 0;
}
else if ((versionNumber < 40) && (tile.type == 0x13))
{
tile.frameX = 0;
tile.frameY = 0;
}
else
{
tile.frameX = fileIO.ReadInt16();
tile.frameY = fileIO.ReadInt16();
if (tile.type == 0x90)
{
tile.frameY = 0;
}
}
}
else
{
tile.frameX = -1;
tile.frameY = -1;
}
if ((versionNumber >= 0x30) && fileIO.ReadBoolean())
{
tile.color(fileIO.ReadByte());
}
}
if (versionNumber <= 0x19)
{
fileIO.ReadBoolean();
}
if (fileIO.ReadBoolean())
{
tile.wall = fileIO.ReadByte();
if ((versionNumber >= 0x30) && fileIO.ReadBoolean())
{
tile.wallColor(fileIO.ReadByte());
}
}
if (fileIO.ReadBoolean())
{
tile.liquid = fileIO.ReadByte();
tile.lava(fileIO.ReadBoolean());
if (versionNumber >= 0x33)
{
tile.honey(fileIO.ReadBoolean());
}
}
if (versionNumber >= 0x21)
{
tile.k_SetWireFlags(k_WireFlags.WIRE_RED, fileIO.ReadBoolean());
}
if (versionNumber >= 0x2b)
{
tile.k_SetWireFlags(k_WireFlags.WIRE_GREEN, fileIO.ReadBoolean());
tile.k_SetWireFlags(k_WireFlags.WIRE_BLUE, fileIO.ReadBoolean());
}
if (versionNumber >= 0x29)
{
tile.halfBrick(fileIO.ReadBoolean());
if (!Main.tileSolid[tile.type])
{
tile.halfBrick(false);
}
if (versionNumber >= 0x31)
{
tile.slope(fileIO.ReadByte());
if (!Main.tileSolid[tile.type])
{
tile.slope(0);
}
}
}
if (versionNumber >= 0x2a)
{
tile.k_SetWireFlags(k_WireFlags.WIRE_ACTUATOR, fileIO.ReadBoolean());
tile.inActive(fileIO.ReadBoolean());
}
int num14 = 0;
if (versionNumber >= 0x19)
{
num14 = fileIO.ReadInt16();
}
if (index != -1)
{
if (n <= Main.worldSurface)
{
if ((n + num14) <= Main.worldSurface)
{
WorldGen.tileCounts[index] += (num14 + 1) * 5;
}
else
{
int num15 = (int)((Main.worldSurface - n) + 1.0);
int num16 = (num14 + 1) - num15;
WorldGen.tileCounts[index] += (num15 * 5) + num16;
}
}
else
{
WorldGen.tileCounts[index] += num14 + 1;
}
}
if (num14 > 0)
{
for (int num17 = n + 1; num17 < ((n + num14) + 1); num17++)
{
Main.tile[i, num17].CopyFrom(Main.tile[i, n]);
}
n += num14;
}
}
}
WorldGen.AddUpAlignmentCounts(true);
if (versionNumber < 0x43)
{
WorldGen.FixSunflowers();
}
if (versionNumber < 0x48)
{
WorldGen.FixChands();
}
int num18 = 40;
if (versionNumber < 0x3a)
{
num18 = 20;
}
for (int j = 0; j < 0x3e8; j++)
{
if (fileIO.ReadBoolean())
{
Main.chest[j] = new Chest(false);
Main.chest[j].x = fileIO.ReadInt32();
Main.chest[j].y = fileIO.ReadInt32();
if (versionNumber >= 0x55)
{
string str = fileIO.ReadString();
if (str.Length > 20)
{
str = str.Substring(0, 20);
}
Main.chest[j].name = str;
}
for (int num20 = 0; num20 < 40; num20++)
{
Main.chest[j].item[num20] = new Item();
if (num20 < num18)
{
int num21 = 0;
if (versionNumber >= 0x3b)
{
num21 = fileIO.ReadInt16();
}
else
{
num21 = fileIO.ReadByte();
}
if (num21 > 0)
{
if (versionNumber >= 0x26)
{
Main.chest[j].item[num20].netDefaults(fileIO.ReadInt32());
}
else
{
string itemName = Item.VersionName(fileIO.ReadString(), versionNumber);
Main.chest[j].item[num20].SetDefaults(itemName);
}
Main.chest[j].item[num20].stack = num21;
if (versionNumber >= 0x24)
{
Main.chest[j].item[num20].Prefix(fileIO.ReadByte());
}
}
}
}
}
}
for (int k = 0; k < 0x3e8; k++)
{
if (fileIO.ReadBoolean())
{
string str3 = fileIO.ReadString();
int num23 = fileIO.ReadInt32();
int num24 = fileIO.ReadInt32();
if (Main.tile[num23, num24].active() && ((Main.tile[num23, num24].type == 0x37) || (Main.tile[num23, num24].type == 0x55)))
{
Main.sign[k] = new Sign();
Main.sign[k].x = num23;
Main.sign[k].y = num24;
Main.sign[k].text = str3;
}
}
}
bool flag = fileIO.ReadBoolean();
for (int m = 0; flag; m++)
{
Main.npc[m].SetDefaults(fileIO.ReadString());
if (versionNumber >= 0x53)
{
Main.npc[m].displayName = fileIO.ReadString();
}
Main.npc[m].position.X = fileIO.ReadSingle();
Main.npc[m].position.Y = fileIO.ReadSingle();
Main.npc[m].homeless = fileIO.ReadBoolean();
Main.npc[m].homeTileX = fileIO.ReadInt32();
Main.npc[m].homeTileY = fileIO.ReadInt32();
flag = fileIO.ReadBoolean();
}
if ((versionNumber >= 0x1f) && (versionNumber <= 0x53))
{
NPC.setNPCName(fileIO.ReadString(), 0x11, true);
NPC.setNPCName(fileIO.ReadString(), 0x12, true);
NPC.setNPCName(fileIO.ReadString(), 0x13, true);
NPC.setNPCName(fileIO.ReadString(), 20, true);
NPC.setNPCName(fileIO.ReadString(), 0x16, true);
NPC.setNPCName(fileIO.ReadString(), 0x36, true);
NPC.setNPCName(fileIO.ReadString(), 0x26, true);
NPC.setNPCName(fileIO.ReadString(), 0x6b, true);
NPC.setNPCName(fileIO.ReadString(), 0x6c, true);
if (versionNumber >= 0x23)
{
NPC.setNPCName(fileIO.ReadString(), 0x7c, true);
if (versionNumber >= 0x41)
{
NPC.setNPCName(fileIO.ReadString(), 160, true);
NPC.setNPCName(fileIO.ReadString(), 0xb2, true);
NPC.setNPCName(fileIO.ReadString(), 0xcf, true);
NPC.setNPCName(fileIO.ReadString(), 0xd0, true);
NPC.setNPCName(fileIO.ReadString(), 0xd1, true);
NPC.setNPCName(fileIO.ReadString(), 0xe3, true);
NPC.setNPCName(fileIO.ReadString(), 0xe4, true);
NPC.setNPCName(fileIO.ReadString(), 0xe5, true);
if (versionNumber >= 0x4f)
{
NPC.setNPCName(fileIO.ReadString(), 0x161, true);
}
}
}
}
if ((Main.invasionType > 0) && (Main.invasionSize > 0))
{
Main.FakeLoadInvasionStart();
}
if (versionNumber >= 7)
{
bool flag2 = fileIO.ReadBoolean();
string str4 = fileIO.ReadString();
int num26 = fileIO.ReadInt32();
if (!flag2 || (!(str4 == Main.worldName) && (num26 != Main.worldID)))
{
return 2;
}
}
return 0;
}