232 lines
7.7 KiB
C#
232 lines
7.7 KiB
C#
using System.Collections;
|
|
using System.Collections.Generic;
|
|
using UnityEngine;
|
|
using UnityEngine.UI;
|
|
using GCGame.Table;
|
|
using System;
|
|
|
|
public class PVPRoot : MonoBehaviour {
|
|
|
|
public static PVPRoot Instance;
|
|
void Awake()
|
|
{
|
|
Instance = this;
|
|
}
|
|
|
|
void OnDestroy()
|
|
{
|
|
Instance = null;
|
|
}
|
|
|
|
#region Icon
|
|
public List<Sprite> _NumSpriteList;
|
|
public Image _SegmentIcon;
|
|
|
|
public Image _SegMentDescIcon;
|
|
public Image _SegmentNumDescIcon;
|
|
public GameObject _NextLevelDescPanel;
|
|
public Text _NextLevelVal;
|
|
|
|
public GameObject _RedIcon;
|
|
#endregion
|
|
|
|
#region left up
|
|
public Text _SeasonTimeDesc;
|
|
public Text _SeasonRemainTimeDesc;
|
|
public Text _NextLevelCanGainRewDesc; //达到XXX可获取奖励:
|
|
public UIContainerBase _RewContainer;
|
|
#endregion
|
|
|
|
private static PvpInfo _MySelfPvpInfo = null;
|
|
private void OnEnable()
|
|
{
|
|
if (_MySelfPvpInfo == null)
|
|
_MySelfPvpInfo = GameManager.gameManager.PlayerDataPool.pvpIfo;
|
|
|
|
ReqPvpInfo();
|
|
|
|
//InitSeasonInfo();
|
|
}
|
|
|
|
void ReqPvpInfo()
|
|
{
|
|
ReqHonorBattlefieldPlayerInfo req = new ReqHonorBattlefieldPlayerInfo();
|
|
req.Flag = 1;
|
|
req.SendMsg();
|
|
}
|
|
|
|
public void OnPacket()
|
|
{
|
|
InitSegmentLevelInfo();
|
|
//InitRewContainer();
|
|
}
|
|
|
|
DateTime _EndTime;
|
|
double _RemainTime = 0.0d;
|
|
public void InitSeasonInfo()
|
|
{
|
|
var _CurServerTime = GCGame.Utils.GetServerDateTime();
|
|
var pvpConfigBase = TableManager.GetHonorBattlefieldBaseByID(1, 0);
|
|
if (pvpConfigBase == null)
|
|
return;
|
|
|
|
DateTime _StartTime;
|
|
if (_CurServerTime.Day > pvpConfigBase.GetSeasonEndbyIndex(0))
|
|
{
|
|
_StartTime = new DateTime(_CurServerTime.Year, _CurServerTime.Month, pvpConfigBase.GetSeasonEndbyIndex(0), 23, 59, 59);
|
|
var _TotalDays = DateTime.DaysInMonth(_CurServerTime.Year, _CurServerTime.Month);
|
|
_EndTime = new DateTime(_CurServerTime.Year, _CurServerTime.Month, _TotalDays, 23, 59, 59);
|
|
|
|
_RemainTime = (_EndTime - _CurServerTime).TotalSeconds;
|
|
}
|
|
else
|
|
{
|
|
_StartTime = new DateTime(_CurServerTime.Year, _CurServerTime.Month, 1);
|
|
var _TotalDays = DateTime.DaysInMonth(_CurServerTime.Year, _CurServerTime.Month);
|
|
_EndTime = new DateTime(_CurServerTime.Year, _CurServerTime.Month, pvpConfigBase.GetSeasonEndbyIndex(0), 23, 59, 59);
|
|
|
|
_RemainTime = (_EndTime - _CurServerTime).TotalSeconds;
|
|
}
|
|
|
|
//赛季时间描述
|
|
_SeasonTimeDesc.text = StrDictionary.GetClientDictionaryString("#{81017}", _StartTime.Year, _StartTime.Month, _StartTime.Day, _EndTime.Year, _EndTime.Month, _EndTime.Day);
|
|
//初始化剩余时间描述
|
|
InitRemainTimeDesc(_RemainTime);
|
|
StartCoroutine(CountRemainTimeSync());
|
|
}
|
|
|
|
public void InitSegmentLevelInfo()
|
|
{
|
|
_MySelfPvpInfo = GameManager.gameManager.PlayerDataPool.pvpIfo; //必做刷新
|
|
var honorTab = TableManager.GetHonorBattlefieldSegmentByID(_MySelfPvpInfo.PvpSegmentLevel, 0);
|
|
if(honorTab == null)
|
|
{
|
|
return;
|
|
}
|
|
|
|
LoadAssetBundle.Instance.SetImageSprite(_SegmentIcon, honorTab.SegmentIcon);
|
|
LoadAssetBundle.Instance.SetImageSprite(_SegMentDescIcon, honorTab.SegmentDescIcon, delegate(bool isSucess, GameObject obj) {
|
|
//_SegMentDescIcon.SetNativeSize();
|
|
//这边是新UI的适配
|
|
//_SegMentDescIcon.rectTransform.sizeDelta = new Vector2(_SegMentDescIcon.rectTransform.sizeDelta.x * 0.3f, _SegMentDescIcon.rectTransform.sizeDelta.y * 0.3f);
|
|
});
|
|
_SegmentNumDescIcon.overrideSprite = _NumSpriteList[honorTab.SegmentNumDescIconIndex];
|
|
|
|
if(_MySelfPvpInfo.IsMaxLevel())
|
|
{
|
|
_NextLevelDescPanel.SetActive(false);
|
|
}
|
|
else
|
|
{
|
|
_NextLevelDescPanel.SetActive(true);
|
|
_NextLevelVal.text = _MySelfPvpInfo.SelfPvpScore + "/" + _MySelfPvpInfo.GetNextLevelNeedScore();
|
|
}
|
|
}
|
|
|
|
//倒计时
|
|
IEnumerator CountRemainTimeSync()
|
|
{
|
|
while(true)
|
|
{
|
|
yield return new WaitForSeconds(1.0f);
|
|
var remainTime = (_EndTime - GCGame.Utils.GetServerDateTime()).TotalSeconds;
|
|
if (remainTime <= 0)
|
|
{
|
|
remainTime = 0;
|
|
}
|
|
InitRemainTimeDesc(remainTime);
|
|
if (remainTime == 0)
|
|
yield break;
|
|
}
|
|
}
|
|
|
|
private const int _DayTime = 3600 * 24;
|
|
private const int _HourTime = 3600;
|
|
private const int _MinTime = 60;
|
|
public void InitRemainTimeDesc(double remainTime)
|
|
{
|
|
int _RemainDay = (int)remainTime / _DayTime;
|
|
int _RemainHour = ((int)remainTime - _RemainDay * _DayTime) / _HourTime;
|
|
int _RemainMin = ((int)remainTime - _RemainDay * _DayTime - _RemainHour * _HourTime) / 60;
|
|
int _RemainSec = ((int)remainTime - _RemainDay * _DayTime - _RemainHour * _HourTime - _RemainMin * _MinTime);
|
|
_SeasonRemainTimeDesc.text = StrDictionary.GetClientDictionaryString("#{81018}", _RemainDay.ToString().PadLeft(2, '0'), _RemainHour.ToString().PadLeft(2, '0'), _RemainMin.ToString().PadLeft(2, '0'), _RemainSec.ToString().PadLeft(2, '0'));
|
|
}
|
|
|
|
public void InitRewContainer()
|
|
{
|
|
var curSegmentLevel = _MySelfPvpInfo.PvpSegmentLevel;
|
|
var nextSegmentLevel = curSegmentLevel >= _MySelfPvpInfo.MaxSegmentLevel ? curSegmentLevel : curSegmentLevel + 1;
|
|
|
|
if(curSegmentLevel == nextSegmentLevel)
|
|
{
|
|
_RewContainer.gameObject.SetActive(false);
|
|
}
|
|
else
|
|
{
|
|
_RewContainer.gameObject.SetActive(true);
|
|
_NextLevelCanGainRewDesc.text = StrDictionary.GetClientDictionaryString("#{82046}", _MySelfPvpInfo.GetSegmentLevelDesc(nextSegmentLevel));
|
|
var honorSegmentTab = TableManager.GetHonorBattlefieldSegmentByID(nextSegmentLevel, 0);
|
|
List<CaptainWelfareRoot.CaptainWelfareRewItemInfo> rewList = new List<CaptainWelfareRoot.CaptainWelfareRewItemInfo>();
|
|
for(int index = 0; index < honorSegmentTab.getAwardCountCount(); index++)
|
|
{
|
|
CaptainWelfareRoot.CaptainWelfareRewItemInfo rew = new CaptainWelfareRoot.CaptainWelfareRewItemInfo(honorSegmentTab.GetAwardSubIdbyIndex(index),
|
|
honorSegmentTab.GetAwardCountbyIndex(index));
|
|
rewList.Add(rew);
|
|
}
|
|
_RewContainer.InitContentItem(rewList);
|
|
}
|
|
}
|
|
|
|
public void OnRankBtn()
|
|
{
|
|
UIManager.ShowUI(UIInfo.PvpRankPanel);
|
|
}
|
|
|
|
public void OnRewListBtn()
|
|
{
|
|
UIManager.ShowUI(UIInfo.PvpRewPanel);
|
|
}
|
|
|
|
public void OnExitBtn()
|
|
{
|
|
UIManager.CloseUI(UIInfo.PVPRoot);
|
|
}
|
|
|
|
public void OnPartInBtn()
|
|
{
|
|
MessageBoxLogic.OpenOKCancelBox(StrDictionary.GetClientDictionaryString("#{81001}"), "" ,delegate() {
|
|
CG_REQ_ENTER_COPY req = (CG_REQ_ENTER_COPY)PacketDistributed.CreatePacket(MessageID.PACKET_CG_REQ_ENTER_COPY);
|
|
req.SetCopyid(_MySelfPvpInfo._PvpSceneId);
|
|
req.SendPacket();
|
|
|
|
UIManager.CloseUI(UIInfo.MessageBox);
|
|
}, delegate() {
|
|
UIManager.CloseUI(UIInfo.MessageBox);
|
|
});
|
|
|
|
if (SportsPanel.Instance)
|
|
SportsPanel.Instance.OnCloseBtn();
|
|
}
|
|
|
|
public void OnRuleBtn()
|
|
{
|
|
// UIManager.ShowUI(UIInfo.PvpRulePanel);
|
|
MessageHelpLogic.ShowHelpMessage(57);
|
|
}
|
|
|
|
public void OnSegmentBtn()
|
|
{
|
|
UIManager.ShowUI(UIInfo.PvpRulePanel);
|
|
}
|
|
|
|
public void ShowRewRedIcon(bool isShow)
|
|
{
|
|
_RedIcon.SetActive(isShow);
|
|
}
|
|
|
|
public void OnIntergalShopBtn()
|
|
{
|
|
YuanBaoShopLogic.OpenShopForJiFenItem(10, -1);
|
|
}
|
|
}
|