//-------------------------------------------------------- // [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: case PlayerDataRefresh.FightPower: UpdateGrade(); break; } } protected override void OnAfterClose() { CloseChild(); 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(); m_FightPowerTxt.text = Language.Get("RolePromoteFightPower", PlayerDatas.Instance.baseData.FightPoint); } void InitResourceData() { scrollerController.Refresh(); var dict = Config.Instance.GetAllValues(); foreach (var cfg in dict) { scrollerController.AddCell(ScrollerDataType.Normal, cfg.id); } scrollerController.Restart(); } private void UpdateGrade() { var _playerLvCfg = Config.Instance.Get(PlayerDatas.Instance.baseData.LV); var _rate = (float)PlayerDatas.Instance.baseData.FightPoint / _playerLvCfg.fightPower; var _grade = GetGrade(_rate); m_PresentGradeImgs[1].gameObject.SetActive(_rate > 1.2f); m_PresentGradeImgs[2].gameObject.SetActive(_rate > 1.2f); for (int i = 0; i < m_PresentGradeImgs.Count; i++) { if (_rate <= 1.2f && i > 0) { continue; } m_PresentGradeImgs[i].SetSprite(GetGrade(_rate)); } } private string GetGrade(float _rate) { if (_rate <= 0.6) { return "Remark_D"; } if (_rate <= 0.75) { return "Remark_C"; } if (_rate <= 0.85) { return "Remark_B"; } if (_rate <= 1) { return "Remark_A"; } if (_rate <= 1.2) { return "Remark_S"; } if (_rate <= 1.5) { return "Remark_S"; } return "Remark_S"; } } }