using System;
|
using UnityEngine;
|
using UnityEngine.UI;
|
|
namespace vnxbqy.UI
|
{
|
|
public class CrossServerOneVsOneArenaWin : Window
|
{
|
[SerializeField] Button scoreRankBtn;
|
[SerializeField] Button dayAwardBtn;
|
[SerializeField] Text winRateText;
|
[SerializeField] Text sumNumText;
|
[SerializeField] Text seasonTimeText;
|
[SerializeField] Text winStreakText;
|
[SerializeField] Text reaminNumText;
|
[SerializeField] Button buyTimesBtn;
|
[SerializeField] Button matchRecordBtn;
|
[SerializeField] GameObject inSeasonTimeObj;
|
[SerializeField] GameObject outSeasonTimeObj;
|
[SerializeField] Text curSeasonNumText;
|
[SerializeField] Transform playerObjs;
|
[SerializeField] Text dayStartTime; //前后限制几分钟开启活动,客户端自行处理
|
[SerializeField] CrossServerOneVsOnePKPlayerCell[] matchPlayerObjs;
|
[SerializeField] Image refreshMoneyIcon;
|
[SerializeField] Text refreshMoneyText;
|
[SerializeField] Text freeRefreshText;
|
[SerializeField] Button refreshBtn;
|
[SerializeField] ToggleButton m_ToggleButton; //跳过战斗
|
|
CrossServerOneVsOneModel crossServerModel { get { return ModelCenter.Instance.GetModel<CrossServerOneVsOneModel>(); } }
|
|
int needChallengeCount = 10;
|
|
#region Built-in
|
protected override void BindController()
|
{
|
|
}
|
protected override void AddListeners()
|
{
|
dayAwardBtn.AddListener(ClickDayAward);
|
buyTimesBtn.AddListener(ClickBuyTimes);
|
matchRecordBtn.AddListener(ClickMatchRecord);
|
scoreRankBtn.AddListener(ClickScoreRank);
|
refreshBtn.AddListener(ClickBuyRefreshMatch);
|
m_ToggleButton.AddListener(SkipChallenge);
|
}
|
|
protected override void OnPreOpen()
|
{
|
crossServerModel.SendCrossMatch(0);
|
SetDisplay();
|
CrossServerOneVsOnePlayerInfo.Instance.UpdatePlayerInfoEvent += UpdatePlayerInfo;
|
TimeMgr.Instance.OnMinuteEvent += UpdateMinute;
|
crossServerModel.UpdateMatchPlayersEvent += UpdateMatchPlayers;
|
RoleParticularModel.OnRevPackage += OnRecvPlayerViewPack;
|
|
m_ToggleButton.isOn = crossServerModel.isSkipFightChoose;
|
}
|
|
protected override void OnAfterOpen()
|
{
|
|
}
|
|
|
protected override void OnPreClose()
|
{
|
CrossServerOneVsOnePlayerInfo.Instance.UpdatePlayerInfoEvent -= UpdatePlayerInfo;
|
TimeMgr.Instance.OnMinuteEvent -= UpdateMinute;
|
crossServerModel.UpdateMatchPlayersEvent -= UpdateMatchPlayers;
|
RoleParticularModel.OnRevPackage -= OnRecvPlayerViewPack;
|
}
|
protected override void OnAfterClose()
|
{
|
|
}
|
#endregion
|
|
|
void SkipChallenge()
|
{
|
if (CrossServerOneVsOnePlayerInfo.Instance.PKCount < needChallengeCount)
|
{
|
SysNotifyMgr.Instance.ShowTip("NeedChallengeCount", needChallengeCount);
|
return;
|
}
|
|
m_ToggleButton.isOn = !m_ToggleButton.isOn;
|
crossServerModel.isSkipFightChoose = m_ToggleButton.isOn;
|
}
|
|
private void OnRecvPlayerViewPack(int viewType, int playerID, RoleParticularModel.ViewPlayerData data)
|
{
|
if (crossServerModel.matchPlayers.Count == 0)
|
return;
|
|
for (int i = 0;i < crossServerModel.matchPlayers.Count; i++)
|
{
|
if (crossServerModel.matchPlayers[i].PlayerID == playerID)
|
{
|
matchPlayerObjs[i].Display(i);
|
break;
|
}
|
}
|
}
|
|
|
|
private void UpdatePlayerInfo()
|
{
|
UpdateMatchInfo();
|
UpdatePKInfo();
|
}
|
|
|
void ShowOpenStateWithPlayers(bool isInTime)
|
{
|
bool dayStartTimeShow = false;
|
//0点的前后3分钟不显示
|
if (isInTime && TimeUtility.ServerNow.Hour == 0 && TimeUtility.ServerNow.Minute < 3 ||
|
TimeUtility.ServerNow.Hour == 23 && TimeUtility.ServerNow.Minute >= 57)
|
{
|
isInTime = false;
|
dayStartTimeShow = true;
|
}
|
|
dayStartTime.SetActive(dayStartTimeShow);
|
dayStartTime.text = StringUtility.Contact(Language.Get("ActivitySettleWin__0"), " 23:57 - 00:03");
|
|
playerObjs.SetActive(isInTime);
|
}
|
|
private void UpdateMatchPlayers()
|
{
|
for (int i = 0; i < matchPlayerObjs.Length; i++)
|
{
|
matchPlayerObjs[i].Display(i);
|
}
|
}
|
|
private void SetDisplay()
|
{
|
UpdateMatchInfo();
|
UpdatePKInfo();
|
UpdateActivityState();
|
UpdateMatchPlayers();
|
var pkSeason = CrossServerOneVsOnePKSeason.Instance;
|
seasonTimeText.text = pkSeason.ToDisplaySeasonTime();
|
curSeasonNumText.text = pkSeason.SeasonID.ToString();
|
}
|
|
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);
|
//}
|
reaminNumText.text = StringUtility.Contact(remainNum, "/", crossServerModel.freeMaxMatchNum);
|
|
int remainFreeNum = CrossServerOneVsOnePlayerInfo.Instance.GetDayFreeRefreshNum();
|
if (remainFreeNum > 0)
|
{
|
freeRefreshText.SetActive(true);
|
refreshMoneyIcon.SetActive(false);
|
freeRefreshText.text = StringUtility.Contact(Language.Get("L2032"), Language.Get("BlessedLand036", remainFreeNum, crossServerModel.freeMaxMatchRefreshNum));
|
}
|
else
|
{
|
freeRefreshText.SetActive(false);
|
refreshMoneyIcon.SetActive(true);
|
refreshMoneyIcon.SetSmallIconWithMoneyType(crossServerModel.refreshMoneyType);
|
refreshMoneyText.text = StringUtility.Contact(Language.Get("BlessedLand036", CrossServerOneVsOnePlayerInfo.Instance.GetDayFreeRefreshPrice(), UIHelper.ReplaceLargeNum( UIHelper.GetMoneyCnt(crossServerModel.refreshMoneyType))));
|
}
|
}
|
|
|
private void UpdatePKInfo()
|
{
|
winRateText.text = CrossServerOneVsOnePlayerInfo.Instance.DisplayWinningRate();
|
sumNumText.text = CrossServerOneVsOnePlayerInfo.Instance.PKCount.ToString();
|
int winSteakCnt = CrossServerOneVsOnePlayerInfo.Instance.CWinCount;
|
winStreakText.text = winSteakCnt.ToString();
|
}
|
|
private void UpdateMinute()
|
{
|
UpdateActivityState();
|
}
|
|
|
private void UpdateActivityState()
|
{
|
bool isInTime = CrossServerOneVsOnePKSeason.Instance.InPkSeason(TimeUtility.ServerNow);
|
inSeasonTimeObj.SetActive(isInTime);
|
outSeasonTimeObj.SetActive(!isInTime);
|
ShowOpenStateWithPlayers(isInTime);
|
}
|
|
private void ClickBuyTimes()
|
{
|
if (!crossServerModel.TryGetBuyMatchTimes("CrossMatching21")) return;
|
|
WindowCenter.Instance.Open<CrossSeverOneVsOneBuyMatchTimesWin>();
|
}
|
|
private void ClickBuyRefreshMatch()
|
{
|
int price = CrossServerOneVsOnePlayerInfo.Instance.GetDayFreeRefreshPrice();
|
// UIHelper.ReplaceLargeNum(UIHelper.GetMoneyCnt(crossServerModel.refreshMoneyType)
|
if (price == 0)
|
{
|
crossServerModel.SendCrossMatch(1);
|
return;
|
}
|
|
if (UIHelper.GetMoneyCnt(crossServerModel.refreshMoneyType) < (ulong)price)
|
{
|
SysNotifyMgr.Instance.ShowTip("LackMoney", crossServerModel.refreshMoneyType);
|
return;
|
}
|
|
ConfirmCancel.ShowPopConfirm(Language.Get("Mail101"),
|
Language.Get("CrossServerOneVsOne1", price), (bool isOk) =>
|
{
|
if (isOk)
|
{
|
crossServerModel.SendCrossMatch(1);
|
}
|
});
|
}
|
|
private void ClickDayAward()
|
{
|
WindowCenter.Instance.Open<CrossServerOneVsOneDayAwardsWin>();
|
}
|
|
|
private void ClickScoreRank()
|
{
|
WindowCenter.Instance.Open<RankingWin>();
|
}
|
|
|
private void ClickMatchRecord()
|
{
|
WindowCenter.Instance.Open<CrossServerOneVsOneMatchRecordWin>();
|
}
|
|
}
|
}
|