| Core/NetworkPackage/ClientPack/ClientToMapServer/CA5_Function/CA520_tagCMCoatDecompose.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| Core/NetworkPackage/ClientPack/ClientToMapServer/CA5_Function/CA520_tagCMCoatDecompose.cs.meta | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| System/FashionDress/FashionDecomposeLineBeh.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| System/FashionDress/FashionDecomposeLineBeh.cs.meta | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| System/FashionDress/FashionDecomposeModel.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| System/FashionDress/FashionDecomposeModel.cs.meta | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| System/FashionDress/FashiongDecomposeWin.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| System/FashionDress/FashiongDecomposeWin.cs.meta | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 |
Core/NetworkPackage/ClientPack/ClientToMapServer/CA5_Function/CA520_tagCMCoatDecompose.cs
New file @@ -0,0 +1,22 @@ using UnityEngine; using System.Collections; // A5 20 时装分解 #tagCMCoatDecompose public class CA520_tagCMCoatDecompose : GameNetPackBasic { public byte Count; //材料所在背包索引的数量 public ushort[] IndexList; //材料所在背包索引列表 public uint[] ItemIDList; //材料所在背包物品ID列表 public CA520_tagCMCoatDecompose () { combineCmd = (ushort)0x03FE; _cmd = (ushort)0xA520; } public override void WriteToBytes () { WriteBytes (Count, NetDataType.BYTE); WriteBytes (IndexList, NetDataType.WORD, Count); WriteBytes (ItemIDList, NetDataType.DWORD, Count); } } Core/NetworkPackage/ClientPack/ClientToMapServer/CA5_Function/CA520_tagCMCoatDecompose.cs.meta
New file @@ -0,0 +1,12 @@ fileFormatVersion: 2 guid: e9f99f58f066c144b8d82dd0e54660c5 timeCreated: 1546936247 licenseType: Pro MonoImporter: serializedVersion: 2 defaultReferences: [] executionOrder: 0 icon: {instanceID: 0} userData: assetBundleName: assetBundleVariant: System/FashionDress/FashionDecomposeLineBeh.cs
New file @@ -0,0 +1,66 @@ using System; using UnityEngine; using UnityEngine.UI; using EnhancedUI.EnhancedScroller; using System.Collections.Generic; namespace Snxxz.UI { [XLua.Hotfix] public class FashionDecomposeLineBeh : ScrollerUI { [SerializeField] List<DecomposeItemBeh> itemBehs = new List<DecomposeItemBeh>(); public override void Refresh(CellView cell) { var decomposeModel = FashionDecomposeModel.Instance; var decomposeGuids = decomposeModel.decomposeItemGuids; int length = itemBehs.Count; for(int i = 0; i < length; i++) { var itemBeh = itemBehs[i]; int index = cell.index*length + i; if(decomposeGuids != null && index < decomposeGuids.Count) { var guid = decomposeGuids[index]; FashionDecomposeModel.DecomposeItem decomposeItem = null; decomposeModel.TryGetDecomposeItem(guid,out decomposeItem); itemBeh.SetDisplay(decomposeItem.itemModel); } else { itemBeh.SetDisplay(null); } } } [Serializable] public class DecomposeItemBeh { [SerializeField] CommonItemBaisc itemBaisc; [SerializeField] GameObject selectObj; public void SetDisplay(ItemModel itemModel) { if (itemModel == null) { itemBaisc.gameObject.SetActive(false); selectObj.SetActive(false); } else { var decomposeModel = FashionDecomposeModel.Instance; itemBaisc.Init(itemModel); itemBaisc.cellBtn.RemoveAllListeners(); itemBaisc.cellBtn.AddListener(()=> { decomposeModel.UpdateDecomposeItem(itemModel.itemInfo.ItemGUID, !selectObj.activeInHierarchy); selectObj.SetActive(!selectObj.activeInHierarchy); }); } } } } } System/FashionDress/FashionDecomposeLineBeh.cs.meta
New file @@ -0,0 +1,12 @@ fileFormatVersion: 2 guid: 2bb54ddc8495e9540847635bd28036b3 timeCreated: 1546930677 licenseType: Pro MonoImporter: serializedVersion: 2 defaultReferences: [] executionOrder: 0 icon: {instanceID: 0} userData: assetBundleName: assetBundleVariant: System/FashionDress/FashionDecomposeModel.cs
New file @@ -0,0 +1,131 @@ using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace Snxxz.UI { [XLua.LuaCallCSharp] [XLua.Hotfix] public class FashionDecomposeModel : Singleton<FashionDecomposeModel> { FashionDressModel model { get { return ModelCenter.Instance.GetModel<FashionDressModel>(); } } PlayerPackModel playerPack { get { return ModelCenter.Instance.GetModel<PlayerPackModel>(); } } public Dictionary<string, DecomposeItem> decomposeItemDict = new Dictionary<string, DecomposeItem>(); public List<string> decomposeItemGuids { get; private set; } public event Action UpdateDecomposeExpEvent; List<int> fashionMatIds = new List<int>(); public void GetDecomposeItem() { decomposeItemGuids = null; decomposeItemDict.Clear(); SinglePackModel singlePack = playerPack.GetSinglePackModel(PackType.rptItem); if (singlePack == null) return; fashionMatIds.Clear(); model.TryGetSatisfyResolves(ref fashionMatIds); foreach(var matId in fashionMatIds) { List<ItemModel> itemModels = null; singlePack.GetItemCountByID(matId, out itemModels); if (itemModels != null) { foreach (var model in itemModels) { var decomposeItem = new DecomposeItem(); decomposeItem.SetModel(model); decomposeItemDict.Add(decomposeItem.guid, decomposeItem); } } } decomposeItemGuids = decomposeItemDict.Keys.ToList(); } public void UpdateDecomposeItem(string guid, bool _isSelect) { DecomposeItem decomposeItem = null; bool isItem = TryGetDecomposeItem(guid, out decomposeItem); if (isItem) { decomposeItem.SetIsSelect(_isSelect); } } public bool TryGetDecomposeItem(string guid,out DecomposeItem decomposeItem) { return decomposeItemDict.TryGetValue(guid,out decomposeItem); } public int GetSumDecomposeExp() { int sumExp = 0; foreach(var guid in decomposeItemDict.Keys) { var decomposeItem = decomposeItemDict[guid]; if(decomposeItem.isSelect) { sumExp += decomposeItem.decomposeExp; } } return sumExp; } public void GetSelectItemlist(out List<ushort> indexs,out List<uint> ids) { indexs = new List<ushort>(); ids = new List<uint>(); foreach(var item in decomposeItemDict.Values) { if(item.isSelect) { indexs.Add((ushort)item.itemModel.itemInfo.ItemPlace); ids.Add((uint)item.itemModel.itemId); } } } public void SendDecomposeFashion() { List<ushort> indexs = null; List<uint> ids = null; GetSelectItemlist(out indexs,out ids); CA520_tagCMCoatDecompose coatDecompose = new CA520_tagCMCoatDecompose(); coatDecompose.Count = (byte)indexs.Count; coatDecompose.IndexList = indexs.ToArray(); coatDecompose.ItemIDList = ids.ToArray(); GameNetSystem.Instance.SendInfo(coatDecompose); } public class DecomposeItem { public string guid { get; private set; } public bool isSelect { get; private set; } public ItemModel itemModel { get; private set; } public int decomposeExp { get; private set; } public void SetModel(ItemModel _model) { guid = _model.itemInfo.ItemGUID; isSelect = true; itemModel = _model; if(itemModel.chinItemModel.Effect1 == 243) { decomposeExp = itemModel.chinItemModel.EffectValueB1; } else { decomposeExp = 0; } } public void SetIsSelect(bool _isSelect) { isSelect = _isSelect; } } } } System/FashionDress/FashionDecomposeModel.cs.meta
New file @@ -0,0 +1,12 @@ fileFormatVersion: 2 guid: d6722779fa42a274687159f4e8cf8270 timeCreated: 1546932457 licenseType: Pro MonoImporter: serializedVersion: 2 defaultReferences: [] executionOrder: 0 icon: {instanceID: 0} userData: assetBundleName: assetBundleVariant: System/FashionDress/FashiongDecomposeWin.cs
New file @@ -0,0 +1,112 @@ using System; using UnityEngine; using UnityEngine.UI; using TableConfig; namespace Snxxz.UI { [XLua.Hotfix] public class FashiongDecomposeWin : Window { [SerializeField] Button closeBtn; [SerializeField] Button decomposeBtn; [SerializeField] Text wardrobeLvText; [SerializeField] Text upgradeExpText; [SerializeField] Text getExpText; [SerializeField] ScrollerController lineCtrl; [SerializeField, Header("创建格子数")] int initGrid = 100; FashionDressModel model{ get { return ModelCenter.Instance.GetModel<FashionDressModel>(); }} #region Built-in protected override void BindController() { } protected override void AddListeners() { closeBtn.AddListener(CloseClick); decomposeBtn.AddListener(ClickDecompose); } protected override void OnPreOpen() { model.cabinetRefresh += UpdateCabinetLv; FashionDecomposeModel.Instance.UpdateDecomposeExpEvent += UpdateGetExp; SetDisplay(); } protected override void OnAfterOpen() { } protected override void OnPreClose() { model.cabinetRefresh += UpdateCabinetLv; FashionDecomposeModel.Instance.UpdateDecomposeExpEvent -= UpdateGetExp; } protected override void OnAfterClose() { } #endregion private void SetDisplay() { FashionDecomposeModel.Instance.GetDecomposeItem(); CreateLineCell(); UpdateGetExp(); UpdateCabinetLv(); } private void CreateLineCell() { int line = initGrid / 5; lineCtrl.Refresh(); for (int i = 0; i < line; i++) { lineCtrl.AddCell(ScrollerDataType.Header, i); } lineCtrl.Restart(); } private void UpdateCabinetLv() { int wardrobeLv = model.cabinetLevel; wardrobeLvText.text = StringUtility.Contact(wardrobeLv, "级"); int curWardrobeExp = model.cabinetExp; bool isCabinetMax = wardrobeLv >= model.cabinetMaxLevel ? true : false; int upgradeLv = isCabinetMax ? model.cabinetMaxLevel : wardrobeLv + 1; var cabinetConfig = Config.Instance.Get<FashionDressCabinetConfig>(upgradeLv); upgradeExpText.gameObject.SetActive(cabinetConfig != null); if (cabinetConfig != null) { int upgradeWardrobeExp = cabinetConfig.NeedExp; if (isCabinetMax) { upgradeExpText.text = StringUtility.Contact("(已升至最高等级)"); } else { upgradeExpText.text = StringUtility.Contact("(", curWardrobeExp, "/", upgradeWardrobeExp, ")"); } } } private void UpdateGetExp() { int getDecomposeExp = FashionDecomposeModel.Instance.GetSumDecomposeExp(); getExpText.text = getDecomposeExp.ToString(); } private void ClickDecompose() { int getDecomposeExp = FashionDecomposeModel.Instance.GetSumDecomposeExp(); if(getDecomposeExp <= 0) { return; } FashionDecomposeModel.Instance.SendDecomposeFashion(); CloseImmediately(); } } } System/FashionDress/FashiongDecomposeWin.cs.meta
New file @@ -0,0 +1,12 @@ fileFormatVersion: 2 guid: dcedad5cc63fa9a449a785ffa93d903c timeCreated: 1546928860 licenseType: Pro MonoImporter: serializedVersion: 2 defaultReferences: [] executionOrder: 0 icon: {instanceID: 0} userData: assetBundleName: assetBundleVariant: