using System;
|
using UnityEngine;
|
using UnityEngine.UI;
|
|
namespace Snxxz.UI
|
{
|
[XLua.Hotfix]
|
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] GameObject inSeasonTimeObj;
|
[SerializeField] GameObject outSeasonTimeObj;
|
[SerializeField] GameObject lookPlayerObj;
|
[SerializeField] Text lookTimeText;
|
CrossServerOneVsOneModel crossServerModel { get { return ModelCenter.Instance.GetModel<CrossServerOneVsOneModel>(); } }
|
|
#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()
|
{
|
SetDisplay();
|
TimeMgr.Instance.OnMinuteEvent += UpdateMinute;
|
GlobalTimeEvent.Instance.secondEvent += UpdateSecond;
|
DTCC002_tagGCCrossRealmPKStartMatch.CrossServerStartMatchEvent += OnStartMatch;
|
}
|
|
protected override void OnAfterOpen()
|
{
|
|
}
|
|
protected override void OnPreClose()
|
{
|
TimeMgr.Instance.OnMinuteEvent -= UpdateMinute;
|
GlobalTimeEvent.Instance.secondEvent -= UpdateSecond;
|
DTCC002_tagGCCrossRealmPKStartMatch.CrossServerStartMatchEvent -= OnStartMatch;
|
}
|
protected override void OnAfterClose()
|
{
|
|
}
|
#endregion
|
|
private void SetDisplay()
|
{
|
UpdateMatchInfo();
|
UpdatePKInfo();
|
UpdateActivityState();
|
UpdateLookPlayerTime();
|
var pkSeason = CrossServerOneVsOnePKSeason.Instance;
|
seasonTimeText.text = pkSeason.ToDisplaySeasonTime();
|
var openTimes = pkSeason.GetActivityTimes();
|
openTimeText.gameObject.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);
|
}
|
|
private void UpdateMatchInfo()
|
{
|
int remainNum = CrossServerOneVsOnePlayerInfo.Instance.GetDayRemainNum();
|
if (remainNum > 0)
|
{
|
reaminNumText.text = StringUtility.Contact(UIHelper.AppendStringColor(TextColType.Green,remainNum.ToString()), "/", crossServerModel.freeMaxMatchNum);
|
}
|
else
|
{
|
reaminNumText.text = StringUtility.Contact(UIHelper.AppendStringColor(TextColType.Red, remainNum.ToString()), "/", crossServerModel.freeMaxMatchNum);
|
}
|
}
|
|
private void UpdatePKInfo()
|
{
|
winRateText.text = CrossServerOneVsOnePlayerInfo.Instance.DisplayWinningRate();
|
sumNumText.text = CrossServerOneVsOnePlayerInfo.Instance.PKCount.ToString();
|
winStreakText.text = CrossServerOneVsOnePlayerInfo.Instance.CWinCount.ToString();
|
}
|
|
private void UpdateMinute()
|
{
|
UpdateActivityState();
|
}
|
|
private void UpdateSecond()
|
{
|
UpdateLookPlayerTime();
|
}
|
|
private void UpdateLookPlayerTime()
|
{
|
if (!crossServerModel.IsMatching) return;
|
|
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);
|
}
|
|
}
|
|
private void UpdateActivityState()
|
{
|
//bool isInTime = CrossServerPKSeason.Instance.InDay(TimeUtility.ServerNow);
|
//bool isOpen = CrossServerPKSeason.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 (!crossServerRewardModel.IsOpenMatch)
|
// {
|
// matchBtn.AddListener(()=> { ClickMatch(1); });
|
// }
|
// else
|
// {
|
// matchBtn_Text.text = Language.Get("CrossServer110");
|
// matchBtn.AddListener(() => { ClickMatch(0); });
|
// }
|
// }
|
// else
|
// {
|
// matchBtn_Img.material = MaterialUtility.GetDefaultSpriteGrayMaterial();
|
// }
|
//}
|
inSeasonTimeObj.SetActive(true);
|
outSeasonTimeObj.SetActive(false);
|
matchBtn.RemoveAllListeners();
|
matchBtn_Text.text = Language.Get("CrossServer109");
|
matchBtn_Img.material = MaterialUtility.GetUIDefaultGraphicMaterial();
|
if (!crossServerModel.IsMatching)
|
{
|
matchBtn.AddListener(() => { ClickMatch(1); });
|
}
|
else
|
{
|
matchBtn_Text.text = Language.Get("CrossServer110");
|
matchBtn.AddListener(() => { ClickMatch(0); });
|
}
|
}
|
|
private void ClickBuyTimes()
|
{
|
int remainNum = CrossServerOneVsOnePlayerInfo.Instance.GetDayRemainNum();
|
if (remainNum >= crossServerModel.freeMaxMatchNum) return;
|
|
WindowCenter.Instance.Open<CrossSeverOneVsOneBuyMatchTimesWin>();
|
}
|
|
private void ClickDayAward()
|
{
|
WindowCenter.Instance.Open<CrossServerOneVsOneDayAwardsWin>();
|
}
|
|
|
private void ClickScoreRank()
|
{
|
WindowCenter.Instance.Open<RankingWin>();
|
}
|
|
private void OnStartMatch()
|
{
|
lookPlayerObj.SetActive(true);
|
crossServerModel.matchStartTime = DateTime.Now;
|
UpdateLookPlayerTime();
|
UpdateActivityState();
|
}
|
|
private void ClickMatch(int type)
|
{
|
crossServerModel.SendCrossMatch(type);
|
if(type == 0)
|
{
|
crossServerModel.IsMatching = false;
|
lookPlayerObj.SetActive(false);
|
UpdateActivityState();
|
}
|
}
|
|
private void ClickMatchRecord()
|
{
|
WindowCenter.Instance.Open<CrossServerOneVsOneMatchRecordWin>();
|
}
|
|
}
|
}
|