//-------------------------------------------------------- // [Author]: 第二世界 // [ Date ]: Thursday, November 30, 2017 //-------------------------------------------------------- using System; using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; namespace vnxbqy.UI { public class RolePromoteWin : Window { [SerializeField] ScrollerController scrollerController; [SerializeField] Text m_FightPowerTxt; [SerializeField] List m_PresentGradeImgs; RolePromoteModel m_Model; RolePromoteModel model { get { return m_Model ?? (m_Model = ModelCenter.Instance.GetModel()); } } #region Built-in protected override void BindController() { } protected override void AddListeners() { } protected override void OnPreOpen() { PlayerDatas.Instance.playerDataRefreshEvent += PlayerDataRefreshInfoEvent; model.RefreshData(); InitStrongerData(); UpdateGrade(); } protected override void OnActived() { base.OnActived(); } protected override void OnAfterOpen() { } protected override void OnPreClose() { PlayerDatas.Instance.playerDataRefreshEvent -= PlayerDataRefreshInfoEvent; } private void PlayerDataRefreshInfoEvent(PlayerDataType _type) { switch (_type) { case PlayerDataType.LV: case PlayerDataType.LV2: case PlayerDataType.LVEx: UpdateGrade(); break; case PlayerDataType.FightPower: UpdateGrade(); DisplayFightPower(); break; } } protected override void OnAfterClose() { } #endregion void InitStrongerData() { scrollerController.Refresh(); foreach (var strongerList in model.roleStrongerDic.Values) { if (strongerList.Count == 0) { continue; } if (strongerList[0].funcId == 0 || FuncOpen.Instance.IsFuncOpen(strongerList[0].funcId)) { scrollerController.AddCell(ScrollerDataType.Header, strongerList[0].funcType); } } scrollerController.Restart(); DisplayFightPower(); } private void DisplayFightPower() { m_FightPowerTxt.text = Language.Get("RolePromoteFightPower", UIHelper.ReplaceLargeNum(PlayerDatas.Instance.baseData.FightPoint)); } private void UpdateGrade() { var _playerLvCfg = PlayerLVConfig.Get(PlayerDatas.Instance.baseData.LV); var _rate = (float)PlayerDatas.Instance.baseData.FightPoint / _playerLvCfg.fightPower; var index = 0; var iconKey = GetGrade(_rate, out index); m_PresentGradeImgs[1].SetActive(index > 4); m_PresentGradeImgs[2].SetActive(index > 5); for (int i = 0; i < m_PresentGradeImgs.Count; i++) { m_PresentGradeImgs[i].SetSprite(iconKey); } } private string GetGrade(float _rate,out int index) { index = 0; for (int i = 0; i < model.fightPowerPercents.Count; i++) { if ((int)(_rate * 100) <= model.fightPowerPercents[i]) { index = i; break; } index++; } switch (index) { case 0: return "Remark_D"; case 1: return "Remark_C"; case 2: return "Remark_B"; case 3: return "Remark_A"; case 4://s case 5://ss case 6://sss return "Remark_S"; default: return "Remark_D"; } } } }