private void UpdateMe(On.Terraria.Main.orig_UpdateMenu orig) { if (Main.mouseMiddle && !genning) { genning = true; PutMeInAWorld(); } if (genning && !WorldGen.gen && Main.menuMode != 888) { using (FileStream f = File.Create(ModLoader.ModPath + "/TempWorld")) { BinaryWriter w = new BinaryWriter(f); WorldFile.SaveWorld_Version2(w); } var temp = new PlayerFileData(ModLoader.ModPath + "/TempPlayer", false); temp.Name = "Temporary Player"; temp.Player = new Player(); temp.Player.name = "Temporary Player"; temp.Metadata = FileMetadata.FromCurrentSettings(FileType.Player); Main.player[0] = temp.Player; Main.ActivePlayerFileData = temp; WorldGen.playWorld(); genning = false; } orig(); }
public void Load() { if (!Main.mapEnabled) { return; } string str = Main.playerPathName.Substring(0, Main.playerPathName.Length - 4); object[] directorySeparatorChar = new object[] { str, Path.DirectorySeparatorChar, Main.worldID, ".map" }; string str1 = string.Concat(directorySeparatorChar); if (!FileUtilities.Exists(str1)) { Main.MapFileMetadata = FileMetadata.FromCurrentSettings(FileType.Map); return; } using (MemoryStream memoryStream = new MemoryStream(FileUtilities.ReadAllBytes(str1))) { using (BinaryReader binaryReader = new BinaryReader(memoryStream)) { try { int num = binaryReader.ReadInt32(); if (num <= Main.curRelease) { if (num > 91) { MapHelper.LoadMapVersion2(binaryReader, num); } else { MapHelper.LoadMapVersion1(binaryReader, num); } Main.clearMap = true; Main.loadMap = true; Main.loadMapLock = true; Main.refreshMap = false; } else { return; } } catch (Exception exception1) { Exception exception = exception1; using (StreamWriter streamWriter = new StreamWriter("client-crashlog.txt", true)) { streamWriter.WriteLine(DateTime.Now); streamWriter.WriteLine(exception); streamWriter.WriteLine(""); } File.Copy(str1, string.Concat(str1, ".bad"), true); this.Clear(); } } } }
public void Load() { bool isCloudSave = Main.ActivePlayerFileData.IsCloudSave; if ((!isCloudSave || SocialAPI.Cloud != null) && Main.mapEnabled) { string text = Main.playerPathName.Substring(0, Main.playerPathName.Length - 4); string text2 = text + Path.DirectorySeparatorChar + Main.worldID + ".map"; if (!FileUtilities.Exists(text2, isCloudSave)) { Main.MapFileMetadata = FileMetadata.FromCurrentSettings(FileType.Map); } else { using (MemoryStream input = new MemoryStream(FileUtilities.ReadAllBytes(text2, isCloudSave))) { using (BinaryReader binaryReader = new BinaryReader(input)) { try { int num = binaryReader.ReadInt32(); if (num <= Main.maxSupportSaveRelease) { if (num <= 91) { MapHelper.LoadMapVersion1(binaryReader, num); } else { MapHelper.LoadMapVersion2(binaryReader, num); } Main.clearMap = true; Main.loadMap = true; Main.loadMapLock = true; Main.refreshMap = false; } } catch (Exception value) { using (StreamWriter streamWriter = new StreamWriter("client-crashlog.txt", append: true)) { streamWriter.WriteLine(DateTime.Now); streamWriter.WriteLine(value); streamWriter.WriteLine(""); } if (!isCloudSave) { File.Copy(text2, text2 + ".bad", overwrite: true); } Clear(); } } } } } }
private void final(GenerationProgress customProgressObject) { float weight = GetTotalLoadWeight(_generator); WorldHooks.ModifyWorldGenTasks(GetPasses(_generator), ref weight); SetTotalLoadWeight(_generator, weight); Main.menuMode = 888; _generator.GenerateWorld(customProgressObject); WorldHooks.PostWorldGen(); Main.WorldFileMetadata = FileMetadata.FromCurrentSettings(FileType.World); }
private void LoadFileFormatTrueHeader(out bool[] importance, out int[] positions) { string path = Path.Combine(Main.ActiveWorldFileData.Path.Replace(".wld", ""), ActiveDimensionName.Split(':')[1]) + "\\Trueheader.data"; using (BinaryReader reader = new BinaryReader(File.Open(path, FileMode.Open))) { importance = null; positions = null; int num = reader.ReadInt32(); WorldFile.versionNumber = num; if (num >= 135) { try { Main.WorldFileMetadata = FileMetadata.Read(reader, FileType.World); goto IL_54; } catch (FileFormatException value) { Console.WriteLine(Language.GetTextValue("Error.UnableToLoadWorld")); Console.WriteLine(value); } } Main.WorldFileMetadata = FileMetadata.FromCurrentSettings(FileType.World); IL_54: short num2 = reader.ReadInt16(); positions = new int[(int)num2]; for (int i = 0; i < (int)num2; i++) { positions[i] = reader.ReadInt32(); } short num3 = reader.ReadInt16(); importance = new bool[(int)num3]; byte b = 0; byte b2 = 128; for (int i = 0; i < (int)num3; i++) { if (b2 == 128) { b = reader.ReadByte(); b2 = 1; } else { b2 = (byte)(b2 << 1); } if ((b & b2) == b2) { importance[i] = true; } } } }
public void Load() { Lighting.Clear(); bool isCloudSave = Main.ActivePlayerFileData.IsCloudSave; if ((isCloudSave && SocialAPI.Cloud == null) || !Main.mapEnabled) { return; } string text = Main.playerPathName.Substring(0, Main.playerPathName.Length - 4) + Path.DirectorySeparatorChar.ToString(); if (Main.ActiveWorldFileData.UseGuidAsMapName) { string arg = text; text = text + Main.ActiveWorldFileData.UniqueId + ".map"; if (!FileUtilities.Exists(text, isCloudSave)) { text = arg + Main.worldID + ".map"; } } else { text = text + Main.worldID + ".map"; } if (!FileUtilities.Exists(text, isCloudSave)) { Main.MapFileMetadata = FileMetadata.FromCurrentSettings(FileType.Map); } else { using (MemoryStream input = new MemoryStream(FileUtilities.ReadAllBytes(text, isCloudSave))) { using (BinaryReader binaryReader = new BinaryReader(input)) { try { int num = binaryReader.ReadInt32(); if (num <= 227) { if (num <= 91) { MapHelper.LoadMapVersion1(binaryReader, num); } else { MapHelper.LoadMapVersion2(binaryReader, num); } ClearEdges(); Main.clearMap = true; Main.loadMap = true; Main.loadMapLock = true; Main.refreshMap = false; } } catch (Exception value) { using (StreamWriter streamWriter = new StreamWriter("client-crashlog.txt", append: true)) { streamWriter.WriteLine(DateTime.Now); streamWriter.WriteLine(value); streamWriter.WriteLine(""); } if (!isCloudSave) { File.Copy(text, text + ".bad", overwrite: true); } Clear(); } } } } }
public void Load() { Lighting.Clear(); bool isCloudSave = Main.ActivePlayerFileData.IsCloudSave; if (isCloudSave && SocialAPI.Cloud == null || !Main.mapEnabled) { return; } string str1 = Main.playerPathName.Substring(0, Main.playerPathName.Length - 4) + Path.DirectorySeparatorChar.ToString(); string str2; if (Main.ActiveWorldFileData.UseGuidAsMapName) { string str3 = str1; str2 = str1 + (object)Main.ActiveWorldFileData.UniqueId + ".map"; if (!FileUtilities.Exists(str2, isCloudSave)) { str2 = str3 + (object)Main.worldID + ".map"; } } else { str2 = str1 + (object)Main.worldID + ".map"; } if (!FileUtilities.Exists(str2, isCloudSave)) { Main.MapFileMetadata = FileMetadata.FromCurrentSettings(FileType.Map); } else { using (MemoryStream memoryStream = new MemoryStream(FileUtilities.ReadAllBytes(str2, isCloudSave))) { using (BinaryReader fileIO = new BinaryReader((Stream)memoryStream)) { try { int release = fileIO.ReadInt32(); if (release > 230) { return; } if (release <= 91) { MapHelper.LoadMapVersion1(fileIO, release); } else { MapHelper.LoadMapVersion2(fileIO, release); } this.ClearEdges(); Main.clearMap = true; Main.loadMap = true; Main.loadMapLock = true; Main.refreshMap = false; } catch (Exception ex) { using (StreamWriter streamWriter = new StreamWriter("client-crashlog.txt", true)) { streamWriter.WriteLine((object)DateTime.Now); streamWriter.WriteLine((object)ex); streamWriter.WriteLine(""); } if (!isCloudSave) { File.Copy(str2, str2 + ".bad", true); } this.Clear(); } } } } }
public static async Task <bool> Export(Player plr) { return(await Task.Run(() => { string path = Environment.CurrentDirectory + "\\PlayerExport\\" + plr.name + ".plr"; try { if (!Directory.Exists(Environment.CurrentDirectory + "\\PlayerExport")) { Directory.CreateDirectory(Environment.CurrentDirectory + "\\PlayerExport"); } if (File.Exists(path)) { File.Copy(path, path + ".bak", true); } RijndaelManaged rijndaelManaged = new RijndaelManaged(); using (Stream stream = new FileStream(path, FileMode.Create)) { using (CryptoStream cryptoStream = new CryptoStream(stream, rijndaelManaged.CreateEncryptor(Player.ENCRYPTION_KEY, Player.ENCRYPTION_KEY), CryptoStreamMode.Write)) { PlayerFileData playerFileData = new PlayerFileData { Metadata = FileMetadata.FromCurrentSettings(FileType.Player), Player = plr, _isCloudSave = false, _path = path }; Main.LocalFavoriteData.ClearEntry(playerFileData); using (BinaryWriter binaryWriter = new BinaryWriter(cryptoStream)) { binaryWriter.Write(230); playerFileData.Metadata.Write(binaryWriter); binaryWriter.Write(plr.name); binaryWriter.Write(plr.difficulty); binaryWriter.Write(playerFileData.GetPlayTime().Ticks); binaryWriter.Write(plr.hair); binaryWriter.Write(plr.hairDye); BitsByte bb = 0; for (int i = 0; i < 8; i++) { bb[i] = plr.hideVisibleAccessory[i]; } binaryWriter.Write(bb); bb = 0; for (int j = 0; j < 2; j++) { bb[j] = plr.hideVisibleAccessory[j + 8]; } binaryWriter.Write(bb); binaryWriter.Write(plr.hideMisc); binaryWriter.Write((byte)plr.skinVariant); binaryWriter.Write(plr.statLife); binaryWriter.Write(plr.statLifeMax); binaryWriter.Write(plr.statMana); binaryWriter.Write(plr.statManaMax); binaryWriter.Write(plr.extraAccessory); binaryWriter.Write(plr.unlockedBiomeTorches); binaryWriter.Write(plr.UsingBiomeTorches); binaryWriter.Write(plr.downedDD2EventAnyDifficulty); binaryWriter.Write(plr.taxMoney); binaryWriter.Write(plr.hairColor.R); binaryWriter.Write(plr.hairColor.G); binaryWriter.Write(plr.hairColor.B); binaryWriter.Write(plr.skinColor.R); binaryWriter.Write(plr.skinColor.G); binaryWriter.Write(plr.skinColor.B); binaryWriter.Write(plr.eyeColor.R); binaryWriter.Write(plr.eyeColor.G); binaryWriter.Write(plr.eyeColor.B); binaryWriter.Write(plr.shirtColor.R); binaryWriter.Write(plr.shirtColor.G); binaryWriter.Write(plr.shirtColor.B); binaryWriter.Write(plr.underShirtColor.R); binaryWriter.Write(plr.underShirtColor.G); binaryWriter.Write(plr.underShirtColor.B); binaryWriter.Write(plr.pantsColor.R); binaryWriter.Write(plr.pantsColor.G); binaryWriter.Write(plr.pantsColor.B); binaryWriter.Write(plr.shoeColor.R); binaryWriter.Write(plr.shoeColor.G); binaryWriter.Write(plr.shoeColor.B); for (int k = 0; k < plr.armor.Length; k++) { binaryWriter.Write(plr.armor[k].netID); binaryWriter.Write(plr.armor[k].prefix); } for (int l = 0; l < plr.dye.Length; l++) { binaryWriter.Write(plr.dye[l].netID); binaryWriter.Write(plr.dye[l].prefix); } for (int m = 0; m < 58; m++) { binaryWriter.Write(plr.inventory[m].netID); binaryWriter.Write(plr.inventory[m].stack); binaryWriter.Write(plr.inventory[m].prefix); binaryWriter.Write(plr.inventory[m].favorited); } for (int n = 0; n < plr.miscEquips.Length; n++) { binaryWriter.Write(plr.miscEquips[n].netID); binaryWriter.Write(plr.miscEquips[n].prefix); binaryWriter.Write(plr.miscDyes[n].netID); binaryWriter.Write(plr.miscDyes[n].prefix); } for (int num = 0; num < 40; num++) { binaryWriter.Write(plr.bank.item[num].netID); binaryWriter.Write(plr.bank.item[num].stack); binaryWriter.Write(plr.bank.item[num].prefix); } for (int num2 = 0; num2 < 40; num2++) { binaryWriter.Write(plr.bank2.item[num2].netID); binaryWriter.Write(plr.bank2.item[num2].stack); binaryWriter.Write(plr.bank2.item[num2].prefix); } for (int num3 = 0; num3 < 40; num3++) { binaryWriter.Write(plr.bank3.item[num3].netID); binaryWriter.Write(plr.bank3.item[num3].stack); binaryWriter.Write(plr.bank3.item[num3].prefix); } for (int num4 = 0; num4 < 40; num4++) { binaryWriter.Write(plr.bank4.item[num4].netID); binaryWriter.Write(plr.bank4.item[num4].stack); binaryWriter.Write(plr.bank4.item[num4].prefix); } binaryWriter.Write(plr.voidVaultInfo); for (int num5 = 0; num5 < 22; num5++) { if (Main.buffNoSave[plr.buffType[num5]]) { binaryWriter.Write(0); binaryWriter.Write(0); } else { binaryWriter.Write(plr.buffType[num5]); binaryWriter.Write(plr.buffTime[num5]); } } for (int num6 = 0; num6 < 200; num6++) { if (plr.spN[num6] == null) { binaryWriter.Write(-1); break; } binaryWriter.Write(plr.spX[num6]); binaryWriter.Write(plr.spY[num6]); binaryWriter.Write(plr.spI[num6]); binaryWriter.Write(plr.spN[num6]); } binaryWriter.Write(plr.hbLocked); for (int num7 = 0; num7 < plr.hideInfo.Length; num7++) { binaryWriter.Write(plr.hideInfo[num7]); } binaryWriter.Write(plr.anglerQuestsFinished); for (int num8 = 0; num8 < plr.DpadRadial.Bindings.Length; num8++) { binaryWriter.Write(plr.DpadRadial.Bindings[num8]); } for (int num9 = 0; num9 < plr.builderAccStatus.Length; num9++) { binaryWriter.Write(plr.builderAccStatus[num9]); } binaryWriter.Write(plr.bartenderQuestLog); binaryWriter.Write(plr.dead); if (plr.dead) { binaryWriter.Write(plr.respawnTimer); } long value = DateTime.UtcNow.ToBinary(); binaryWriter.Write(value); binaryWriter.Write(plr.golferScoreAccumulated); plr.creativeTracker.Save(binaryWriter); plr.SaveTemporaryItemSlotContents(binaryWriter); CreativePowerManager.Instance.SaveToPlayer(plr, binaryWriter); binaryWriter.Flush(); cryptoStream.FlushFinalBlock(); stream.Flush(); } } } return true; } catch (Exception ex) { File.Delete(path); TShock.Log.ConsoleError(ex.Message); } return false; })); }