protected override void DrawSelf(SpriteBatch spriteBatch) { base.DrawSelf(spriteBatch); CalculatedStyle innerDimensions = GetInnerDimensions(); CalculatedStyle dimensions = _playerPanel.GetDimensions(); float num = dimensions.X + dimensions.Width; Utils.DrawBorderString(spriteBatch, _data.Name, new Vector2(num + 6f, dimensions.Y - 2f), Color.White); spriteBatch.Draw(_dividerTexture, new Vector2(num, innerDimensions.Y + 21f), null, Color.White, 0f, Vector2.Zero, new Vector2((GetDimensions().X + GetDimensions().Width - num) / 8f, 1f), SpriteEffects.None, 0f); Vector2 vector = new Vector2(num + 6f, innerDimensions.Y + 29f); float num2 = 200f; Vector2 vector2 = vector; DrawPanel(spriteBatch, vector2, num2); spriteBatch.Draw(Main.heartTexture, vector2 + new Vector2(5f, 2f), Color.White); vector2.X += 10f + (float)Main.heartTexture.Width; Utils.DrawBorderString(spriteBatch, _data.Player.statLifeMax + " HP", vector2 + new Vector2(0f, 3f), Color.White); vector2.X += 65f; spriteBatch.Draw(Main.manaTexture, vector2 + new Vector2(5f, 2f), Color.White); vector2.X += 10f + (float)Main.manaTexture.Width; Utils.DrawBorderString(spriteBatch, _data.Player.statManaMax + " MP", vector2 + new Vector2(0f, 3f), Color.White); vector.X += num2 + 5f; Vector2 vector3 = vector; float num3 = 110f; DrawPanel(spriteBatch, vector3, num3); string text = ""; Color color = Color.White; switch (_data.Player.difficulty) { case 0: text = "Softcore"; break; case 1: text = "Mediumcore"; color = Main.mcColor; break; case 2: text = "Hardcore"; color = Main.hcColor; break; } vector3 += new Vector2(num3 * 0.5f - Main.fontMouseText.MeasureString(text).X * 0.5f, 3f); Utils.DrawBorderString(spriteBatch, text, vector3, color); vector.X += num3 + 5f; Vector2 vector4 = vector; float num4 = innerDimensions.X + innerDimensions.Width - vector4.X; DrawPanel(spriteBatch, vector4, num4); TimeSpan playTime = _data.GetPlayTime(); int num5 = playTime.Days * 24 + playTime.Hours; string text2 = ((num5 < 10) ? "0" : "") + num5 + playTime.ToString("\\:mm\\:ss"); vector4 += new Vector2(num4 * 0.5f - Main.fontMouseText.MeasureString(text2).X * 0.5f, 3f); Utils.DrawBorderString(spriteBatch, text2, vector4, Color.White); }
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; })); }
protected override void DrawSelf(SpriteBatch spriteBatch) { base.DrawSelf(spriteBatch); CalculatedStyle innerDimensions = GetInnerDimensions(); CalculatedStyle dimensions = _playerPanel.GetDimensions(); float x = dimensions.X + dimensions.Width; Utils.DrawBorderString(spriteBatch, playerFileData.Name, new Vector2(x + 6f, dimensions.Y - 2f), Color.White, 1f, 0.0f, 0.0f, -1); spriteBatch.Draw(_dividerTexture, new Vector2(x, innerDimensions.Y + 21f), new Rectangle?(), Color.White, 0.0f, Vector2.Zero, new Vector2((float)((GetDimensions().X + GetDimensions().Width - x) / 8.0), 1f), SpriteEffects.None, 0.0f); Vector2 vector2 = new Vector2(x + 6f, innerDimensions.Y + 29f); float width1 = 200f; Vector2 position1 = vector2; this.DrawPanel(spriteBatch, position1, width1); spriteBatch.Draw(Main.heartTexture, position1 + new Vector2(5f, 2f), Color.White); position1.X += 10f + (float)Main.heartTexture.Width; Utils.DrawBorderString(spriteBatch, playerFileData.Player.statLifeMax + " HP", position1 + new Vector2(0.0f, 3f), Color.White, 1f, 0.0f, 0.0f, -1); position1.X += 65f; spriteBatch.Draw(Main.manaTexture, position1 + new Vector2(5f, 2f), Color.White); position1.X += 10f + (float)Main.manaTexture.Width; Utils.DrawBorderString(spriteBatch, playerFileData.Player.statManaMax + " MP", position1 + new Vector2(0.0f, 3f), Color.White, 1f, 0.0f, 0.0f, -1); vector2.X += width1 + 5f; Vector2 position2 = vector2; float width2 = 110f; DrawPanel(spriteBatch, position2, width2); string text1 = ""; Color color = Color.White; switch (playerFileData.Player.difficulty) { case 0: text1 = "Softcore"; break; case 1: text1 = "Mediumcore"; color = Main.mcColor; break; case 2: text1 = "Hardcore"; color = Main.hcColor; break; } Vector2 pos1 = position2 + new Vector2((float)(width2 * 0.5 - Main.fontMouseText.MeasureString(text1).X * 0.5), 3f); Utils.DrawBorderString(spriteBatch, text1, pos1, color, 1f, 0.0f, 0.0f, -1); vector2.X += width2 + 5f; Vector2 position3 = vector2; float width3 = innerDimensions.X + innerDimensions.Width - position3.X; DrawPanel(spriteBatch, position3, width3); TimeSpan playTime = playerFileData.GetPlayTime(); int num = playTime.Days * 24 + playTime.Hours; string text2 = (num < 10 ? "0" : "") + num + playTime.ToString("\\:mm\\:ss"); Vector2 pos2 = position3 + new Vector2((float)(width3 * 0.5 - Main.fontMouseText.MeasureString(text2).X * 0.5), 3f); Utils.DrawBorderString(spriteBatch, text2, pos2, Color.White, 1f, 0.0f, 0.0f, -1); }
protected override void DrawSelf(SpriteBatch spriteBatch) { base.DrawSelf(spriteBatch); CalculatedStyle innerDimensions = GetInnerDimensions(); CalculatedStyle dimensions = _playerPanel.GetDimensions(); float num = dimensions.X + dimensions.Width; Utils.DrawBorderString(spriteBatch, _data.Name, new Vector2(num + 6f, dimensions.Y - 2f), Color.White); spriteBatch.Draw(_dividerTexture.Value, new Vector2(num, innerDimensions.Y + 21f), null, Color.White, 0f, Vector2.Zero, new Vector2((GetDimensions().X + GetDimensions().Width - num) / 8f, 1f), SpriteEffects.None, 0f); Vector2 vector = new Vector2(num + 6f, innerDimensions.Y + 29f); float num2 = 200f; Vector2 vector2 = vector; DrawPanel(spriteBatch, vector2, num2); spriteBatch.Draw(TextureAssets.Heart.Value, vector2 + new Vector2(5f, 2f), Color.White); vector2.X += 10f + (float)TextureAssets.Heart.Width(); Utils.DrawBorderString(spriteBatch, _data.Player.statLifeMax + Language.GetTextValue("GameUI.PlayerLifeMax"), vector2 + new Vector2(0f, 3f), Color.White); vector2.X += 65f; spriteBatch.Draw(TextureAssets.Mana.Value, vector2 + new Vector2(5f, 2f), Color.White); vector2.X += 10f + (float)TextureAssets.Mana.Width(); Utils.DrawBorderString(spriteBatch, _data.Player.statManaMax + Language.GetTextValue("GameUI.PlayerManaMax"), vector2 + new Vector2(0f, 3f), Color.White); vector.X += num2 + 5f; Vector2 vector3 = vector; float num3 = 140f; if (GameCulture.FromCultureName(GameCulture.CultureName.Russian).IsActive) { num3 = 180f; } DrawPanel(spriteBatch, vector3, num3); string text = ""; Color color = Color.White; switch (_data.Player.difficulty) { case 0: text = Language.GetTextValue("UI.Softcore"); break; case 1: text = Language.GetTextValue("UI.Mediumcore"); color = Main.mcColor; break; case 2: text = Language.GetTextValue("UI.Hardcore"); color = Main.hcColor; break; case 3: text = Language.GetTextValue("UI.Creative"); color = Main.creativeModeColor; break; } vector3 += new Vector2(num3 * 0.5f - FontAssets.MouseText.Value.MeasureString(text).X * 0.5f, 3f); Utils.DrawBorderString(spriteBatch, text, vector3, color); vector.X += num3 + 5f; Vector2 vector4 = vector; float num4 = innerDimensions.X + innerDimensions.Width - vector4.X; DrawPanel(spriteBatch, vector4, num4); TimeSpan playTime = _data.GetPlayTime(); int num5 = playTime.Days * 24 + playTime.Hours; string text2 = ((num5 < 10) ? "0" : "") + num5 + playTime.ToString("\\:mm\\:ss"); vector4 += new Vector2(num4 * 0.5f - FontAssets.MouseText.Value.MeasureString(text2).X * 0.5f, 3f); Utils.DrawBorderString(spriteBatch, text2, vector4, Color.White); }