SetPlayTime() public method

public SetPlayTime ( System.TimeSpan time ) : void
time System.TimeSpan
return void
コード例 #1
0
ファイル: Player.cs プロジェクト: itamargreen/ModLoader
 public static PlayerFileData LoadPlayer(string playerPath, bool cloudSave)
 {
     PlayerFileData playerFileData = new PlayerFileData(playerPath, cloudSave);
     if (cloudSave && SocialAPI.Cloud == null)
     {
         return playerFileData;
     }
     if (Main.rand == null)
     {
         Main.rand = new Random((int)DateTime.Now.Ticks);
     }
     Player player = new Player();
     try
     {
         RijndaelManaged rijndaelManaged = new RijndaelManaged();
         rijndaelManaged.Padding = PaddingMode.None;
         byte[] buffer = FileUtilities.ReadAllBytes(playerPath, cloudSave);
         PlayerFileData result;
         using (MemoryStream memoryStream = new MemoryStream(buffer))
         {
             using (CryptoStream cryptoStream = new CryptoStream(memoryStream, rijndaelManaged.CreateDecryptor(Player.ENCRYPTION_KEY, Player.ENCRYPTION_KEY), CryptoStreamMode.Read))
             {
                 using (BinaryReader binaryReader = new BinaryReader(cryptoStream))
                 {
                     int num = binaryReader.ReadInt32();
                     if (num >= 135)
                     {
                         playerFileData.Metadata = FileMetadata.Read(binaryReader, FileType.Player);
                     }
                     else
                     {
                         playerFileData.Metadata = FileMetadata.FromCurrentSettings(FileType.Player);
                     }
                     if (num > Main.curRelease)
                     {
                         player.loadStatus = 1;
                         player.name = binaryReader.ReadString();
                         playerFileData.Player = player;
                         result = playerFileData;
                         return result;
                     }
                     player.name = binaryReader.ReadString();
                     if (num >= 10)
                     {
                         if (num >= 17)
                         {
                             player.difficulty = binaryReader.ReadByte();
                         }
                         else
                         {
                             bool flag = binaryReader.ReadBoolean();
                             if (flag)
                             {
                                 player.difficulty = 2;
                             }
                         }
                     }
                     if (num >= 138)
                     {
                         playerFileData.SetPlayTime(new TimeSpan(binaryReader.ReadInt64()));
                     }
                     else
                     {
                         playerFileData.SetPlayTime(TimeSpan.Zero);
                     }
                     player.hair = binaryReader.ReadInt32();
                     if (num >= 82)
                     {
                         player.hairDye = binaryReader.ReadByte();
                     }
                     if (num >= 124)
                     {
                         BitsByte bitsByte = binaryReader.ReadByte();
                         for (int i = 0; i < 8; i++)
                         {
                             player.hideVisual[i] = bitsByte[i];
                         }
                         bitsByte = binaryReader.ReadByte();
                         for (int j = 0; j < 2; j++)
                         {
                             player.hideVisual[j + 8] = bitsByte[j];
                         }
                     }
                     else if (num >= 83)
                     {
                         BitsByte bitsByte2 = binaryReader.ReadByte();
                         for (int k = 0; k < 8; k++)
                         {
                             player.hideVisual[k] = bitsByte2[k];
                         }
                     }
                     if (num >= 119)
                     {
                         player.hideMisc = binaryReader.ReadByte();
                     }
                     if (num <= 17)
                     {
                         if (player.hair == 5 || player.hair == 6 || player.hair == 9 || player.hair == 11)
                         {
                             player.Male = false;
                         }
                         else
                         {
                             player.Male = true;
                         }
                     }
                     else if (num < 107)
                     {
                         player.Male = binaryReader.ReadBoolean();
                     }
                     else
                     {
                         player.skinVariant = (int)binaryReader.ReadByte();
                     }
                     player.statLife = binaryReader.ReadInt32();
                     player.statLifeMax = binaryReader.ReadInt32();
                     if (player.statLifeMax > 500)
                     {
                         player.statLifeMax = 500;
                     }
                     player.statMana = binaryReader.ReadInt32();
                     player.statManaMax = binaryReader.ReadInt32();
                     if (player.statManaMax > 200)
                     {
                         player.statManaMax = 200;
                     }
                     if (player.statMana > 400)
                     {
                         player.statMana = 400;
                     }
                     if (num >= 125)
                     {
                         player.extraAccessory = binaryReader.ReadBoolean();
                     }
                     if (num >= 128)
                     {
                         player.taxMoney = binaryReader.ReadInt32();
                     }
                     player.hairColor = binaryReader.ReadRGB();
                     player.skinColor = binaryReader.ReadRGB();
                     player.eyeColor = binaryReader.ReadRGB();
                     player.shirtColor = binaryReader.ReadRGB();
                     player.underShirtColor = binaryReader.ReadRGB();
                     player.pantsColor = binaryReader.ReadRGB();
                     player.shoeColor = binaryReader.ReadRGB();
                     Main.player[Main.myPlayer].shirtColor = player.shirtColor;
                     Main.player[Main.myPlayer].pantsColor = player.pantsColor;
                     Main.player[Main.myPlayer].hairColor = player.hairColor;
                     if (num >= 38)
                     {
                         if (num < 124)
                         {
                             int num2 = 11;
                             if (num >= 81)
                             {
                                 num2 = 16;
                             }
                             for (int l = 0; l < num2; l++)
                             {
                                 int num3 = l;
                                 if (num3 >= 8)
                                 {
                                     num3 += 2;
                                 }
                                 player.armor[num3].netDefaults(binaryReader.ReadInt32());
                                 player.armor[num3].Prefix((int)binaryReader.ReadByte());
                             }
                         }
                         else
                         {
                             int num4 = 20;
                             for (int m = 0; m < num4; m++)
                             {
                                 player.armor[m].netDefaults(binaryReader.ReadInt32());
                                 player.armor[m].Prefix((int)binaryReader.ReadByte());
                             }
                         }
                         if (num >= 47)
                         {
                             int num5 = 3;
                             if (num >= 81)
                             {
                                 num5 = 8;
                             }
                             if (num >= 124)
                             {
                                 num5 = 10;
                             }
                             for (int n = 0; n < num5; n++)
                             {
                                 int num6 = n;
                                 player.dye[num6].netDefaults(binaryReader.ReadInt32());
                                 player.dye[num6].Prefix((int)binaryReader.ReadByte());
                             }
                         }
                         if (num >= 58)
                         {
                             for (int num7 = 0; num7 < 58; num7++)
                             {
                                 int num8 = binaryReader.ReadInt32();
                                 if (num8 >= 3602)
                                 {
                                     player.inventory[num7].netDefaults(0);
                                 }
                                 else
                                 {
                                     player.inventory[num7].netDefaults(num8);
                                     player.inventory[num7].stack = binaryReader.ReadInt32();
                                     player.inventory[num7].Prefix((int)binaryReader.ReadByte());
                                     if (num >= 114)
                                     {
                                         player.inventory[num7].favorited = binaryReader.ReadBoolean();
                                     }
                                 }
                             }
                         }
                         else
                         {
                             for (int num9 = 0; num9 < 48; num9++)
                             {
                                 int num10 = binaryReader.ReadInt32();
                                 if (num10 >= 3602)
                                 {
                                     player.inventory[num9].netDefaults(0);
                                 }
                                 else
                                 {
                                     player.inventory[num9].netDefaults(num10);
                                     player.inventory[num9].stack = binaryReader.ReadInt32();
                                     player.inventory[num9].Prefix((int)binaryReader.ReadByte());
                                 }
                             }
                         }
                         if (num >= 117)
                         {
                             if (num < 136)
                             {
                                 for (int num11 = 0; num11 < 5; num11++)
                                 {
                                     if (num11 != 1)
                                     {
                                         int num12 = binaryReader.ReadInt32();
                                         if (num12 >= 3602)
                                         {
                                             player.miscEquips[num11].netDefaults(0);
                                         }
                                         else
                                         {
                                             player.miscEquips[num11].netDefaults(num12);
                                             player.miscEquips[num11].Prefix((int)binaryReader.ReadByte());
                                         }
                                         num12 = binaryReader.ReadInt32();
                                         if (num12 >= 3602)
                                         {
                                             player.miscDyes[num11].netDefaults(0);
                                         }
                                         else
                                         {
                                             player.miscDyes[num11].netDefaults(num12);
                                             player.miscDyes[num11].Prefix((int)binaryReader.ReadByte());
                                         }
                                     }
                                 }
                             }
                             else
                             {
                                 for (int num13 = 0; num13 < 5; num13++)
                                 {
                                     int num14 = binaryReader.ReadInt32();
                                     if (num14 >= 3602)
                                     {
                                         player.miscEquips[num13].netDefaults(0);
                                     }
                                     else
                                     {
                                         player.miscEquips[num13].netDefaults(num14);
                                         player.miscEquips[num13].Prefix((int)binaryReader.ReadByte());
                                     }
                                     num14 = binaryReader.ReadInt32();
                                     if (num14 >= 3602)
                                     {
                                         player.miscDyes[num13].netDefaults(0);
                                     }
                                     else
                                     {
                                         player.miscDyes[num13].netDefaults(num14);
                                         player.miscDyes[num13].Prefix((int)binaryReader.ReadByte());
                                     }
                                 }
                             }
                         }
                         if (num >= 58)
                         {
                             for (int num15 = 0; num15 < 40; num15++)
                             {
                                 player.bank.item[num15].netDefaults(binaryReader.ReadInt32());
                                 player.bank.item[num15].stack = binaryReader.ReadInt32();
                                 player.bank.item[num15].Prefix((int)binaryReader.ReadByte());
                             }
                             for (int num16 = 0; num16 < 40; num16++)
                             {
                                 player.bank2.item[num16].netDefaults(binaryReader.ReadInt32());
                                 player.bank2.item[num16].stack = binaryReader.ReadInt32();
                                 player.bank2.item[num16].Prefix((int)binaryReader.ReadByte());
                             }
                         }
                         else
                         {
                             for (int num17 = 0; num17 < 20; num17++)
                             {
                                 player.bank.item[num17].netDefaults(binaryReader.ReadInt32());
                                 player.bank.item[num17].stack = binaryReader.ReadInt32();
                                 player.bank.item[num17].Prefix((int)binaryReader.ReadByte());
                             }
                             for (int num18 = 0; num18 < 20; num18++)
                             {
                                 player.bank2.item[num18].netDefaults(binaryReader.ReadInt32());
                                 player.bank2.item[num18].stack = binaryReader.ReadInt32();
                                 player.bank2.item[num18].Prefix((int)binaryReader.ReadByte());
                             }
                         }
                     }
                     else
                     {
                         for (int num19 = 0; num19 < 8; num19++)
                         {
                             player.armor[num19].SetDefaults(Item.VersionName(binaryReader.ReadString(), num));
                             if (num >= 36)
                             {
                                 player.armor[num19].Prefix((int)binaryReader.ReadByte());
                             }
                         }
                         if (num >= 6)
                         {
                             for (int num20 = 8; num20 < 11; num20++)
                             {
                                 player.armor[num20].SetDefaults(Item.VersionName(binaryReader.ReadString(), num));
                                 if (num >= 36)
                                 {
                                     player.armor[num20].Prefix((int)binaryReader.ReadByte());
                                 }
                             }
                         }
                         for (int num21 = 0; num21 < 44; num21++)
                         {
                             player.inventory[num21].SetDefaults(Item.VersionName(binaryReader.ReadString(), num));
                             player.inventory[num21].stack = binaryReader.ReadInt32();
                             if (num >= 36)
                             {
                                 player.inventory[num21].Prefix((int)binaryReader.ReadByte());
                             }
                         }
                         if (num >= 15)
                         {
                             for (int num22 = 44; num22 < 48; num22++)
                             {
                                 player.inventory[num22].SetDefaults(Item.VersionName(binaryReader.ReadString(), num));
                                 player.inventory[num22].stack = binaryReader.ReadInt32();
                                 if (num >= 36)
                                 {
                                     player.inventory[num22].Prefix((int)binaryReader.ReadByte());
                                 }
                             }
                         }
                         for (int num23 = 0; num23 < 20; num23++)
                         {
                             player.bank.item[num23].SetDefaults(Item.VersionName(binaryReader.ReadString(), num));
                             player.bank.item[num23].stack = binaryReader.ReadInt32();
                             if (num >= 36)
                             {
                                 player.bank.item[num23].Prefix((int)binaryReader.ReadByte());
                             }
                         }
                         if (num >= 20)
                         {
                             for (int num24 = 0; num24 < 20; num24++)
                             {
                                 player.bank2.item[num24].SetDefaults(Item.VersionName(binaryReader.ReadString(), num));
                                 player.bank2.item[num24].stack = binaryReader.ReadInt32();
                                 if (num >= 36)
                                 {
                                     player.bank2.item[num24].Prefix((int)binaryReader.ReadByte());
                                 }
                             }
                         }
                     }
                     if (num < 58)
                     {
                         for (int num25 = 40; num25 < 48; num25++)
                         {
                             player.inventory[num25 + 10] = player.inventory[num25].Clone();
                             player.inventory[num25].SetDefaults(0, false);
                         }
                     }
                     if (num >= 11)
                     {
                         int num26 = 22;
                         if (num < 74)
                         {
                             num26 = 10;
                         }
                         for (int num27 = 0; num27 < num26; num27++)
                         {
                             player.buffType[num27] = binaryReader.ReadInt32();
                             player.buffTime[num27] = binaryReader.ReadInt32();
                             if (player.buffType[num27] == 0)
                             {
                                 num27--;
                                 num26--;
                             }
                         }
                     }
                     for (int num28 = 0; num28 < 200; num28++)
                     {
                         int num29 = binaryReader.ReadInt32();
                         if (num29 == -1)
                         {
                             break;
                         }
                         player.spX[num28] = num29;
                         player.spY[num28] = binaryReader.ReadInt32();
                         player.spI[num28] = binaryReader.ReadInt32();
                         player.spN[num28] = binaryReader.ReadString();
                     }
                     if (num >= 16)
                     {
                         player.hbLocked = binaryReader.ReadBoolean();
                     }
                     if (num >= 115)
                     {
                         int num30 = 13;
                         for (int num31 = 0; num31 < num30; num31++)
                         {
                             player.hideInfo[num31] = binaryReader.ReadBoolean();
                         }
                     }
                     if (num >= 98)
                     {
                         player.anglerQuestsFinished = binaryReader.ReadInt32();
                     }
                     player.skinVariant = (int)MathHelper.Clamp((float)player.skinVariant, 0f, 7f);
                     for (int num32 = 3; num32 < 8 + player.extraAccessorySlots; num32++)
                     {
                         int type = player.armor[num32].type;
                         if (type == 908)
                         {
                             player.lavaMax += 420;
                         }
                         if (type == 906)
                         {
                             player.lavaMax += 420;
                         }
                         if (player.wingsLogic == 0 && player.armor[num32].wingSlot >= 0)
                         {
                             player.wingsLogic = (int)player.armor[num32].wingSlot;
                         }
                         if (type == 158 || type == 396 || type == 1250 || type == 1251 || type == 1252)
                         {
                             player.noFallDmg = true;
                         }
                         player.lavaTime = player.lavaMax;
                     }
                 }
             }
         }
         player.PlayerFrame();
         player.loadStatus = 0;
         playerFileData.Player = player;
         result = playerFileData;
         return result;
     }
     catch
     {
     }
     Player player2 = new Player();
     player2.loadStatus = 2;
     if (player.name != "")
     {
         player2.name = player.name;
     }
     else
     {
         string[] array = playerPath.Split(new char[]
             {
                 Path.DirectorySeparatorChar
             });
         player.name = array[array.Length - 1].Split(new char[]
             {
                 '.'
             })[0];
     }
     playerFileData.Player = player2;
     return playerFileData;
 }
