Exemplo n.º 1
0
        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?());
        }
Exemplo n.º 2
0
 public void OnPlayerLoad(PlayerFileData playerFileData, Player player, BinaryReader binaryReader)
 {
     justLoadedIn = true;
 }
Exemplo n.º 3
0
        public static void ErasePlayer(int which)
        {
            PlayerFileData data = Main.PlayerList[which];

            PlayerFileHelpers.ErasePlayer(data);
        }
Exemplo n.º 4
0
 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;
     }));
 }
Exemplo n.º 5
0
 public void OnPlayerSave(PlayerFileData playerFileData, BinaryWriter binaryWriter)
 {
     IniAPI.WriteIni("SavePosition", Main.worldID + "," + Main.player[Main.myPlayer].name, playerFileData.Player.position.ToString());
 }
Exemplo n.º 6
0
        /// <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
                    }
            }
        }
Exemplo n.º 7
0
        private void Player_SavePlayer(On.Terraria.Player.orig_SavePlayer orig, PlayerFileData playerFile, bool skipMapSave)
        {
            orig(playerFile, skipMapSave);

            Achievements.Save();
        }
Exemplo n.º 8
0
        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);
                }
            }
        }
Exemplo n.º 9
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);
        }
Exemplo n.º 10
0
        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);
        }