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] CrossServerOneVsOnePKPlayerCell[] matchPlayerObjs; [SerializeField] Image refreshMoneyIcon; [SerializeField] Text refreshMoneyText; [SerializeField] Text freeRefreshText; [SerializeField] Button refreshBtn; CrossServerOneVsOneModel crossServerModel { get { return ModelCenter.Instance.GetModel(); } } #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); } protected override void OnPreOpen() { crossServerModel.SendCrossMatch(0); SetDisplay(); CrossServerOneVsOnePlayerInfo.Instance.UpdatePlayerInfoEvent += UpdatePlayerInfo; TimeMgr.Instance.OnMinuteEvent += UpdateMinute; crossServerModel.UpdateMatchPlayersEvent += UpdateMatchPlayers; RoleParticularModel.OnRevPackage += OnRecvPlayerViewPack; } 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 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(); } private void UpdateMatchPlayers() { playerObjs.SetActive(true); 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); playerObjs.SetActive(isInTime); } private void ClickBuyTimes() { if (!crossServerModel.TryGetBuyMatchTimes("CrossMatching21")) return; WindowCenter.Instance.Open(); } 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(); } private void ClickScoreRank() { WindowCenter.Instance.Open(); } private void ClickMatchRecord() { WindowCenter.Instance.Open(); } } }