Core/GameEngine/DataToCtl/PackageRegedit.cs
@@ -201,7 +201,7 @@ Register(typeof(HC001_tagGCCrossRealmPKMatchOK), typeof(DTCC001_tagGCCrossRealmPKMatchOK)); Register(typeof(HC002_tagGCCrossRealmPKStartMatch), typeof(DTCC002_tagGCCrossRealmPKStartMatch)); Register(typeof(HC003_tagGCCrossRealmPKOverInfo), typeof(DTCC003_tagGCCrossRealmPKOverInfo)); Register(typeof(HC004_tagGCCrossRealmPKSeason), typeof(DTCC004_tagGCCrossRealmPKSeason)); Register(typeof(HC004_tagGCCrossRealmPKSeasonInfo), typeof(DTCC004_tagGCCrossRealmPKSeasonInfo)); Register(typeof(HC101_tagMCCrossRealmPKPlayerInfo), typeof(DTCC101_tagMCCrossRealmPKPlayerInfo)); Register(typeof(HC102_tagMCCrossRealmPKAwardState), typeof(DTCC102_tagMCCrossRealmPKAwardState)); Register(typeof(HC005_tagGCCrossRealmPKBillboardInfo), typeof(DTCC005_tagGCCrossRealmPKBillboardInfo)); Core/NetworkPackage/DTCFile/ServerPack/HC0_CrossRealm/DTCC001_tagGCCrossRealmPKMatchOK.cs
@@ -2,19 +2,26 @@ using System.Collections; using Snxxz.UI; // C0 01 跨服PK匹配成功 #tagGCCrossRealmPKMatchOK // C0 01 跨服PK匹配成功 #tagGCCrossRealmPKMatchOK public class DTCC001_tagGCCrossRealmPKMatchOK : DtcBasic { { public override void Done(GameNetPackBasic vNetPack) { base.Done(vNetPack); { base.Done(vNetPack); var package = vNetPack as HC001_tagGCCrossRealmPKMatchOK; if (package.socketType == GameNetSystem.SocketType.Main) { CrossServerLogin.Instance.UpdateCrossServerOneVsOneData(package); WindowCenter.Instance.Open<CrossServerOneVsOneEnterConfirmWin>(); ModelCenter.Instance.GetModel<CrossServerModel>().IsMatching = false; } } } } } Core/NetworkPackage/DTCFile/ServerPack/HC0_CrossRealm/DTCC002_tagGCCrossRealmPKStartMatch.cs
@@ -1,11 +1,24 @@ using UnityEngine; using System.Collections; using System; // C0 02 跨服PK开始匹配 #tagGCCrossRealmPKStartMatch public class DTCC002_tagGCCrossRealmPKStartMatch : DtcBasic { public override void Done(GameNetPackBasic vNetPack) { base.Done(vNetPack); HC002_tagGCCrossRealmPKStartMatch vNetData = vNetPack as HC002_tagGCCrossRealmPKStartMatch; } } // C0 02 跨服PK开始匹配 #tagGCCrossRealmPKStartMatch public class DTCC002_tagGCCrossRealmPKStartMatch : DtcBasic { public static event Action CrossServerStartMatchEvent; public override void Done(GameNetPackBasic vNetPack) { base.Done(vNetPack); HC002_tagGCCrossRealmPKStartMatch vNetData = vNetPack as HC002_tagGCCrossRealmPKStartMatch; if(CrossServerStartMatchEvent != null) { CrossServerStartMatchEvent(); } } } Core/NetworkPackage/DTCFile/ServerPack/HC0_CrossRealm/DTCC004_tagGCCrossRealmPKSeason.cs
File was deleted Core/NetworkPackage/DTCFile/ServerPack/HC0_CrossRealm/DTCC004_tagGCCrossRealmPKSeasonInfo.cs
New file @@ -0,0 +1,20 @@ using UnityEngine; using System.Collections; using Snxxz.UI; // C0 04 跨服PK赛季信息 #tagGCCrossRealmPKSeasonInfo public class DTCC004_tagGCCrossRealmPKSeasonInfo : DtcBasic { public override void Done(GameNetPackBasic vNetPack) { base.Done(vNetPack); HC004_tagGCCrossRealmPKSeasonInfo vNetData = vNetPack as HC004_tagGCCrossRealmPKSeasonInfo; CrossServerPKSeason.Instance.UpdatePkSeason(vNetData); } } Core/NetworkPackage/DTCFile/ServerPack/HC0_CrossRealm/DTCC004_tagGCCrossRealmPKSeasonInfo.cs.meta
File was renamed from Core/NetworkPackage/DTCFile/ServerPack/HC0_CrossRealm/DTCC004_tagGCCrossRealmPKSeason.cs.meta @@ -1,6 +1,6 @@ fileFormatVersion: 2 guid: caa8b080f4218d74dbadca1f9f9bac29 timeCreated: 1545270558 guid: f26d37a470172e64684bbea1ca2fb561 timeCreated: 1545468995 licenseType: Pro MonoImporter: serializedVersion: 2 Core/NetworkPackage/ServerPack/HC0_CrossRealm/HC004_tagGCCrossRealmPKSeason.cs
File was deleted Core/NetworkPackage/ServerPack/HC0_CrossRealm/HC004_tagGCCrossRealmPKSeason.cs.meta
File was deleted Core/NetworkPackage/ServerPack/HC0_CrossRealm/HC004_tagGCCrossRealmPKSeasonInfo.cs
New file @@ -0,0 +1,57 @@ using UnityEngine; using System.Collections; // C0 04 跨服PK赛季信息 #tagGCCrossRealmPKSeasonInfo public class HC004_tagGCCrossRealmPKSeasonInfo : GameNetPackBasic { public byte ZoneCount; // 赛区个数 public tagGCCrossRealmPKZone[] ZoneList; // 赛区列表 public byte ZoneID; // 所属赛区ID public ushort SeasonID; // 当前赛季ID public HC004_tagGCCrossRealmPKSeasonInfo () { _cmd = (ushort)0xC004; } public override void ReadFromBytes (byte[] vBytes) { TransBytes (out ZoneCount, vBytes, NetDataType.BYTE); ZoneList = new tagGCCrossRealmPKZone[ZoneCount]; for (int i = 0; i < ZoneCount; i ++) { ZoneList[i] = new tagGCCrossRealmPKZone(); TransBytes (out ZoneList[i].ZoneID, vBytes, NetDataType.BYTE); TransBytes (out ZoneList[i].ZoneNameLen, vBytes, NetDataType.BYTE); TransBytes (out ZoneList[i].ZoneName, vBytes, NetDataType.Chars, ZoneList[i].ZoneNameLen); TransBytes (out ZoneList[i].SeasonCount, vBytes, NetDataType.WORD); ZoneList[i].SeasonList = new tagGCCrossRealmPKSeason[ZoneList[i].SeasonCount]; for (int j = 0; j < ZoneList[i].SeasonCount; j ++) { ZoneList[i].SeasonList[j] = new tagGCCrossRealmPKSeason(); TransBytes (out ZoneList[i].SeasonList[j].SeasonID, vBytes, NetDataType.WORD); TransBytes (out ZoneList[i].SeasonList[j].StartDate, vBytes, NetDataType.Chars, 10); TransBytes (out ZoneList[i].SeasonList[j].EndDate, vBytes, NetDataType.Chars, 10); TransBytes (out ZoneList[i].SeasonList[j].EndTime, vBytes, NetDataType.Chars, 5); TransBytes (out ZoneList[i].SeasonList[j].NextStartDate, vBytes, NetDataType.Chars, 10); TransBytes (out ZoneList[i].SeasonList[j].NextEndDate, vBytes, NetDataType.Chars, 10); } } TransBytes (out ZoneID, vBytes, NetDataType.BYTE); TransBytes (out SeasonID, vBytes, NetDataType.WORD); } public struct tagGCCrossRealmPKZone { public byte ZoneID; // 赛区ID public byte ZoneNameLen; public string ZoneName; // 赛区名 public ushort SeasonCount; public tagGCCrossRealmPKSeason[] SeasonList; // 赛季列表 } public struct tagGCCrossRealmPKSeason { public ushort SeasonID; // 当前赛季ID public string StartDate; // 开始日期 yyyy-MM-dd public string EndDate; // 结束日期 yyyy-MM-dd public string EndTime; // 赛季结算时间,赛季奖励该时间后才可领取 hh:mm public string NextStartDate; // 下赛季开始日期 yyyy-MM-dd public string NextEndDate; // 下赛季结束日期 yyyy-MM-dd } } Core/NetworkPackage/ServerPack/HC0_CrossRealm/HC004_tagGCCrossRealmPKSeasonInfo.cs.metacopy from Core/NetworkPackage/DTCFile/ServerPack/HC0_CrossRealm/DTCC004_tagGCCrossRealmPKSeason.cs.meta copy to Core/NetworkPackage/ServerPack/HC0_CrossRealm/HC004_tagGCCrossRealmPKSeasonInfo.cs.meta
File was copied from Core/NetworkPackage/DTCFile/ServerPack/HC0_CrossRealm/DTCC004_tagGCCrossRealmPKSeason.cs.meta @@ -1,6 +1,6 @@ fileFormatVersion: 2 guid: caa8b080f4218d74dbadca1f9f9bac29 timeCreated: 1545270558 guid: ee68d3ee41cab3b40b488fb5cd7ed870 timeCreated: 1545468995 licenseType: Pro MonoImporter: serializedVersion: 2 System/CrossServerOneVsOne/CrossServerArenaWin.cs
@@ -17,6 +17,7 @@ [SerializeField] Text reaminNumText; [SerializeField] Text seasonTimeText; [SerializeField] Text openTimeText; [SerializeField] Text winStreakText; [SerializeField] Button buyTimesBtn; [SerializeField] Button matchRecordBtn; [SerializeField] GameObject inSeasonTimeObj; @@ -43,6 +44,7 @@ SetDisplay(); TimeMgr.Instance.OnMinuteEvent += UpdateMinute; GlobalTimeEvent.Instance.secondEvent += UpdateSecond; DTCC002_tagGCCrossRealmPKStartMatch.CrossServerStartMatchEvent += OnStartMatch; } protected override void OnAfterOpen() @@ -110,6 +112,7 @@ { winRateText.text = CrossServerPlayerInfo.Instance.DisplayWinningRate(); sumNumText.text = CrossServerPlayerInfo.Instance.PKCount.ToString(); winStreakText.text = CrossServerPlayerInfo.Instance.CWinCount.ToString(); } private void UpdateMinute() @@ -203,21 +206,24 @@ WindowCenter.Instance.Open<RankingWin>(); } private void OnStartMatch() { lookPlayerObj.SetActive(true); crossServerModel.IsMatching = true; crossServerModel.matchStartTime = DateTime.Now; UpdateLookPlayerTime(); UpdateActivityState(); } private void ClickMatch(int type) { crossServerModel.SendCrossMatch(type); lookPlayerObj.SetActive(type == 1); if(type == 1) if(type != 1) { crossServerModel.IsMatching = true; crossServerModel.matchStartTime = DateTime.Now; UpdateLookPlayerTime(); } else { lookPlayerObj.SetActive(false); crossServerModel.IsMatching = false; UpdateActivityState(); } UpdateActivityState(); } private void ClickMatchRecord() System/CrossServerOneVsOne/CrossServerModel.cs
@@ -9,7 +9,7 @@ { [XLua.Hotfix] [XLua.LuaCallCSharp] public class CrossServerModel : Model, IBeforePlayerDataInitialize, IAfterPlayerDataInitialize, IPlayerLoginOk public class CrossServerModel : Model, IBeforePlayerDataInitialize, IAfterPlayerDataInitialize,ISwitchAccount ,IPlayerLoginOk { public string PkResultLocalSaveKey { get; private set; } public List<CrossServerPkResult> localSaveResults { get; private set; } @@ -23,12 +23,12 @@ public override void Init() { IsMatching = false; ParseFuncConfig(); } public void OnBeforePlayerDataInitialize() { IsMatching = false; dungeonModel.updateMissionEvent -= UpdateFBHelp; rewardModel.CrossRealmPKAwardStateUpdate -= UpdateDayAwardState; CrossServerPlayerInfo.Instance.UpdatePlayerInfoEvent -= UpdateDayAwardState; @@ -42,12 +42,21 @@ GetLocalSaveData(); } public void OnSwitchAccount() { IsMatching = false; } public void OnPlayerLoginOk() { rewardModel.CrossRealmPKAwardStateUpdate += UpdateDayAwardState; CrossServerPlayerInfo.Instance.UpdatePlayerInfoEvent += UpdateDayAwardState; dungeonModel.updateMissionEvent += UpdateFBHelp; UpdateDayAwardState(); if(IsMatching) { SendCrossMatch(1); } } public override void UnInit() @@ -57,6 +66,7 @@ private void InitData() { CrossServerPKSeason.Instance.InitData(); CrossServerPlayerInfo.Instance.InitData(); pkResultInfo = new CrossServerPkResult(); } System/CrossServerOneVsOne/CrossServerPKSeason.cs
@@ -11,21 +11,77 @@ { public int ZoneCount { get; private set;} // 所有赛区个数 public byte[] ZoneIDList { get; private set; } // 所有赛区列表 public List<PkZoneInfo> ZoneIDList { get; private set; } // 所有赛区列表 public int ZoneID { get; private set; } // 所属赛区ID public int SeasonID { get; private set; } // 当前赛季ID public int SeasonID; // 当前赛季ID public OperationDate StartDate { get; private set; } // 开始日期 yyyy-MM-dd public class PkZoneInfo { public int ZoneID { get; private set; } // 赛区ID public OperationDate EndDate { get; private set; } // 结束日期 yyyy-MM-dd public string ZoneName { get; private set; } // 赛区名 public string EndTime { get; private set; } // 赛季结算时间,赛季奖励该时间后才可领取 hh:mm public int SeasonCount { get; private set; } public OperationDate NextStartDate { get; private set; } // 下赛季开始日期 yyyy-MM-dd public List<PkSeasonInfo> SeasonList { get; private set; } // 赛季列表 public OperationDate NextEndDate { get; private set; } // 下赛季结束日期 yyyy-MM-dd public void SetZoneInfo(HC004_tagGCCrossRealmPKSeasonInfo.tagGCCrossRealmPKZone pKZone) { this.ZoneID = pKZone.ZoneID; this.ZoneName = pKZone.ZoneName; this.SeasonCount = pKZone.SeasonCount; SeasonList = new List<PkSeasonInfo>(); for(int i = 0; i < pKZone.SeasonCount; i++) { var pkSeason = pKZone.SeasonList[i]; PkSeasonInfo seasonInfo = new PkSeasonInfo(); seasonInfo.SetPkSeasonInfo(pkSeason); SeasonList.Add(seasonInfo); } } } public class PkSeasonInfo { public int SeasonID { get; private set; } // 当前赛季ID public OperationDate StartDate { get; private set; } // 开始日期 yyyy-MM-dd public OperationDate EndDate { get; private set; } // 结束日期 yyyy-MM-dd public string EndTime { get; private set; } // 赛季结算时间,赛季奖励该时间后才可领取 hh:mm public OperationDate NextStartDate { get; private set; } // 下赛季开始日期 yyyy-MM-dd public OperationDate NextEndDate { get; private set; } // 下赛季结束日期 yyyy-MM-dd public void SetPkSeasonInfo(HC004_tagGCCrossRealmPKSeasonInfo.tagGCCrossRealmPKSeason seasonInfo) { this.SeasonID = seasonInfo.SeasonID; this.StartDate = ParseOperationDate(seasonInfo.StartDate); this.EndDate = ParseOperationDate(seasonInfo.EndDate); this.EndTime = seasonInfo.EndTime; this.NextStartDate = ParseOperationDate(seasonInfo.NextStartDate); this.NextEndDate = ParseOperationDate(seasonInfo.NextEndDate); } private OperationDate ParseOperationDate(string date) { string[] dateArray = date.Split('-'); if (dateArray != null && dateArray.Length == 3) { return new OperationDate() { year = int.Parse(dateArray[0].Trim()), month = int.Parse(dateArray[1].Trim()), day = int.Parse(dateArray[2].Trim()) }; } return default(OperationDate); } } public event Action activityStartEvent; public event Action activityEndEvent; @@ -36,13 +92,15 @@ public CrossServerPKSeason() { DTC0102_tagCDBPlayer.beforePlayerDataInitializeEvent += BeforePlayerDataInitializeEvent; GlobalTimeEvent.Instance.secondEvent += SecondEvent; } private void BeforePlayerDataInitializeEvent() public void InitData() { ZoneCount = 0; ZoneIDList = null; ZoneID = 0; SeasonID = 0; } public List<HourMinute> GetActivityTimes() @@ -75,19 +133,58 @@ } } public void UpdatePkSeason(HC004_tagGCCrossRealmPKSeason pkSeason) public void UpdatePkSeason(HC004_tagGCCrossRealmPKSeasonInfo pkSeason) { inDateNotify = false; stepDateNotify = false; this.ZoneCount = pkSeason.ZoneCount; this.ZoneIDList = pkSeason.ZoneIDList; this.ZoneID = pkSeason.ZoneID; this.SeasonID = pkSeason.SeasonID; this.StartDate = ParseOperationDate(pkSeason.StartDate); this.EndDate = ParseOperationDate(pkSeason.EndDate); this.EndTime = pkSeason.EndTime; this.NextStartDate = ParseOperationDate(pkSeason.NextStartDate); this.NextEndDate = ParseOperationDate(pkSeason.NextEndDate); var zoneIDs = pkSeason.ZoneList; this.ZoneIDList = new List<PkZoneInfo>(); for(int i = 0; i < pkSeason.ZoneCount; i++) { var pkZone = pkSeason.ZoneList[i]; PkZoneInfo zoneInfo = new PkZoneInfo(); zoneInfo.SetZoneInfo(pkZone); ZoneIDList.Add(zoneInfo); } } public bool TryGetZoneInfo(out PkZoneInfo zoneInfo) { zoneInfo = null; if (ZoneIDList == null) return false; for(int i = 0; i < ZoneIDList.Count; i++) { var info = ZoneIDList[i]; if (this.ZoneID == info.ZoneID) { zoneInfo = info; return true; } } return false; } public bool TryGetSeasonInfo(out PkSeasonInfo seasonInfo) { seasonInfo = null; PkZoneInfo zoneInfo = null; bool isZone = TryGetZoneInfo(out zoneInfo); if (!isZone) return false; for(int i = 0; i < zoneInfo.SeasonList.Count; i++) { var info = zoneInfo.SeasonList[i]; if(this.SeasonID == info.SeasonID) { seasonInfo = info; return true; } } return false; } public bool InDay(DateTime time) @@ -98,7 +195,13 @@ month = time.Month, day = time.Day, }; return date >= StartDate && date <= EndDate; PkSeasonInfo seasonInfo = null; bool isSeason = TryGetSeasonInfo(out seasonInfo); if(isSeason) { return date >= seasonInfo.StartDate && date <= seasonInfo.EndDate; } return false; } public bool InOpenTime() @@ -114,28 +217,40 @@ { return -1; } DateTime s = new DateTime(StartDate.year, StartDate.month, StartDate.day); return (time - s).Days; PkSeasonInfo seasonInfo = null; bool isSeason = TryGetSeasonInfo(out seasonInfo); if(isSeason) { DateTime s = new DateTime(seasonInfo.StartDate.year, seasonInfo.StartDate.month, seasonInfo.StartDate.day); return (time - s).Days; } return 0; } public string ToDisplaySeasonTime() { if(!StartDate.Equals(default(OperationDate)) && InDay(TimeUtility.ServerNow)) PkSeasonInfo seasonInfo = null; bool isSeason = TryGetSeasonInfo(out seasonInfo); if(isSeason) { return Language.Get("CrossServer106", ToDisplayTime(StartDate, EndDate)); } else { if(NextStartDate.Equals(default(OperationDate))) if (!seasonInfo.StartDate.Equals(default(OperationDate)) && InDay(TimeUtility.ServerNow)) { return Language.Get("CrossServer107", Language.Get("CrossServer108")); return Language.Get("CrossServer106", ToDisplayTime(seasonInfo.StartDate, seasonInfo.EndDate)); } else { return Language.Get("CrossServer107", ToDisplayTime(NextStartDate, NextEndDate)); if (seasonInfo.NextStartDate.Equals(default(OperationDate))) { return Language.Get("CrossServer107", Language.Get("CrossServer108")); } else { return Language.Get("CrossServer107", ToDisplayTime(seasonInfo.NextStartDate, seasonInfo.NextEndDate)); } } } return Language.Get("CrossServer107", Language.Get("CrossServer108")); } private string ToDisplayTime(OperationDate start,OperationDate end) @@ -145,21 +260,6 @@ return StringUtility.Contact(start.ToDisplay(),"-",end.ToDisplay()); } return start.ToDisplay(); } OperationDate ParseOperationDate(string date) { string[] dateArray = date.Split('-'); if (dateArray != null && dateArray.Length == 3) { return new OperationDate() { year = int.Parse(dateArray[0].Trim()), month = int.Parse(dateArray[1].Trim()), day = int.Parse(dateArray[2].Trim()) }; } return default(OperationDate); } } }