Terraria.IO.WorldFile.LoadWorld_Version1 C# (CSharp) Method

LoadWorld_Version1() public static method

public static LoadWorld_Version1 ( BinaryReader fileIO ) : int
fileIO System.IO.BinaryReader
return int
        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;
        }