Core/Editor/AssetBundleBrowser/AssetBundleBuildTab.cs
@@ -20,10 +20,8 @@ //private string m_OutputPath = string.Empty; //[SerializeField] //private bool m_UseDefaultPath = true; private string m_streamingPath { get { private string m_streamingPath { get { switch (m_UserData.m_BuildTarget) { case ValidBuildTarget.Android: @@ -73,14 +71,12 @@ [SerializeField] int m_Version; public string ApkOutputPath { public string ApkOutputPath { get { return LocalSave.GetString("APKOutPutPath"); } set { LocalSave.SetString("APKOutPutPath", value); } } public string publishers { public string publishers { get { return LocalSave.GetString("APKPublishers"); } set { LocalSave.SetString("APKPublishers", value); } } @@ -622,32 +618,35 @@ AssetsVersionMaker.WriteAssetsVersionFile(Path.Combine(Directory.GetParent(Application.dataPath).FullName, m_UserData.m_OutputPath), fileInfos); } static int packageIndex { static int packageIndex { get { return LocalSave.GetInt("ClientPackageIndex", 1); } set { LocalSave.SetInt("ClientPackageIndex", value); } } private void ExecuteBuildClientPackageIpaAppend() { packageIndex++; var outputPath = Application.dataPath.Replace("Assets", m_UserData.m_OutputPath); ClientPackage.BuildPublishers(ClientPackage.SDK_PLUGIN_PROJECT, outputPath, ApkOutputPath, publishers, packageIndex, false, false); } private void ExecuteBuildClientPackageIpaReplace() { packageIndex++; var outputPath = Application.dataPath.Replace("Assets", m_UserData.m_OutputPath); ClientPackage.BuildPublishers(ClientPackage.SDK_PLUGIN_PROJECT, outputPath, ApkOutputPath, publishers, packageIndex, false, true); } private void ExecuteBuildClientPackageApk() { packageIndex++; var outputPath = Application.dataPath.Replace("Assets", m_UserData.m_OutputPath); ClientPackage.BuildPublishers(ClientPackage.SDK_PLUGIN_PROJECT, outputPath, ApkOutputPath, publishers, packageIndex, false, false); } private void ExecuteBuildClientPackageDevelopApk() { packageIndex++; var outputPath = Application.dataPath.Replace("Assets", m_UserData.m_OutputPath); ClientPackage.BuildPublishers(ClientPackage.SDK_PLUGIN_PROJECT, outputPath, ApkOutputPath, publishers, packageIndex, true, false); } Core/GameEngine/Model/Config/DailyQuestSpecialOpenTimeConfig.cs
New file @@ -0,0 +1,53 @@ //-------------------------------------------------------- // [Author]: 第二世界 // [ Date ]: Friday, September 07, 2018 //-------------------------------------------------------- using UnityEngine; using System; namespace TableConfig { public partial class DailyQuestSpecialOpenTimeConfig : ConfigBase { public int ID { get ; private set ; } public int OpenServerWeek { get ; private set ; } public int OpenServerDay { get ; private set ; } public int DailyQuestID { get ; private set ; } public string TimeList { get ; private set; } public int Duration { get ; private set ; } public override string getKey() { return ID.ToString(); } public override void Parse() { try { ID=IsNumeric(rawContents[0]) ? int.Parse(rawContents[0]):0; OpenServerWeek=IsNumeric(rawContents[1]) ? int.Parse(rawContents[1]):0; OpenServerDay=IsNumeric(rawContents[2]) ? int.Parse(rawContents[2]):0; DailyQuestID=IsNumeric(rawContents[3]) ? int.Parse(rawContents[3]):0; TimeList = rawContents[4].Trim(); Duration=IsNumeric(rawContents[5]) ? int.Parse(rawContents[5]):0; } catch (Exception ex) { DebugEx.Log(ex); } } } } Core/GameEngine/Model/Config/DailyQuestSpecialOpenTimeConfig.cs.meta
New file @@ -0,0 +1,12 @@ fileFormatVersion: 2 guid: f9b9b217bedba6a4ba3131db2858da0d timeCreated: 1536327254 licenseType: Pro MonoImporter: serializedVersion: 2 defaultReferences: [] executionOrder: 0 icon: {instanceID: 0} userData: assetBundleName: assetBundleVariant: Core/GameEngine/Model/Config/DungeonSpecialStateTimeConfig.cs
New file @@ -0,0 +1,65 @@ //-------------------------------------------------------- // [Author]: 第二世界 // [ Date ]: Friday, September 07, 2018 //-------------------------------------------------------- using UnityEngine; using System; namespace TableConfig { public partial class DungeonSpecialStateTimeConfig : ConfigBase { public int ID { get ; private set ; } public int OpenServerWeek { get ; private set ; } public int OpenServerDay { 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; OpenServerWeek=IsNumeric(rawContents[1]) ? int.Parse(rawContents[1]):0; OpenServerDay=IsNumeric(rawContents[2]) ? int.Parse(rawContents[2]):0; DataMapID=IsNumeric(rawContents[3]) ? int.Parse(rawContents[3]):0; StartHour=IsNumeric(rawContents[4]) ? int.Parse(rawContents[4]):0; StartMinute=IsNumeric(rawContents[5]) ? int.Parse(rawContents[5]):0; EndHour=IsNumeric(rawContents[6]) ? int.Parse(rawContents[6]):0; EndMinute=IsNumeric(rawContents[7]) ? int.Parse(rawContents[7]):0; CanEnter=IsNumeric(rawContents[8]) ? int.Parse(rawContents[8]):0; StateValue=IsNumeric(rawContents[9]) ? int.Parse(rawContents[9]):0; } catch (Exception ex) { DebugEx.Log(ex); } } } } Core/GameEngine/Model/Config/DungeonSpecialStateTimeConfig.cs.meta
New file @@ -0,0 +1,12 @@ fileFormatVersion: 2 guid: ecb895ff4d37765409261b28c3fb5009 timeCreated: 1536327385 licenseType: Pro MonoImporter: serializedVersion: 2 defaultReferences: [] executionOrder: 0 icon: {instanceID: 0} userData: assetBundleName: assetBundleVariant: Core/GameEngine/Model/ConfigManager.cs
@@ -41,6 +41,7 @@ AddAsyncTask<IconConfig>(); AddAsyncTask<ItemConfig>(); AddAsyncTask<SkillConfig>(); AddAsyncTask<DirtyNameConfig>(); AddAsyncTask<TASKINFOConfig>(); AddAsyncTask<mapnpcConfig>(); AddAsyncTask<LoginSeverListConfig>(); @@ -190,7 +191,9 @@ AddAsyncTask<TrialRewardsConfig>(); AddAsyncTask<DogzEquipPlusConfig>(); AddAsyncTask<FairyGrabBossConfig>(); AddAsyncTask<DirtyNameConfig>(); AddAsyncTask<DungeonSpecialStateTimeConfig>(); AddAsyncTask<DailyQuestSpecialOpenTimeConfig>(); while (!AllCompleted()) { var completedCount = 0; Core/GameEngine/Model/Player/Fairy/PlayerFairyData.cs
@@ -284,7 +284,11 @@ //Z-xw写 playerFairyAuTreasureData._DicfamilyStoreItem.Clear(); } if (OnRefreshFairyMine != null) OnRefreshFairyMine(); if (OnRefreshFairyMine != null) { OnRefreshFairyMine(); } UpdateRequestRedpoint(); fairyBossModel.UpdateRedPoint(); } @@ -310,8 +314,8 @@ hasFairy = false; fairy = null; mine = null; applyList.Clear(); ChatCtrl.Inst.ClearChatInfo(ChatInfoType.Fairy); } #endregion @@ -335,8 +339,16 @@ apply.IsOnLine = vNetData.MemberInfo[i].IsOnLine; applyList.Add(apply); } if (OnRefreshApplyList != null) OnRefreshApplyList(); if (IsCanFunc(LimitFunc.CanKick)) if (OnRefreshApplyList != null) { OnRefreshApplyList(); } UpdateRequestRedpoint(); } void UpdateRequestRedpoint() { if (HasFairy && IsCanFunc(LimitFunc.CanKick)) { applyRedpoint.state = applyList.Count > 0 ? RedPointState.Simple : RedPointState.None; } Core/GameEngine/Model/TelPartialConfig/DailyQuestSpecialOpenTimeConfig.cs
New file @@ -0,0 +1,38 @@ using System.Collections; using System.Collections.Generic; using UnityEngine; namespace TableConfig { public partial class DailyQuestSpecialOpenTimeConfig : ConfigBase, IConfigPostProcess { static Dictionary<int, List<DailyQuestSpecialOpenTimeConfig>> dailyQuestTimes = new Dictionary<int, List<DailyQuestSpecialOpenTimeConfig>>(); public void OnConfigParseCompleted() { if (!dailyQuestTimes.ContainsKey(DailyQuestID)) { dailyQuestTimes[DailyQuestID] = new List<DailyQuestSpecialOpenTimeConfig>(); } dailyQuestTimes[DailyQuestID].Add(this); } public static List<DailyQuestSpecialOpenTimeConfig> GetDailyQuestTimes(int dailyQuestId) { if (dailyQuestTimes.ContainsKey(dailyQuestId)) { return dailyQuestTimes[dailyQuestId]; } else { return null; } } } } Core/GameEngine/Model/TelPartialConfig/DailyQuestSpecialOpenTimeConfig.cs.meta
New file @@ -0,0 +1,12 @@ fileFormatVersion: 2 guid: 1cfbe263bb01efc489f714f48a565cd1 timeCreated: 1536327708 licenseType: Pro MonoImporter: serializedVersion: 2 defaultReferences: [] executionOrder: 0 icon: {instanceID: 0} userData: assetBundleName: assetBundleVariant: Core/GameEngine/Model/TelPartialConfig/DungeonSpecialStateTimeConfig.cs
New file @@ -0,0 +1,36 @@ using System.Collections; using System.Collections.Generic; using UnityEngine; namespace TableConfig { public partial class DungeonSpecialStateTimeConfig : ConfigBase, IConfigPostProcess { static Dictionary<int, List<DungeonSpecialStateTimeConfig>> dungeonTimes = new Dictionary<int, List<DungeonSpecialStateTimeConfig>>(); public void OnConfigParseCompleted() { if (!dungeonTimes.ContainsKey(DataMapID)) { dungeonTimes[DataMapID] = new List<DungeonSpecialStateTimeConfig>(); } dungeonTimes[DataMapID].Add(this); } public static List<DungeonSpecialStateTimeConfig> GetDungeonTimes(int dataMapId) { if (dungeonTimes.ContainsKey(dataMapId)) { return dungeonTimes[dataMapId]; } else { return null; } } } } Core/GameEngine/Model/TelPartialConfig/DungeonSpecialStateTimeConfig.cs.meta
New file @@ -0,0 +1,12 @@ fileFormatVersion: 2 guid: 6127c3f2b622e014186a9df283c45e49 timeCreated: 1536326200 licenseType: Pro MonoImporter: serializedVersion: 2 defaultReferences: [] executionOrder: 0 icon: {instanceID: 0} userData: assetBundleName: assetBundleVariant: Core/NetworkPackage/ServerPack/HA0_Sys/HA005_tagOpenServerDay.cs
@@ -1,21 +1,26 @@ using UnityEngine; using System.Collections; //A0 05 同步开服天数 #tagOpenServerDay public class HA005_tagOpenServerDay : GameNetPackBasic { public ushort Day; // 已开服天数,从0开始 public byte IsMixServer; //是否是合服服务器 public ushort MixDay; // 已合服天数,从0开始 public HA005_tagOpenServerDay () { _cmd = (ushort)0xA005; } public override void ReadFromBytes (byte[] vBytes) { TransBytes (out Day, vBytes, NetDataType.WORD); TransBytes (out IsMixServer, vBytes, NetDataType.BYTE); TransBytes (out MixDay, vBytes, NetDataType.WORD); } } //A0 05 同步开服天数 #tagOpenServerDay public class HA005_tagOpenServerDay : GameNetPackBasic { public ushort Day; // 已开服天数,从0开始 public byte IsMixServer; //是否是合服服务器 public ushort MixDay; // 已合服天数,从0开始 public string OpenServerTime; //开服时间yyyy-MM-dd HH:mm:ss public HA005_tagOpenServerDay() { _cmd = (ushort)0xA005; } public override void ReadFromBytes(byte[] vBytes) { TransBytes(out Day, vBytes, NetDataType.WORD); TransBytes(out IsMixServer, vBytes, NetDataType.BYTE); TransBytes(out MixDay, vBytes, NetDataType.WORD); TransBytes(out OpenServerTime, vBytes, NetDataType.Chars, 19); } } Fight/Stage/Dungeon/DungeonStage.cs
@@ -3,6 +3,7 @@ using System.Collections.Generic; using TableConfig; using System.Collections; using System; public class DungeonStage : Stage { @@ -10,8 +11,7 @@ public static MapType CurrentMapType; HeavenBattleModel _heavenModel; HeavenBattleModel heavenModel { HeavenBattleModel heavenModel { get { return _heavenModel ?? (_heavenModel = ModelCenter.Instance.GetModel<HeavenBattleModel>()); } } @@ -85,6 +85,7 @@ switch (CurrentMapType) { case MapType.OpenCountry: OnEnterOpenCountry(); break; default: OnEnterNormalDungeon(); @@ -158,6 +159,17 @@ GAMgr.Instance.DoLateUpdate(); } private void OnEnterOpenCountry() { var teamModel = ModelCenter.Instance.GetModel<TeamModel>(); var isPreparing = !teamModel.teamPrepare.IsAllOk() && !teamModel.teamPrepare.isError && !teamModel.teamPrepare.IsReject(); var prepareEndTime = teamModel.prepareBeginTime + new TimeSpan(GeneralConfig.Instance.teamReadyTime * TimeSpan.TicksPerSecond); if (prepareEndTime > DateTime.Now) { WindowCenter.Instance.Open<TeamPrepareWin>(); } } private void OnEnterNormalDungeon() { WindowCenter.Instance.Open<DungeonFightWin>(); System/DailyQuest/DailyQuestBehaviour.cs
@@ -197,8 +197,7 @@ m_Locked.gameObject.SetActive(state == DailyQuestModel.DailyQuestState.Locked); m_UnLockCondition.gameObject.SetActive(state == DailyQuestModel.DailyQuestState.Locked); m_Supplementary.gameObject.SetActive(state == DailyQuestModel.DailyQuestState.ServerForbid || state == DailyQuestModel.DailyQuestState.OutTime); m_Supplementary.gameObject.SetActive(state == DailyQuestModel.DailyQuestState.OutTime); m_PracticePoint.gameObject.SetActive(state == DailyQuestModel.DailyQuestState.Normal || state == DailyQuestModel.DailyQuestState.CanBuyTimes); m_AssistPoint.gameObject.SetActive(state == DailyQuestModel.DailyQuestState.Completed); @@ -209,24 +208,6 @@ { case DailyQuestModel.DailyQuestState.Locked: m_UnLockCondition.text = DailyQuestModel.GetDailyQuestUnLockDescription(data.id); break; case DailyQuestModel.DailyQuestState.ServerForbid: DailyQuestOpenTime openTime1; if (model.TryGetOpenTime(data.id, out openTime1)) { if (openTime1.openServerWeek > 0) { m_Supplementary.text = Language.Get("DailyQuest_ThatWeek", openTime1.openServerWeek); } else { m_Supplementary.text = Language.Get("DailyQuest_Day", openTime1.openServerDay); } } else { m_Supplementary.text = ""; } break; case DailyQuestModel.DailyQuestState.OutTime: DailyQuestOpenTime openTime2; System/DailyQuest/DailyQuestCalendarColumn.cs
@@ -17,10 +17,7 @@ [SerializeField] Image m_Sign; [SerializeField] Text[] m_Quests; DailyQuestModel m_Model; DailyQuestModel model { get { return m_Model ?? (m_Model = ModelCenter.Instance.GetModel<DailyQuestModel>()); } } DailyQuestModel model { get { return ModelCenter.Instance.GetModel<DailyQuestModel>(); } } public void Display() { @@ -39,7 +36,7 @@ questNameArray[j] = config.Title; } var content = string.Join(",\r\n", questNameArray); var content = string.Join("\r\n", questNameArray); m_Quests[i].text = content; } else System/DailyQuest/DailyQuestData.cs
@@ -5,6 +5,7 @@ using System.Text.RegularExpressions; using Snxxz.UI; using TableConfig; using LitJson; public class DailyQuestData { @@ -37,7 +38,8 @@ public int id { get; private set; } bool m_Got = false; public bool got { public bool got { get { return this.m_Got; } set { this.m_Got = value; } } @@ -48,23 +50,25 @@ } } public struct DailyQuestOpenTime public class DailyQuestOpenTime { public int id; public bool always; public int openServerWeek; public int openServerDay; public Dictionary<int, List<HourMinute>> openTimes; //常规的活动时间,key是星期x Dictionary<int, List<HourMinute>> openTimes = new Dictionary<int, List<HourMinute>>(); //开服前2周的活动时间,key1是开服日的星期,key2是开服第几天 Dictionary<int, Dictionary<int, List<HourMinute>>> specificOpenTimes = new Dictionary<int, Dictionary<int, List<HourMinute>>>(); public DailyQuestOpenTime(int _id, string _timeString, int _duration) public DailyQuestOpenTime(int _id) { this.id = _id; this.openServerWeek = 0; this.openServerDay = 0; var matches = Regex.Matches(_timeString, "\\\"[0-9]\\\":\\[[0-9|,|\\[|\\]]+"); } public void ParseQuestNormalOpenTime(string timeString, int duration) { var matches = Regex.Matches(timeString, "\\\"[0-9]\\\":\\[[0-9|,|\\[|\\]]+"); always = matches.Count == 0; openTimes = new Dictionary<int, List<HourMinute>>(); for (int i = 0; i < matches.Count; i++) { @@ -82,7 +86,7 @@ for (int j = 0; j < subMatches.Count; j++) { tempHourMinutes.Add(new HourMinute(subMatches[j].Value, _duration)); tempHourMinutes.Add(new HourMinute(subMatches[j].Value, duration)); } tempHourMinutes.Sort((HourMinute a, HourMinute b) => { return HourMinute.Compare(a, b); }); @@ -99,35 +103,56 @@ for (int j = 0; j < subMatches.Count; j++) { hourMinutes.Add(new HourMinute(subMatches[j].Value, _duration)); hourMinutes.Add(new HourMinute(subMatches[j].Value, duration)); } hourMinutes.Sort((HourMinute a, HourMinute b) => { return HourMinute.Compare(a, b); }); } } } public DailyQuestOpenTime(int _id, List<DungeonStateTimeConfig> _configs) public void ParseQuestSpecificOpenTimes(List<DailyQuestSpecialOpenTimeConfig> configs) { id = _id; always = _configs == null || _configs.Count == 0; openTimes = new Dictionary<int, List<HourMinute>>(); if (configs == null) { return; } this.openServerWeek = 0; this.openServerDay = 0; foreach (var config in configs) { var openDayWeek = config.OpenServerWeek % 7; if (!specificOpenTimes.ContainsKey(openDayWeek)) { specificOpenTimes[openDayWeek] = new Dictionary<int, List<HourMinute>>(); } var dayIndexOpenTimes = specificOpenTimes[openDayWeek]; var dayIndex = config.OpenServerDay; if (!dayIndexOpenTimes.ContainsKey(dayIndex)) { dayIndexOpenTimes[dayIndex] = new List<HourMinute>(); } var matches = Regex.Matches(config.TimeList, "\\[[0-9]{1,2},[0-9]{1,2}\\]"); var hourMinutes = dayIndexOpenTimes[dayIndex]; for (int i = 0; i < matches.Count; i++) { var temp = matches[i].Value; hourMinutes.Add(new HourMinute(temp, config.Duration)); } } } public void ParseDungeonNormalOpenTimes(List<DungeonStateTimeConfig> configs) { always = configs == null || configs.Count == 0; if (!always) { if (_configs.Count > 0) for (int i = 0; i < configs.Count; i++) { this.openServerWeek = _configs[0].OpenServerWeek; this.openServerDay = _configs[0].OpenServerDay; } for (int i = 0; i < _configs.Count; i++) { var config = _configs[i]; var config = configs[i]; if (config.StartWeekday == 0 && config.EndWeekday == 0) { for (int j = 0; j < 7; j++) @@ -155,16 +180,37 @@ } } public void ParseDungeonSpecificOpenTimes(List<DungeonSpecialStateTimeConfig> configs) { if (configs == null) { return; } foreach (var config in configs) { var openDayWeek = config.OpenServerWeek % 7; if (!specificOpenTimes.ContainsKey(openDayWeek)) { specificOpenTimes[openDayWeek] = new Dictionary<int, List<HourMinute>>(); } var dayIndexOpenTimes = specificOpenTimes[openDayWeek]; var dayIndex = config.OpenServerDay; if (!dayIndexOpenTimes.ContainsKey(dayIndex)) { dayIndexOpenTimes[dayIndex] = new List<HourMinute>(); } var hourMinutes = dayIndexOpenTimes[dayIndex]; hourMinutes.Add(new HourMinute(config.StartHour, config.StartMinute, config.EndHour, config.EndMinute)); } } public bool IsValidServerOpenTime() { if (TimeUtility.OpenDay >= this.openServerDay && TimeUtility.OpenWeekCnt >= this.openServerWeek) { return true; } else { return false; } return true; } public bool InOpenTime() @@ -174,14 +220,12 @@ return true; } var dayOfWeek = (int)TimeUtility.ServerNow.DayOfWeek; if (!openTimes.ContainsKey(dayOfWeek)) var isSpecificDay = TimeUtility.OpenWeekCnt <= 1; var openDayWeek = (int)TimeUtility.openServerTime.DayOfWeek; var dayIndex = TimeUtility.OpenDay + 1; if (isSpecificDay && specificOpenTimes.ContainsKey(openDayWeek) && specificOpenTimes[openDayWeek].ContainsKey(dayIndex)) { return false; } else { var hourMinutes = openTimes[dayOfWeek]; var hourMinutes = specificOpenTimes[openDayWeek][dayIndex]; for (int i = 0; i < hourMinutes.Count; i++) { if (hourMinutes[i].InOpenTime()) @@ -192,32 +236,96 @@ return false; } else { var dayOfWeek = (int)TimeUtility.ServerNow.DayOfWeek; if (!openTimes.ContainsKey(dayOfWeek)) { return false; } else { var hourMinutes = openTimes[dayOfWeek]; for (int i = 0; i < hourMinutes.Count; i++) { if (hourMinutes[i].InOpenTime()) { return true; } } return false; } } } public bool TryGetTodayNearestOpenTime(out HourMinute _hourMinute) { var dayOfWeek = (int) TimeUtility.ServerNow.DayOfWeek; if (!openTimes.ContainsKey(dayOfWeek)) var isSpecificDay = TimeUtility.OpenWeekCnt <= 1; var openDayWeek = (int)TimeUtility.openServerTime.DayOfWeek; var dayIndex = TimeUtility.OpenDay + 1; if (isSpecificDay && specificOpenTimes.ContainsKey(openDayWeek) && specificOpenTimes[openDayWeek].ContainsKey(dayIndex)) { _hourMinute = default(HourMinute); return false; var hour = TimeUtility.ServerNow.Hour; var minute = TimeUtility.ServerNow.Minute; var hourMinutes = specificOpenTimes[openDayWeek][dayIndex]; _hourMinute = hourMinutes[hourMinutes.Count - 1]; for (int i = 0; i < hourMinutes.Count; i++) { var hourMinute = hourMinutes[i]; if (hour <= hourMinute.hourEnd && minute <= hourMinute.minuteEnd) { _hourMinute = hourMinute; break; } } return true; } else { var dayOfWeek = (int)TimeUtility.ServerNow.DayOfWeek; if (!openTimes.ContainsKey(dayOfWeek)) { _hourMinute = default(HourMinute); return false; } var hour = TimeUtility.ServerNow.Hour; var minute = TimeUtility.ServerNow.Minute; var hourMinutes = openTimes[dayOfWeek]; _hourMinute = hourMinutes[hourMinutes.Count - 1]; for (int i = 0; i < hourMinutes.Count; i++) { var hourMinute = hourMinutes[i]; if (hour <= hourMinute.hourEnd && minute <= hourMinute.minuteEnd) { _hourMinute = hourMinute; break; } } return true; } var hour = TimeUtility.ServerNow.Hour; var minute = TimeUtility.ServerNow.Minute; var hourMinutes = openTimes[dayOfWeek]; _hourMinute = hourMinutes[hourMinutes.Count - 1]; for (int i = 0; i < hourMinutes.Count; i++) } public bool ContainTimeNode(int week, int timeNode) { var hourMinutes = GetHourMinuteByWeek(week); if (hourMinutes != null) { var hourMinute = hourMinutes[i]; if (hour <= hourMinute.hourEnd && minute <= hourMinute.minuteEnd) foreach (var item in hourMinutes) { _hourMinute = hourMinute; break; if (item.hourBegin * 60 + item.minuteBegin == timeNode) { return true; } } } return true; return false; } public string ToOpenTimeString() @@ -267,10 +375,18 @@ public List<HourMinute> GetHourMinuteByWeek(int week) { if(openTimes.ContainsKey(week)) var isSpecificDay = TimeUtility.OpenWeekCnt <= 1; var openDayWeek = (int)TimeUtility.openServerTime.DayOfWeek; var dayIndex = TimeUtility.OpenDay + 1; if (isSpecificDay && specificOpenTimes.ContainsKey(openDayWeek) && specificOpenTimes[openDayWeek].ContainsKey(dayIndex)) { return specificOpenTimes[openDayWeek][dayIndex]; } else if (openTimes.ContainsKey(week)) { return openTimes[week]; } return null; } } @@ -359,7 +475,6 @@ { return StringUtility.Contact(hourBegin, ":", minuteBegin); } } public static int Compare(HourMinute _lhs, HourMinute _rhs) System/DailyQuest/DailyQuestModel.cs
@@ -451,22 +451,16 @@ public List<int> GetQuestByWeekTimeNode(int _week, int _timeNode) { if (questCalendar.ContainsKey(_week)) var quests = new List<int>(); foreach (var item in dailyQuestOpenTimes.Values) { var timeNodeToQuests = questCalendar[_week]; if (timeNodeToQuests.ContainsKey(_timeNode)) if (item.ContainTimeNode(_week, _timeNode)) { return questCalendar[_week][_timeNode]; } else { return null; quests.Add(item.id); } } else { return null; } return quests; } /// <summary> @@ -476,14 +470,13 @@ /// <returns></returns> public Dictionary<int, List<int>> GetQuestByWeekTime(int _week) { if (questCalendar.ContainsKey(_week)) var timeNodes = new Dictionary<int, List<int>>(); foreach (var item in GeneralConfig.Instance.dailyQuestOpenTime) { return questCalendar[_week]; timeNodes[item] = GetQuestByWeekTimeNode(_week, item); } else { return null; } return timeNodes; } private void OnFunctionStateChange(int _functionId) @@ -731,22 +724,9 @@ DailyQuestOpenTime openTime2; TryGetOpenTime(_rhs, out openTime2); var isValidServerTime1 = openTime1.IsValidServerOpenTime(); var isValidServerTime2 = openTime2.IsValidServerOpenTime(); if (isValidServerTime1 && !isValidServerTime2) { return -1; } if (!isValidServerTime1 && isValidServerTime2) { return 1; } var dayOfWeek = (int)DateTime.Now.DayOfWeek; var isActiveDay1 = openTime1.always || openTime1.openTimes.ContainsKey(dayOfWeek); var isActiveDay2 = openTime2.always || openTime2.openTimes.ContainsKey(dayOfWeek); var dayOfWeek = (int)TimeUtility.ServerNow.DayOfWeek; var isActiveDay1 = openTime1.always || openTime1.GetHourMinuteByWeek(dayOfWeek) != null; var isActiveDay2 = openTime2.always || openTime2.GetHourMinuteByWeek(dayOfWeek) != null; if (isActiveDay1 && !isActiveDay2) { @@ -823,12 +803,6 @@ DailyQuestOpenTime openTime; if (TryGetOpenTime(_dailyQuestId, out openTime)) { var validServerTime = openTime.IsValidServerOpenTime(); if (!validServerTime) { return DailyQuestState.ServerForbid; } var inOpenTime = openTime.InOpenTime(); if (!inOpenTime) { @@ -1000,12 +974,16 @@ { case 1: var activityOpenTime = Config.Instance.Get<DailyQuestOpenTimeConfig>(config.RelatedID); openTime = dailyQuestOpenTimes[config.ID] = new DailyQuestOpenTime(config.ID, activityOpenTime.OpenTime, activityOpenTime.Duration); openTime = dailyQuestOpenTimes[config.ID] = new DailyQuestOpenTime(config.ID); openTime.ParseQuestNormalOpenTime(activityOpenTime.OpenTime, activityOpenTime.Duration); openTime.ParseQuestSpecificOpenTimes(DailyQuestSpecialOpenTimeConfig.GetDailyQuestTimes(config.RelatedID)); dailyActionToDailyQuestTable[config.RelatedID] = config.ID; break; case 2: var dungeonOpenTimes = DungeonStateTimeConfig.DungeonStateCanEnterFB(config.RelatedID); openTime = dailyQuestOpenTimes[config.ID] = new DailyQuestOpenTime(config.ID, dungeonOpenTimes); openTime = dailyQuestOpenTimes[config.ID] = new DailyQuestOpenTime(config.ID); openTime.ParseDungeonNormalOpenTimes(dungeonOpenTimes); openTime.ParseDungeonSpecificOpenTimes(DungeonSpecialStateTimeConfig.GetDungeonTimes(config.RelatedID)); dungeonToDailyQuestTable[config.RelatedID] = config.ID; break; } @@ -1014,37 +992,6 @@ dailyQuests[config.ID] = new DailyQuestData(config.ID, DAILYQUEST_REDPOINTIDBASE + redpointIndex++, redpointParent); } for (int i = 0; i < 7; i++) { questCalendar[i] = new Dictionary<int, List<int>>(); } foreach (var key in dailyQuestOpenTimes.Keys) { var dailyQuestOpenTime = dailyQuestOpenTimes[key]; foreach (var week in dailyQuestOpenTime.openTimes.Keys) { var hourMinutes = dailyQuestOpenTime.openTimes[week]; var timeNodeToQuests = questCalendar[week]; for (int i = 0; i < hourMinutes.Count; i++) { var hourMinute = hourMinutes[i]; var timeNode = hourMinute.hourBegin * 60 + hourMinute.minuteBegin; List<int> quests; if (timeNodeToQuests.ContainsKey(timeNode)) { quests = timeNodeToQuests[timeNode]; } else { timeNodeToQuests[timeNode] = quests = new List<int>(); } quests.Add(key); } } } } public enum DailyQuestCategory @@ -1056,7 +1003,6 @@ public enum DailyQuestState { Locked = 0, ServerForbid = 1, OutTime = 2, Normal = 3, CanBuyTimes = 5, System/Dungeon/DungeonBreifInfo.cs
@@ -79,14 +79,14 @@ } else { var week = TimeUtility.ServerNow.DayOfWeek; if (dungeonOpenTime.openTimes.ContainsKey((int)week)) var week = (int)TimeUtility.ServerNow.DayOfWeek; var openTimes = dungeonOpenTime.GetHourMinuteByWeek(week); if (openTimes != null) { var durations = dungeonOpenTime.openTimes[(int)week]; var stringArray = new string[durations.Count]; for (int i = 0; i < durations.Count; i++) var stringArray = new string[openTimes.Count]; for (int i = 0; i < openTimes.Count; i++) { stringArray[i] = durations[i].ToString(); stringArray[i] = openTimes[i].ToString(); } m_OpenTime.text = string.Join(",", stringArray); } System/Dungeon/DungeonModel.cs
@@ -41,54 +41,65 @@ List<Item> sweepResultItems = new List<Item>(); int m_SweepDungeonTypeBuf = 0; public int sweepDungeonTypeBuf { public int sweepDungeonTypeBuf { get { return m_SweepDungeonTypeBuf; } } Dungeon m_SelectedTrialDungeon; public Dungeon selectedTrialDungeon { public Dungeon selectedTrialDungeon { get { return m_SelectedTrialDungeon; } set { m_SelectedTrialDungeon = value; } } Dungeon m_CurrentDungeon; public Dungeon currentDungeon { public Dungeon currentDungeon { get { return m_CurrentDungeon; } set { m_CurrentDungeon = value; } } int m_DungeonGrade = 0; public int dungeonGrade { public int dungeonGrade { get { return m_DungeonGrade; } } DungeonMissionData m_Mission; public DungeonMissionData mission { public DungeonMissionData mission { get { return m_Mission; } } DungeonResult m_DungeonResult; public DungeonResult dungeonResult { public DungeonResult dungeonResult { get { return m_DungeonResult; } set { m_DungeonResult = value; } } public int dungeonCoinInspireCount { public int dungeonCoinInspireCount { get; private set; } public int dungeonJadeInspireCount { public int dungeonJadeInspireCount { get; private set; } public int dungeonInspireUper { public int dungeonInspireUper { get; private set; } Dungeon m_SelectedKylinDungeon; public Dungeon selectedKylinDungeon { public Dungeon selectedKylinDungeon { get { return m_SelectedKylinDungeon; } set { set { if (m_SelectedKylinDungeon != value) { m_SelectedKylinDungeon = value; @@ -109,9 +120,11 @@ public bool gradeTween = true; DungeonFightStage m_DungeonFightStage = DungeonFightStage.None; public DungeonFightStage dungeonFightStage { public DungeonFightStage dungeonFightStage { get { return m_DungeonFightStage; } set { set { if (m_DungeonFightStage != value) { m_DungeonFightStage = value; @@ -1334,7 +1347,9 @@ if (!dungeonOpenTimes.ContainsKey(config.DataMapID)) { dungeonOpenTimes[config.DataMapID] = new DailyQuestOpenTime(config.DataMapID, DungeonStateTimeConfig.DungeonStateCanEnterFB(config.DataMapID)); var openTime = dungeonOpenTimes[config.DataMapID] = new DailyQuestOpenTime(config.DataMapID); openTime.ParseDungeonNormalOpenTimes(DungeonStateTimeConfig.DungeonStateCanEnterFB(config.DataMapID)); openTime.ParseDungeonSpecificOpenTimes(DungeonSpecialStateTimeConfig.GetDungeonTimes(config.DataMapID)); } } System/Dungeon/FairyLeagueDungeonResourceBehaviour.cs
@@ -61,7 +61,7 @@ _crystalDict.ContainsKey(i + 1) ? _crystalDict[i + 1].Length : 0); float _propertyUpper = 0; if (_help.fairyWarEnter.WinCount != null && _help.fairyWarEnter.WinCount[1 - i] != 0 && (model.fairyLeagueRing == 1 || model.BattleChampion())) && (model.fairyLeagueSession == 1 || model.BattleChampion())) { var _buffLv = kingFairyModel.GetWinStreakBuffLv(_help.fairyWarEnter.WinCount[1 - i]); SkillConfig _multipleWinBuff = Config.Instance.Get<SkillConfig>(kingFairyModel.multipleWinBuffTypeId + System/FairyAu/FairyLeagueModel.cs
@@ -12,75 +12,106 @@ public class FairyLeagueModel : Model, IAfterPlayerDataInitialize, IBeforePlayerDataInitialize, IPlayerLoginOk { public event Action OnRefreshFairyLeagueEvent; private FairyLeagueStage m_FairyLeagueStage = FairyLeagueStage.Prepare; public FairyLeagueWeekTime currentWeekTime { get { var openServerTime = TimeUtility.openServerTime; var openServerWeekDay = openServerTime.DayOfWeek == DayOfWeek.Sunday ? 7 : (int)openServerTime.DayOfWeek; if (specialLeagueTimes.ContainsKey(openServerWeekDay)) { var dict = specialLeagueTimes[openServerWeekDay]; var weekCount = TimeUtility.OpenWeekCnt; if (dict.ContainsKey(weekCount)) { return dict[weekCount]; } } if (TimeUtility.OpenWeekCnt <= 1) { return null; } return fairyLeagueWeekTime; } } public FairyLeagueWeekTime nextWeekTime { get { var openServerTime = TimeUtility.openServerTime; var openServerWeekDay = openServerTime.DayOfWeek == DayOfWeek.Sunday ? 7 : (int)openServerTime.DayOfWeek; if (specialLeagueTimes.ContainsKey(openServerWeekDay)) { var dict = specialLeagueTimes[openServerWeekDay]; var weekCount = TimeUtility.OpenWeekCnt + 1; if (dict.ContainsKey(weekCount)) { return dict[weekCount]; } } return fairyLeagueWeekTime; } } FairyLeagueStage cacheLeagueStage = FairyLeagueStage.Prepare; public FairyLeagueStage fairyLeagueStage { get { if (StepRing()) if (currentWeekTime == null) { return FairyLeagueStage.Over; return FairyLeagueStage.Prepare; } return m_FairyLeagueStage; return currentWeekTime.fairyLeagueStage; } } public int fairyLeagueSession { get { if (currentWeekTime == null) { return 0; } return currentWeekTime.currentSession; } } public int fairyLeagueRing { get { if (IsNextWeek) if (currentWeekTime == null) { return 0; } var _dayOfWeek = TimeUtility.ServerNow.DayOfWeek == DayOfWeek.Sunday ? 7 : (int)TimeUtility.ServerNow.DayOfWeek; if (_dayOfWeek < groupTimes[1].dayOfWeek || _dayOfWeek > resultTimes[1].dayOfWeek) { return 0; } else if (_dayOfWeek == groupTimes[1].dayOfWeek) { if (TimeUtility.ServerNow.Hour < groupTimes[1].startHour) { return 0; } else if (TimeUtility.ServerNow.Hour == groupTimes[1].startHour && TimeUtility.ServerNow.Minute < groupTimes[1].startMinute) { return 0; } } return 1; return currentWeekTime.currentRing; } } public int OpenServerWeek { get; private set; } public int ringCnt { get; private set; } public bool IsNextWeek { get { if (TimeUtility.OpenWeekCnt >= OpenServerWeek) { var _dayOfWeek = TimeUtility.ServerNow.DayOfWeek == DayOfWeek.Sunday ? 7 : (int)TimeUtility.ServerNow.DayOfWeek; if (_dayOfWeek > resultTimes[1].dayOfWeek && _dayOfWeek <= 7) { return true; } return false; } else if (currentWeekTime == null) { return true; } return currentWeekTime.IsNextWeek; } } bool serverInited = false; FairyModel fairyModel { get { return ModelCenter.Instance.GetModel<FairyModel>(); } } @@ -88,45 +119,81 @@ { ParseConfig(); m_JoinFairyLeagueRedpoint = new Redpoint(10704, 1070401); dataRequestDict.Add(FairyLeagueStage.Grouping, false); dataRequestDict.Add(FairyLeagueStage.Fight, false); dataRequestDict.Add(FairyLeagueStage.Over, false); TimeUtility.OnServerOpenDayRefresh += OnServerOpenDayRefresh; DTCA003_tagUniversalGameRecInfo.onGetUniversalGameInfo += OnGetUniversalGameInfo; PlayerDatas.Instance.PlayerDataRefreshInfoEvent += PlayerDataRefreshInfoEvent; StageManager.Instance.onStageLoadFinish += OnStageLoadFinish; TimeMgr.Instance.OnMinuteEvent += MinuteEvent; TimeMgr.Instance.OnDayEvent += DayEvent; fairyLeagueHelp = new FairyLeagueHelp(); } public override void UnInit() { DTCA003_tagUniversalGameRecInfo.onGetUniversalGameInfo -= OnGetUniversalGameInfo; TimeMgr.Instance.OnMinuteEvent -= MinuteEvent; TimeMgr.Instance.OnDayEvent -= DayEvent; } public void OnBeforePlayerDataInitialize() { ClearFairyWarHelp(); frontFairyList.Clear(); fairyLeagueFairyId = 0; fairyLeagueFairyName = string.Empty; serverInited = false; } public void OnAfterPlayerDataInitialize() { for (int i = 0; i < fairyStages.Length; i++) { dataRequestDict[fairyStages[i]] = false; } TimeMgr.Instance.OnSyntonyEvent -= OnSyntonyEvent; TimeMgr.Instance.OnSyntonyEvent += OnSyntonyEvent; } public void OnPlayerLoginOk() { CheckFairyLeagueStage(); ResetFairyLeagueTime(); cacheLeagueStage = fairyLeagueStage; CheckFairyLeagueData(); UpdateRedpoint(); serverInited = true; } private void OnServerOpenDayRefresh() { CheckFairyLeagueStage(); ResetFairyLeagueTime(); } private void DayEvent() { ResetFairyLeagueTime(); } private void MinuteEvent() { if (!(StageManager.Instance.CurrentStage is DungeonStage) || !serverInited) { return; } if (cacheLeagueStage != fairyLeagueStage) { cacheLeagueStage = fairyLeagueStage; if (cacheLeagueStage != FairyLeagueStage.Prepare) { CheckFairyLeagueData(); } if (OnRefreshFairyLeagueEvent != null) { OnRefreshFairyLeagueEvent(); } DebugEx.LogFormat("进入{0}阶段", fairyLeagueStage); } } void ResetFairyLeagueTime() { if (OnRefreshFairyLeagueEvent != null) { OnRefreshFairyLeagueEvent(); } } private void PlayerDataRefreshInfoEvent(PlayerDataRefresh _type) @@ -146,31 +213,9 @@ } } private void OnSyntonyEvent(TimeMgr.SyntonyType type) { if (type == TimeMgr.SyntonyType.FairyLeaugeStage) { CheckFairyLeagueStage(); CheckFairyLeagueData(); if (OnRefreshFairyLeagueEvent != null) { OnRefreshFairyLeagueEvent(); } UpdateRedpoint(); } } #region 配置 public const int FAIRY_LEAGUE_DUNGEON = 31220; public const int FAIRY_LEAGUE_BATTLE = 68; public readonly int[] groupRingStates = new int[] { 11, 21 }; public readonly int[] fightRingStates = new int[] { 12, 22 }; public readonly int overRingStates = 99; public WeekTime[] groupTimes { get; private set; } public WeekTime[] fightTimes { get; private set; } public WeekTime[] resultTimes { get; private set; } public WeekTime overTime { get; private set; } public readonly WeekTime skipWeekTime = new WeekTime(1, 0, 0, 0, 0); public List<WeekTime> fairyLeagueWeekTimes = new List<WeekTime>(); private string[] guideImgKeys; public string[] GuideImgKeys { @@ -179,11 +224,7 @@ return guideImgKeys; } } private readonly FairyLeagueStage[] fairyStages = new FairyLeagueStage[] { FairyLeagueStage.Grouping, FairyLeagueStage.Fight, FairyLeagueStage.Over }; public int fairyWarResUpperLimit { get; @@ -200,6 +241,9 @@ public Dictionary<int, List<AwardItem>> finalWarAwardDict = new Dictionary<int, List<AwardItem>>(); public Dictionary<int, List<AwardItem>> finalWarChampionAwardDict = new Dictionary<int, List<AwardItem>>(); private Dictionary<int, float> crystalRateDict = new Dictionary<int, float>(); 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>>(); private void ParseConfig() { FuncConfigConfig cfg = Config.Instance.Get<FuncConfigConfig>("FamilyMatchGuide"); @@ -207,40 +251,45 @@ { guideImgKeys = ConfigParse.GetMultipleStr(cfg.Numerical1); } ringCnt = groupRingStates.Length; groupTimes = new WeekTime[groupRingStates.Length]; DungeonStateTimeConfig stateCfg = null; for (int i = 0; i < groupRingStates.Length; i++) var configs = Config.Instance.GetAllValues<DungeonStateTimeConfig>(); for (int i = 0; i < configs.Count; i++) { stateCfg = DungeonStateTimeConfig.DungeonStateTime(FAIRY_LEAGUE_DUNGEON, groupRingStates[i]); if (stateCfg != null) if (configs[i].DataMapID == FAIRY_LEAGUE_DUNGEON && fairyLeagueStateValues.Contains(configs[i].StateValue)) { OpenServerWeek = stateCfg.OpenServerWeek; groupTimes[i] = new WeekTime(stateCfg.StartWeekday, stateCfg.StartHour, stateCfg.StartMinute, stateCfg.EndHour, stateCfg.EndMinute); fairyLeagueWeekTimes.Add(groupTimes[i]); fairyLeagueWeekTime.AddStage(configs[i]); } } fightTimes = new WeekTime[fightRingStates.Length]; resultTimes = new WeekTime[fightRingStates.Length]; for (int i = 0; i < fightRingStates.Length; i++) fairyLeagueWeekTime.Sort(); var specialStateTimes = DungeonSpecialStateTimeConfig.GetDungeonTimes(FAIRY_LEAGUE_DUNGEON); for (int i = 0; i < specialStateTimes.Count; i++) { stateCfg = DungeonStateTimeConfig.DungeonStateTime(FAIRY_LEAGUE_DUNGEON, fightRingStates[i]); if (stateCfg != null) var specialConfig = specialStateTimes[i]; if (fairyLeagueStateValues.Contains(specialConfig.StateValue)) { fightTimes[i] = new WeekTime(stateCfg.StartWeekday, stateCfg.StartHour, stateCfg.StartMinute, stateCfg.EndHour, stateCfg.EndMinute); fairyLeagueWeekTimes.Add(fightTimes[i]); resultTimes[i] = new WeekTime(stateCfg.StartWeekday, stateCfg.EndHour, stateCfg.EndMinute, 0, 0); fairyLeagueWeekTimes.Add(resultTimes[i]); Dictionary<int, FairyLeagueWeekTime> dict; if (!specialLeagueTimes.TryGetValue(specialConfig.OpenServerWeek, out dict)) { dict = new Dictionary<int, FairyLeagueWeekTime>(); specialLeagueTimes.Add(specialConfig.OpenServerWeek, dict); } var dayOfWeek = 0; var index = GetIndexOfWeek(specialConfig.OpenServerWeek, specialConfig.OpenServerDay, out dayOfWeek); FairyLeagueWeekTime leagueTime; if (!dict.TryGetValue(index, out leagueTime)) { leagueTime = new FairyLeagueWeekTime(); dict.Add(index, leagueTime); } leagueTime.AddStage(specialConfig, dayOfWeek); } } stateCfg = DungeonStateTimeConfig.DungeonStateTime(FAIRY_LEAGUE_DUNGEON, overRingStates); overTime = new WeekTime(stateCfg.StartWeekday, stateCfg.StartHour, stateCfg.StartMinute, stateCfg.EndHour, stateCfg.EndMinute); fairyLeagueWeekTimes.Add(overTime); fairyLeagueWeekTimes.Sort(CompareTime); foreach (var dict in specialLeagueTimes.Values) { foreach (var leagueTime in dict.Values) { leagueTime.Sort(); } } cfg = Config.Instance.Get<FuncConfigConfig>("FamilyMatchResourcePoint"); if (cfg != null) { @@ -303,6 +352,14 @@ cfg = Config.Instance.Get<FuncConfigConfig>("FamilyMatchResourcePoint1"); crystalRateDict = ConfigParse.GetDic<int, float>(cfg.Numerical1); } int GetIndexOfWeek(int _openWeekDay, int _openDays, out int dayOfWeek) { var index = (_openWeekDay + _openDays - 1) / 7; dayOfWeek = (_openWeekDay + _openDays - 1) % 7; return index; } private List<AwardItem> ParseAward(string _config) { List<AwardItem> _list = new List<AwardItem>(); @@ -350,76 +407,7 @@ return crystalRateDict.TryGetValue(_npcId, out _rate); } #endregion public void CheckFairyLeagueStage() { var _dayOfWeek = TimeUtility.ServerNow.DayOfWeek == DayOfWeek.Sunday ? 7 : (int)TimeUtility.ServerNow.DayOfWeek; if (IsNextWeek) { m_FairyLeagueStage = FairyLeagueStage.Prepare; return; } for (int i = 0; i < fairyLeagueWeekTimes.Count; i++) { var _weekTime = fairyLeagueWeekTimes[i]; if (_dayOfWeek < _weekTime.dayOfWeek) { m_FairyLeagueStage = GetFairyLeagueStage(i); return; } if (_dayOfWeek == _weekTime.dayOfWeek) { if (TimeUtility.Hour < _weekTime.startHour) { m_FairyLeagueStage = GetFairyLeagueStage(i); return; } if (TimeUtility.Hour == _weekTime.startHour && TimeUtility.Minute < _weekTime.startMinute) { m_FairyLeagueStage = GetFairyLeagueStage(i); return; } } } var _nowTime = new WeekTime(_dayOfWeek, TimeUtility.Hour, TimeUtility.Minute, 0, 0, TimeUtility.Second); TimeMgr.Instance.Register(TimeMgr.SyntonyType.FairyLeaugeStage, (float)(skipWeekTime - _nowTime).TotalSeconds); m_FairyLeagueStage = FairyLeagueStage.Prepare; } private FairyLeagueStage GetFairyLeagueStage(int _index) { var _dayOfWeek = TimeUtility.ServerNow.DayOfWeek == DayOfWeek.Sunday ? 7 : (int)TimeUtility.ServerNow.DayOfWeek; var _nowTime = new WeekTime(_dayOfWeek, TimeUtility.Hour, TimeUtility.Minute, 0, 0, TimeUtility.Second); TimeMgr.Instance.Register(TimeMgr.SyntonyType.FairyLeaugeStage, (float)(fairyLeagueWeekTimes[_index] - _nowTime).TotalSeconds); switch (_index) { case 0: return FairyLeagueStage.Prepare; case 1: case 4: return FairyLeagueStage.Grouping; case 2: case 5: return FairyLeagueStage.Fight; case 3: case 6: return FairyLeagueStage.Over; } return FairyLeagueStage.Prepare; } private int CompareTime(WeekTime x, WeekTime y) { if (x.dayOfWeek.CompareTo(y.dayOfWeek) != 0) { return x.dayOfWeek.CompareTo(y.dayOfWeek); } if (x.startHour.CompareTo(y.startHour) != 0) { return x.startHour.CompareTo(y.startHour); } return x.startMinute.CompareTo(y.startMinute); } #region 仙盟联赛副本 public int[] fairyLeagueCrystals { @@ -512,12 +500,12 @@ public bool BattleChampion() { var _ring = fairyLeagueRing; if (_ring == 0 && fairyLeagueBattleDict.ContainsKey(_ring) && fairyLeagueBattleDict[_ring].ContainsKey(5)) var _session = fairyLeagueSession; if (_session == 0 && fairyLeagueBattleDict.ContainsKey(_session) && fairyLeagueBattleDict[_session].ContainsKey(5)) { var _list = fairyLeagueBattleDict[_ring][5]; var _list = fairyLeagueBattleDict[_session][5]; return _list.Count == 1; } return false; @@ -570,22 +558,18 @@ onFairyLeagueBattleEvent(); } UpdateRedpoint(); for (int i = 0; i < fairyStages.Length; i++) { dataRequestDict[fairyStages[i]] = fairyStages[i] == fairyLeagueStage ? true : false; } } } public bool SelfFairyInBattle(out int _error) { _error = 3; var _ring = fairyLeagueRing; var _session = fairyLeagueSession; var _fairyId = PlayerDatas.Instance.fairyData.fairy.FamilyID; if (!fairyLeagueBattleDict.ContainsKey(_ring)) if (!fairyLeagueBattleDict.ContainsKey(_session)) { return false; } var _dict = fairyLeagueBattleDict[_ring]; var _dict = fairyLeagueBattleDict[_session]; foreach (var _grade in _dict.Keys) { if (_dict[_grade] == null) @@ -659,18 +643,26 @@ SysNotifyMgr.Instance.ShowTip("LeagueCannotGo4"); break; case 5: var _ring = fairyLeagueRing; _ring = fairyLeagueStage == FairyLeagueStage.Fight || fairyLeagueStage == FairyLeagueStage.Over ? 1 - _ring : _ring; if (_ring == 1) var _session = fairyLeagueSession; var isNextWeek = IsNextWeek; FairyLeagueWeekTime.Session session; var weekTime = isNextWeek ? nextWeekTime : currentWeekTime; weekTime.TryGetSession(fairyLeagueRing, 1 - _session, out session); var fightStage = session.stages.Find((x) => { var _param = StringUtility.Contact(Language.Get(StringUtility.Contact("Weekday", groupTimes[_ring].dayOfWeek)), fightTimes[1].startHour.ToString("D2"), ":", fightTimes[1].startMinute.ToString("D2")); return x.stage == FairyLeagueStage.Fight; }); if (_session == 0) { var _param = StringUtility.Contact(Language.Get(StringUtility.Contact("Weekday", weekTime.GetDayOfWeek(fairyLeagueRing))), fightStage.startHour.ToString("D2"), ":", fightStage.startMinute.ToString("D2")); SysNotifyMgr.Instance.ShowTip("LeagueCannotGo1", _param); } else { var _param = StringUtility.Contact(Language.Get("Next"), Language.Get(StringUtility.Contact("Weekday", groupTimes[_ring].dayOfWeek)), fightTimes[0].startHour.ToString("D2"), ":", fightTimes[0].startMinute.ToString("D2")); var _param = StringUtility.Contact(isNextWeek ? Language.Get("Next") : Language.Get("ThisTime"), Language.Get(StringUtility.Contact("Weekday", weekTime.GetDayOfWeek(fairyLeagueRing))), fightStage.startHour.ToString("D2"), ":", fightStage.startMinute.ToString("D2")); SysNotifyMgr.Instance.ShowTip("LeagueCannotGo2", _param); } break; @@ -680,16 +672,13 @@ } } private Dictionary<FairyLeagueStage, bool> dataRequestDict = new Dictionary<FairyLeagueStage, bool>(); public void CheckFairyLeagueData() { //if (dataRequestDict.ContainsKey(fairyLeagueStage) && !dataRequestDict[fairyLeagueStage]) //{ CA001_tagViewUniversalGameRec _pak = new CA001_tagViewUniversalGameRec(); _pak.ViewType = (byte)FAIRY_LEAGUE_BATTLE; GameNetSystem.Instance.SendInfo(_pak); //} } public List<FairyLeagueBattleData> GetFairyLeague(int _ring, int _grade) { Dictionary<int, List<FairyLeagueBattleData>> dic = null; @@ -780,13 +769,13 @@ public FairyLeagueBattleData GetSelfBattleInfo() { var _ring = fairyLeagueRing; var _session = fairyLeagueSession; var _fairyId = PlayerDatas.Instance.fairyData.fairy.FamilyID; if (!fairyLeagueBattleDict.ContainsKey(_ring)) if (!fairyLeagueBattleDict.ContainsKey(_session)) { return null; } var _dict = fairyLeagueBattleDict[_ring]; var _dict = fairyLeagueBattleDict[_session]; foreach (var _grade in _dict.Keys) { if (_dict[_grade] == null) @@ -804,9 +793,9 @@ return null; } public bool StepRing(int _grade = 5) public bool StepSession(int _grade = 5) { if (fairyLeagueRing == 1) if (fairyLeagueSession == 1) { if (!fairyLeagueBattleDict.ContainsKey(1)) { @@ -932,69 +921,428 @@ } #endregion } public struct WeekTime public class FairyLeagueWeekTime { public int dayOfWeek { get; private set; } public int startHour { get; private set; } public int startMinute { get; private set; } public int startSeconds { get; private set; } public int endHour { get; private set; } public int endMinute { get; private set; } public List<Ring> rings = new List<Ring>(); public WeekTime(int _weekDay, int _startHour, int _startMinute, int _endHour, int _endMinute, int _startSeconds = 0) { dayOfWeek = _weekDay; startHour = _startHour; startMinute = _startMinute; startSeconds = _startSeconds; endHour = _endHour; endMinute = _endMinute; } public static TimeSpan operator -(WeekTime y, WeekTime x) { var _totalSeconds = 0; int i = x.dayOfWeek; for (i = x.dayOfWeek; i != y.dayOfWeek; i = i == 7 ? 1 : i + 1) { if (i == x.dayOfWeek) { _totalSeconds += (23 - x.startHour) * 3600 + (59 - x.startMinute) * 60 + 60 - x.startSeconds; } else { _totalSeconds += 24 * 3600; } } if (i == y.dayOfWeek) { if (x.dayOfWeek == i) { var _timeSpany = new TimeSpan(y.startHour, y.startMinute, y.startSeconds); var _timeSpanx = new TimeSpan(x.startHour, x.startMinute, x.startSeconds); _totalSeconds += (int)(_timeSpany.TotalSeconds - _timeSpanx.TotalSeconds); } else { _totalSeconds += y.startHour * 3600; } } return new TimeSpan(_totalSeconds * TimeSpan.TicksPerSecond); } private static WeekTime s_Now = new WeekTime(); public static WeekTime Now public bool IsNextWeek { get { var _dayOfWeek = TimeUtility.ServerNow.DayOfWeek == DayOfWeek.Sunday ? 7 : (int)TimeUtility.ServerNow.DayOfWeek; s_Now.dayOfWeek = _dayOfWeek; s_Now.startHour = TimeUtility.Hour; s_Now.startMinute = TimeUtility.Minute; s_Now.startSeconds = TimeUtility.Second; return s_Now; return rings.Count == 0 || rings[rings.Count - 1].IsOver(TimeUtility.ServerNow); } } public FairyLeagueStage fairyLeagueStage { get { if (IsNextWeek) { return FairyLeagueStage.Prepare; } Ring ring; if (TryGetCurrentRing(out ring)) { Session session; if (ring.TryGetSession(TimeUtility.ServerNow, out session)) { Stage stage; if (session.TryGetStage(TimeUtility.ServerNow, out stage)) { return stage.stage; } } } return FairyLeagueStage.Prepare; } } public int currentRing { get { var ring = 0; for (int i = 0; i < rings.Count; i++) { if (rings[i].InRing(TimeUtility.ServerNow)) { return i; } if (rings[i].IsOver(TimeUtility.ServerNow)) { ring++; } } return Mathf.Min(ring, rings.Count - 1); } } public int GetDayOfWeek(int _index) { if (_index >= 0 && _index < rings.Count) { return rings[_index].dayOfWeek; } return 0; } public int currentSession { get { Ring ring; if (TryGetCurrentRing(out ring)) { return ring.currentSession; } return 0; } } public void AddStage(DungeonStateTimeConfig config) { var ring = rings.Find((x) => { return x.dayOfWeek == config.StartWeekday; }); if (ring == null) { ring = new Ring(); rings.Add(ring); ring.dayOfWeek = config.StartWeekday; } ring.ParseConfig(config); } 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 Sort() { rings.Sort((Ring x, Ring y) => { return x.dayOfWeek.CompareTo(y.dayOfWeek); }); for (int i = 0; i < rings.Count; i++) { rings[i].Sort(); } } public bool TryGetCurrentRing(out Ring ring) { ring = null; for (int i = 0; i < rings.Count; i++) { if (rings[i].InRing(TimeUtility.ServerNow)) { ring = rings[i]; return true; } } return false; } public bool TryGetSession(int _ring, int _session, out Session session) { session = null; if (_ring >= 0 && _ring < rings.Count) { if (_session >= 0 && _session < rings[_ring].sessions.Count) { session = rings[_ring].sessions[_session]; return true; } } return false; } public class Ring { public List<Session> sessions = new List<Session>(); public int currentSession { get { for (int i = 0; i < sessions.Count; i++) { if (sessions[i].InSession(TimeUtility.ServerNow)) { return i; } } return 0; } } public int dayOfWeek { get; set; } public void Sort() { sessions.Sort((Session x, Session y) => { return x.session.CompareTo(y.session); }); for (int i = 0; i < sessions.Count; i++) { sessions[i].Sort(); } } public void ParseConfig(DungeonStateTimeConfig config) { 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); } public void ParseConfig(DungeonSpecialStateTimeConfig config, int dayOfWeek) { 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 bool InRing(DateTime time) { for (int i = 0; i < sessions.Count; i++) { if (sessions[i].InSession(time)) { return true; } } return false; } public bool TryGetSession(DateTime time, out Session session) { session = null; for (int i = 0; i < sessions.Count; i++) { if (sessions[i].InSession(time)) { session = sessions[i]; return true; } } return false; } public bool IsOver(DateTime time) { bool allOver = true; for (int i = 0; i < sessions.Count; i++) { if (!sessions[i].IsOver(time)) { allOver = false; break; } } return allOver; } } public class Session { public List<Stage> stages = new List<Stage>(); public int session { get; set; } public void Sort() { var fightStage = stages.Find((x) => { return x.stage == FairyLeagueStage.Fight; }); var overStage = stages.Find((x) => { return x.stage == FairyLeagueStage.Over; }); overStage.startHour = fightStage.endHour; overStage.startMinute = fightStage.endMinute; stages.Sort(Compare); } public void ParseConfig(DungeonStateTimeConfig config) { var state = config.StateValue % 10; var stage = new Stage() { stage = state == 1 ? FairyLeagueStage.Grouping : (state == 2 ? FairyLeagueStage.Fight : FairyLeagueStage.Over), dayOfWeek = config.StartWeekday, startHour = config.StartHour, endHour = config.EndHour, startMinute = config.StartMinute, endMinute = config.EndMinute }; stages.Add(stage); } public void ParseConfig(DungeonSpecialStateTimeConfig 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) => { return x.stage == FairyLeagueStage.Grouping; }); var overStage = stages.Find((x) => { return x.stage == FairyLeagueStage.Over; }); var _dayOfWeek = time.DayOfWeek == DayOfWeek.Sunday ? 7 : (int)time.DayOfWeek; if (_dayOfWeek != groupStage.dayOfWeek) { return false; } if (time.Hour < groupStage.startHour || time.Hour > overStage.endHour) { return false; } if (time.Hour == groupStage.startHour && time.Minute < groupStage.startMinute) { return false; } if (time.Hour == overStage.endHour && time.Minute > overStage.endMinute) { return false; } return true; } public bool TryGetStage(DateTime time, out Stage stage) { stage = default(Stage); for (int i = 0; i < stages.Count; i++) { if (stages[i].InStage(time)) { stage = stages[i]; return true; } if (stages[i].IsOver(time)) { stage = stages[i]; } } return !stage.Equals(default(Stage)); } public bool IsOver(DateTime time) { var stage = stages.Find((x) => { return x.stage == FairyLeagueStage.Over; }); return stage.IsOver(time); } int Compare(Stage x, Stage y) { return x.stage.CompareTo(y.stage); } } public class Stage { public FairyLeagueStage stage; public int dayOfWeek; public int startHour; public int endHour; public int startMinute; public int endMinute; public bool InStage(DateTime time) { var _dayOfWeek = time.DayOfWeek == DayOfWeek.Sunday ? 7 : (int)time.DayOfWeek; if (dayOfWeek != _dayOfWeek) { return false; } if (time.Hour < startHour || time.Hour > endHour) { return false; } if (time.Hour == startHour && time.Minute < startMinute) { return false; } if (time.Hour == endHour && time.Minute >= endMinute) { return false; } return true; } public bool IsOver(DateTime time) { var _dayOfWeek = time.DayOfWeek == DayOfWeek.Sunday ? 7 : (int)time.DayOfWeek; if (_dayOfWeek > dayOfWeek) { return true; } if (dayOfWeek == _dayOfWeek) { if (time.Hour > endHour) { return true; } if (time.Hour == endHour && time.Minute >= endMinute) { return true; } } return false; } } } public enum FairyLeagueStage { Prepare, System/FairyAu/FairyLeagueRankCell.cs
@@ -70,7 +70,7 @@ m_ChampionAwardBtn.onClick.RemoveAllListeners(); if (model.fairyLeagueGroupId == 5 && _index == model.GetBattleFirstPlayer()) { var _dict = (model.fairyLeagueRing == 1 && model.fairyLeagueHelp.fairyWarEnter.IsFinalMatch == 1) ? var _dict = (model.fairyLeagueSession == 1 && model.fairyLeagueHelp.fairyWarEnter.IsFinalMatch == 1) ? model.finalWarChampionAwardDict : model.finalWarAwardDict; if (_dict != null) { System/FairyAu/FairyLeagueWin.cs
@@ -128,7 +128,7 @@ private void UpdateKingFairyEvent() { if (model.fairyLeagueRing == 1 && model.fairyLeagueStage == FairyLeagueStage.Over) if (model.fairyLeagueSession == 1 && model.fairyLeagueStage == FairyLeagueStage.Over) { m_RewardTxt.text = Language.Get("CongratulationWangZheMeng", kingFairyModel.kingFairyData.fairyName); } @@ -153,19 +153,20 @@ private void RefreshPrepare() { var _ring = model.fairyLeagueRing; if (TimeUtility.OpenWeekCnt > model.OpenServerWeek) var isNextWeek = model.IsNextWeek; var weekTime = isNextWeek ? model.nextWeekTime : model.currentWeekTime; var ring = isNextWeek ? 0 : weekTime.currentRing; FairyLeagueWeekTime.Session session; if (weekTime.TryGetSession(ring, 0, out session)) { m_PrepareTitleTxt.text = Language.Get("FamilyMatchQualification"); var stage = session.stages.Find((x) => { return x.stage == FairyLeagueStage.Grouping; }); m_CutOffTimeTxt.text = Language.Get("FamilyMatchBlockingTime", isNextWeek ? Language.Get("Next") : Language.Get("ThisTime"), Language.Get(StringUtility.Contact("Weekday", weekTime.GetDayOfWeek(ring))), stage.startHour, stage.startMinute.ToString("D2")); } else { m_PrepareTitleTxt.text = Language.Get("FamilyMatchQualification2"); } m_CutOffTimeTxt.text = Language.Get("FamilyMatchBlockingTime", model.IsNextWeek ? Language.Get("Next") : Language.Get("ThisTime"), Language.Get(StringUtility.Contact("Weekday", model.groupTimes[_ring].dayOfWeek)), model.groupTimes[_ring].startHour, model.groupTimes[_ring].startMinute.ToString("D2")); UpdateFairyLeagueGroup(); UpdateStageTime(); @@ -176,14 +177,14 @@ switch (model.fairyLeagueStage) { case FairyLeagueStage.Grouping: m_BattleTitleTxt.text = Language.Get("FamilyMatchAboutToStart", Language.Get(StringUtility.Contact("Num_CHS_", model.fairyLeagueRing + 1))); m_BattleTitleTxt.text = Language.Get("FamilyMatchAboutToStart", Language.Get(StringUtility.Contact("Num_CHS_", model.fairyLeagueSession + 1))); break; case FairyLeagueStage.Fight: m_BattleTitleTxt.text = Language.Get("FamilyMatchDoing", Language.Get(StringUtility.Contact("Num_CHS_", model.fairyLeagueRing + 1))); m_BattleTitleTxt.text = Language.Get("FamilyMatchDoing", Language.Get(StringUtility.Contact("Num_CHS_", model.fairyLeagueSession + 1))); break; case FairyLeagueStage.Over: UpdateKingFairyEvent(); m_BattleTitleTxt.text = Language.Get("FamilyMatchEnd", Language.Get(StringUtility.Contact("Num_CHS_", model.fairyLeagueRing + 1))); m_BattleTitleTxt.text = Language.Get("FamilyMatchEnd", Language.Get(StringUtility.Contact("Num_CHS_", model.fairyLeagueSession + 1))); break; } UpdateStageTime(); @@ -191,49 +192,89 @@ } private void UpdateStageTime() { var _ring = model.fairyLeagueRing; var _session = model.fairyLeagueSession; bool _stage1Over = false; bool _stage2Over = false; m_LeagueStartTime.text = Language.Get("FamilyMatchWeekTime", model.IsNextWeek ? Language.Get("Next") : Language.Get("ThisTime"), Language.Get(StringUtility.Contact("Weekday", model.groupTimes[_ring].dayOfWeek))); if (_ring > 0 || model.fairyLeagueStage == FairyLeagueStage.Over) var isNextWeek = model.IsNextWeek; var weekTime = isNextWeek ? model.nextWeekTime : model.currentWeekTime; var ring = isNextWeek ? 0 : weekTime.currentRing; var fairyLeagueStage = model.fairyLeagueStage; FairyLeagueWeekTime.Session session1; weekTime.TryGetSession(ring, 0, out session1); FairyLeagueWeekTime.Session session2; weekTime.TryGetSession(ring, 1, out session2); m_LeagueStartTime.text = Language.Get("FamilyMatchWeekTime", model.IsNextWeek ? Language.Get("Next") : Language.Get("ThisTime"), Language.Get(StringUtility.Contact("Weekday", weekTime.GetDayOfWeek(ring)))); if (_session > 0 || fairyLeagueStage == FairyLeagueStage.Over) { _stage1Over = true; m_StageTime1.text = StringUtility.Contact(Language.Get("FamilyMatchWhichTurn", Language.Get("Num_CHS_1")), ": ", Language.Get("FamilyMatchAlreadyEnd")); } if (_ring > 0 && model.fairyLeagueStage == FairyLeagueStage.Over) if (_session > 0 && fairyLeagueStage == FairyLeagueStage.Over) { _stage2Over = true; m_StageTime2.text = StringUtility.Contact(Language.Get("FamilyMatchWhichTurn", Language.Get("Num_CHS_2")), ": ", Language.Get("FamilyMatchAlreadyEnd")); } if (!_stage1Over) { m_StageTime1.text = StringUtility.Contact(Language.Get("FamilyMatchWhichTurn", Language.Get("Num_CHS_1")), ": ", Language.Get(StringUtility.Contact("Weekday", model.groupTimes[0].dayOfWeek)), " ", model.fightTimes[0].startHour, ":", model.fightTimes[0].startMinute.ToString("D2"), "-", model.fightTimes[0].endHour, ":", model.fightTimes[0].endMinute.ToString("D2")); if (session1 != null) { var groupStage = session1.stages.Find((x) => { return x.stage == FairyLeagueStage.Grouping; }); var fightStage = session1.stages.Find((x) => { return x.stage == FairyLeagueStage.Fight; }); m_StageTime1.text = StringUtility.Contact(Language.Get("FamilyMatchWhichTurn", Language.Get("Num_CHS_1")), ": ", Language.Get(StringUtility.Contact("Weekday", groupStage.dayOfWeek)), " ", fightStage.startHour, ":", fightStage.startMinute.ToString("D2"), "-", fightStage.endHour, ":", fightStage.endMinute.ToString("D2")); } } if (!_stage2Over) { m_StageTime2.text = StringUtility.Contact(Language.Get("FamilyMatchWhichTurn", Language.Get("Num_CHS_2")), ": ", Language.Get(StringUtility.Contact("Weekday", model.groupTimes[1].dayOfWeek)), " ", model.fightTimes[1].startHour, ":", model.fightTimes[1].startMinute.ToString("D2"), "-", model.fightTimes[1].endHour, ":", model.fightTimes[1].endMinute.ToString("D2")); if (session2 != null) { var groupStage = session2.stages.Find((x) => { return x.stage == FairyLeagueStage.Grouping; }); var fightStage = session2.stages.Find((x) => { return x.stage == FairyLeagueStage.Fight; }); m_StageTime2.text = StringUtility.Contact(Language.Get("FamilyMatchWhichTurn", Language.Get("Num_CHS_2")), ": ", Language.Get(StringUtility.Contact("Weekday", groupStage.dayOfWeek)), " ", fightStage.startHour, ":", fightStage.startMinute.ToString("D2"), "-", fightStage.endHour, ":", fightStage.endMinute.ToString("D2")); } } if (_ring == 0 && model.fairyLeagueStage == FairyLeagueStage.Over) if (_session == 0 && fairyLeagueStage == FairyLeagueStage.Over) { m_LeagueStartTime.text = Language.Get("FamilyMatchWeekTime", model.IsNextWeek ? Language.Get("Next") : Language.Get("ThisTime"), Language.Get(StringUtility.Contact("Weekday", model.groupTimes[1].dayOfWeek))); if (session1 != null) { var groupStage = session1.stages.Find((x) => { return x.stage == FairyLeagueStage.Grouping; }); var fightStage = session1.stages.Find((x) => { return x.stage == FairyLeagueStage.Fight; }); m_LeagueStartTime.text = Language.Get("FamilyMatchWeekTime", model.IsNextWeek ? Language.Get("Next") : Language.Get("ThisTime"), Language.Get(StringUtility.Contact("Weekday", groupStage.dayOfWeek))); } } else { m_LeagueStartTime.text = Language.Get("FamilyMatchWeekTime", model.IsNextWeek ? Language.Get("Next") : Language.Get("ThisTime"), Language.Get(StringUtility.Contact("Weekday", model.groupTimes[_ring].dayOfWeek))); if (session2 != null) { var groupStage = session2.stages.Find((x) => { return x.stage == FairyLeagueStage.Grouping; }); var fightStage = session2.stages.Find((x) => { return x.stage == FairyLeagueStage.Fight; }); m_LeagueStartTime.text = Language.Get("FamilyMatchWeekTime", model.IsNextWeek ? Language.Get("Next") : Language.Get("ThisTime"), Language.Get(StringUtility.Contact("Weekday", groupStage.dayOfWeek))); } } } private void UpdateFairyLeagueGroup() { if (model.fairyLeagueStage != FairyLeagueStage.Prepare) { return; } if (HasGradeFairy()) { m_PrepareTitleTxt.text = Language.Get("FamilyMatchQualification"); } else { m_PrepareTitleTxt.text = Language.Get("FamilyMatchQualification2"); } for (int i = 0; i < m_FairyNameList.Count; i++) { List<PlayerFairyData.FairyData> list = model.frontLeagueFairy; @@ -254,16 +295,31 @@ } } } bool HasGradeFairy() { List<PlayerFairyData.FairyData> list = model.frontLeagueFairy; for (int i = 0; i < list.Count; i++) { if (list[i].WarRank != 0) { return true; } } return false; } private void UpdateFairyLeagueBattle() { var _ring = model.fairyLeagueRing; var _session = model.fairyLeagueSession; var fairyLeagueStage = model.fairyLeagueStage; for (int i = 0; i < m_FairyClashList.Count; i++) { var fairyClash = m_FairyClashList[i]; List<FairyLeagueBattleData> list = model.GetFairyLeague(model.StepRing(fairyClash.grade) ? 0 : model.fairyLeagueRing, fairyClash.grade); fairyClash.SetActive((model.fairyLeagueStage == FairyLeagueStage.Over && _ring == 1) || model.StepRing(fairyClash.grade)); if ((model.fairyLeagueStage == FairyLeagueStage.Over && _ring == 1) || model.StepRing(fairyClash.grade)) List<FairyLeagueBattleData> list = model.GetFairyLeague(model.StepSession(fairyClash.grade) ? 0 : model.fairyLeagueSession, fairyClash.grade); fairyClash.SetActive((fairyLeagueStage == FairyLeagueStage.Over && _session == 1) || model.StepSession(fairyClash.grade)); if ((fairyLeagueStage == FairyLeagueStage.Over && _session == 1) || model.StepSession(fairyClash.grade)) { if (list == null || list.Count == 0) { System/FairyAu/FairyRequestWin.cs
@@ -38,6 +38,7 @@ protected override void OnPreOpen() { PlayerDatas.Instance.fairyData.OnRefreshApplyList += OnRefreshApplyList; PlayerDatas.Instance.fairyData.OnRefreshFairyMine += OnRefreshFairyMine; OnRefreshApplyList(); } @@ -51,9 +52,20 @@ protected override void OnAfterClose() { PlayerDatas.Instance.fairyData.OnRefreshApplyList -= OnRefreshApplyList; } PlayerDatas.Instance.fairyData.OnRefreshApplyList -= OnRefreshApplyList; PlayerDatas.Instance.fairyData.OnRefreshFairyMine -= OnRefreshFairyMine; } #endregion private void OnRefreshFairyMine() { if (!PlayerDatas.Instance.fairyData.HasFairy || !PlayerDatas.Instance.fairyData.IsCanFunc(PlayerFairyData.LimitFunc.CanKick)) { CloseImmediately(); } } private void OnRefreshFairyInfo() { PlayerFairyData.FairyData fairy = PlayerDatas.Instance.fairyData.fairy; System/HeavenBattle/HeavenBattleModel.cs
@@ -553,6 +553,70 @@ #endregion } public struct WeekTime { public int dayOfWeek { get; private set; } public int startHour { get; private set; } public int startMinute { get; private set; } public int startSeconds { get; private set; } public int endHour { get; private set; } public int endMinute { get; private set; } public WeekTime(int _weekDay, int _startHour, int _startMinute, int _endHour, int _endMinute, int _startSeconds = 0) { dayOfWeek = _weekDay; startHour = _startHour; startMinute = _startMinute; startSeconds = _startSeconds; endHour = _endHour; endMinute = _endMinute; } public static TimeSpan operator -(WeekTime y, WeekTime x) { var _totalSeconds = 0; int i = x.dayOfWeek; for (i = x.dayOfWeek; i != y.dayOfWeek; i = i == 7 ? 1 : i + 1) { if (i == x.dayOfWeek) { _totalSeconds += (23 - x.startHour) * 3600 + (59 - x.startMinute) * 60 + 60 - x.startSeconds; } else { _totalSeconds += 24 * 3600; } } if (i == y.dayOfWeek) { if (x.dayOfWeek == i) { var _timeSpany = new TimeSpan(y.startHour, y.startMinute, y.startSeconds); var _timeSpanx = new TimeSpan(x.startHour, x.startMinute, x.startSeconds); _totalSeconds += (int)(_timeSpany.TotalSeconds - _timeSpanx.TotalSeconds); } else { _totalSeconds += y.startHour * 3600; } } return new TimeSpan(_totalSeconds * TimeSpan.TicksPerSecond); } private static WeekTime s_Now = new WeekTime(); public static WeekTime Now { get { var _dayOfWeek = TimeUtility.ServerNow.DayOfWeek == DayOfWeek.Sunday ? 7 : (int)TimeUtility.ServerNow.DayOfWeek; s_Now.dayOfWeek = _dayOfWeek; s_Now.startHour = TimeUtility.Hour; s_Now.startMinute = TimeUtility.Minute; s_Now.startSeconds = TimeUtility.Second; return s_Now; } } } public enum HeavenBattleState { None, System/KnapSack/New/ChooseItemWin.cs
@@ -62,6 +62,7 @@ protected override void OnPreOpen() { useNum = 1; numKeyboard.gameObject.SetActive(false); chooseCell.gameObject.SetActive(false); chooseBtn.AddListener(ClickChooseBtn); closeBtn.AddListener(CloseWin); System/MainInterfacePanel/InGamePushContainer.cs
@@ -25,6 +25,14 @@ [SerializeField] DungeonGuardCheckBehaviour m_DungeonGuardBehaviour; [SerializeField] FirstChargeTrialBehaviour m_FirstChargeTrialBehaviour; WorldBossModel worldBossModel { get { return ModelCenter.Instance.GetModel<WorldBossModel>(); } } BossHomeModel bossHomeModel { get { return ModelCenter.Instance.GetModel<BossHomeModel>(); } } ElderGodAreaModel elderGodAreaModel { get { return ModelCenter.Instance.GetModel<ElderGodAreaModel>(); } } DemonJarModel demonJarModel { get { return ModelCenter.Instance.GetModel<DemonJarModel>(); } } DogzDungeonModel dogzDungeonModel { get { return ModelCenter.Instance.GetModel<DogzDungeonModel>(); } } VipModel vipModel { get { return ModelCenter.Instance.GetModel<VipModel>(); } } DungeonModel dungeonModel { get { return ModelCenter.Instance.GetModel<DungeonModel>(); } } FindPreciousModel findPreciousModel { get { return ModelCenter.Instance.GetModel<FindPreciousModel>(); } } BetterEquipGetModel betterEquipGetModel { get { return ModelCenter.Instance.GetModel<BetterEquipGetModel>(); } } RealmBetterEquipModel realmEquipModel { get { return ModelCenter.Instance.GetModel<RealmBetterEquipModel>(); } } @@ -202,30 +210,48 @@ { var findPreciousType = findPreciousModel.GetBossFindPreciousType(findPreciousModel.currentBossNotify); var killable = false; var show = true; var mapId = PlayerDatas.Instance.baseData.MapID; switch (findPreciousType) { case FindPreciousType.WorldBoss: killable = worldBossModel.wearyValue < GeneralConfig.Instance.bossWearyValues[0] + worldBossModel.extraBossWearyValue; show = !GeneralConfig.Instance.worldBossNoRebornRemindMaps.Contains(mapId); break; case FindPreciousType.BossHome: killable = bossHomeModel.wearyValue < vipModel.GetVipPrivilegeCnt(VipPrivilegeType.BossHomeAwardLimit); show = !GeneralConfig.Instance.bossHomeNoRebornRemindMaps.Contains(mapId); break; case FindPreciousType.ElderGodArea: var elderGodEnterTimes = dungeonModel.GetDungeonEnterTimes(ElderGodAreaModel.ELDERGODAREA_MAPID); var elderGodTotalTimes = dungeonModel.GetDungeonTotalTimes(ElderGodAreaModel.ELDERGODAREA_MAPID); killable = elderGodTotalTimes > elderGodEnterTimes; show = !GeneralConfig.Instance.elderGodNoRebornRemindMaps.Contains(mapId); break; case FindPreciousType.DemonJar: var totalTimes = dungeonModel.GetDungeonTotalTimes(DemonJarModel.DEMONJAR_MAPID); var enterTimes = dungeonModel.GetDungeonEnterTimes(DemonJarModel.DEMONJAR_MAPID); killable = totalTimes > enterTimes; show = !GeneralConfig.Instance.demonJarNoRebornRemindMaps.Contains(mapId); break; case FindPreciousType.DogzDungeon: killable = dogzDungeonModel.wearyValue < GeneralConfig.Instance.bossWearyValues[2]; show = !GeneralConfig.Instance.dogzNoRebornRemindMaps.Contains(mapId); break; } if (show) if (killable) { m_BossRebornPusher.DisplayRebornBoss(); m_BossRebornPusher.gameObject.SetActive(true); if (show) { m_BossRebornPusher.DisplayRebornBoss(); m_BossRebornPusher.gameObject.SetActive(true); } } else { findPreciousModel.ReportConfirmBossRebornNotify(findPreciousModel.currentBossNotify); } } else System/SystemSetting/SetPrivateModel.cs
@@ -28,7 +28,7 @@ hangUpPushlist.Add((int)PushNotifyType.PrivateChat); hangUpPushlist.Add((int)PushNotifyType.TJDead); hangUpPushlist.Add((int)PushNotifyType.TJWGTimeNoEnough); } public void OnBeforePlayerDataInitialize() @@ -54,7 +54,7 @@ public override void UnInit() { } public void SetActivityPushKey() @@ -73,13 +73,17 @@ { DailyQuestOpenTime dailyQuestOpenTime; dailyModel.TryGetOpenTime(dailyId, out dailyQuestOpenTime); foreach (var weekday in dailyQuestOpenTime.openTimes.Keys) for (int weekDay = 0; weekDay < 7; weekDay++) { List<HourMinute> hourMinutelist = dailyQuestOpenTime.openTimes[weekday]; for (int i = 0; i < hourMinutelist.Count; i++) var hourMinutelist = dailyQuestOpenTime.GetHourMinuteByWeek(weekDay); if (hourMinutelist != null) { string key = StringUtility.Contact(dailyId,weekday,hourMinutelist[i].hourBegin); keylist.Add(key); for (int j = 0; j < hourMinutelist.Count; j++) { var key = StringUtility.Contact(dailyId, weekDay, hourMinutelist[j].hourBegin); keylist.Add(key); } } } } @@ -165,7 +169,7 @@ public void RemoveActivityPushByKey(int dailyId, string pushKey) { if(pushAtcivityKeyDict[dailyId].Contains(pushKey)) if (pushAtcivityKeyDict[dailyId].Contains(pushKey)) { SDKUtility.Instance.GeTui_RemoveLocalMessage(pushKey); } @@ -190,10 +194,10 @@ string content = Language.Get("SetUpPrivate102", UIHelper.ServerStringTrim(PlayerDatas.Instance.baseData.PlayerName).TrimEnd(), config.Title); List<JsonData> pushNotifylist = new List<JsonData>(); List<string> pushKeylist = null; List<int> pushNotifyTimelist = GetPushNotifyTime(dailyId,out pushKeylist); List<int> pushNotifyTimelist = GetPushNotifyTime(dailyId, out pushKeylist); for (int i = 0; i < pushNotifyTimelist.Count; i++) { if(i < pushKeylist.Count) if (i < pushKeylist.Count) { JsonData _params = new JsonData(); _params["code"] = 2005; @@ -213,46 +217,52 @@ return pushNotifylist; } private List<int> GetPushNotifyTime(int dailyId,out List<string> pushKey) private List<int> GetPushNotifyTime(int dailyId, out List<string> pushKey) { List<int> pushDelaySecond = new List<int>(); pushKey = new List<string>(); DailyQuestOpenTime dailyQuestOpenTime; dailyModel.TryGetOpenTime(dailyId, out dailyQuestOpenTime); foreach (var weekday in dailyQuestOpenTime.openTimes.Keys) for (int weekDay = 0; weekDay < 7; weekDay++) { int day = weekday > 0 ? weekday : 7; int curDay = (int)TimeUtility.ServerNow.DayOfWeek > 0 ? (int)TimeUtility.ServerNow.DayOfWeek : 7; List <HourMinute> hourMinutelist = dailyQuestOpenTime.openTimes[weekday]; int remainDay = day - curDay; if (remainDay < 0) var hourMinutelist = dailyQuestOpenTime.GetHourMinuteByWeek(weekDay); if (hourMinutelist != null) { remainDay = 7 + remainDay; } for (int i = 0; i < hourMinutelist.Count; i++) { int remainHour = hourMinutelist[i].hourBegin - TimeUtility.ServerNow.Hour; int remainMinute = hourMinutelist[i].minuteBegin - TimeUtility.ServerNow.Minute; if(remainDay <= 0) int day = weekDay > 0 ? weekDay : 7; int curDay = (int)TimeUtility.ServerNow.DayOfWeek > 0 ? (int)TimeUtility.ServerNow.DayOfWeek : 7; int remainDay = day - curDay; if (remainDay < 0) { if (remainHour < 0) remainDay = 7 + remainDay; } for (int i = 0; i < hourMinutelist.Count; i++) { int remainHour = hourMinutelist[i].hourBegin - TimeUtility.ServerNow.Hour; int remainMinute = hourMinutelist[i].minuteBegin - TimeUtility.ServerNow.Minute; if (remainDay <= 0) { remainDay = 7; if (remainHour < 0) { remainDay = 7; } else if (remainHour == 0 && remainMinute < 0) { remainDay = 7; } } else if (remainHour == 0 && remainMinute < 0) int remainSecond = remainDay * 24 * 60 * 60 + remainHour * 60 * 60 + remainMinute * 60; if (remainSecond > 120) { remainDay = 7; string key = StringUtility.Contact(dailyId, weekDay, hourMinutelist[i].hourBegin); pushKey.Add(key); pushDelaySecond.Add(remainSecond); } } int remainSecond = remainDay * 24 * 60 * 60 + remainHour * 60 * 60 + remainMinute * 60; if (remainSecond > 120) { string key = StringUtility.Contact(dailyId,weekday,hourMinutelist[i].hourBegin); pushKey.Add(key); pushDelaySecond.Add(remainSecond); } } } return pushDelaySecond; } @@ -295,7 +305,7 @@ } } int pushSet = Convert.ToInt32(pushSB.ToString(),2); int pushSet = Convert.ToInt32(pushSB.ToString(), 2); SendPushNotifyQuest(pushSet); } @@ -307,12 +317,12 @@ { if (i < hangUpPushlist.Count) { if (vipLv > 0 if (vipLv > 0 && !vipModel.IsVipExperience()) { pushSetDict[indexlist[i]] = true; } else if(vipLv < 1 else if (vipLv < 1 && !vipModel.IsVipExperience()) { pushSetDict[indexlist[i]] = false; @@ -347,7 +357,7 @@ { pushSetDict[indexlist[i]] = true; } else if(!vipModel.IsVipExperience() else if (!vipModel.IsVipExperience() && PlayerDatas.Instance.baseData.VIPLv < 1) { pushSetDict[indexlist[i]] = false; @@ -365,7 +375,7 @@ } int pushSet = Convert.ToInt32(pushSB.ToString(), 2); SendPushNotifyQuest(pushSet); LocalSave.SetBool(VIPEXPERIENCERECORD,vipModel.IsVipExperience()); LocalSave.SetBool(VIPEXPERIENCERECORD, vipModel.IsVipExperience()); } public void RefreshPushSet(int switchIndex, bool isOpen) @@ -401,7 +411,7 @@ DailyQuestOpenTime dailyQuestOpenTime; dailyModel.TryGetOpenTime(quests[i], out dailyQuestOpenTime); var config = Config.Instance.Get<DailyQuestConfig>(quests[i]); if(isFunclimit) if (isFunclimit) { if (dailyQuestOpenTime.IsValidServerOpenTime() && FuncOpen.Instance.IsFuncOpen(config.UnLockFuncID)) { @@ -437,11 +447,15 @@ week = dailyQuestOpenTime.ToOpenTimeString(); title = config.Title; time = ""; foreach (var weekday in dailyQuestOpenTime.openTimes.Keys) for (int i = 0; i < 7; i++) { List<HourMinute> hourMinutelist = dailyQuestOpenTime.openTimes[weekday]; time = StringUtility.Contact(hourMinutelist[0].hourBegin > 9 ? hourMinutelist[0].hourBegin.ToString() : "0" + hourMinutelist[0].hourBegin, ":", hourMinutelist[0].minuteBegin > 9 ? hourMinutelist[0].minuteBegin.ToString() : "0" + hourMinutelist[0].minuteBegin); break; var hourMinutelist = dailyQuestOpenTime.GetHourMinuteByWeek(i); if (hourMinutelist != null) { time = StringUtility.Contact(hourMinutelist[0].hourBegin > 9 ? hourMinutelist[0].hourBegin.ToString() : "0" + hourMinutelist[0].hourBegin, ":", hourMinutelist[0].minuteBegin > 9 ? hourMinutelist[0].minuteBegin.ToString() : "0" + hourMinutelist[0].minuteBegin); break; } } } @@ -477,7 +491,7 @@ } pushSB.Length = 0; List<int> indexlist = pushSetDict.Keys.ToList(); for(int i = indexlist.Count - 1; i > -1; i--) for (int i = indexlist.Count - 1; i > -1; i--) { if (pushSetDict[indexlist[i]]) { @@ -536,9 +550,9 @@ DailyQuestOpenTime openTime; dailyModel.TryGetOpenTime(dailyId, out openTime); var dayOfWeek = (int)TimeUtility.ServerNow.DayOfWeek; if (openTime.openTimes.ContainsKey(dayOfWeek)) var hourMinutes = openTime.GetHourMinuteByWeek(dayOfWeek); if (hourMinutes != null) { var hourMinutes = openTime.openTimes[dayOfWeek]; for (int i = 0; i < hourMinutes.Count; i++) { var minutes = TimeUtility.ServerNow.Hour * 60 + TimeUtility.ServerNow.Minute; @@ -546,7 +560,7 @@ if (minuteOffset <= 2 && minuteOffset > 0) { string key = StringUtility.Contact(dailyId, dayOfWeek, hourMinutes[i].hourBegin); RemoveActivityPushByKey(dailyId,key); RemoveActivityPushByKey(dailyId, key); } } } System/Team/MyTeamWin.cs
@@ -200,7 +200,7 @@ private void CancelAutoPrepare() { model.myTeam.autoPrepare.Reset(); model.myTeam.autoPrepare.CancelAutoPrepare(); } private void OnAutoAcceptInvitationValueChange(bool _value) System/Team/TeamData.cs
@@ -71,7 +71,7 @@ m_Mission = value; if (autoPrepare.auto && autoPrepare.cancelWhenTargetChange) { autoPrepare.Reset(); autoPrepare.CancelAutoPrepare(); } } } @@ -197,7 +197,7 @@ if (!oldInTeam && inTeam) { autoPrepare.Reset(); autoPrepare.CancelAutoPrepare(); } var newCaptainer = memberCount > 0 ? members[0].id : 0; @@ -205,7 +205,7 @@ { if (autoPrepare.auto && autoPrepare.cancelWhenCaptainerChange) { autoPrepare.Reset(); autoPrepare.CancelAutoPrepare(); } } } @@ -487,18 +487,17 @@ return false; } public bool IsAllOk(int _expectCount) public bool IsAllOk() { var okCount = 0; foreach (var key in playerStates.Keys) { if (playerStates[key] == TeammatePrepareState.Prepared) if (playerStates[key] != TeammatePrepareState.Prepared) { okCount++; return false; } } return okCount >= _expectCount; return true; } } @@ -521,7 +520,7 @@ bool m_Auto = false; public bool auto { get { return m_Auto; } set { private set { if (m_Auto != value) { m_Auto = value; @@ -533,16 +532,37 @@ } } public bool cancelWhenTargetChange = true; public bool cancelWhenCaptainerChange = false; public int mapId { get; private set; } public int mapEx { get; private set; } bool m_CancelWhenTargetChange = true; public bool cancelWhenTargetChange { get { return m_CancelWhenTargetChange; } } bool m_CancelWhenCaptainerChange = false; public bool cancelWhenCaptainerChange { get { return m_CancelWhenCaptainerChange; } } public event Action autoPrepareChangeEvent; public void Reset() public void CancelAutoPrepare() { auto = false; cancelWhenCaptainerChange = false; cancelWhenTargetChange = true; this.mapId = 0; this.mapEx = 0; this.m_CancelWhenCaptainerChange = false; this.m_CancelWhenTargetChange = true; this.auto = false; } public void SetAutoPreapare(int mapId, int mapEx, bool cancelWhenTargetChange, bool cancelWhenCaptainerChange) { this.mapId = mapId; this.mapEx = mapEx; this.m_CancelWhenTargetChange = cancelWhenTargetChange; this.m_CancelWhenCaptainerChange = cancelWhenCaptainerChange; this.auto = true; } } System/Team/TeamMissionGroup.cs
@@ -21,7 +21,8 @@ [SerializeField] ScrollRect m_ScrollRect; [SerializeField] ToggleButtonGroup m_ToggleButtonGroup; public ToggleButtonGroup toggleButtonGroup { public ToggleButtonGroup toggleButtonGroup { get { return m_ToggleButtonGroup; } } @@ -119,7 +120,7 @@ DailyQuestOpenTime openTime; if (dailyQuestModel.TryGetOpenTime(dailyQuestId, out openTime)) { return openTime.IsValidServerOpenTime() && openTime.InOpenTime(); return openTime.InOpenTime(); } else { System/Team/TeamModel.cs
@@ -1017,6 +1017,7 @@ teamPrepare.UpdatePrepareState(_serverInfo); if (teamPrepare.isError) { prepareBeginTime = DateTime.MinValue; WindowCenter.Instance.Close<TeamPrepareWin>(); } else @@ -1028,6 +1029,7 @@ if (teamPrepare.IsReject()) { prepareBeginTime = DateTime.MinValue; WindowCenter.Instance.Close<TeamPrepareWin>(); } else System/Team/TeamPrepareSettingWin.cs
@@ -73,10 +73,10 @@ private void Confirm() { model.myTeam.autoPrepare.auto = true; model.myTeam.autoPrepare.cancelWhenCaptainerChange = m_CaptainerSettingBuf; model.myTeam.autoPrepare.cancelWhenTargetChange = m_TargetSettingBuf; var mapId = model.myTeam.mission.mapId; var mapEx = model.myTeam.mission.mapEx; model.myTeam.autoPrepare.SetAutoPreapare(mapId,mapEx, m_TargetSettingBuf,m_CaptainerSettingBuf); CloseClick(); } System/Team/TeamPrepareWin.cs
@@ -27,9 +27,8 @@ [SerializeField] Button m_CaptainerCancel; float prepareTotalTime = 30f; float timeOut = 0f; float timer = 0f; bool alreadyAutoPrepare = false; bool rejectManual = false; @@ -54,6 +53,8 @@ NewBieCenter.Instance.FinishNewBieGuide(NewBieCenter.Instance.currentGuide); } timeOut = Time.time + GeneralConfig.Instance.teamReadyTime + 10f; rejectManual = false; if (!model.myTeam.iamCaptainer) { @@ -77,7 +78,18 @@ if (model.myTeam.autoPrepare.auto) { Prepare(); if (model.myTeam.autoPrepare.cancelWhenTargetChange) { if (model.myTeam.autoPrepare.mapId == model.teamPrepare.mapId && model.myTeam.autoPrepare.mapEx == model.teamPrepare.mapEx) { Prepare(); } } else { Prepare(); } } } @@ -144,8 +156,9 @@ { rejectManual = true; model.RequestPrepareEnterDungeon(false); StartCoroutine(Co_DelayCloseWin()); } StartCoroutine(Co_DelayCloseWin()); } private void Prepare() @@ -188,6 +201,11 @@ alreadyAutoPrepare = true; Reject(); } if (Time.time > timeOut) { WindowCenter.Instance.Close<TeamPrepareWin>(); } } IEnumerator Co_DelayCloseWin() System/Team/TeamTargetJoinLimitWin.cs
@@ -278,10 +278,10 @@ } else { var week = DateTime.Now.DayOfWeek; if (openTime.openTimes.ContainsKey((int)week)) var week = (int)TimeUtility.ServerNow.DayOfWeek; var durations = openTime.GetHourMinuteByWeek(week); if (durations != null) { var durations = openTime.openTimes[(int)week]; var stringArray = new string[durations.Count]; for (int i = 0; i < durations.Count; i++) { UI/Effect/TimeMgr.cs
@@ -45,7 +45,7 @@ } catch (Exception e) { DebugEx.Log(e.Message); DebugEx.Log(e.StackTrace); } for (int i = 0; i < syntonyList.Count; i++) { Utility/TimeUtility.cs
@@ -10,8 +10,10 @@ /// <summary> /// 当前服务器时间 /// </summary> public static DateTime ServerNow { get { public static DateTime ServerNow { get { float tick = Time.realtimeSinceStartup - _checkTime; DateTime real = _serverTime.AddSeconds(tick); return real; @@ -22,37 +24,43 @@ /// <summary> /// 年份 /// </summary> public static int Year { public static int Year { get { return ServerNow.Year; } } /// <summary> /// 月份 /// </summary> public static int Month { public static int Month { get { return ServerNow.Month; } } /// <summary> /// 天 /// </summary> public static int Day { public static int Day { get { return ServerNow.Day; } } /// <summary> /// 小时 /// </summary> public static int Hour { public static int Hour { get { return ServerNow.Hour; } } /// <summary> /// 分钟 /// </summary> public static int Minute { public static int Minute { get { return ServerNow.Minute; } } /// <summary> /// 秒 /// </summary> public static int Second { public static int Second { get { return ServerNow.Second; } } /// <summary> @@ -63,24 +71,31 @@ /// <summary> /// 服务器时间相比起始时间的秒数(主要方便比较) /// </summary> public static int AllSeconds { get { public static int AllSeconds { get { TimeSpan t = ServerNow - OriginalTime; return t.Seconds; } } public static int OpenDay { public static int OpenDay { get; private set; } public static bool IsMixServer { public static bool IsMixServer { get; private set; } public static int MixOpenDay { public static int MixOpenDay { get; private set; } public static DateTime openServerTime; public static int OpenWeekCnt { @@ -124,10 +139,11 @@ { DateTime n = new DateTime(vNetData.Year, vNetData.Month, vNetData.Day, vNetData.Hour, vNetData.Minute, vNetData.Second); _serverTime = n; DebugEx.Log("OnRefreshServerTime月份:"+_serverTime.Month); DebugEx.Log("OnRefreshServerTime月份:" + _serverTime.Month); _checkTime = Time.realtimeSinceStartup; if (OnServerTimeRefresh != null) OnServerTimeRefresh(); TimeDownMgr.Instance.Begin(TimeDownMgr.CoolTimeType.SyncServerTime, 60, (float tick) => { TimeDownMgr.Instance.Begin(TimeDownMgr.CoolTimeType.SyncServerTime, 60, (float tick) => { SyncServerTime(); }, 60); } @@ -137,7 +153,9 @@ OpenDay = package.Day; IsMixServer = package.IsMixServer == 1; MixOpenDay = package.MixDay; if (OnServerOpenDayRefresh != null) { DateTime.TryParse(package.OpenServerTime, out openServerTime); if (OnServerOpenDayRefresh != null) { OnServerOpenDayRefresh(); } }