//--------------------------------------------------------
|
// [Author]: 第二世界
|
// [ Date ]: Friday, January 05, 2018
|
//--------------------------------------------------------
|
|
using LitJson;
|
using vnxbqy.UI;
|
using System;
|
using System.Collections;
|
using System.Collections.Generic;
|
using System.Linq;
|
using UnityEngine;
|
using UnityEngine.UI;
|
//坐骑面板
|
namespace vnxbqy.UI
|
{
|
|
public class TitleStarUpWin : Window
|
{
|
[SerializeField] Text titleName;//被选中的
|
[SerializeField] Image titleImg;
|
[SerializeField] List<Text> AttrNameList;
|
[SerializeField] List<Text> AttrValueList;
|
|
[SerializeField] Text fromStar;
|
[SerializeField] Image arrowImg;
|
[SerializeField] Text toStar;
|
[SerializeField] List<ItemCell> itemCells;
|
[SerializeField] ButtonEx starUpBtn;
|
[SerializeField] Transform maxObj;
|
[SerializeField] UIEffect starEffect;
|
|
[SerializeField] Button closeBtn;
|
#region Built-in
|
|
PackModel packModel { get { return ModelCenter.Instance.GetModel<PackModel>(); } }
|
TitleModel titleModel { get { return ModelCenter.Instance.GetModel<TitleModel>(); } }
|
|
|
protected override void BindController()
|
{
|
|
|
}
|
|
protected override void AddListeners()
|
{
|
closeBtn.SetListener(() =>
|
{
|
CloseClick();
|
});
|
|
starUpBtn.AddListener(() =>
|
{
|
var pak = new CA536_tagCMTitleStarUp();
|
pak.TitleID = (uint)titleModel.selectTitleId;
|
GameNetSystem.Instance.SendInfo(pak);
|
});
|
}
|
|
|
protected override void OnPreOpen()
|
{
|
titleModel.OnTitleStarUpdate += OnTitleStarUpdate;
|
|
if (!TitleStarUpConfig.titleIDToIDs.ContainsKey(titleModel.selectTitleId))
|
{
|
WindowCenter.Instance.Close<TitleStarUpWin>();
|
return;
|
}
|
|
Display();
|
}
|
|
protected override void OnAfterOpen()
|
{
|
}
|
|
protected override void OnPreClose()
|
{
|
titleModel.OnTitleStarUpdate -= OnTitleStarUpdate;
|
}
|
|
|
protected override void OnAfterClose()
|
{
|
|
}
|
|
void OnTitleStarUpdate()
|
{
|
DisplayButton();
|
ShowAttrText();
|
DienstgradConfig config = DienstgradConfig.Get(titleModel.selectTitleId);
|
titleName.text = config.Name + Language.Get("EquipStar11", titleModel.GetTitleStar(titleModel.selectTitleId));
|
|
starEffect.Play();
|
}
|
|
void Display()
|
{
|
DisplayButton();
|
ShowAttrText();
|
DienstgradConfig config = DienstgradConfig.Get(titleModel.selectTitleId);
|
titleName.text = config.Name + Language.Get("EquipStar11", titleModel.GetTitleStar(titleModel.selectTitleId));
|
|
UIFrame frame = titleImg.GetComponent<UIFrame>();
|
if (UIFrameMgr.Inst.ContainsDynamicImage(config.Image))
|
{
|
titleImg.raycastTarget = false;
|
frame.enabled = true;
|
frame.ResetFrame(config.Image);
|
}
|
else
|
{
|
frame.enabled = false;
|
titleImg.SetSprite(config.Image);
|
}
|
}
|
|
|
private void DisplayButton()
|
{
|
int star = titleModel.GetTitleStar(titleModel.selectTitleId);
|
int maxStar = TitleStarUpConfig.titleIDToIDs[titleModel.selectTitleId].Count;
|
|
if (star < maxStar)
|
{
|
fromStar.text = Language.Get("EquipStarLevel", star);
|
toStar.text = Language.Get("EquipStarLevel", star + 1);
|
arrowImg.SetActive(true);
|
}
|
else
|
{
|
fromStar.text = Language.Get("EquipStarLevel", star);
|
toStar.text = string.Empty;
|
arrowImg.SetActive(false);
|
}
|
|
int[][] awards = new int[][] { };
|
if (star != maxStar)
|
{
|
var id = TitleStarUpConfig.titleIDToIDs[titleModel.selectTitleId][star];
|
var nextStarConfig = TitleStarUpConfig.Get(id);
|
awards = nextStarConfig.StarUpNeedItemList;
|
}
|
|
for (int i = 0; i < itemCells.Count; i++)
|
{
|
if (i < awards.Length)
|
{
|
itemCells[i].SetActive(true);
|
int itemID = awards[i][0];
|
int needCnt = awards[i][1];
|
int hasCnt = packModel.GetItemCountByID(PackType.Item, itemID);
|
itemCells[i].Init(new ItemCellModel(itemID, false, 1));
|
itemCells[i].button.AddListener(() =>
|
{
|
ItemTipUtility.Show(itemID);
|
});
|
|
var cntTxt = itemCells[i].FindComponent("Text", "count") as Text;
|
if (hasCnt >= needCnt)
|
{
|
cntTxt.text = UIHelper.AppendColor(TextColType.Green, hasCnt.ToString(), true) + "/" + needCnt.ToString();
|
}
|
else
|
{
|
cntTxt.text = UIHelper.AppendColor(TextColType.Red, hasCnt.ToString(), true) + "/" + needCnt.ToString();
|
}
|
}
|
else
|
{
|
itemCells[i].SetActive(false);
|
}
|
}
|
starUpBtn.SetActive(star != maxStar);
|
maxObj.SetActive(star == maxStar);
|
|
}
|
|
private void ShowAttrText()
|
{
|
ClearAttrText();
|
int showIndex;
|
Dictionary<int, int> allAttr = new Dictionary<int, int>();
|
int star = titleModel.GetTitleStar(titleModel.selectTitleId);
|
Dictionary<int, int> addAttr = new Dictionary<int, int>();
|
int[] starTypeArr = new int[] { };
|
int[] starValueArr = new int[] { };
|
if (star > 0)
|
{
|
var id = TitleStarUpConfig.titleIDToIDs[titleModel.selectTitleId][star - 1];
|
var starConfig = TitleStarUpConfig.Get(id);
|
showIndex = 0;
|
starTypeArr = starConfig.StarAttrType;
|
starValueArr = starConfig.StarAttrValue;
|
foreach (var attrID in starTypeArr)
|
{
|
allAttr[attrID] = starValueArr[showIndex];
|
showIndex++;
|
}
|
}
|
|
|
if (star < TitleStarUpConfig.titleIDToIDs[titleModel.selectTitleId].Count)
|
{
|
var id = TitleStarUpConfig.titleIDToIDs[titleModel.selectTitleId][star];
|
var nextStarConfig = TitleStarUpConfig.Get(id);
|
for (int i = 0; i < nextStarConfig.StarAttrType.Length; i++)
|
{
|
if (!allAttr.ContainsKey(nextStarConfig.StarAttrType[i]))
|
{
|
//预览用
|
allAttr[nextStarConfig.StarAttrType[i]] = 0;
|
}
|
if (Array.IndexOf(starTypeArr, nextStarConfig.StarAttrType[i]) >= 0)
|
{
|
addAttr[nextStarConfig.StarAttrType[i]] = nextStarConfig.StarAttrValue[i] - starValueArr[i];
|
}
|
else
|
{
|
addAttr[nextStarConfig.StarAttrType[i]] = nextStarConfig.StarAttrValue[i];
|
}
|
}
|
}
|
|
showIndex = 0;
|
foreach (var attrID in allAttr.Keys)
|
{
|
AttrNameList[showIndex].text = PlayerPropertyConfig.Get(attrID).ShowName;
|
if (addAttr.ContainsKey(attrID))
|
{
|
AttrValueList[showIndex].text = PlayerPropertyConfig.GetValueDescription(attrID, allAttr[attrID]) + UIHelper.AppendColor(TextColType.Green, string.Format(" +{0}", PlayerPropertyConfig.GetValueDescription(attrID, addAttr[attrID])), true);
|
}
|
else
|
{
|
AttrValueList[showIndex].text = PlayerPropertyConfig.GetValueDescription(attrID, allAttr[attrID]);
|
}
|
showIndex++;
|
}
|
|
}
|
|
private void ClearAttrText()
|
{
|
for (int i = 0; i < AttrNameList.Count; i++)
|
{
|
AttrNameList[i].text = string.Empty;
|
AttrValueList[i].text = string.Empty;
|
|
}
|
|
}
|
|
|
|
#endregion
|
|
}
|
}
|
|
|
|
|