Terraria v1.4.4.9
Terraria source code documentation
Loading...
Searching...
No Matches

◆ LoadWorld()

static void Terraria.IO.WorldFile.LoadWorld ( bool loadFromCloud)
inlinestatic

Definition at line 576 of file WorldFile.cs.

577 {
578 Main.lockMenuBGChange = true;
580 Main.checkXMas();
581 Main.checkHalloween();
582 bool flag = loadFromCloud && SocialAPI.Cloud != null;
583 if (!FileUtilities.Exists(Main.worldPathName, flag) && Main.autoGen)
584 {
585 if (!flag)
586 {
587 for (int num = Main.worldPathName.Length - 1; num >= 0; num--)
588 {
589 if (Main.worldPathName.Substring(num, 1) == (Path.DirectorySeparatorChar.ToString() ?? ""))
590 {
591 Utils.TryCreatingDirectory(Main.worldPathName.Substring(0, num));
592 break;
593 }
594 }
595 }
596 WorldGen.clearWorld();
597 Main.ActiveWorldFileData = CreateMetadata((Main.worldName == "") ? "World" : Main.worldName, flag, Main.GameMode);
598 string text = (Main.AutogenSeedName ?? "").Trim();
599 if (text.Length == 0)
600 {
601 Main.ActiveWorldFileData.SetSeedToRandom();
602 }
603 else
604 {
605 Main.ActiveWorldFileData.SetSeed(text);
606 }
608 WorldGen.GenerateWorld(Main.ActiveWorldFileData.Seed, Main.AutogenProgress);
609 SaveWorld();
610 }
611 try
612 {
613 using MemoryStream memoryStream = new MemoryStream(FileUtilities.ReadAllBytes(Main.worldPathName, flag));
615 try
616 {
617 WorldGen.loadFailed = false;
618 WorldGen.loadSuccess = false;
619 int num2 = (_versionNumber = binaryReader.ReadInt32());
621 {
622 WorldGen.loadFailed = true;
623 return;
624 }
626 if (num2 < 141)
627 {
628 if (!loadFromCloud)
629 {
630 Main.ActiveWorldFileData.CreationTime = File.GetCreationTime(Main.worldPathName);
631 }
632 else
633 {
634 Main.ActiveWorldFileData.CreationTime = DateTime.Now;
635 }
636 }
638 binaryReader.Close();
639 memoryStream.Close();
640 if (num3 != 0)
641 {
642 WorldGen.loadFailed = true;
643 }
644 else
645 {
646 WorldGen.loadSuccess = true;
647 }
648 if (WorldGen.loadFailed || !WorldGen.loadSuccess)
649 {
650 return;
651 }
654 WorldGen.gen = true;
655 GenVars.waterLine = Main.maxTilesY;
656 Liquid.QuickWater(2);
657 WorldGen.WaterCheck();
658 int num4 = 0;
659 Liquid.quickSettle = true;
660 int num5 = Liquid.numLiquid + LiquidBuffer.numLiquidBuffer;
661 float num6 = 0f;
662 while (Liquid.numLiquid > 0 && num4 < 100000)
663 {
664 num4++;
665 float num7 = (float)(num5 - (Liquid.numLiquid + LiquidBuffer.numLiquidBuffer)) / (float)num5;
666 if (Liquid.numLiquid + LiquidBuffer.numLiquidBuffer > num5)
667 {
668 num5 = Liquid.numLiquid + LiquidBuffer.numLiquidBuffer;
669 }
670 if (num7 > num6)
671 {
672 num6 = num7;
673 }
674 else
675 {
676 num7 = num6;
677 }
678 Main.statusText = Lang.gen[27].Value + " " + (int)(num7 * 100f / 2f + 50f) + "%";
679 Liquid.UpdateLiquid();
680 }
681 Liquid.quickSettle = false;
682 Main.weatherCounter = WorldGen.genRand.Next(3600, 18000);
683 Cloud.resetClouds();
684 WorldGen.WaterCheck();
685 WorldGen.gen = false;
686 NPC.setFireFlyChance();
687 if (Main.slimeRainTime > 0.0)
688 {
689 Main.StartSlimeRain(announce: false);
690 }
691 NPC.SetWorldSpecificMonstersByWorldID();
692 }
694 {
696 WorldGen.loadFailed = true;
697 WorldGen.loadSuccess = false;
698 try
699 {
700 binaryReader.Close();
701 memoryStream.Close();
702 return;
703 }
704 catch
705 {
706 return;
707 }
708 }
709 }
711 {
713 WorldGen.loadFailed = true;
714 WorldGen.loadSuccess = false;
715 return;
716 }
717 if (WorldFile.OnWorldLoad != null)
718 {
719 WorldFile.OnWorldLoad();
720 }
721 }
static DateTime GetCreationTime(string path)
Definition File.cs:164
static readonly char DirectorySeparatorChar
Definition Path.cs:71
static void ProcessSpecialWorldSeeds(string processedSeed)
static void CheckSavedOreTiers()
Definition WorldFile.cs:723
static int LoadWorld_Version2(BinaryReader reader)
static void ClearTempTiles()
Definition WorldFile.cs:562
static WorldFileData CreateMetadata(string name, bool cloudSave, int GameMode)
Definition WorldFile.cs:523
static void SaveWorld()
Definition WorldFile.cs:780
static void ConvertOldTileEntities()
static bool _isWorldOnCloud
Definition WorldFile.cs:119
static int LoadWorld_Version1_Old_BeforeRelease88(BinaryReader fileIO)
static int _versionNumber
Definition WorldFile.cs:117
static Exception LastThrownLoadException
Definition WorldFile.cs:183
static bool Exists(string path, bool cloud)
static byte[] ReadAllBytes(string path, bool cloud)
static DateTime Now
Definition DateTime.cs:103

