//-------------------------------------------------------- // [Author]: 第二世界 // [ Date ]: Thursday, November 30, 2017 //-------------------------------------------------------- using System; using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; using TableConfig; namespace Snxxz.UI { public class RolePromoteWin : Window { [SerializeField] FunctionButton m_StrongBtn; [SerializeField] FunctionButton m_ResourceBtn; [SerializeField] FunctionButtonGroup buttonGroup; [SerializeField] Button m_LeftBtn; [SerializeField] Button m_RightBtn; [SerializeField] Button m_CloseBtn; [SerializeField] ScrollerController scrollerController; [Header("Stronger")] [SerializeField] Transform m_StrongerContainer; [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() { m_StrongBtn.onClick.AddListener(OnStrong); m_ResourceBtn.onClick.AddListener(OnResource); m_LeftBtn.onClick.AddListener(buttonGroup.TriggerLast); m_RightBtn.onClick.AddListener(buttonGroup.TriggerNext); m_CloseBtn.onClick.AddListener(CloseClick); } protected override void OnPreOpen() { PlayerDatas.Instance.PlayerDataRefreshInfoEvent += PlayerDataRefreshInfoEvent; model.RefreshData(); } protected override void OnActived() { base.OnActived(); buttonGroup.TriggerByOrder(functionOrder); } protected override void OnAfterOpen() { } protected override void OnPreClose() { PlayerDatas.Instance.PlayerDataRefreshInfoEvent -= PlayerDataRefreshInfoEvent; } private void PlayerDataRefreshInfoEvent(PlayerDataRefresh _type) { switch (_type) { case PlayerDataRefresh.LV: case PlayerDataRefresh.LV2: case PlayerDataRefresh.LVEx: UpdateGrade(); break; case PlayerDataRefresh.FightPower: UpdateGrade(); DisplayFightPower(); break; } } protected override void OnAfterClose() { CloseChild(); if (!WindowJumpMgr.Instance.IsJumpState) { WindowCenter.Instance.Open(); } } #endregion private void OnResource() { CloseChild(); InitResourceData(); functionOrder = 1; } private void OnStrong() { CloseChild(); m_StrongerContainer.gameObject.SetActive(true); InitStrongerData(); functionOrder = 0; UpdateGrade(); } void CloseChild() { if (m_StrongerContainer.gameObject.activeSelf) { m_StrongerContainer.gameObject.SetActive(false); } } 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(); } void InitResourceData() { scrollerController.Refresh(); var dict = Config.Instance.GetAllValues(); foreach (var cfg in dict) { scrollerController.AddCell(ScrollerDataType.Normal, cfg.id); } scrollerController.Restart(); } private void DisplayFightPower() { m_FightPowerTxt.text = Language.Get("RolePromoteFightPower", PlayerDatas.Instance.baseData.FightPoint); } private void UpdateGrade() { var _playerLvCfg = Config.Instance.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].gameObject.SetActive(index > 4); m_PresentGradeImgs[2].gameObject.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"; } } } }