using System;
|
using UnityEngine;
|
using UnityEngine.UI;
|
|
namespace vnxbqy.UI
|
{
|
|
public class CrossServerOneVsOneArenaWin : Window
|
{
|
[SerializeField] Button scoreRankBtn;
|
[SerializeField] Button matchBtn;
|
[SerializeField] Image matchBtn_Img;
|
[SerializeField] Text matchBtn_Text;
|
[SerializeField] Button dayAwardBtn;
|
[SerializeField] Text winRateText;
|
[SerializeField] Text sumNumText;
|
[SerializeField] Text reaminNumText;
|
[SerializeField] Text seasonTimeText;
|
[SerializeField] Text openTimeText;
|
[SerializeField] Text winStreakText;
|
[SerializeField] Button buyTimesBtn;
|
[SerializeField] Button matchRecordBtn;
|
[SerializeField] RedpointBehaviour matchRedPointBeh;
|
[SerializeField] GameObject inSeasonTimeObj;
|
[SerializeField] GameObject outSeasonTimeObj;
|
[SerializeField] GameObject lookPlayerObj;
|
[SerializeField] Text lookTimeText;
|
[SerializeField] Text curSeasonNumText;
|
CrossServerOneVsOneModel crossServerModel { get { return ModelCenter.Instance.GetModel<CrossServerOneVsOneModel>(); } }
|
float coolTime = 0;
|
#region Built-in
|
protected override void BindController()
|
{
|
|
}
|
protected override void AddListeners()
|
{
|
dayAwardBtn.AddListener(ClickDayAward);
|
buyTimesBtn.AddListener(ClickBuyTimes);
|
matchRecordBtn.AddListener(ClickMatchRecord);
|
scoreRankBtn.AddListener(ClickScoreRank);
|
}
|
|
protected override void OnPreOpen()
|
{
|
coolTime = 0;
|
crossServerModel.isClickCoolTime = false;
|
SetDisplay();
|
CrossServerOneVsOnePlayerInfo.Instance.UpdatePlayerInfoEvent += UpdatePlayerInfo;
|
TimeMgr.Instance.OnMinuteEvent += UpdateMinute;
|
GlobalTimeEvent.Instance.secondEvent += UpdateSecond;
|
DTCC002_tagGCCrossRealmPKStartMatch.CrossServerStartMatchEvent += OnStartMatch;
|
}
|
|
protected override void OnAfterOpen()
|
{
|
|
}
|
|
protected override void LateUpdate()
|
{
|
base.LateUpdate();
|
if(crossServerModel.isClickCoolTime)
|
{
|
coolTime += Time.deltaTime;
|
if(coolTime >= 1)
|
{
|
coolTime = 0;
|
crossServerModel.isClickCoolTime = false;
|
}
|
}
|
}
|
|
protected override void OnPreClose()
|
{
|
CrossServerOneVsOnePlayerInfo.Instance.UpdatePlayerInfoEvent -= UpdatePlayerInfo;
|
TimeMgr.Instance.OnMinuteEvent -= UpdateMinute;
|
GlobalTimeEvent.Instance.secondEvent -= UpdateSecond;
|
DTCC002_tagGCCrossRealmPKStartMatch.CrossServerStartMatchEvent -= OnStartMatch;
|
}
|
protected override void OnAfterClose()
|
{
|
|
}
|
#endregion
|
|
private void UpdatePlayerInfo()
|
{
|
UpdateMatchInfo();
|
UpdatePKInfo();
|
}
|
|
private void SetDisplay()
|
{
|
UpdateMatchInfo();
|
UpdatePKInfo();
|
UpdateActivityState();
|
UpdateLookPlayerTime();
|
var pkSeason = CrossServerOneVsOnePKSeason.Instance;
|
seasonTimeText.text = pkSeason.ToDisplaySeasonTime();
|
curSeasonNumText.text = pkSeason.SeasonID.ToString();
|
var openTimes = pkSeason.GetActivityTimes();
|
openTimeText.SetActive(openTimes != null && openTimes.Count > 0);
|
if(openTimes != null)
|
{
|
string openTimeDes = string.Empty;
|
for(int i = 0; i < openTimes.Count; i++)
|
{
|
var openTime = openTimes[i];
|
string timeDes = StringUtility.Contact(openTime.hourBegin.ToString("D2"), ":", openTime.minuteBegin.ToString("D2")
|
,"-",openTime.hourEnd.ToString("D2"),":",openTime.minuteEnd.ToString("D2"));
|
if(i == 0)
|
{
|
openTimeDes = timeDes;
|
}
|
else
|
{
|
openTimeDes = StringUtility.Contact(openTimeDes,",",timeDes);
|
}
|
}
|
openTimeText.text = Language.Get("CrossServer119", openTimeDes);
|
}
|
|
lookPlayerObj.SetActive(crossServerModel.IsMatching);
|
matchRedPointBeh.SetActive(!crossServerModel.IsMatching);
|
}
|
|
private void UpdateMatchInfo()
|
{
|
int remainNum = CrossServerOneVsOnePlayerInfo.Instance.GetDayRemainNum();
|
if (remainNum > 0)
|
{
|
reaminNumText.text = StringUtility.Contact(UIHelper.AppendColor(TextColType.Green,remainNum.ToString()), "/", crossServerModel.freeMaxMatchNum);
|
}
|
else
|
{
|
reaminNumText.text = StringUtility.Contact(UIHelper.AppendColor(TextColType.Red, remainNum.ToString()), "/", crossServerModel.freeMaxMatchNum);
|
}
|
}
|
|
private void UpdatePKInfo()
|
{
|
winRateText.text = CrossServerOneVsOnePlayerInfo.Instance.DisplayWinningRate();
|
sumNumText.text = CrossServerOneVsOnePlayerInfo.Instance.PKCount.ToString();
|
int winSteakCnt = CrossServerOneVsOnePlayerInfo.Instance.CWinCount;
|
winSteakCnt = winSteakCnt > 1 ? winSteakCnt : 0;
|
winStreakText.text = winSteakCnt.ToString();
|
}
|
|
private void UpdateMinute()
|
{
|
UpdateActivityState();
|
}
|
|
private void UpdateSecond()
|
{
|
UpdateLookPlayerTime();
|
}
|
|
private void UpdateLookPlayerTime()
|
{
|
if (!crossServerModel.IsMatching)
|
{
|
if(lookPlayerObj.activeInHierarchy)
|
{
|
matchRedPointBeh.SetActive(true);
|
lookPlayerObj.SetActive(false);
|
}
|
return;
|
}
|
|
if(CrossServerOneVsOnePKSeason.Instance.isSatisfyMatch)
|
{
|
int totalSeconds = Mathf.RoundToInt((float)(DateTime.Now - crossServerModel.matchStartTime).TotalSeconds);
|
if (totalSeconds < 3600)
|
{
|
int minute = totalSeconds / 60;
|
int seconds = totalSeconds % 60;
|
lookTimeText.text = StringUtility.Contact(minute.ToString("D2"), ":", seconds.ToString("D2"));
|
}
|
else
|
{
|
ClickMatch(0);
|
}
|
}
|
else
|
{
|
ClickMatch(0);
|
}
|
}
|
|
private void UpdateActivityState()
|
{
|
bool isInTime = CrossServerOneVsOnePKSeason.Instance.InPkSeason(TimeUtility.ServerNow);
|
bool isOpen = CrossServerOneVsOnePKSeason.Instance.InOpenTime();
|
inSeasonTimeObj.SetActive(isInTime);
|
outSeasonTimeObj.SetActive(!isInTime);
|
matchBtn.RemoveAllListeners();
|
if (isInTime)
|
{
|
matchBtn_Text.text = Language.Get("CrossServer109");
|
if (isOpen)
|
{
|
matchBtn_Img.material = MaterialUtility.GetUIDefaultGraphicMaterial();
|
if (!crossServerModel.IsMatching)
|
{
|
matchBtn.AddListener(() => { ClickMatch(1); });
|
}
|
else
|
{
|
matchBtn_Text.text = Language.Get("CrossServer110");
|
matchBtn.AddListener(() => { ClickMatch(0); });
|
}
|
}
|
else
|
{
|
matchBtn_Img.material = MaterialUtility.GetDefaultSpriteGrayMaterial();
|
matchBtn.AddListener(() => { SysNotifyMgr.Instance.ShowTip("CrossMatching20"); });
|
}
|
}
|
}
|
|
private void ClickBuyTimes()
|
{
|
if (!crossServerModel.TryGetBuyMatchTimes("CrossMatching21")) return;
|
|
WindowCenter.Instance.Open<CrossSeverOneVsOneBuyMatchTimesWin>();
|
}
|
|
private void ClickDayAward()
|
{
|
WindowCenter.Instance.Open<CrossServerOneVsOneDayAwardsWin>();
|
}
|
|
|
private void ClickScoreRank()
|
{
|
WindowCenter.Instance.Open<RankingWin>();
|
}
|
|
private void OnStartMatch()
|
{
|
matchRedPointBeh.SetActive(false);
|
lookPlayerObj.SetActive(true);
|
crossServerModel.matchStartTime = DateTime.Now;
|
UpdateLookPlayerTime();
|
UpdateActivityState();
|
}
|
|
private void ClickMatch(int type)
|
{
|
if (type == 1)
|
{
|
if (!AssetVersionUtility.IsUnpriorAssetDownLoadOk())
|
{
|
InGameDownLoad.Instance.TryDownLoad(InGameDownLoad.Dominant.Whole);
|
return;
|
}
|
int remainNum = CrossServerOneVsOnePlayerInfo.Instance.GetDayRemainNum();
|
if (remainNum < 1)
|
{
|
WindowCenter.Instance.Open<CrossSeverOneVsOneBuyMatchTimesWin>();
|
return;
|
}
|
}
|
|
if (crossServerModel.isClickCoolTime) return;
|
|
DebugEx.Log("ClickMatch......");
|
crossServerModel.isClickCoolTime = true;
|
crossServerModel.SendCrossMatch(type);
|
if(type == 0)
|
{
|
crossServerModel.IsMatching = false;
|
matchRedPointBeh.SetActive(true);
|
lookPlayerObj.SetActive(false);
|
UpdateActivityState();
|
}
|
}
|
|
private void ClickMatchRecord()
|
{
|
WindowCenter.Instance.Open<CrossServerOneVsOneMatchRecordWin>();
|
}
|
|
}
|
}
|