//--------------------------------------------------------
|
// [Author]: 第二世界
|
// [ Date ]: Friday, January 18, 2019
|
//--------------------------------------------------------
|
|
using System;
|
using System.Collections;
|
using System.Collections.Generic;
|
using UnityEngine;
|
using UnityEngine.UI;
|
|
|
namespace Snxxz.UI
|
{
|
[XLua.Hotfix]
|
public class JadeDynastyTowerWin : Window
|
{
|
[SerializeField] JadeDynastyTowerBehaviour m_TowerBehaviour;
|
[SerializeField] JadeDynastyTowerRankBehaviour m_RankBehaviour;
|
[SerializeField] JadeDynastyTowerRewardBehaviour m_RewardBehaviour;
|
[SerializeField] TextEx m_FightPower;
|
[SerializeField] TextEx m_ChallengeTimes;
|
[SerializeField] Button m_Challenge;
|
[SerializeField] TextEx m_ChallengeTitle;
|
[SerializeField] ImageEx m_ChallengeImage;
|
|
JadeDynastyTowerModel model { get { return ModelCenter.Instance.GetModel<JadeDynastyTowerModel>(); } }
|
DungeonModel dungeonModel { get { return ModelCenter.Instance.GetModel<DungeonModel>(); } }
|
RankModel rankModel { get { return ModelCenter.Instance.GetModel<RankModel>(); } }
|
|
ChallengeButtonShowState challengeButtonShowState = ChallengeButtonShowState.Normal;
|
float timer = 0f;
|
#region Built-in
|
protected override void BindController()
|
{
|
}
|
|
protected override void AddListeners()
|
{
|
m_Challenge.SetListener(Challenge);
|
}
|
|
protected override void OnPreOpen()
|
{
|
model.ConfirmRedpoint02();
|
ModelCenter.Instance.GetModel<RankModel>().SendBegRank(RankType.JadeDynastyTower);
|
}
|
|
protected override void OnAfterOpen()
|
{
|
rankModel.onRankRefresh += DisplayRankInfo;
|
}
|
|
protected override void OnPreClose()
|
{
|
rankModel.onRankRefresh -= DisplayRankInfo;
|
}
|
|
protected override void OnAfterClose()
|
{
|
}
|
|
protected override void OnActived()
|
{
|
base.OnActived();
|
DisplayBaseInfo();
|
DisplayChallengeTimes();
|
DisplayChallengeButton();
|
DisplayFightPower();
|
DisplayRankInfo(23);
|
}
|
|
protected override void LateUpdate()
|
{
|
base.LateUpdate();
|
timer += Time.deltaTime;
|
if (timer > 1f)
|
{
|
timer = 0f;
|
DisplayChallengeButton();
|
}
|
}
|
|
#endregion
|
|
private void DisplayBaseInfo()
|
{
|
m_TowerBehaviour.Display();
|
m_RewardBehaviour.Display(model.currentFloor);
|
}
|
|
private void DisplayChallengeTimes()
|
{
|
var enterTimes = dungeonModel.GetEnterTimes(JadeDynastyTowerModel.DATA_MAPID);
|
var totalTimes = dungeonModel.GetTotalTimes(JadeDynastyTowerModel.DATA_MAPID);
|
m_ChallengeTimes.text = StringUtility.Contact(totalTimes - enterTimes, "/", totalTimes);
|
m_ChallengeTimes.colorType = enterTimes >= totalTimes ? TextColType.Red : TextColType.DarkGreen;
|
}
|
|
private void DisplayChallengeButton()
|
{
|
var suplursSeconds = 0f;
|
var coolDown = dungeonModel.GetEnterCoolDown(JadeDynastyTowerModel.DATA_MAPID);
|
suplursSeconds = coolDown != null ? coolDown.suplursSeconds : 0f;
|
|
if (suplursSeconds > 0)
|
{
|
m_ChallengeTitle.text = Language.Get("JadeDynastyCD", Mathf.RoundToInt(suplursSeconds));
|
challengeButtonShowState = ChallengeButtonShowState.CoolDown;
|
}
|
else
|
{
|
m_ChallengeTitle.text = Language.Get("Multiple_Challenge");
|
challengeButtonShowState = ChallengeButtonShowState.Normal;
|
}
|
|
m_ChallengeImage.gray = !model.IsChallengable();
|
}
|
|
private void DisplayFightPower()
|
{
|
var config = JadeDynastyTowerConfig.Get(model.currentFloor);
|
m_FightPower.text = config.fightPower.ToString();
|
var reached = PlayerDatas.Instance.baseData.FightPoint >= config.fightPower;
|
m_FightPower.colorType = reached ? TextColType.Green : TextColType.Red;
|
}
|
|
private void DisplayRankInfo(int type)
|
{
|
var rankInfos = new JadeDynastyTowerRankBehaviour.RankInfo[3];
|
List<RankData> rankDatas = null;
|
rankModel.TryGetRanks(23, out rankDatas);
|
if (rankDatas != null)
|
{
|
for (var i = 0; i < Mathf.Min(3, rankDatas.Count); i++)
|
{
|
var data = rankDatas[i];
|
rankInfos[i] = new JadeDynastyTowerRankBehaviour.RankInfo()
|
{
|
name = data.name1,
|
floor = (int)data.cmpValue,
|
time = (int)data.cmpValue2
|
};
|
}
|
}
|
|
var myRank = 0;
|
if (rankModel.TryGetMyRank(23, out myRank))
|
{
|
m_RankBehaviour.Display(rankInfos, myRank);
|
}
|
else
|
{
|
m_RankBehaviour.Display(rankInfos, -1);
|
}
|
}
|
|
private void Challenge()
|
{
|
model.ConfirmRedpoint03();
|
model.RequestChallenge();
|
}
|
|
enum ChallengeButtonShowState
|
{
|
Normal,
|
CoolDown,
|
}
|
|
}
|
|
}
|