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/Config/DungeonMixServerStateTimeConfig.cs
New file @@ -0,0 +1,62 @@ //-------------------------------------------------------- // [Author]: 第二世界 // [ Date ]: Thursday, February 14, 2019 //-------------------------------------------------------- using UnityEngine; using System; namespace TableConfig { public partial class DungeonMixServerStateTimeConfig : ConfigBase { public int ID { get ; private set ; } public int MixServerDay { get ; private set ; } public int DataMapID { get ; private set ; } public int StartHour { get ; private set ; } public int StartMinute { get ; private set ; } public int EndHour { get ; private set ; } public int EndMinute { get ; private set ; } public int CanEnter { get ; private set ; } public int StateValue { get ; private set ; } public override string getKey() { return ID.ToString(); } public override void Parse() { try { ID=IsNumeric(rawContents[0]) ? int.Parse(rawContents[0]):0; MixServerDay=IsNumeric(rawContents[1]) ? int.Parse(rawContents[1]):0; DataMapID=IsNumeric(rawContents[2]) ? int.Parse(rawContents[2]):0; StartHour=IsNumeric(rawContents[3]) ? int.Parse(rawContents[3]):0; StartMinute=IsNumeric(rawContents[4]) ? int.Parse(rawContents[4]):0; EndHour=IsNumeric(rawContents[5]) ? int.Parse(rawContents[5]):0; EndMinute=IsNumeric(rawContents[6]) ? int.Parse(rawContents[6]):0; CanEnter=IsNumeric(rawContents[7]) ? int.Parse(rawContents[7]):0; StateValue=IsNumeric(rawContents[8]) ? int.Parse(rawContents[8]):0; } catch (Exception ex) { DebugEx.Log(ex); } } } } Core/GameEngine/Model/Config/DungeonMixServerStateTimeConfig.cs.meta
New file @@ -0,0 +1,12 @@ fileFormatVersion: 2 guid: 064382600d4565645a1b561e934fc3fa timeCreated: 1550111985 licenseType: Pro MonoImporter: serializedVersion: 2 defaultReferences: [] executionOrder: 0 icon: {instanceID: 0} userData: assetBundleName: assetBundleVariant: Core/GameEngine/Model/ConfigManager.cs
@@ -238,6 +238,8 @@ AddAsyncTask<HolidayHomingPointConfig>(); AddAsyncTask<LoginRewardConfig>(); AddAsyncTask<CrossRealmPKDanAwardConfig>(); AddAsyncTask<DungeonMixServerStateTimeConfig>(); AddAsyncTask<CrossRealmPKOrderAwardConfig>(); while (!AllCompleted()) { var completedCount = 0; Core/GameEngine/Model/TelPartialConfig/DungeonMixServerStateTimeConfig.cs
New file @@ -0,0 +1,36 @@ using System.Collections; using System.Collections.Generic; using UnityEngine; namespace TableConfig { public partial class DungeonMixServerStateTimeConfig : ConfigBase, IConfigPostProcess { static Dictionary<int, List<DungeonMixServerStateTimeConfig>> dungeonTimes = new Dictionary<int, List<DungeonMixServerStateTimeConfig>>(); public void OnConfigParseCompleted() { if (!dungeonTimes.ContainsKey(DataMapID)) { dungeonTimes[DataMapID] = new List<DungeonMixServerStateTimeConfig>(); } dungeonTimes[DataMapID].Add(this); } public static List<DungeonMixServerStateTimeConfig> GetDungeonTimes(int dataMapId) { if (dungeonTimes.ContainsKey(dataMapId)) { return dungeonTimes[dataMapId]; } else { return null; } } } } Core/GameEngine/Model/TelPartialConfig/DungeonMixServerStateTimeConfig.cs.meta
New file @@ -0,0 +1,12 @@ fileFormatVersion: 2 guid: cb3c639467226e14aa8a31413a42dbe2 timeCreated: 1550112217 licenseType: Pro MonoImporter: serializedVersion: 2 defaultReferences: [] executionOrder: 0 icon: {instanceID: 0} userData: assetBundleName: assetBundleVariant: 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()); System/FairyAu/FairyLeagueModel.cs
@@ -18,6 +18,30 @@ { get { if (TimeUtility.IsMixServer && TimeUtility.MixOpenDay < GeneralDefine.mixServerCustomDays) { var week = GetMixServerWeek(TimeUtility.MixOpenDay); var lastWeek = GetMixServerWeek(GeneralDefine.mixServerCustomDays - 1); if (mixServerWeekTimes.ContainsKey(week) && (week < lastWeek || TimeUtility.MixOpenDay <= mixServerWeekTimes[week].lastMixServerDay)) { return mixServerWeekTimes[week]; } if (week < lastWeek) { return null; } else if (week == lastWeek) { var date = TimeUtility.ServerNow.AddTicks(-TimeUtility.MixOpenDay * TimeSpan.TicksPerDay); var lastDayOfWeek = date.AddTicks((GeneralDefine.mixServerCustomDays - 1) * TimeSpan.TicksPerDay).DayOfWeek; var dayOfWeek = lastDayOfWeek == DayOfWeek.Sunday ? 7 : (int)lastDayOfWeek; if (dayOfWeek >= fairyLeagueWeekTime.rings[0].dayOfWeek) { return null; } } } var openServerWeekDay = TimeUtility.openServerDayOfWeek == DayOfWeek.Sunday ? 7 : (int)TimeUtility.openServerDayOfWeek; if (specialLeagueTimes.ContainsKey(openServerWeekDay)) { @@ -40,6 +64,14 @@ { get { if (TimeUtility.IsMixServer && TimeUtility.MixOpenDay < GeneralDefine.mixServerCustomDays) { var week = GetMixServerWeek(TimeUtility.MixOpenDay); if (mixServerWeekTimes.ContainsKey(week + 1)) { return mixServerWeekTimes[week + 1]; } } var openServerWeekDay = TimeUtility.openServerDayOfWeek == DayOfWeek.Sunday ? 7 : (int)TimeUtility.openServerDayOfWeek; if (specialLeagueTimes.ContainsKey(openServerWeekDay)) { @@ -140,6 +172,7 @@ { ClearFairyWarHelp(); frontFairyList.Clear(); mixServerWeekTimes.Clear(); fairyLeagueFairyId = 0; fairyLeagueFairyName = string.Empty; serverInited = false; @@ -151,6 +184,7 @@ public void OnPlayerLoginOk() { ParseMixServerLeagueTimes(); ResetFairyLeagueTime(); cacheLeagueStage = fairyLeagueStage; CheckFairyLeagueData(); @@ -161,7 +195,11 @@ private void OnServerOpenDayRefresh() { ParseMixServerLeagueTimes(); ResetFairyLeagueTime(); cacheLeagueStage = fairyLeagueStage; CheckFairyLeagueData(); UpdateRedpoint(); } private void DayEvent() @@ -248,6 +286,7 @@ readonly List<int> fairyLeagueStateValues = new List<int>() { 11, 12, 13, 21, 22, 23 }; FairyLeagueWeekTime fairyLeagueWeekTime = new FairyLeagueWeekTime(); Dictionary<int, Dictionary<int, FairyLeagueWeekTime>> specialLeagueTimes = new Dictionary<int, Dictionary<int, FairyLeagueWeekTime>>(); Dictionary<int, FairyLeagueWeekTime> mixServerWeekTimes = new Dictionary<int, FairyLeagueWeekTime>(); public Dictionary<int,int> leagueNoticeWeapons { get; private set; } private void ParseConfig() { @@ -431,6 +470,41 @@ public bool TryGetCrystalRate(int _npcId, out float _rate) { return crystalRateDict.TryGetValue(_npcId, out _rate); } void ParseMixServerLeagueTimes() { mixServerWeekTimes.Clear(); if (!TimeUtility.IsMixServer) { return; } var configs = DungeonMixServerStateTimeConfig.GetDungeonTimes(FAIRY_LEAGUE_DUNGEON); foreach (var config in configs) { var week = GetMixServerWeek(config.MixServerDay - 1); FairyLeagueWeekTime leagueTime; if (!mixServerWeekTimes.TryGetValue(week, out leagueTime)) { leagueTime = new FairyLeagueWeekTime(); mixServerWeekTimes.Add(week, leagueTime); } var date = TimeUtility.ServerNow.AddTicks(-TimeUtility.MixOpenDay * TimeSpan.TicksPerDay); var dayOfWeek = date.AddTicks((config.MixServerDay - 1) * TimeSpan.TicksPerDay).DayOfWeek; leagueTime.AddStage(config, dayOfWeek == DayOfWeek.Sunday ? 7 : (int)dayOfWeek); } foreach (var weekTime in mixServerWeekTimes.Values) { weekTime.Sort(); } } int GetMixServerWeek(int mixDays) { var date = TimeUtility.ServerNow.AddTicks(-TimeUtility.MixOpenDay * TimeSpan.TicksPerDay); var dayOfWeek = date.DayOfWeek == DayOfWeek.Sunday ? 7 : (int)date.DayOfWeek; var week = Mathf.CeilToInt((mixDays - (7 - dayOfWeek)) / (float)7); return week; } #endregion @@ -1186,6 +1260,14 @@ } } public int lastMixServerDay { get { return rings[rings.Count - 1].mixServerDay; } } public void AddStage(DungeonStateTimeConfig config) { var ring = rings.Find((x) => @@ -1202,6 +1284,22 @@ } public void AddStage(DungeonSpecialStateTimeConfig config, int dayOfWeek) { var ring = rings.Find((x) => { return x.dayOfWeek == dayOfWeek; }); if (ring == null) { ring = new Ring(); rings.Add(ring); ring.dayOfWeek = dayOfWeek; } ring.ParseConfig(config, dayOfWeek); } public void AddStage(DungeonMixServerStateTimeConfig config, int dayOfWeek) { var ring = rings.Find((x) => { @@ -1280,6 +1378,8 @@ public int openServerDay { get; private set; } public int mixServerDay { get; private set; } public void Sort() { sessions.Sort((Session x, Session y) => @@ -1310,6 +1410,23 @@ public void ParseConfig(DungeonSpecialStateTimeConfig config, int dayOfWeek) { openServerDay = config.OpenServerDay; var session = sessions.Find((x) => { return x.session == (config.StateValue < 20 ? 0 : 1); }); if (session == null) { session = new Session(); session.session = config.StateValue < 20 ? 0 : 1; sessions.Add(session); } session.ParseConfig(config, dayOfWeek); } public void ParseConfig(DungeonMixServerStateTimeConfig config, int dayOfWeek) { mixServerDay = config.MixServerDay - 1; var session = sessions.Find((x) => { @@ -1415,6 +1532,21 @@ stages.Add(stage); } public void ParseConfig(DungeonMixServerStateTimeConfig config, int dayOfWeek) { var state = config.StateValue % 10; var stage = new Stage() { stage = state == 1 ? FairyLeagueStage.Grouping : (state == 2 ? FairyLeagueStage.Fight : FairyLeagueStage.Over), dayOfWeek = dayOfWeek, startHour = config.StartHour, endHour = config.EndHour, startMinute = config.StartMinute, endMinute = config.EndMinute }; stages.Add(stage); } public bool InSession(DateTime time) { var groupStage = stages.Find((x) => System/GeneralConfig/GeneralDefine.cs
@@ -174,6 +174,7 @@ public static int crossServerOneVsOneOpenDay { get; private set; } public static int UISpringDecorate { get; private set; } public static Dictionary<int, List<int>> skillAttrIDDict { get; private set; } public static int mixServerCustomDays { get; private set; } public static void Init() { @@ -703,6 +704,8 @@ crossServerOneVsOneOpenDay = GetInt("CrossRealmCfg"); UISpringDecorate = GetInt("UISpringDecorate"); mixServerCustomDays = GetInt("MixServer"); } catch (Exception ex) {