//--------------------------------------------------------
|
// [Author]: 第二世界
|
// [ Date ]: Thursday, November 30, 2017
|
//--------------------------------------------------------
|
|
using System;
|
using System.Collections;
|
using System.Collections.Generic;
|
using UnityEngine;
|
using UnityEngine.UI;
|
|
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<Image> m_PresentGradeImgs;
|
|
RolePromoteModel m_Model;
|
RolePromoteModel model
|
{
|
get
|
{
|
return m_Model ?? (m_Model = ModelCenter.Instance.GetModel<RolePromoteModel>());
|
}
|
}
|
|
#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.playerDataRefreshEvent += PlayerDataRefreshInfoEvent;
|
model.RefreshData();
|
}
|
|
protected override void OnActived()
|
{
|
base.OnActived();
|
buttonGroup.TriggerByOrder(functionOrder);
|
}
|
|
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()
|
{
|
CloseChild();
|
if (!WindowJumpMgr.Instance.IsJumpState)
|
{
|
WindowCenter.Instance.Open<MainInterfaceWin>();
|
}
|
}
|
#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 = RoleResourceConfig.GetValues();
|
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 = 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].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";
|
}
|
}
|
}
|
|
}
|
|
|
|
|