References Terraria.IO.WorldFile._isWorldOnCloud, Terraria.IO.WorldFile._versionNumber, Terraria.Main.ActiveWorldFileData, Terraria.Main.autoGen, Terraria.Main.AutogenProgress, Terraria.Main.checkHalloween(), Terraria.IO.WorldFile.CheckSavedOreTiers(), Terraria.Main.checkXMas(), Terraria.IO.WorldFile.ClearTempTiles(), Terraria.WorldGen.clearWorld(), Terraria.IO.WorldFile.ConvertOldTileEntities(), Terraria.IO.WorldFile.CreateMetadata(), System.IO.Path.DirectorySeparatorChar, Terraria.Utilities.FileUtilities.Exists(), Terraria.Main.GameMode, Terraria.Lang.gen, Terraria.WorldGen.GenerateWorld(), Terraria.WorldGen.genRand, System.IO.File.GetCreationTime(), Terraria.IO.WorldFile.LastThrownLoadException, Terraria.WorldGen.loadFailed, Terraria.WorldGen.loadSuccess, Terraria.IO.WorldFile.LoadWorld_Version1_Old_BeforeRelease88(), Terraria.IO.WorldFile.LoadWorld_Version2(), Terraria.Main.maxTilesY, System.DateTime.Now, Terraria.Liquid.numLiquid, Terraria.LiquidBuffer.numLiquidBuffer, Terraria.IO.WorldFile.OnWorldLoad, Terraria.GameContent.UI.States.UIWorldCreation.ProcessSpecialWorldSeeds(), Terraria.Liquid.QuickWater(), Terraria.Utilities.FileUtilities.ReadAllBytes(), Terraria.Cloud.resetClouds(), Terraria.IO.WorldFile.SaveWorld(), Terraria.NPC.setFireFlyChance(), Terraria.NPC.SetWorldSpecificMonstersByWorldID(), Terraria.Main.slimeRainTime, Terraria.Main.StartSlimeRain(), System.text, Terraria.Utils.TryCreatingDirectory(), Terraria.Liquid.UpdateLiquid(), Terraria.WorldGen.WaterCheck(), Terraria.Main.worldName, and Terraria.Main.worldPathName.

Referenced by Terraria.WorldGen.playWorldCallBack(), Terraria.WorldGen.RenameWorldCallBack(), and Terraria.WorldGen.serverLoadWorldCallBack().