public UICharacterListItem(PlayerFileData data, int snapPointIndex) { this.BorderColor = new Color(89, 116, 213) * 0.7f; this._dividerTexture = TextureManager.Load("Images/UI/Divider"); this._innerPanelTexture = TextureManager.Load("Images/UI/InnerPanelBackground"); this._buttonCloudActiveTexture = TextureManager.Load("Images/UI/ButtonCloudActive"); this._buttonCloudInactiveTexture = TextureManager.Load("Images/UI/ButtonCloudInactive"); this._buttonFavoriteActiveTexture = TextureManager.Load("Images/UI/ButtonFavoriteActive"); this._buttonFavoriteInactiveTexture = TextureManager.Load("Images/UI/ButtonFavoriteInactive"); this._buttonPlayTexture = TextureManager.Load("Images/UI/ButtonPlay"); this._buttonDeleteTexture = TextureManager.Load("Images/UI/ButtonDelete"); this.Height.Set(96f, 0.0f); this.Width.Set(0.0f, 1f); this.SetPadding(6f); this._data = data; this._playerPanel = new UICharacter(data.Player); this._playerPanel.Left.Set(4f, 0.0f); this._playerPanel.OnDoubleClick += new UIElement.MouseEvent(this.PlayGame); this.OnDoubleClick += new UIElement.MouseEvent(this.PlayGame); this.Append((UIElement)this._playerPanel); UIImageButton uiImageButton1 = new UIImageButton(this._buttonPlayTexture); uiImageButton1.VAlign = 1f; uiImageButton1.Left.Set(4f, 0.0f); uiImageButton1.OnClick += new UIElement.MouseEvent(this.PlayGame); uiImageButton1.OnMouseOver += new UIElement.MouseEvent(this.PlayMouseOver); uiImageButton1.OnMouseOut += new UIElement.MouseEvent(this.ButtonMouseOut); this.Append((UIElement)uiImageButton1); UIImageButton uiImageButton2 = new UIImageButton(this._data.IsFavorite ? this._buttonFavoriteActiveTexture : this._buttonFavoriteInactiveTexture); uiImageButton2.VAlign = 1f; uiImageButton2.Left.Set(28f, 0.0f); uiImageButton2.OnClick += new UIElement.MouseEvent(this.FavoriteButtonClick); uiImageButton2.OnMouseOver += new UIElement.MouseEvent(this.FavoriteMouseOver); uiImageButton2.OnMouseOut += new UIElement.MouseEvent(this.ButtonMouseOut); uiImageButton2.SetVisibility(1f, this._data.IsFavorite ? 0.8f : 0.4f); this.Append((UIElement)uiImageButton2); if (SocialAPI.Cloud != null) { UIImageButton uiImageButton3 = new UIImageButton(this._data.IsCloudSave ? this._buttonCloudActiveTexture : this._buttonCloudInactiveTexture); uiImageButton3.VAlign = 1f; uiImageButton3.Left.Set(52f, 0.0f); uiImageButton3.OnClick += new UIElement.MouseEvent(this.CloudButtonClick); uiImageButton3.OnMouseOver += new UIElement.MouseEvent(this.CloudMouseOver); uiImageButton3.OnMouseOut += new UIElement.MouseEvent(this.ButtonMouseOut); this.Append((UIElement)uiImageButton3); uiImageButton3.SetSnapPoint("Cloud", snapPointIndex, new Vector2?(), new Vector2?()); } UIImageButton uiImageButton4 = new UIImageButton(this._buttonDeleteTexture); uiImageButton4.VAlign = 1f; uiImageButton4.HAlign = 1f; uiImageButton4.OnClick += new UIElement.MouseEvent(this.DeleteButtonClick); uiImageButton4.OnMouseOver += new UIElement.MouseEvent(this.DeleteMouseOver); uiImageButton4.OnMouseOut += new UIElement.MouseEvent(this.DeleteMouseOut); this._deleteButton = uiImageButton4; if (!this._data.IsFavorite) { this.Append((UIElement)uiImageButton4); } this._buttonLabel = new UIText("", 1f, false); this._buttonLabel.VAlign = 1f; this._buttonLabel.Left.Set(80f, 0.0f); this._buttonLabel.Top.Set(-3f, 0.0f); this.Append((UIElement)this._buttonLabel); this._deleteButtonLabel = new UIText("", 1f, false); this._deleteButtonLabel.VAlign = 1f; this._deleteButtonLabel.HAlign = 1f; this._deleteButtonLabel.Left.Set(-30f, 0.0f); this._deleteButtonLabel.Top.Set(-3f, 0.0f); this.Append((UIElement)this._deleteButtonLabel); uiImageButton1.SetSnapPoint("Play", snapPointIndex, new Vector2?(), new Vector2?()); uiImageButton2.SetSnapPoint("Favorite", snapPointIndex, new Vector2?(), new Vector2?()); uiImageButton4.SetSnapPoint("Delete", snapPointIndex, new Vector2?(), new Vector2?()); }
public void OnPlayerLoad(PlayerFileData playerFileData, Player player, BinaryReader binaryReader) { justLoadedIn = true; }
public static void ErasePlayer(int which) { PlayerFileData data = Main.PlayerList[which]; PlayerFileHelpers.ErasePlayer(data); }
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; })); }
public void OnPlayerSave(PlayerFileData playerFileData, BinaryWriter binaryWriter) { IniAPI.WriteIni("SavePosition", Main.worldID + "," + Main.player[Main.myPlayer].name, playerFileData.Player.position.ToString()); }
/// <summary> /// Save mod data to a .plr.prism file /// </summary> /// <param name="playerFile">The player being saved</param> internal static void SavePlayer(PlayerFileData playerFile) { string path = playerFile.Path; Player player = playerFile.Player; if (Main.ServerSideCharacter || String.IsNullOrEmpty(path)) { return; } path += ".prism"; if (File.Exists(path)) { File.Copy(path, playerFile.Path + ".bak.prism", true); } using (FileStream fileStream = new FileStream(path, FileMode.Create)) { fileStream.WriteByte(PLAYER_VERSION); // write this before doing the crypto stuff, so we can change it between versions // can't we just get rid of this? using (CryptoStream cryptoStream = new CryptoStream(fileStream, new RijndaelManaged() /*{ Padding = PaddingMode.None }*/.CreateEncryptor(GenerateKey(player.name), ENCRYPTION_KEY), CryptoStreamMode.Write)) using (BinBuffer bb = new BinBuffer(cryptoStream)) { #region Player Data if (player.P_BHandler != null) { var bh = (PlayerBHandler)player.P_BHandler; bh.Save(bb); } else { bb.Write(0); } #endregion Player Data #region Item Data SaveItemSlots(bb, player.armor, player.armor.Length, false, false); SaveItemSlots(bb, player.dye, player.dye.Length, false, false); SaveItemSlots(bb, player.inventory, Main.maxInventory, true, true); SaveItemSlots(bb, player.miscEquips, player.miscEquips.Length, false, false); SaveItemSlots(bb, player.bank.item, Chest.maxItems, true, false); SaveItemSlots(bb, player.bank2.item, Chest.maxItems, true, false); #endregion Item Data #region Buff Data for (int i = 0; i < Player.maxBuffs; i++) { if (Main.buffNoSave[player.buffType[i]] || player.buffType[i] < BuffID.Count || player.buffTime[i] <= 0) { bb.Write(String.Empty); } else { var buff = Handler.BuffDef.DefsByType[player.buffType[i]]; bb.Write(buff.Mod.InternalName); bb.Write(buff.InternalName); bb.Write(player.buffTime[i]); } if (player.P_BuffBHandler[i] != null) { var bh = (BuffBHandler)player.P_BuffBHandler[i]; bh.Save(bb); } else { bb.Write(0); } } #endregion Buff Data } } }
private void Player_SavePlayer(On.Terraria.Player.orig_SavePlayer orig, PlayerFileData playerFile, bool skipMapSave) { orig(playerFile, skipMapSave); Achievements.Save(); }
private void ShiftTextOver(On.Terraria.GameContent.UI.Elements.UICharacterListItem.orig_ctor orig, UICharacterListItem self, PlayerFileData data, int snapPointIndex) { orig(self, data, snapPointIndex); FieldInfo info = typeof(UICharacterListItem).GetField("_buttonLabel", BindingFlags.Instance | BindingFlags.NonPublic); UIText text = info.GetValue(self) as UIText; text.Left.Set(280, 0); UICharacter character = (UICharacter)_playerPanel.GetValue(self); Player player = (Player)_player.GetValue(character); MedalPlayer mp3 = player.GetModPlayer <MedalPlayer>(); if (mp3.player == player && mp3.medals.Count > 0) //expand only if medals are earned { self.Height.Set(152, 0); var elements = (List <UIElement>)Elements.GetValue(self); foreach (UIElement e in elements.Where(n => n.VAlign == 1)) { e.Top.Set(-56, 0); } } }
public UICharacterListItem(PlayerFileData data) { BorderColor = new Color(89, 116, 213) * 0.7f; _dividerTexture = TextureManager.Load("Images/UI/Divider"); _innerPanelTexture = TextureManager.Load("Images/UI/InnerPanelBackground"); _buttonCloudActiveTexture = TextureManager.Load("Images/UI/ButtonCloudActive"); _buttonCloudInactiveTexture = TextureManager.Load("Images/UI/ButtonCloudInactive"); _buttonFavoriteActiveTexture = TextureManager.Load("Images/UI/ButtonFavoriteActive"); _buttonFavoriteInactiveTexture = TextureManager.Load("Images/UI/ButtonFavoriteInactive"); _buttonPlayTexture = TextureManager.Load("Images/UI/ButtonPlay"); _buttonDeleteTexture = TextureManager.Load("Images/UI/ButtonDelete"); Height.Set(96f, 0f); Width.Set(0f, 1f); SetPadding(6f); _data = data; _playerPanel = new UICharacter(data.Player); _playerPanel.Left.Set(4f, 0f); _playerPanel.OnDoubleClick += PlayGame; base.OnDoubleClick += PlayGame; Append(_playerPanel); UIImageButton uIImageButton = new UIImageButton(_buttonPlayTexture); uIImageButton.VAlign = 1f; uIImageButton.Left.Set(4f, 0f); uIImageButton.OnClick += PlayGame; uIImageButton.OnMouseOver += PlayMouseOver; uIImageButton.OnMouseOut += ButtonMouseOut; Append(uIImageButton); UIImageButton uIImageButton2 = new UIImageButton(_data.IsFavorite ? _buttonFavoriteActiveTexture : _buttonFavoriteInactiveTexture); uIImageButton2.VAlign = 1f; uIImageButton2.Left.Set(28f, 0f); uIImageButton2.OnClick += FavoriteButtonClick; uIImageButton2.OnMouseOver += FavoriteMouseOver; uIImageButton2.OnMouseOut += ButtonMouseOut; uIImageButton2.SetVisibility(1f, _data.IsFavorite ? 0.8f : 0.4f); Append(uIImageButton2); if (SocialAPI.Cloud != null) { UIImageButton uIImageButton3 = new UIImageButton(_data.IsCloudSave ? _buttonCloudActiveTexture : _buttonCloudInactiveTexture); uIImageButton3.VAlign = 1f; uIImageButton3.Left.Set(52f, 0f); uIImageButton3.OnClick += CloudButtonClick; uIImageButton3.OnMouseOver += CloudMouseOver; uIImageButton3.OnMouseOut += ButtonMouseOut; Append(uIImageButton3); } UIImageButton uIImageButton4 = new UIImageButton(_buttonDeleteTexture); uIImageButton4.VAlign = 1f; uIImageButton4.HAlign = 1f; uIImageButton4.OnClick += DeleteButtonClick; uIImageButton4.OnMouseOver += DeleteMouseOver; uIImageButton4.OnMouseOut += DeleteMouseOut; _deleteButton = uIImageButton4; if (!_data.IsFavorite) { Append(uIImageButton4); } _buttonLabel = new UIText(""); _buttonLabel.VAlign = 1f; _buttonLabel.Left.Set(80f, 0f); _buttonLabel.Top.Set(-3f, 0f); Append(_buttonLabel); _deleteButtonLabel = new UIText(""); _deleteButtonLabel.VAlign = 1f; _deleteButtonLabel.HAlign = 1f; _deleteButtonLabel.Left.Set(-30f, 0f); _deleteButtonLabel.Top.Set(-3f, 0f); Append(_deleteButtonLabel); }
public UICharacterListItem(PlayerFileData data, int snapPointIndex) { BorderColor = new Color(89, 116, 213) * 0.7f; _dividerTexture = Main.Assets.Request <Texture2D>("Images/UI/Divider", Main.content, (AssetRequestMode)1); _innerPanelTexture = Main.Assets.Request <Texture2D>("Images/UI/InnerPanelBackground", Main.content, (AssetRequestMode)1); _buttonCloudActiveTexture = Main.Assets.Request <Texture2D>("Images/UI/ButtonCloudActive", Main.content, (AssetRequestMode)1); _buttonCloudInactiveTexture = Main.Assets.Request <Texture2D>("Images/UI/ButtonCloudInactive", Main.content, (AssetRequestMode)1); _buttonFavoriteActiveTexture = Main.Assets.Request <Texture2D>("Images/UI/ButtonFavoriteActive", Main.content, (AssetRequestMode)1); _buttonFavoriteInactiveTexture = Main.Assets.Request <Texture2D>("Images/UI/ButtonFavoriteInactive", Main.content, (AssetRequestMode)1); _buttonPlayTexture = Main.Assets.Request <Texture2D>("Images/UI/ButtonPlay", Main.content, (AssetRequestMode)1); _buttonDeleteTexture = Main.Assets.Request <Texture2D>("Images/UI/ButtonDelete", Main.content, (AssetRequestMode)1); Height.Set(96f, 0f); Width.Set(0f, 1f); SetPadding(6f); _data = data; _playerPanel = new UICharacter(data.Player); _playerPanel.Left.Set(4f, 0f); _playerPanel.OnDoubleClick += PlayGame; base.OnDoubleClick += PlayGame; Append(_playerPanel); UIImageButton uIImageButton = new UIImageButton(_buttonPlayTexture); uIImageButton.VAlign = 1f; uIImageButton.Left.Set(4f, 0f); uIImageButton.OnClick += PlayGame; uIImageButton.OnMouseOver += PlayMouseOver; uIImageButton.OnMouseOut += ButtonMouseOut; Append(uIImageButton); UIImageButton uIImageButton2 = new UIImageButton(_data.IsFavorite ? _buttonFavoriteActiveTexture : _buttonFavoriteInactiveTexture); uIImageButton2.VAlign = 1f; uIImageButton2.Left.Set(28f, 0f); uIImageButton2.OnClick += FavoriteButtonClick; uIImageButton2.OnMouseOver += FavoriteMouseOver; uIImageButton2.OnMouseOut += ButtonMouseOut; uIImageButton2.SetVisibility(1f, _data.IsFavorite ? 0.8f : 0.4f); Append(uIImageButton2); if (SocialAPI.Cloud != null) { UIImageButton uIImageButton3 = new UIImageButton(_data.IsCloudSave ? _buttonCloudActiveTexture : _buttonCloudInactiveTexture); uIImageButton3.VAlign = 1f; uIImageButton3.Left.Set(52f, 0f); uIImageButton3.OnClick += CloudButtonClick; uIImageButton3.OnMouseOver += CloudMouseOver; uIImageButton3.OnMouseOut += ButtonMouseOut; Append(uIImageButton3); uIImageButton3.SetSnapPoint("Cloud", snapPointIndex); } UIImageButton uIImageButton4 = new UIImageButton(_buttonDeleteTexture) { VAlign = 1f, HAlign = 1f }; if (!_data.IsFavorite) { uIImageButton4.OnClick += DeleteButtonClick; } uIImageButton4.OnMouseOver += DeleteMouseOver; uIImageButton4.OnMouseOut += DeleteMouseOut; _deleteButton = uIImageButton4; Append(uIImageButton4); _buttonLabel = new UIText(""); _buttonLabel.VAlign = 1f; _buttonLabel.Left.Set(80f, 0f); _buttonLabel.Top.Set(-3f, 0f); Append(_buttonLabel); _deleteButtonLabel = new UIText(""); _deleteButtonLabel.VAlign = 1f; _deleteButtonLabel.HAlign = 1f; _deleteButtonLabel.Left.Set(-30f, 0f); _deleteButtonLabel.Top.Set(-3f, 0f); Append(_deleteButtonLabel); uIImageButton.SetSnapPoint("Play", snapPointIndex); uIImageButton2.SetSnapPoint("Favorite", snapPointIndex); uIImageButton4.SetSnapPoint("Delete", snapPointIndex); }