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<FashionDressModel>(); } }
|
GetItemPathModel itemPathModel { get { return ModelCenter.Instance.GetModel<GetItemPathModel>(); } }
|
#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<GetItemWaysConfig> 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<WayCell>();
|
if (wayCell == null)
|
wayCell = cell.transform.GetChild(i).gameObject.AddComponent<WayCell>();
|
|
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(itemWaysModel.ID);
|
}
|
|
#endregion
|
}
|
}
|