//-------------------------------------------------------- // [Author]: 第二世界 // [ Date ]: Friday, January 05, 2018 //-------------------------------------------------------- using LitJson; using Snxxz.UI; using System; using System.Collections; using System.Collections.Generic; using System.Linq; using UnityEngine; using UnityEngine.UI; //坐骑面板 namespace Snxxz.UI { public class TitleStarUpWin : Window { [SerializeField] Text titleName;//被选中的 [SerializeField] Image titleImg; [SerializeField] List AttrNameList; [SerializeField] List AttrValueList; [SerializeField] Text fromStar; [SerializeField] Image arrowImg; [SerializeField] Text toStar; [SerializeField] List itemCells; [SerializeField] ButtonEx starUpBtn; [SerializeField] Transform maxObj; [SerializeField] UIEffect starEffect; [SerializeField] Button closeBtn; #region Built-in PackModel packModel { get { return ModelCenter.Instance.GetModel(); } } TitleModel titleModel { get { return ModelCenter.Instance.GetModel(); } } 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(); 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(); if (UIFrameMgr.Inst.ContainsFace(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 allAttr = new Dictionary(); int star = titleModel.GetTitleStar(titleModel.selectTitleId); Dictionary addAttr = new Dictionary(); 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 } }