//--------------------------------------------------------
|
// [Author]: 第二世界
|
// [ Date ]: Sunday, May 05, 2019
|
//--------------------------------------------------------
|
|
using System;
|
using System.Collections;
|
using System.Collections.Generic;
|
using System.Text;
|
using UnityEngine;
|
using UnityEngine.UI;
|
|
namespace vnxbqy.UI
|
{
|
|
public class RoleInfomationWin : Window
|
{
|
[SerializeField] RolePropertyBehaviour[] m_PropertyBehaviours;
|
[SerializeField] Text m_PlayerExp;
|
[SerializeField] Text m_PlayerLv;
|
[SerializeField] Text m_PlayerName;
|
[SerializeField] Text m_PlayerFightPower;
|
[SerializeField] RawImage m_PlayerShowModel;
|
[SerializeField] RectTransform m_ContainerExp;
|
[SerializeField] Slider m_ExpSlider;
|
[SerializeField] Text m_WorldExp;
|
[SerializeField] Button m_PlayerPropertyBtn;
|
[SerializeField] Button m_TitleBtn;
|
[SerializeField] Button m_RenameBtn;
|
[SerializeField] Image m_RoleTitleIcon;
|
[SerializeField] Image m_RoleRealmIcon;
|
[SerializeField] Button m_Btn_Elixir;
|
[SerializeField] Button m_ChangeJob;
|
[SerializeField] ButtonEx m_PhantasmPavilion;
|
|
TitleModel m_TitleModel;
|
TitleModel titleModel
|
{
|
get
|
{
|
return m_TitleModel ?? (m_TitleModel = ModelCenter.Instance.GetModel<TitleModel>());
|
}
|
}
|
|
PackModel packModel
|
{
|
get { return ModelCenter.Instance.GetModel<PackModel>(); }
|
}
|
PhantasmPavilionModel phantasmPavilionModel { get { return ModelCenter.Instance.GetModel<PhantasmPavilionModel>(); } }
|
#region Built-in
|
protected override void BindController()
|
{
|
}
|
|
protected override void AddListeners()
|
{
|
m_PlayerPropertyBtn.onClick.AddListener(OnAttrExplainClick);
|
m_TitleBtn.onClick.AddListener(OnDesignationClick);
|
m_RenameBtn.onClick.AddListener(OnRenameClick);
|
m_Btn_Elixir.onClick.AddListener(OnElixirClick);
|
m_ChangeJob.AddListener(() =>
|
{
|
WindowCenter.Instance.Open<ChangeJobWin>();
|
});
|
m_PhantasmPavilion.AddListener(OnPhantasmPavilionClick);
|
}
|
|
|
|
protected override void OnPreOpen()
|
{
|
PlayerDatas.Instance.playerDataUpdateEvent += OnUpdateLvExp;
|
PlayerDatas.Instance.playerDataRefreshEvent += OnRefreshPlayerInfo;
|
titleModel.OnRefreshGainTitle += OnRefreshTitle;
|
PlayerDatas.Instance.worldLevelUpdateEvent += OnRefreshWorldLv;
|
packModel.refreshItemCountEvent += RefreshItemCountAct;
|
FuncOpen.Instance.OnFuncStateChangeEvent += OnFunctionStateChange;
|
m_PlayerFightPower.text = PlayerDatas.Instance.baseData.FightPoint.ToString();
|
OnUpdateLvExp();
|
DisplayModel();
|
OnRefreshRealm();
|
OnRefreshWorldLv();
|
m_PhantasmPavilion.SetActive(FuncOpen.Instance.IsFuncOpen(phantasmPavilionModel.FuncId));
|
|
for (int i = 0; i < m_PropertyBehaviours.Length; i++)
|
{
|
m_PropertyBehaviours[i].Display();
|
}
|
}
|
|
protected override void OnAfterOpen()
|
{
|
}
|
|
protected override void OnPreClose()
|
{
|
UI3DModelExhibition.Instance.StopShow();
|
PlayerDatas.Instance.playerDataUpdateEvent -= OnUpdateLvExp;
|
PlayerDatas.Instance.playerDataRefreshEvent -= OnRefreshPlayerInfo;
|
titleModel.OnRefreshGainTitle -= OnRefreshTitle;
|
PlayerDatas.Instance.worldLevelUpdateEvent -= OnRefreshWorldLv;
|
packModel.refreshItemCountEvent -= RefreshItemCountAct;
|
FuncOpen.Instance.OnFuncStateChangeEvent -= OnFunctionStateChange;
|
|
for (int i = 0; i < m_PropertyBehaviours.Length; i++)
|
{
|
m_PropertyBehaviours[i].Dispose();
|
}
|
}
|
|
|
|
protected override void OnAfterClose()
|
{
|
}
|
#endregion
|
private void OnFunctionStateChange(int obj)
|
{
|
if (obj == phantasmPavilionModel.FuncId)
|
{
|
m_PhantasmPavilion.SetActive(FuncOpen.Instance.IsFuncOpen(phantasmPavilionModel.FuncId));
|
}
|
}
|
|
void DisplayModel()
|
{
|
UI3DModelExhibition.Instance.ShowPlayer(m_PlayerShowModel, PlayerDatas.Instance.baseData.Job);
|
}
|
|
private void OnRefreshTitle()
|
{
|
TitleData titleData = titleModel.GetTitleEquip();
|
if (titleData != null && titleModel.IsTitleGain(titleData.id))
|
{
|
m_RoleTitleIcon.SetActive(true);
|
DienstgradConfig cfg = DienstgradConfig.Get(titleData.id);
|
if (cfg != null)
|
{
|
m_RoleTitleIcon.SetSprite(cfg.Image);
|
}
|
}
|
else
|
{
|
m_RoleTitleIcon.SetActive(false);
|
}
|
}
|
|
private void OnRefreshRealm()
|
{
|
int realmlv = PlayerDatas.Instance.baseData.realmLevel;
|
RealmConfig presentCfg = RealmConfig.Get(realmlv);
|
if (presentCfg != null && presentCfg.Lv > 0)
|
{
|
m_RoleRealmIcon.SetSprite(presentCfg.Img);
|
m_RoleRealmIcon.SetActive(true);
|
}
|
else
|
{
|
m_RoleRealmIcon.SetActive(false);
|
}
|
}
|
|
private void OnRefreshPlayerInfo(PlayerDataType refreshType)
|
{
|
switch (refreshType)
|
{
|
case PlayerDataType.FightPower:
|
m_PlayerFightPower.text = PlayerDatas.Instance.baseData.FightPoint.ToString();
|
break;
|
case PlayerDataType.RealmLevel:
|
{
|
OnRefreshRealm();
|
}
|
break;
|
case PlayerDataType.LV:
|
case PlayerDataType.TotalExp:
|
case PlayerDataType.ExpPoint:
|
{
|
OnUpdateLvExp();
|
OnRefreshWorldLv();
|
}
|
break;
|
}
|
}
|
|
private void RefreshItemCountAct(PackType packType, int index, int arg3)
|
{
|
if (packType == PackType.Equip)
|
{
|
DisplayModel();
|
}
|
}
|
|
private void OnRefreshWorldLv()
|
{
|
int limit = FuncOpenLVConfig.Get((int)FuncOpenEnum.WorldLv).LimitLV;
|
if (PlayerDatas.Instance.baseData.LV >= limit)
|
{
|
m_WorldExp.SetActive(true);
|
m_WorldExp.text = Language.Get("WordExpText", PlayerDatas.Instance.worldLv, Mathf.FloorToInt(UIHelper.ReplacePercentage((int)PlayerDatas.Instance.worldExpRate, 2)) + "%");
|
}
|
else
|
{
|
m_WorldExp.SetActive(false);
|
}
|
}
|
|
void OnUpdateLvExp()
|
{
|
int lv = PlayerDatas.Instance.baseData.LV;
|
if (PlayerLVConfig.Get(lv + 1) == null)
|
{
|
m_ExpSlider.maxValue = 1;
|
m_ExpSlider.minValue = 0;
|
m_ExpSlider.value = 1;
|
m_PlayerExp.text = Language.Get("L1055");
|
}
|
else
|
{
|
m_ExpSlider.minValue = 0;
|
m_ExpSlider.maxValue = PlayerLVConfig.GetExpByPlayerLv(lv);
|
m_ExpSlider.value = (ulong)PlayerDatas.Instance.baseData.TotalExp + (ulong)PlayerDatas.Instance.baseData.ExpPoint * 100000000;
|
m_PlayerExp.text = string.Format("{0}/{1}", UIHelper.ReplaceLargeNum((ulong)PlayerDatas.Instance.baseData.TotalExp + (ulong)PlayerDatas.Instance.baseData.ExpPoint * 100000000), UIHelper.ReplaceLargeNum((ulong)PlayerLVConfig.GetExpByPlayerLv(lv)));
|
}
|
m_PlayerLv.text = Language.Get("Z1024", lv);
|
m_PlayerName.text = PlayerDatas.Instance.baseData.PlayerName;
|
OnRefreshTitle();
|
}
|
|
private string GetAttrStr(PropertyType type)
|
{
|
PlayerPropertyConfig cfg = PlayerPropertyConfig.Get((int)type);
|
float value = (float)UIHelper.GetPropertyValue(type);
|
return StringUtility.Contact(UIHelper.ReplaceLargeNum(UIHelper.ReplacePercentage(value, cfg.ISPercentage)), cfg.ISPercentage == 1 ? "%" : string.Empty);
|
}
|
|
private void OnDesignationClick()
|
{
|
if (FuncOpen.Instance.IsFuncOpen((int)FuncOpenEnum.Title))
|
{
|
WindowCenter.Instance.Open<RoleTitle>();
|
}
|
else
|
{
|
FuncOpen.Instance.ProcessorFuncErrorTip((int)FuncOpenEnum.Title);
|
}
|
}
|
|
private void OnRenameClick()
|
{
|
WindowCenter.Instance.Open<RoleRenameWin>();
|
}
|
|
private void OnElixirClick()
|
{
|
//WindowCenter.Instance.Open<RoleElixirTipWin>();
|
}
|
|
private void OnAttrExplainClick()
|
{
|
WindowCenter.Instance.Open<RoleAttrWin>();
|
}
|
|
private void OnPhantasmPavilionClick()
|
{
|
PhantasmPavilionModel phantasmPavilionModel = ModelCenter.Instance.GetModel<PhantasmPavilionModel>();
|
phantasmPavilionModel.selectTab = PhantasmPavilionTab.Avatar;
|
var list = phantasmPavilionModel.ShowItemList(phantasmPavilionModel.selectTab, out int fristIndex);
|
if (!list.IsNullOrEmpty())
|
phantasmPavilionModel.selectItemId = fristIndex;
|
WindowCenter.Instance.Open<PhantasmPavilionWin>();
|
}
|
}
|
}
|
|
|
|
|