namespace Supercell.Laser.Logic.Command.Home { using Supercell.Laser.Logic.Home; using Supercell.Laser.Titan.DataStream; public class LogicSelectSkinCommand : Command { public int CharacterId; public int SkinId; public override void Decode(ByteStream stream) { base.Decode(stream); SkinId = Supercell.Laser.Logic.Helper.ByteStreamHelper.ReadDataReference(stream); CharacterId = Supercell.Laser.Logic.Helper.ByteStreamHelper.ReadDataReference(stream); } public override int Execute(HomeMode homeMode) { Supercell.Laser.Logic.Data.SkinData skinData = Supercell.Laser.Logic.Data.DataTables.Get(Supercell.Laser.Logic.Data.DataType.Skin).GetDataByGlobalId(SkinId); if (skinData == null) return -1; if (!skinData.Name.EndsWith("Default") && !homeMode.Home.UnlockedSkins.Contains(SkinId)) return -1; Supercell.Laser.Logic.Data.SkinConfData skinConfData = Supercell.Laser.Logic.Data.DataTables.Get(Supercell.Laser.Logic.Data.DataType.SkinConf).GetData(skinData.Conf); Supercell.Laser.Logic.Data.CharacterData characterData = Supercell.Laser.Logic.Data.DataTables.Get(Supercell.Laser.Logic.Data.DataType.Character).GetData(skinConfData.Character); int charGlobalId = characterData.GetGlobalId(); int charInstanceId = characterData.GetInstanceId(); int skinInstanceId = skinData.GetInstanceId(); if (homeMode.Avatar.HasHero(charGlobalId)) { homeMode.Home.CharacterId = charGlobalId; homeMode.Home.SkinId = SkinId; if (charInstanceId >= 0 && charInstanceId < homeMode.Home.SelectedSkins.Length) { homeMode.Home.SelectedSkins[charInstanceId] = skinInstanceId; } Supercell.Laser.Logic.Home.Structures.Hero hero = homeMode.Avatar.GetHero(charGlobalId); if (hero != null) { hero.SelectedSkinId = skinInstanceId; } homeMode.CharacterChanged.Invoke(charGlobalId); return 0; } return -1; } public override int GetCommandType() { return 506; } } }