コード例 #2
0
ファイル: Player.cs プロジェクト: hastinbe/TerrariaAPI-Server
 public static PlayerFileData LoadPlayer(string playerPath)
 {
     PlayerFileData playerFileDatum;
     PlayerFileData playerFileDatum1 = new PlayerFileData(playerPath);
     if (Main.rand == null)
     {
         Main.rand = new Random((int)DateTime.Now.Ticks);
     }
     Player player = new Player();
     try
     {
         RijndaelManaged rijndaelManaged = new RijndaelManaged()
         {
             Padding = PaddingMode.None
         };
         using (MemoryStream memoryStream = new MemoryStream(FileUtilities.ReadAllBytes(playerPath)))
         {
             using (CryptoStream cryptoStream = new CryptoStream(memoryStream, rijndaelManaged.CreateDecryptor(Player.ENCRYPTION_KEY, Player.ENCRYPTION_KEY), CryptoStreamMode.Read))
             {
                 using (BinaryReader binaryReader = new BinaryReader(cryptoStream))
                 {
                     int num = binaryReader.ReadInt32();
                     if (num < 135)
                     {
                         playerFileDatum1.Metadata = FileMetadata.FromCurrentSettings(FileType.Player);
                     }
                     else
                     {
                         playerFileDatum1.Metadata = FileMetadata.Read(binaryReader, FileType.Player);
                     }
                     if (num <= Main.curRelease)
                     {
                         player.name = binaryReader.ReadString();
                         if (num >= 10)
                         {
                             if (num >= 17)
                             {
                                 player.difficulty = binaryReader.ReadByte();
                             }
                             else if (binaryReader.ReadBoolean())
                             {
                                 player.difficulty = 2;
                             }
                         }
                         if (num < 138)
                         {
                             playerFileDatum1.SetPlayTime(TimeSpan.Zero);
                         }
                         else
                         {
                             playerFileDatum1.SetPlayTime(new TimeSpan(binaryReader.ReadInt64()));
                         }
                         player.hair = binaryReader.ReadInt32();
                         if (num >= 82)
                         {
                             player.hairDye = binaryReader.ReadByte();
                         }
                         if (num >= 124)
                         {
                             BitsByte bitsByte = binaryReader.ReadByte();
                             for (int i = 0; i < 8; i++)
                             {
                                 player.hideVisual[i] = bitsByte[i];
                             }
                             bitsByte = binaryReader.ReadByte();
                             for (int j = 0; j < 2; j++)
                             {
                                 player.hideVisual[j + 8] = bitsByte[j];
                             }
                         }
                         else if (num >= 83)
                         {
                             BitsByte bitsByte1 = binaryReader.ReadByte();
                             for (int k = 0; k < 8; k++)
                             {
                                 player.hideVisual[k] = bitsByte1[k];
                             }
                         }
                         if (num >= 119)
                         {
                             player.hideMisc = binaryReader.ReadByte();
                         }
                         if (num <= 17)
                         {
                             if (player.hair == 5 || player.hair == 6 || player.hair == 9 || player.hair == 11)
                             {
                                 player.Male = false;
                             }
                             else
                             {
                                 player.Male = true;
                             }
                         }
                         else if (num >= 107)
                         {
                             player.skinVariant = binaryReader.ReadByte();
                         }
                         else
                         {
                             player.Male = binaryReader.ReadBoolean();
                         }
                         player.statLife = binaryReader.ReadInt32();
                         player.statLifeMax = binaryReader.ReadInt32();
                         if (player.statLifeMax > 500)
                         {
                             player.statLifeMax = 500;
                         }
                         player.statMana = binaryReader.ReadInt32();
                         player.statManaMax = binaryReader.ReadInt32();
                         if (player.statManaMax > 200)
                         {
                             player.statManaMax = 200;
                         }
                         if (player.statMana > 400)
                         {
                             player.statMana = 400;
                         }
                         if (num >= 125)
                         {
                             player.extraAccessory = binaryReader.ReadBoolean();
                         }
                         if (num >= 128)
                         {
                             player.taxMoney = binaryReader.ReadInt32();
                         }
                         player.hairColor = binaryReader.ReadRGB();
                         player.skinColor = binaryReader.ReadRGB();
                         player.eyeColor = binaryReader.ReadRGB();
                         player.shirtColor = binaryReader.ReadRGB();
                         player.underShirtColor = binaryReader.ReadRGB();
                         player.pantsColor = binaryReader.ReadRGB();
                         player.shoeColor = binaryReader.ReadRGB();
                         Main.player[Main.myPlayer].shirtColor = player.shirtColor;
                         Main.player[Main.myPlayer].pantsColor = player.pantsColor;
                         Main.player[Main.myPlayer].hairColor = player.hairColor;
                         if (num < 38)
                         {
                             for (int l = 0; l < 8; l++)
                             {
                                 player.armor[l].SetDefaults(Item.VersionName(binaryReader.ReadString(), num));
                                 if (num >= 36)
                                 {
                                     player.armor[l].Prefix((int)binaryReader.ReadByte());
                                 }
                             }
                             if (num >= 6)
                             {
                                 for (int m = 8; m < 11; m++)
                                 {
                                     player.armor[m].SetDefaults(Item.VersionName(binaryReader.ReadString(), num));
                                     if (num >= 36)
                                     {
                                         player.armor[m].Prefix((int)binaryReader.ReadByte());
                                     }
                                 }
                             }
                             for (int n = 0; n < 44; n++)
                             {
                                 player.inventory[n].SetDefaults(Item.VersionName(binaryReader.ReadString(), num));
                                 player.inventory[n].stack = binaryReader.ReadInt32();
                                 if (num >= 36)
                                 {
                                     player.inventory[n].Prefix((int)binaryReader.ReadByte());
                                 }
                             }
                             if (num >= 15)
                             {
                                 for (int o = 44; o < 48; o++)
                                 {
                                     player.inventory[o].SetDefaults(Item.VersionName(binaryReader.ReadString(), num));
                                     player.inventory[o].stack = binaryReader.ReadInt32();
                                     if (num >= 36)
                                     {
                                         player.inventory[o].Prefix((int)binaryReader.ReadByte());
                                     }
                                 }
                             }
                             for (int p = 0; p < 20; p++)
                             {
                                 player.bank.item[p].SetDefaults(Item.VersionName(binaryReader.ReadString(), num));
                                 player.bank.item[p].stack = binaryReader.ReadInt32();
                                 if (num >= 36)
                                 {
                                     player.bank.item[p].Prefix((int)binaryReader.ReadByte());
                                 }
                             }
                             if (num >= 20)
                             {
                                 for (int q = 0; q < 20; q++)
                                 {
                                     player.bank2.item[q].SetDefaults(Item.VersionName(binaryReader.ReadString(), num));
                                     player.bank2.item[q].stack = binaryReader.ReadInt32();
                                     if (num >= 36)
                                     {
                                         player.bank2.item[q].Prefix((int)binaryReader.ReadByte());
                                     }
                                 }
                             }
                         }
                         else
                         {
                             if (num >= 124)
                             {
                                 int num1 = 20;
                                 for (int r = 0; r < num1; r++)
                                 {
                                     player.armor[r].netDefaults(binaryReader.ReadInt32());
                                     player.armor[r].Prefix((int)binaryReader.ReadByte());
                                 }
                             }
                             else
                             {
                                 int num2 = 11;
                                 if (num >= 81)
                                 {
                                     num2 = 16;
                                 }
                                 for (int s = 0; s < num2; s++)
                                 {
                                     int num3 = s;
                                     if (num3 >= 8)
                                     {
                                         num3 = num3 + 2;
                                     }
                                     player.armor[num3].netDefaults(binaryReader.ReadInt32());
                                     player.armor[num3].Prefix((int)binaryReader.ReadByte());
                                 }
                             }
                             if (num >= 47)
                             {
                                 int num4 = 3;
                                 if (num >= 81)
                                 {
                                     num4 = 8;
                                 }
                                 if (num >= 124)
                                 {
                                     num4 = 10;
                                 }
                                 for (int t = 0; t < num4; t++)
                                 {
                                     int num5 = t;
                                     player.dye[num5].netDefaults(binaryReader.ReadInt32());
                                     player.dye[num5].Prefix((int)binaryReader.ReadByte());
                                 }
                             }
                             if (num < 58)
                             {
                                 for (int u = 0; u < 48; u++)
                                 {
                                     int num6 = binaryReader.ReadInt32();
                                     if (num6 < Main.maxItemTypes)
                                     {
                                         player.inventory[u].netDefaults(num6);
                                         player.inventory[u].stack = binaryReader.ReadInt32();
                                         player.inventory[u].Prefix((int)binaryReader.ReadByte());
                                     }
                                     else
                                     {
                                         player.inventory[u].netDefaults(0);
                                     }
                                 }
                             }
                             else
                             {
                                 for (int v = 0; v < 58; v++)
                                 {
                                     int num7 = binaryReader.ReadInt32();
                                     if (num7 < Main.maxItemTypes)
                                     {
                                         player.inventory[v].netDefaults(num7);
                                         player.inventory[v].stack = binaryReader.ReadInt32();
                                         player.inventory[v].Prefix((int)binaryReader.ReadByte());
                                         if (num >= 114)
                                         {
                                             player.inventory[v].favorited = binaryReader.ReadBoolean();
                                         }
                                     }
                                     else
                                     {
                                         player.inventory[v].netDefaults(0);
                                     }
                                 }
                             }
                             if (num >= 117)
                             {
                                 if (num >= 136)
                                 {
                                     for (int w = 0; w < 5; w++)
                                     {
                                         int num8 = binaryReader.ReadInt32();
                                         if (num8 < Main.maxItemTypes)
                                         {
                                             player.miscEquips[w].netDefaults(num8);
                                             player.miscEquips[w].Prefix((int)binaryReader.ReadByte());
                                         }
                                         else
                                         {
                                             player.miscEquips[w].netDefaults(0);
                                         }
                                         num8 = binaryReader.ReadInt32();
                                         if (num8 < Main.maxItemTypes)
                                         {
                                             player.miscDyes[w].netDefaults(num8);
                                             player.miscDyes[w].Prefix((int)binaryReader.ReadByte());
                                         }
                                         else
                                         {
                                             player.miscDyes[w].netDefaults(0);
                                         }
                                     }
                                 }
                                 else
                                 {
                                     for (int x = 0; x < 5; x++)
                                     {
                                         if (x != 1)
                                         {
                                             int num9 = binaryReader.ReadInt32();
                                             if (num9 < Main.maxItemTypes)
                                             {
                                                 player.miscEquips[x].netDefaults(num9);
                                                 player.miscEquips[x].Prefix((int)binaryReader.ReadByte());
                                             }
                                             else
                                             {
                                                 player.miscEquips[x].netDefaults(0);
                                             }
                                             num9 = binaryReader.ReadInt32();
                                             if (num9 < Main.maxItemTypes)
                                             {
                                                 player.miscDyes[x].netDefaults(num9);
                                                 player.miscDyes[x].Prefix((int)binaryReader.ReadByte());
                                             }
                                             else
                                             {
                                                 player.miscDyes[x].netDefaults(0);
                                             }
                                         }
                                     }
                                 }
                             }
                             if (num < 58)
                             {
                                 for (int y = 0; y < 20; y++)
                                 {
                                     player.bank.item[y].netDefaults(binaryReader.ReadInt32());
                                     player.bank.item[y].stack = binaryReader.ReadInt32();
                                     player.bank.item[y].Prefix((int)binaryReader.ReadByte());
                                 }
                                 for (int a = 0; a < 20; a++)
                                 {
                                     player.bank2.item[a].netDefaults(binaryReader.ReadInt32());
                                     player.bank2.item[a].stack = binaryReader.ReadInt32();
                                     player.bank2.item[a].Prefix((int)binaryReader.ReadByte());
                                 }
                             }
                             else
                             {
                                 for (int b = 0; b < 40; b++)
                                 {
                                     player.bank.item[b].netDefaults(binaryReader.ReadInt32());
                                     player.bank.item[b].stack = binaryReader.ReadInt32();
                                     player.bank.item[b].Prefix((int)binaryReader.ReadByte());
                                 }
                                 for (int c = 0; c < 40; c++)
                                 {
                                     player.bank2.item[c].netDefaults(binaryReader.ReadInt32());
                                     player.bank2.item[c].stack = binaryReader.ReadInt32();
                                     player.bank2.item[c].Prefix((int)binaryReader.ReadByte());
                                 }
                             }
                         }
                         if (num < 58)
                         {
                             for (int d = 40; d < 48; d++)
                             {
                                 player.inventory[d + 10] = player.inventory[d].Clone();
                                 player.inventory[d].SetDefaults(0, false);
                             }
                         }
                         if (num >= 11)
                         {
                             int num10 = 22;
                             if (num < 74)
                             {
                                 num10 = 10;
                             }
                             for (int e = 0; e < num10; e++)
                             {
                                 player.buffType[e] = binaryReader.ReadInt32();
                                 player.buffTime[e] = binaryReader.ReadInt32();
                                 if (player.buffType[e] == 0)
                                 {
                                     e--;
                                     num10--;
                                 }
                             }
                         }
                         for (int f = 0; f < 200; f++)
                         {
                             int num11 = binaryReader.ReadInt32();
                             if (num11 == -1)
                             {
                                 break;
                             }
                             player.spX[f] = num11;
                             player.spY[f] = binaryReader.ReadInt32();
                             player.spI[f] = binaryReader.ReadInt32();
                             player.spN[f] = binaryReader.ReadString();
                         }
                         if (num >= 16)
                         {
                             player.hbLocked = binaryReader.ReadBoolean();
                         }
                         if (num >= 115)
                         {
                             int num12 = 13;
                             for (int g = 0; g < num12; g++)
                             {
                                 player.hideInfo[g] = binaryReader.ReadBoolean();
                             }
                         }
                         if (num >= 98)
                         {
                             player.anglerQuestsFinished = binaryReader.ReadInt32();
                         }
                         player.skinVariant = (int)MathHelper.Clamp((float)player.skinVariant, 0f, 7f);
                         for (int h = 3; h < 8 + player.extraAccessorySlots; h++)
                         {
                             int num13 = player.armor[h].type;
                             if (num13 == 908)
                             {
                                 Player player1 = player;
                                 player1.lavaMax = player1.lavaMax + 420;
                             }
                             if (num13 == 906)
                             {
                                 Player player2 = player;
                                 player2.lavaMax = player2.lavaMax + 420;
                             }
                             if (player.wingsLogic == 0 && player.armor[h].wingSlot >= 0)
                             {
                                 player.wingsLogic = player.armor[h].wingSlot;
                             }
                             if (num13 == 158 || num13 == 396 || num13 == 1250 || num13 == 1251 || num13 == 1252)
                             {
                                 player.noFallDmg = true;
                             }
                             player.lavaTime = player.lavaMax;
                         }
                     }
                     else
                     {
                         player.loadStatus = 1;
                         player.name = binaryReader.ReadString();
                         playerFileDatum1.Player = player;
                         playerFileDatum = playerFileDatum1;
                         return playerFileDatum;
                     }
                 }
             }
         }
         player.PlayerFrame();
         player.loadStatus = 0;
         playerFileDatum1.Player = player;
         playerFileDatum = playerFileDatum1;
     }
     catch
     {
         Player player3 = new Player()
         {
             loadStatus = 2
         };
         if (player.name == "")
         {
             char[] directorySeparatorChar = new char[] { Path.DirectorySeparatorChar };
             string[] strArrays = playerPath.Split(directorySeparatorChar);
             string str = strArrays[(int)strArrays.Length - 1];
             char[] chrArray = new char[] { '.' };
             player.name = str.Split(chrArray)[0];
         }
         else
         {
             player3.name = player.name;
         }
         playerFileDatum1.Player = player3;
         return playerFileDatum1;
     }
     return playerFileDatum;
 }
