Core/GameEngine/Model/Config/CrossRealmPKOrderAwardConfig.cs
New file @@ -0,0 +1,47 @@ //-------------------------------------------------------- // [Author]: 第二世界 // [ Date ]: Thursday, February 14, 2019 //-------------------------------------------------------- using UnityEngine; using System; namespace TableConfig { public partial class CrossRealmPKOrderAwardConfig : ConfigBase { public int ID { get ; private set ; } public string CrossZoneName { get ; private set; } public int SeasonID { get ; private set ; } public string SeasonOrderAward { get ; private set; } public override string getKey() { return ID.ToString(); } public override void Parse() { try { ID=IsNumeric(rawContents[0]) ? int.Parse(rawContents[0]):0; CrossZoneName = rawContents[1].Trim(); SeasonID=IsNumeric(rawContents[2]) ? int.Parse(rawContents[2]):0; SeasonOrderAward = rawContents[3].Trim(); } catch (Exception ex) { DebugEx.Log(ex); } } } } Core/GameEngine/Model/Config/CrossRealmPKOrderAwardConfig.cs.meta
New file @@ -0,0 +1,12 @@ fileFormatVersion: 2 guid: 935c90b542889744aac8be6af43b554a timeCreated: 1550111952 licenseType: Pro MonoImporter: serializedVersion: 2 defaultReferences: [] executionOrder: 0 icon: {instanceID: 0} userData: assetBundleName: assetBundleVariant: Core/GameEngine/Model/Config/CrossServerArenaConfig.cs
@@ -1,6 +1,6 @@ //-------------------------------------------------------- // [Author]: 第二世界 // [ Date ]: Wednesday, February 13, 2019 // [ Date ]: Thursday, February 14, 2019 //-------------------------------------------------------- using UnityEngine; @@ -15,9 +15,7 @@ public string Name { get ; private set; } public int DanType { get ; private set ; } public string IconKey { get ; private set; } public int LVUpScore { get ; private set ; } public string DanLVAwardList { get ; private set; } public string SeasonAwardList { get ; private set; } public int LVUpScore { get ; private set ; } public override string getKey() { @@ -35,11 +33,7 @@ IconKey = rawContents[3].Trim(); LVUpScore=IsNumeric(rawContents[4]) ? int.Parse(rawContents[4]):0; DanLVAwardList = rawContents[5].Trim(); SeasonAwardList = rawContents[6].Trim(); LVUpScore=IsNumeric(rawContents[4]) ? int.Parse(rawContents[4]):0; } catch (Exception ex) { Core/GameEngine/Model/Config/CrossServerArenaConfig.cs.meta
@@ -1,6 +1,6 @@ fileFormatVersion: 2 guid: f10a2faba8659904ab5c13d1a770a7e2 timeCreated: 1550050368 timeCreated: 1550111506 licenseType: Pro MonoImporter: serializedVersion: 2 Core/GameEngine/Model/ConfigManager.cs
@@ -239,6 +239,7 @@ AddAsyncTask<LoginRewardConfig>(); AddAsyncTask<CrossRealmPKDanAwardConfig>(); AddAsyncTask<DungeonMixServerStateTimeConfig>(); AddAsyncTask<CrossRealmPKOrderAwardConfig>(); while (!AllCompleted()) { var completedCount = 0; Core/NetworkPackage/DTCFile/ServerPack/HC0_CrossRealm/DTCC006_tagGCCrossRealmPKSeasonState.cs
@@ -6,9 +6,11 @@ public class DTCC006_tagGCCrossRealmPKSeasonState : DtcBasic { public class DTCC006_tagGCCrossRealmPKSeasonState : DtcBasic { public override void Done(GameNetPackBasic vNetPack) { public override void Done(GameNetPackBasic vNetPack) { base.Done(vNetPack); @@ -16,5 +18,4 @@ CrossServerOneVsOnePKSeason.Instance.UpdateSelfSeason(vNetData); } } } Core/NetworkPackage/ServerPack/HC0_CrossRealm/HC006_tagGCCrossRealmPKSeasonState.cs
@@ -8,6 +8,8 @@ public ushort SeasonID; // 当前赛季ID public byte SeasonState; // 赛季状态;0-未开启,1-开启中,2-已结束 public byte MatchState; // 匹配状态;0-未开启;1-开启中 public byte CrossZoneNameLen; public string CrossZoneName; // 跨服分区名 public HC006_tagGCCrossRealmPKSeasonState () { _cmd = (ushort)0xC006; @@ -18,6 +20,8 @@ TransBytes (out SeasonID, vBytes, NetDataType.WORD); TransBytes (out SeasonState, vBytes, NetDataType.BYTE); TransBytes (out MatchState, vBytes, NetDataType.BYTE); TransBytes (out CrossZoneNameLen, vBytes, NetDataType.BYTE); TransBytes (out CrossZoneName, vBytes, NetDataType.Chars, CrossZoneNameLen); } } System/CrossServerOneVsOne/CrossServerOneVsOnePKSeason.cs
@@ -9,7 +9,7 @@ [XLua.Hotfix] public class CrossServerOneVsOnePKSeason : Singleton<CrossServerOneVsOnePKSeason> { public int ZoneCount { get; private set;} // 所有赛区个数 public int ZoneCount { get; private set; } // 所有赛区个数 public List<PkZoneInfo> ZoneIDList { get; private set; } // 所有赛区列表 @@ -21,13 +21,15 @@ public int MatchState { get; private set; } // 匹配状态;0-未开启;1-开启中 public string CrossZoneName { get; private set; } // 跨服分区名 public bool isSatisfyMatch { get { return FuncOpen.Instance.IsFuncOpen((int)FuncOpenEnum.CrossServer) && TimeUtility.OpenDay >= crossServerModel.afterOpenDayOpenCross && InPkSeason(TimeUtility.ServerNow) && InPkSeason(TimeUtility.ServerNow) && InOpenTime(); } } @@ -48,7 +50,7 @@ this.ZoneName = pKZone.ZoneName; this.SeasonCount = pKZone.SeasonCount; SeasonList = new List<PkSeasonInfo>(); for(int i = 0; i < pKZone.SeasonCount; i++) for (int i = 0; i < pKZone.SeasonCount; i++) { var pkSeason = pKZone.SeasonList[i]; PkSeasonInfo seasonInfo = new PkSeasonInfo(); @@ -113,24 +115,25 @@ SeasonID = 0; SeasonState = 0; MatchState = 0; CrossZoneName = string.Empty; } private void SecondEvent() { if(!inDateNotify && InPkSeason(TimeUtility.ServerNow)) if (!inDateNotify && InPkSeason(TimeUtility.ServerNow)) { inDateNotify = true; stepDateNotify = false; if(activityStartEvent != null) if (activityStartEvent != null) { activityStartEvent(); } } else if(!stepDateNotify && !InPkSeason(TimeUtility.ServerNow)) else if (!stepDateNotify && !InPkSeason(TimeUtility.ServerNow)) { inDateNotify = false; stepDateNotify = true; if(activityEndEvent != null) if (activityEndEvent != null) { activityEndEvent(); } @@ -143,11 +146,11 @@ bool isOpenDay = TimeUtility.OpenDay >= crossServerModel.afterOpenDayOpenCross; if (!isFuncOpen) { if(isTip) if (isTip) { SysNotifyMgr.Instance.ShowTip("FuncLimit_Level"); } return false; } if (!isOpenDay) @@ -169,7 +172,7 @@ this.ZoneCount = pkSeason.ZoneCount; var zoneIDs = pkSeason.ZoneList; this.ZoneIDList = new List<PkZoneInfo>(); for(int i = 0; i < pkSeason.ZoneCount; i++) for (int i = 0; i < pkSeason.ZoneCount; i++) { var pkZone = pkSeason.ZoneList[i]; PkZoneInfo zoneInfo = new PkZoneInfo(); @@ -184,16 +187,16 @@ this.SeasonID = pKSeasonState.SeasonID; this.SeasonState = pKSeasonState.SeasonState; this.MatchState = pKSeasonState.MatchState; if(this.SeasonState != 1 || this.MatchState != 1) this.CrossZoneName = pKSeasonState.CrossZoneName; if (this.SeasonState != 1 || this.MatchState != 1) { if(crossServerModel.IsMatching) if (crossServerModel.IsMatching) { crossServerModel.IsMatching = false; } } if(updateSelfSeasonEvent != null) if (updateSelfSeasonEvent != null) { updateSelfSeasonEvent(); } @@ -205,7 +208,7 @@ zoneInfo = null; if (ZoneIDList == null) return false; for(int i = 0; i < ZoneIDList.Count; i++) for (int i = 0; i < ZoneIDList.Count; i++) { var info = ZoneIDList[i]; if (this.ZoneID == info.ZoneID) @@ -224,10 +227,10 @@ bool isZone = TryGetZoneInfo(out zoneInfo); if (!isZone) return false; for(int i = 0; i < zoneInfo.SeasonList.Count; i++) for (int i = 0; i < zoneInfo.SeasonList.Count; i++) { var info = zoneInfo.SeasonList[i]; if(this.SeasonID == info.SeasonID) if (this.SeasonID == info.SeasonID) { seasonInfo = info; return true; @@ -246,7 +249,7 @@ for (int i = 0; i < zoneInfo.SeasonList.Count; i++) { var info = zoneInfo.SeasonList[i]; if(info.SeasonID > this.SeasonID) if (info.SeasonID > this.SeasonID) { seasonInfo = info; return true; @@ -265,7 +268,7 @@ }; PkSeasonInfo seasonInfo = null; bool isSeason = TryGetSeasonInfo(out seasonInfo); if(isSeason && SeasonState == 1) if (isSeason && SeasonState == 1) { return date >= seasonInfo.StartDate && date <= seasonInfo.EndDate; } @@ -295,10 +298,10 @@ dailyQuestModel.TryGetOpenTime((int)DailyQuestType.CrossServerPk, out _openTime); var dayOfWeek = (int)TimeUtility.ServerNow.DayOfWeek; Dictionary<int, List<HourMinute>> keyValues = null; if(_openTime != null) if (_openTime != null) { keyValues = _openTime.NormalOpenTimes; if(keyValues.ContainsKey(dayOfWeek)) if (keyValues.ContainsKey(dayOfWeek)) { return keyValues[dayOfWeek]; } @@ -314,7 +317,7 @@ } PkSeasonInfo seasonInfo = null; bool isSeason = TryGetSeasonInfo(out seasonInfo); if(isSeason) if (isSeason) { DateTime s = new DateTime(seasonInfo.StartDate.year, seasonInfo.StartDate.month, seasonInfo.StartDate.day); return (time - s).Days; @@ -326,7 +329,7 @@ { PkSeasonInfo seasonInfo = null; bool isSeason = TryGetSeasonInfo(out seasonInfo); if(isSeason) if (isSeason) { if (!seasonInfo.StartDate.Equals(default(OperationDate)) && InPkSeason(TimeUtility.ServerNow)) @@ -344,11 +347,11 @@ return Language.Get("CrossServer107", Language.Get("CrossServer108")); } private string ToDisplayTime(OperationDate start,OperationDate end) private string ToDisplayTime(OperationDate start, OperationDate end) { if(start != end) if (start != end) { return StringUtility.Contact(start.ToDisplay(),"-",end.ToDisplay()); return StringUtility.Contact(start.ToDisplay(), "-", end.ToDisplay()); } return start.ToDisplay(); } System/CrossServerOneVsOne/CrossServerOneVsOneRewardModel.cs
@@ -81,11 +81,11 @@ private int MianOpenLV = 0;//跨服按钮开启条件 public string ZoneName = string.Empty;//赛区名 private int currentId = 0; private int currentId = 0;//获取当前赛区ID private string crossZoneName = string.Empty;//赛区编号 public override void Init() { GetSeasonAward(); GetSegmentReward(); var config = Config.Instance.Get<FuncConfigConfig>("CrossServerIcon").Numerical1; MianOpenLV = int.Parse(config); } @@ -102,6 +102,8 @@ public void OnPlayerLoginOk() { GetSeasonAward(); GetSegmentReward(); crossServerModel.UpdatePkResultEvent += UpdatePkResultEvent; CrossServerOneVsOnePlayerInfo.Instance.UpdatePlayerInfoEvent += UpdatePlayerInfoEvent; GetZoneName(); @@ -159,21 +161,30 @@ WindowCenter.Instance.Open<CrossServerSettlementWin>(); } } public void GetSeasonAward()//段位奖励数据获取 public void GetSeasonAward()//段位奖励数据获取 { // if(currentId) var seasonID = CrossServerOneVsOnePKSeason.Instance.SeasonID; if (CrossServerOneVsOnePKSeason.Instance.CrossZoneName != null) { crossZoneName = CrossServerOneVsOnePKSeason.Instance.CrossZoneName; } if (seasonID == 0) { seasonID +=1; seasonID += 1; } if (currentId == seasonID && SegmentRewardDic.Count != 0) { return; } var configPK = Config.Instance.GetAllValues<CrossRealmPKDanAwardConfig>(); // var config = Config.Instance.GetAllValues<CrossServerArenaConfig>(); SegmentRewardDic.Clear(); for (int i = 0; i < configPK.Count; i++) { var _config = configPK[i]; if (!SegmentRewardDic.ContainsKey(_config.DanLV) && _config.SeasonID== seasonID) { bool result = crossZoneName.Equals(_config.CrossZoneName); if (!SegmentRewardDic.ContainsKey(_config.DanLV) && _config.SeasonID == seasonID && result) { SeasonAwardClass seasonAwardClass = new SeasonAwardClass(); seasonAwardClass.DanLv = _config.DanLV; var crossServerArena = Config.Instance.Get<CrossServerArenaConfig>(_config.DanLV); @@ -181,7 +192,7 @@ { seasonAwardClass.Name = crossServerArena.Name; seasonAwardClass.Score = crossServerArena.LVUpScore; } } var _jsonData = LitJson.JsonMapper.ToObject(_config.DanLVAwardList); List<Item_Class> itemClassList = new List<Item_Class>(); for (int j = 0; j < _jsonData.Count; j++) @@ -200,31 +211,57 @@ SegmentRewardDic.Add(_config.DanLV, seasonAwardClass); } } currentId = seasonID; } private void GetSegmentReward() public void GetSegmentReward()//赛季奖励 { var CrossRealmPKAward = Config.Instance.Get<FuncConfigConfig>("CrossRealmPKAward"); ImpactRankModel.RankAwardItem _award = new ImpactRankModel.RankAwardItem(); var _jsonData = LitJson.JsonMapper.ToObject(CrossRealmPKAward.Numerical3); foreach (string key in _jsonData.Keys) var seasonID = CrossServerOneVsOnePKSeason.Instance.SeasonID; if (CrossServerOneVsOnePKSeason.Instance.CrossZoneName != null) { var _ranking = int.Parse(key); var _itemArray = LitJson.JsonMapper.ToObject<int[][]>(_jsonData[key].ToJson()); for (int j = 0; j < _itemArray.Length; j++) { _award.Add(_ranking, new AwardItem() { item = new Item(_itemArray[j][0], _itemArray[j][1]), isBind = _itemArray[j][2], }); } crossZoneName = CrossServerOneVsOnePKSeason.Instance.CrossZoneName; } SeasonRewardDic = _award; var config = Config.Instance.GetAllValues<CrossServerArenaConfig>(); for (int i = 0; i < config.Count; i++) if (seasonID == 0) { var _config = config[i]; if (!SeasonRewardConfigDic.ContainsKey(_config.DanLV)) seasonID += 1; } if (currentId == seasonID && SeasonRewardConfigDic.Count != 0) { return; } var crossRealmPKOrderAward = Config.Instance.GetAllValues<CrossRealmPKOrderAwardConfig>(); for (int i = 0; i < crossRealmPKOrderAward.Count; i++) { var _config = crossRealmPKOrderAward[i]; bool result = crossZoneName.Equals(_config.CrossZoneName); if (seasonID == _config.SeasonID && result) { ImpactRankModel.RankAwardItem _award = new ImpactRankModel.RankAwardItem(); var _jsonData = LitJson.JsonMapper.ToObject(_config.SeasonOrderAward); foreach (string key in _jsonData.Keys) { var _ranking = int.Parse(key); var _itemArray = LitJson.JsonMapper.ToObject<int[][]>(_jsonData[key].ToJson()); for (int j = 0; j < _itemArray.Length; j++) { _award.Add(_ranking, new AwardItem() { item = new Item(_itemArray[j][0], _itemArray[j][1]), isBind = _itemArray[j][2], }); } } SeasonRewardDic = _award; } } //--- SeasonRewardConfigDic.Clear(); var configPK = Config.Instance.GetAllValues<CrossRealmPKDanAwardConfig>(); for (int i = 0; i < configPK.Count; i++) { var _config = configPK[i]; bool result = crossZoneName.Equals(_config.CrossZoneName); if (!SeasonRewardConfigDic.ContainsKey(_config.DanLV) && _config.SeasonID == seasonID && result) { var _jsonDataC = LitJson.JsonMapper.ToObject(_config.SeasonAwardList); List<Item_Class> itemClassList = new List<Item_Class>(); @@ -243,6 +280,7 @@ SeasonRewardConfigDic.Add(_config.DanLV, itemClassList); } } currentId = seasonID; } public void CrossRealmPKAwardState(HC102_tagMCCrossRealmPKAwardState info)//c102跨服PK玩家奖励记录 { @@ -441,7 +479,8 @@ } private static int m_PkType = 0; public static int PkType { public static int PkType { get { return m_PkType; } set { m_PkType = value; } } System/CrossServerOneVsOne/SeasonRewardWin.cs
@@ -38,6 +38,7 @@ protected override void OnPreOpen() { crossServerRewardModel.GetSegmentReward(); IsInquireReward(); OnCreateGridLineCell(m_ScrollerController); m_ScrollerController.JumpIndex(JumpIndex()); System/CrossServerOneVsOne/SegmentRewardWin.cs
@@ -33,6 +33,7 @@ protected override void OnPreOpen() { crossServerRewardModel.GetSeasonAward(); ToAddSorting(); OnCreateGridLineCell(m_ScrollerController); m_ScrollerController.JumpIndex(JumpIndex());