using System;
|
|
using UnityEngine;
|
using UnityEngine.UI;
|
|
namespace Snxxz.UI
|
{
|
[XLua.Hotfix]
|
public class CrossServerOneVsOneWin : Window
|
{
|
[SerializeField] Image headImg;
|
[SerializeField] Text nameText;
|
[SerializeField] Text lvText;
|
[SerializeField] Text rankText;
|
[SerializeField] Text curScoreText;
|
[SerializeField] Text honorText;
|
[SerializeField] Image rankImg;
|
[SerializeField] Slider scoreSlider;
|
[SerializeField] Text scorePerText;
|
[SerializeField] GameObject danLvUpObj;
|
[SerializeField] Button rankAwardBtn;
|
[SerializeField] GameObject rankAward_SelectImg;
|
[SerializeField] Button arenaBtn;
|
[SerializeField] GameObject arena_SelectImg;
|
[SerializeField] Button seasonAwardBtn;
|
[SerializeField] GameObject seasonAward_SelectImg;
|
[SerializeField] Button honorStoreBtn;
|
[SerializeField] GameObject honorStore_SelectImg;
|
[SerializeField] Button lookDanLvBtn;
|
public static int funcId = 0;
|
CrossServerOneVsOnePlayerInfo playerInfo;
|
CrossServerWin crossServerWin;
|
CrossServerOneVsOneRewardModel m_CrossServerRewardModel;
|
CrossServerOneVsOneRewardModel crossServerRewardModel { get { return m_CrossServerRewardModel ?? (m_CrossServerRewardModel = ModelCenter.Instance.GetModel<CrossServerOneVsOneRewardModel>()); } }
|
#region Built-in
|
protected override void BindController()
|
{
|
|
}
|
protected override void AddListeners()
|
{
|
rankAwardBtn.AddListener(ClickRankAward);
|
arenaBtn.AddListener(ClickArena);
|
seasonAwardBtn.AddListener(ClickSeasonAward);
|
honorStoreBtn.AddListener(ClickHonorStore);
|
lookDanLvBtn.AddListener(ClickDanLv);
|
}
|
|
protected override void OnPreOpen()
|
{
|
SetDisplay();
|
PlayerDatas.Instance.playerDataRefreshEvent += UpdatePlayerData;
|
CrossServerOneVsOnePlayerInfo.Instance.UpdatePlayerInfoEvent += UpdatePlayerInfo;
|
}
|
protected override void OnActived()
|
{
|
|
|
}
|
protected override void OnAfterOpen()
|
{
|
|
}
|
|
protected override void OnPreClose()
|
{
|
CloseSubWindows();
|
PlayerDatas.Instance.playerDataRefreshEvent -= UpdatePlayerData;
|
CrossServerOneVsOnePlayerInfo.Instance.UpdatePlayerInfoEvent -= UpdatePlayerInfo;
|
funcId = 0;
|
}
|
protected override void OnAfterClose()
|
{
|
|
}
|
#endregion
|
|
private void UpdatePlayerInfo()
|
{
|
UpdateScore();
|
UpdateRank();
|
}
|
|
private void UpdatePlayerData(PlayerDataType type)
|
{
|
if (type != PlayerDataType.CDBPlayerRefresh_Honor) return;
|
UpdateHonor();
|
}
|
|
|
private void SetDisplay()
|
{
|
crossServerWin = WindowCenter.Instance.Get<CrossServerWin>();
|
playerInfo = CrossServerOneVsOnePlayerInfo.Instance;
|
var playerData = PlayerDatas.Instance.baseData;
|
headImg.SetSprite(GeneralDefine.GetJobHeadPortrait(playerData.Job, 0));
|
nameText.text = playerData.PlayerName;
|
lvText.text = StringUtility.Contact("Lv.", playerData.LV);
|
scoreSlider.minValue = 0;
|
scoreSlider.maxValue = 1;
|
UpdateScore();
|
UpdateRank();
|
UpdateHonor();
|
switch (funcId)
|
{
|
case 0:
|
case 1:
|
ClickArena();
|
break;
|
case 2:
|
ClickRankAward();
|
break;
|
case 3:
|
ClickSeasonAward();
|
break;
|
case 4:
|
ClickHonorStore();
|
break;
|
}
|
}
|
|
private void UpdateRank()
|
{
|
var arenaConfig = CrossServerArenaConfig.Get(playerInfo.DanLV);
|
rankText.text = arenaConfig.Name;
|
rankText.color = UIHelper.GetDanLVColor(playerInfo.DanLV);
|
rankImg.SetSprite(arenaConfig.IconKey);
|
}
|
|
private void UpdateHonor()
|
{
|
honorText.text = UIHelper.GetMoneyCnt(18).ToString();
|
}
|
|
private void UpdateScore()
|
{
|
curScoreText.text = playerInfo.Score.ToString();
|
int maxScore = 0;
|
bool isMaxRank = playerInfo.TryGetMaxRank(out maxScore);
|
danLvUpObj.SetActive(!isMaxRank);
|
if (!isMaxRank)
|
{
|
var preUpScore = CrossServerArenaConfig.Get(playerInfo.DanLV - 1);
|
int curScore = playerInfo.Score;
|
if(preUpScore != null)
|
{
|
curScore -= preUpScore.LVUpScore;
|
}
|
scorePerText.text = StringUtility.Contact(curScore, "/", maxScore);
|
scoreSlider.value = (float)curScore / maxScore;
|
}
|
}
|
private void ClickHonorStore()
|
{
|
if (honorStore_SelectImg.activeInHierarchy) return;
|
CloseSubWindows();
|
WindowCenter.Instance.Open<CrossServerOneVsOneHonorStoreWin>();
|
honorStore_SelectImg.SetActive(true);
|
}
|
|
private void ClickSeasonAward()
|
{
|
if (seasonAward_SelectImg.activeInHierarchy) return;
|
|
CloseSubWindows();
|
WindowCenter.Instance.Open<SeasonRewardWin>();
|
seasonAward_SelectImg.SetActive(true);
|
|
}
|
|
private void ClickDanLv()
|
{
|
WindowCenter.Instance.Open<CrossServerOneVsOneDanLVWin>();
|
}
|
|
private void ClickArena()
|
{
|
if (arena_SelectImg.activeInHierarchy) return;
|
|
CloseSubWindows();
|
WindowCenter.Instance.Open<CrossServerOneVsOneArenaWin>();
|
arena_SelectImg.SetActive(true);
|
}
|
|
private void ClickRankAward()
|
{
|
if (rankAward_SelectImg.activeInHierarchy) return;
|
|
CloseSubWindows();
|
WindowCenter.Instance.Open<SegmentRewardWin>();
|
rankAward_SelectImg.SetActive(true);
|
}
|
|
private void CloseSubWindows()
|
{
|
WindowCenter.Instance.Close<CrossServerOneVsOneArenaWin>();
|
WindowCenter.Instance.Close<CrossServerOneVsOneHonorStoreWin>();
|
WindowCenter.Instance.Close<SeasonRewardWin>();
|
WindowCenter.Instance.Close<SegmentRewardWin>();
|
arena_SelectImg.SetActive(false);
|
rankAward_SelectImg.SetActive(false);
|
seasonAward_SelectImg.SetActive(false);
|
honorStore_SelectImg.SetActive(false);
|
}
|
}
|
}
|