コード例 #3
0
ファイル: Player.cs プロジェクト: EmuDevs/EDTerraria
 public static PlayerFileData LoadPlayer(string playerPath, bool cloudSave)
 {
     PlayerFileData playerFileData = new PlayerFileData(playerPath);
     if (Main.rand == null)
         Main.rand = new Random((int)DateTime.Now.Ticks);
     Player player1 = new Player();
     try
     {
         RijndaelManaged rijndaelManaged = new RijndaelManaged();
         rijndaelManaged.Padding = PaddingMode.None;
         using (MemoryStream memoryStream = new MemoryStream(FileUtilities.ReadAllBytes(playerPath)))
         {
             using (CryptoStream cryptoStream = new CryptoStream((Stream)memoryStream, rijndaelManaged.CreateDecryptor(Player.ENCRYPTION_KEY, Player.ENCRYPTION_KEY), CryptoStreamMode.Read))
             {
                 using (BinaryReader binaryReader = new BinaryReader((Stream)cryptoStream))
                 {
                     int release = binaryReader.ReadInt32();
                     if (release >= 135)
                         playerFileData.Metadata = FileMetadata.Read(binaryReader, FileType.Player);
                     else
                         playerFileData.Metadata = FileMetadata.FromCurrentSettings(FileType.Player);
                     if (release > Main.curRelease)
                     {
                         player1.loadStatus = 1;
                         player1.name = binaryReader.ReadString();
                         playerFileData.Player = player1;
                         return playerFileData;
                     }
                     player1.name = binaryReader.ReadString();
                     if (release >= 10)
                     {
                         if (release >= 17)
                             player1.difficulty = binaryReader.ReadByte();
                         else if (binaryReader.ReadBoolean())
                             player1.difficulty = (byte)2;
                     }
                     if (release >= 138)
                         playerFileData.SetPlayTime(new TimeSpan(binaryReader.ReadInt64()));
                     else
                         playerFileData.SetPlayTime(TimeSpan.Zero);
                     player1.hair = binaryReader.ReadInt32();
                     if (release >= 82)
                         player1.hairDye = binaryReader.ReadByte();
                     if (release >= 124)
                     {
                         BitsByte bitsByte = (BitsByte)binaryReader.ReadByte();
                         for (int index = 0; index < 8; ++index)
                             player1.hideVisual[index] = bitsByte[index];
                         bitsByte = (BitsByte)binaryReader.ReadByte();
                         for (int index = 0; index < 2; ++index)
                             player1.hideVisual[index + 8] = bitsByte[index];
                     }
                     else if (release >= 83)
                     {
                         BitsByte bitsByte = (BitsByte)binaryReader.ReadByte();
                         for (int index = 0; index < 8; ++index)
                             player1.hideVisual[index] = bitsByte[index];
                     }
                     if (release >= 119)
                         player1.hideMisc = (BitsByte)binaryReader.ReadByte();
                     if (release <= 17)
                         player1.Male = player1.hair != 5 && player1.hair != 6 && (player1.hair != 9 && player1.hair != 11);
                     else if (release < 107)
                         player1.Male = binaryReader.ReadBoolean();
                     else
                         player1.skinVariant = (int)binaryReader.ReadByte();
                     player1.statLife = binaryReader.ReadInt32();
                     player1.statLifeMax = binaryReader.ReadInt32();
                     if (player1.statLifeMax > 500)
                         player1.statLifeMax = 500;
                     player1.statMana = binaryReader.ReadInt32();
                     player1.statManaMax = binaryReader.ReadInt32();
                     if (player1.statManaMax > 200)
                         player1.statManaMax = 200;
                     if (player1.statMana > 400)
                         player1.statMana = 400;
                     if (release >= 125)
                         player1.extraAccessory = binaryReader.ReadBoolean();
                     if (release >= 128)
                         player1.taxMoney = binaryReader.ReadInt32();
                     player1.hairColor = Utils.ReadRGB(binaryReader);
                     player1.skinColor = Utils.ReadRGB(binaryReader);
                     player1.eyeColor = Utils.ReadRGB(binaryReader);
                     player1.shirtColor = Utils.ReadRGB(binaryReader);
                     player1.underShirtColor = Utils.ReadRGB(binaryReader);
                     player1.pantsColor = Utils.ReadRGB(binaryReader);
                     player1.shoeColor = Utils.ReadRGB(binaryReader);
                     Main.player[Main.myPlayer].shirtColor = player1.shirtColor;
                     Main.player[Main.myPlayer].pantsColor = player1.pantsColor;
                     Main.player[Main.myPlayer].hairColor = player1.hairColor;
                     if (release >= 38)
                     {
                         if (release < 124)
                         {
                             int num = 11;
                             if (release >= 81)
                                 num = 16;
                             for (int index1 = 0; index1 < num; ++index1)
                             {
                                 int index2 = index1;
                                 if (index2 >= 8)
                                     index2 += 2;
                                 player1.armor[index2].netDefaults(binaryReader.ReadInt32());
                                 player1.armor[index2].Prefix((int)binaryReader.ReadByte());
                             }
                         }
                         else
                         {
                             int num = 20;
                             for (int index = 0; index < num; ++index)
                             {
                                 player1.armor[index].netDefaults(binaryReader.ReadInt32());
                                 player1.armor[index].Prefix((int)binaryReader.ReadByte());
                             }
                         }
                         if (release >= 47)
                         {
                             int num = 3;
                             if (release >= 81)
                                 num = 8;
                             if (release >= 124)
                                 num = 10;
                             for (int index1 = 0; index1 < num; ++index1)
                             {
                                 int index2 = index1;
                                 player1.dye[index2].netDefaults(binaryReader.ReadInt32());
                                 player1.dye[index2].Prefix((int)binaryReader.ReadByte());
                             }
                         }
                         if (release >= 58)
                         {
                             for (int index = 0; index < 58; ++index)
                             {
                                 int type = binaryReader.ReadInt32();
                                 if (type >= 3601)
                                 {
                                     player1.inventory[index].netDefaults(0);
                                 }
                                 else
                                 {
                                     player1.inventory[index].netDefaults(type);
                                     player1.inventory[index].stack = binaryReader.ReadInt32();
                                     player1.inventory[index].Prefix((int)binaryReader.ReadByte());
                                     if (release >= 114)
                                         player1.inventory[index].favorited = binaryReader.ReadBoolean();
                                 }
                             }
                         }
                         else
                         {
                             for (int index = 0; index < 48; ++index)
                             {
                                 int type = binaryReader.ReadInt32();
                                 if (type >= 3601)
                                 {
                                     player1.inventory[index].netDefaults(0);
                                 }
                                 else
                                 {
                                     player1.inventory[index].netDefaults(type);
                                     player1.inventory[index].stack = binaryReader.ReadInt32();
                                     player1.inventory[index].Prefix((int)binaryReader.ReadByte());
                                 }
                             }
                         }
                         if (release >= 117)
                         {
                             if (release < 136)
                             {
                                 for (int index = 0; index < 5; ++index)
                                 {
                                     if (index != 1)
                                     {
                                         int type1 = binaryReader.ReadInt32();
                                         if (type1 >= 3601)
                                         {
                                             player1.miscEquips[index].netDefaults(0);
                                         }
                                         else
                                         {
                                             player1.miscEquips[index].netDefaults(type1);
                                             player1.miscEquips[index].Prefix((int)binaryReader.ReadByte());
                                         }
                                         int type2 = binaryReader.ReadInt32();
                                         if (type2 >= 3601)
                                         {
                                             player1.miscDyes[index].netDefaults(0);
                                         }
                                         else
                                         {
                                             player1.miscDyes[index].netDefaults(type2);
                                             player1.miscDyes[index].Prefix((int)binaryReader.ReadByte());
                                         }
                                     }
                                 }
                             }
                             else
                             {
                                 for (int index = 0; index < 5; ++index)
                                 {
                                     int type1 = binaryReader.ReadInt32();
                                     if (type1 >= 3601)
                                     {
                                         player1.miscEquips[index].netDefaults(0);
                                     }
                                     else
                                     {
                                         player1.miscEquips[index].netDefaults(type1);
                                         player1.miscEquips[index].Prefix((int)binaryReader.ReadByte());
                                     }
                                     int type2 = binaryReader.ReadInt32();
                                     if (type2 >= 3601)
                                     {
                                         player1.miscDyes[index].netDefaults(0);
                                     }
                                     else
                                     {
                                         player1.miscDyes[index].netDefaults(type2);
                                         player1.miscDyes[index].Prefix((int)binaryReader.ReadByte());
                                     }
                                 }
                             }
                         }
                         if (release >= 58)
                         {
                             for (int index = 0; index < 40; ++index)
                             {
                                 player1.bank.item[index].netDefaults(binaryReader.ReadInt32());
                                 player1.bank.item[index].stack = binaryReader.ReadInt32();
                                 player1.bank.item[index].Prefix((int)binaryReader.ReadByte());
                             }
                             for (int index = 0; index < 40; ++index)
                             {
                                 player1.bank2.item[index].netDefaults(binaryReader.ReadInt32());
                                 player1.bank2.item[index].stack = binaryReader.ReadInt32();
                                 player1.bank2.item[index].Prefix((int)binaryReader.ReadByte());
                             }
                         }
                         else
                         {
                             for (int index = 0; index < 20; ++index)
                             {
                                 player1.bank.item[index].netDefaults(binaryReader.ReadInt32());
                                 player1.bank.item[index].stack = binaryReader.ReadInt32();
                                 player1.bank.item[index].Prefix((int)binaryReader.ReadByte());
                             }
                             for (int index = 0; index < 20; ++index)
                             {
                                 player1.bank2.item[index].netDefaults(binaryReader.ReadInt32());
                                 player1.bank2.item[index].stack = binaryReader.ReadInt32();
                                 player1.bank2.item[index].Prefix((int)binaryReader.ReadByte());
                             }
                         }
                     }
                     else
                     {
                         for (int index = 0; index < 8; ++index)
                         {
                             player1.armor[index].SetDefaults(Item.VersionName(binaryReader.ReadString(), release));
                             if (release >= 36)
                                 player1.armor[index].Prefix((int)binaryReader.ReadByte());
                         }
                         if (release >= 6)
                         {
                             for (int index = 8; index < 11; ++index)
                             {
                                 player1.armor[index].SetDefaults(Item.VersionName(binaryReader.ReadString(), release));
                                 if (release >= 36)
                                     player1.armor[index].Prefix((int)binaryReader.ReadByte());
                             }
                         }
                         for (int index = 0; index < 44; ++index)
                         {
                             player1.inventory[index].SetDefaults(Item.VersionName(binaryReader.ReadString(), release));
                             player1.inventory[index].stack = binaryReader.ReadInt32();
                             if (release >= 36)
                                 player1.inventory[index].Prefix((int)binaryReader.ReadByte());
                         }
                         if (release >= 15)
                         {
                             for (int index = 44; index < 48; ++index)
                             {
                                 player1.inventory[index].SetDefaults(Item.VersionName(binaryReader.ReadString(), release));
                                 player1.inventory[index].stack = binaryReader.ReadInt32();
                                 if (release >= 36)
                                     player1.inventory[index].Prefix((int)binaryReader.ReadByte());
                             }
                         }
                         for (int index = 0; index < 20; ++index)
                         {
                             player1.bank.item[index].SetDefaults(Item.VersionName(binaryReader.ReadString(), release));
                             player1.bank.item[index].stack = binaryReader.ReadInt32();
                             if (release >= 36)
                                 player1.bank.item[index].Prefix((int)binaryReader.ReadByte());
                         }
                         if (release >= 20)
                         {
                             for (int index = 0; index < 20; ++index)
                             {
                                 player1.bank2.item[index].SetDefaults(Item.VersionName(binaryReader.ReadString(), release));
                                 player1.bank2.item[index].stack = binaryReader.ReadInt32();
                                 if (release >= 36)
                                     player1.bank2.item[index].Prefix((int)binaryReader.ReadByte());
                             }
                         }
                     }
                     if (release < 58)
                     {
                         for (int index = 40; index < 48; ++index)
                         {
                             player1.inventory[index + 10] = player1.inventory[index].Clone();
                             player1.inventory[index].SetDefaults(0, false);
                         }
                     }
                     if (release >= 11)
                     {
                         int num = 22;
                         if (release < 74)
                             num = 10;
                         for (int index = 0; index < num; ++index)
                         {
                             player1.buffType[index] = binaryReader.ReadInt32();
                             player1.buffTime[index] = binaryReader.ReadInt32();
                             if (player1.buffType[index] == 0)
                             {
                                 --index;
                                 --num;
                             }
                         }
                     }
                     for (int index = 0; index < 200; ++index)
                     {
                         int num = binaryReader.ReadInt32();
                         if (num != -1)
                         {
                             player1.spX[index] = num;
                             player1.spY[index] = binaryReader.ReadInt32();
                             player1.spI[index] = binaryReader.ReadInt32();
                             player1.spN[index] = binaryReader.ReadString();
                         }
                         else
                             break;
                     }
                     if (release >= 16)
                         player1.hbLocked = binaryReader.ReadBoolean();
                     if (release >= 115)
                     {
                         int num = 13;
                         for (int index = 0; index < num; ++index)
                             player1.hideInfo[index] = binaryReader.ReadBoolean();
                     }
                     if (release >= 98)
                         player1.anglerQuestsFinished = binaryReader.ReadInt32();
                     player1.skinVariant = (int)MathHelper.Clamp((float)player1.skinVariant, 0.0f, 7f);
                     for (int index = 3; index < 8 + player1.extraAccessorySlots; ++index)
                     {
                         int num = player1.armor[index].itemId;
                         if (num == 908)
                             player1.lavaMax += 420;
                         if (num == 906)
                             player1.lavaMax += 420;
                         if (player1.wingsLogic == 0 && (int)player1.armor[index].wingSlot >= 0)
                             player1.wingsLogic = (int)player1.armor[index].wingSlot;
                         if (num == 158 || num == 396 || (num == 1250 || num == 1251) || num == 1252)
                             player1.noFallDmg = true;
                         player1.lavaTime = player1.lavaMax;
                     }
                 }
             }
         }
         player1.PlayerFrame();
         player1.loadStatus = 0;
         playerFileData.Player = player1;
         return playerFileData;
     }
     catch
     {
     }
     Player player2 = new Player();
     player2.loadStatus = 2;
     if (player1.name != "")
     {
         player2.name = player1.name;
     }
     else
     {
         string[] strArray = playerPath.Split(Path.DirectorySeparatorChar);
         player1.name = strArray[strArray.Length - 1].Split('.')[0];
     }
     playerFileData.Player = player2;
     return playerFileData;
 }