| | |
| | | {
|
| | | 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))
|
| | | {
|
| | |
| | | {
|
| | | 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))
|
| | | {
|
| | |
| | | {
|
| | | ClearFairyWarHelp();
|
| | | frontFairyList.Clear();
|
| | | mixServerWeekTimes.Clear();
|
| | | fairyLeagueFairyId = 0;
|
| | | fairyLeagueFairyName = string.Empty;
|
| | | serverInited = false;
|
| | |
| | |
|
| | | public void OnPlayerLoginOk()
|
| | | {
|
| | | ParseMixServerLeagueTimes();
|
| | | ResetFairyLeagueTime();
|
| | | cacheLeagueStage = fairyLeagueStage;
|
| | | CheckFairyLeagueData();
|
| | |
| | |
|
| | | private void OnServerOpenDayRefresh()
|
| | | {
|
| | | ParseMixServerLeagueTimes();
|
| | | ResetFairyLeagueTime();
|
| | | cacheLeagueStage = fairyLeagueStage;
|
| | | CheckFairyLeagueData();
|
| | | UpdateRedpoint();
|
| | | }
|
| | |
|
| | | private void DayEvent()
|
| | |
| | | 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()
|
| | | {
|
| | |
| | | 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
|
| | |
|
| | |
| | | }
|
| | | }
|
| | |
|
| | | public int lastMixServerDay
|
| | | {
|
| | | get
|
| | | {
|
| | | return rings[rings.Count - 1].mixServerDay;
|
| | | }
|
| | | }
|
| | |
|
| | | public void AddStage(DungeonStateTimeConfig config)
|
| | | {
|
| | | var ring = rings.Find((x) =>
|
| | |
| | | }
|
| | |
|
| | | 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) =>
|
| | | {
|
| | |
| | |
|
| | | public int openServerDay { get; private set; }
|
| | |
|
| | | public int mixServerDay { get; private set; }
|
| | |
|
| | | public void Sort()
|
| | | {
|
| | | sessions.Sort((Session x, Session y) =>
|
| | |
| | | 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) =>
|
| | | {
|
| | |
| | | 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) =>
|