using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; using System.Collections; namespace Snxxz.UI { [XLua.Hotfix] public class FashionDetailsWin : Window { [SerializeField] GameObject container; [SerializeField] CanvasGroup alpha; [Header("顶部UI")] [SerializeField] Text nameText; [SerializeField] Text fashionPartText; [SerializeField] Text jobText; [SerializeField] CommonItemBaisc itemBaisc; [Header("中间UI")] [SerializeField] GameObject midPartObj; [SerializeField] FashionAttrBeh currentFashionAttr; [SerializeField] FashionAttrBeh nextFashionAttr; [Header("底部UI")] [SerializeField] GameObject bottomPartObj; [SerializeField] Text resourceText; [Header("获取途径")] [SerializeField] GameObject getWaysObj; [SerializeField] ScrollerController _waysCtrl; [SerializeField] Transform waysLineCell; FashionDress fashionDress = null; ItemConfig itemConfig = null; FashionDressModel fashionModel { get { return ModelCenter.Instance.GetModel(); } } GetItemPathModel itemPathModel { get { return ModelCenter.Instance.GetModel(); } } #region Built-in protected override void BindController() { } protected override void AddListeners() { _waysCtrl.OnRefreshCell += RefreshWayCell; } protected override void OnPreOpen() { SetDisplay(); } protected override void OnActived() { base.OnActived(); StartCoroutine(DelayShow()); } protected override void OnAfterOpen() { } protected override void OnPreClose() { } protected override void OnAfterClose() { } #endregion private void SetDisplay() { fashionModel.TryGetFashionDress(fashionModel.viewFashionDressId,out fashionDress); if (fashionDress == null) return; container.SetActive(false); int itemId = fashionDress.GetEquipItemId(); DebugEx.Log("物品ID:" + itemId); alpha.alpha = 0; itemConfig = ItemConfig.Get(itemId); SetTopUI(); SetMidUI(); SetBotttomUI(); bool isShowGetWays = itemConfig != null && itemConfig.GetWay != null && itemConfig.GetWay.Length > 0 ? true : false; getWaysObj.SetActive(isShowGetWays); if(isShowGetWays) { CreateWayCell(); } } #region 时装详情 private void SetTopUI() { if (itemConfig == null) return; if (itemConfig.JobLimit != 0) { JobNameConfig jobNameConfig = JobNameConfig.Get(itemConfig.JobLimit); jobText.text = jobNameConfig.name; } nameText.text = itemConfig.ItemName; nameText.color = UIHelper.GetUIColor(itemConfig.ItemColor); fashionPartText.text = itemConfig.ItemTypeName; ItemCellModel cellModel = new ItemCellModel(itemConfig.ID); itemBaisc.Init(cellModel); } private void SetMidUI() { //midPartObj.SetActive(true); if (fashionDress == null) return; int minStar = 1; int curSatr = fashionModel.GetFashionDressLevel(fashionDress.id); if(curSatr < minStar) { currentFashionAttr.gameObject.SetActive(false); nextFashionAttr.gameObject.SetActive(true); nextFashionAttr.SetDisplay(minStar,curSatr); } else if(curSatr >= fashionDress.maxLevel) { currentFashionAttr.gameObject.SetActive(true); nextFashionAttr.gameObject.SetActive(false); currentFashionAttr.SetDisplay(fashionDress.maxLevel,curSatr); } else { currentFashionAttr.gameObject.SetActive(true); nextFashionAttr.gameObject.SetActive(true); currentFashionAttr.SetDisplay(curSatr,curSatr); nextFashionAttr.SetDisplay(curSatr+1,curSatr); } } private void SetBotttomUI() { if (itemConfig == null) return; //bottomPartObj.SetActive(true); resourceText.text = itemConfig.Description; } IEnumerator DelayShow() { yield return null; container.SetActive(true); StartCoroutine(DelayAlpha()); } IEnumerator DelayShowMid() { yield return null; midPartObj.SetActive(true); StartCoroutine(DelayShowBottom()); } IEnumerator DelayShowBottom() { yield return null; bottomPartObj.SetActive(true); StartCoroutine(DelayAlpha()); } IEnumerator DelayAlpha() { yield return null; alpha.alpha = 1; } #endregion #region getWaysTips逻辑 private List getWayslist; protected virtual void CreateWayCell() { getWayslist = itemPathModel.GetWaysList(itemConfig); _waysCtrl.Refresh(); int i = 0; int remain = getWayslist.Count % waysLineCell.childCount; int line = (int)getWayslist.Count / waysLineCell.childCount; if (remain > 0) { line += 1; } for (i = 0; i < line; i++) { _waysCtrl.AddCell(ScrollerDataType.Header, i); } _waysCtrl.Restart(); } private void RefreshWayCell(ScrollerDataType type, CellView cell) { int i = 0; for (i = 0; i < cell.transform.childCount; i++) { WayCell wayCell = cell.transform.GetChild(i).GetComponent(); if (wayCell == null) wayCell = cell.transform.GetChild(i).gameObject.AddComponent(); int index = (cell.transform.childCount) * cell.index + i; if (index <= getWayslist.Count - 1) { cell.transform.GetChild(i).gameObject.SetActive(true); GetItemWaysConfig itemWaysModel = getWayslist[index]; wayCell.icon.SetSprite(itemWaysModel.Icon); wayCell.wayName.text = itemWaysModel.Text; wayCell.funcName.text = itemWaysModel.name; wayCell.wayButton.RemoveAllListeners(); wayCell.wayButton.AddListener(() => { ClickWayCell(itemWaysModel); }); } else { cell.transform.GetChild(i).gameObject.SetActive(false); } } } public void ClickWayCell(GetItemWaysConfig itemWaysModel) { CloseImmediately(); itemPathModel.ClickGetWay(itemConfig.ID, itemWaysModel); } #endregion } }