| | |
| | | public ushort Day; // 已开服天数,从0开始
|
| | | public byte IsMixServer; //是否是合服服务器
|
| | | public ushort MixDay; // 已合服天数,从0开始
|
| | | public string OpenServerTime; //开服时间yyyy-MM-dd HH:mm:ss
|
| | | public byte OpenWeekday; //开服是周几,1代表周一
|
| | | public ushort NowYear; //服务器当前时间 - 年
|
| | | public byte NowMonth;
|
| | | public byte NowDay;
|
| | | public byte NowHour;
|
| | | public byte NowMinute;
|
| | | public byte NowSecond;
|
| | | public uint NowMicSecond;
|
| | |
|
| | | public HA005_tagOpenServerDay()
|
| | | {
|
| | |
| | | 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);
|
| | | TransBytes(out OpenWeekday, vBytes, NetDataType.BYTE);
|
| | | TransBytes(out NowYear, vBytes, NetDataType.WORD);
|
| | | TransBytes(out NowMonth, vBytes, NetDataType.BYTE);
|
| | | TransBytes(out NowDay, vBytes, NetDataType.BYTE);
|
| | | TransBytes(out NowHour, vBytes, NetDataType.BYTE);
|
| | | TransBytes(out NowMinute, vBytes, NetDataType.BYTE);
|
| | | TransBytes(out NowSecond, vBytes, NetDataType.BYTE);
|
| | | TransBytes(out NowMicSecond, vBytes, NetDataType.DWORD);
|
| | | }
|
| | |
|
| | | } |
| | |
| | | }
|
| | |
|
| | | var isSpecialDay = TimeUtility.OpenWeekCnt <= 1;
|
| | | var openDayWeek = (int)TimeUtility.openServerTime.DayOfWeek;
|
| | | var openDayWeek = (int)TimeUtility.openServerDayOfWeek;
|
| | | var dayIndex = TimeUtility.OpenDay + 1;
|
| | | if (isSpecialDay)
|
| | | {
|
| | |
| | | public bool TryGetTodayNearestOpenTime(out HourMinute _hourMinute)
|
| | | {
|
| | | var isSpecialDay = TimeUtility.OpenWeekCnt <= 1;
|
| | | var openDayWeek = (int)TimeUtility.openServerTime.DayOfWeek;
|
| | | var openDayWeek = (int)TimeUtility.openServerDayOfWeek;
|
| | | var dayIndex = TimeUtility.OpenDay + 1;
|
| | | if (isSpecialDay)
|
| | | {
|
| | |
| | |
|
| | | public bool ContainTimeNode(int week, int timeNode)
|
| | | {
|
| | | var openDayWeek = (int)TimeUtility.openServerTime.DayOfWeek;
|
| | | var openDayWeek = (int)TimeUtility.openServerDayOfWeek;
|
| | |
|
| | | List<HourMinute> hourMinutes = null;
|
| | | var dayDelta = (week == 0 ? 7 : week) - (openDayWeek == 0 ? 7 : openDayWeek);
|
| | |
| | |
|
| | | private bool ContainWeek(int week)
|
| | | {
|
| | | var openDayWeek = (int)TimeUtility.openServerTime.DayOfWeek;
|
| | | var openDayWeek = (int)TimeUtility.openServerDayOfWeek;
|
| | | var todayWeek = (int)TimeUtility.ServerNow.DayOfWeek;
|
| | | var dayDelta = (week == 0 ? 7 : week) - (openDayWeek == 0 ? 7 : openDayWeek);
|
| | |
|
| | |
| | | var isSpecificDay = TimeUtility.OpenWeekCnt <= 1;
|
| | | if (isSpecificDay)
|
| | | {
|
| | | var openDayWeek = (int)TimeUtility.openServerTime.DayOfWeek;
|
| | | var openDayWeek = (int)TimeUtility.openServerDayOfWeek;
|
| | | var todayWeek = (int)TimeUtility.ServerNow.DayOfWeek;
|
| | | var dayDelta = ((week == 0 ? 7 : week) - (todayWeek == 0 ? 7 : todayWeek));
|
| | | var dayIndex = TimeUtility.OpenDay + 1 + dayDelta;
|
| | |
| | | {
|
| | | get
|
| | | {
|
| | | var openServerTime = TimeUtility.openServerTime;
|
| | | var openServerWeekDay = openServerTime.DayOfWeek == DayOfWeek.Sunday ? 7 : (int)openServerTime.DayOfWeek;
|
| | | var openServerWeekDay = TimeUtility.openServerDayOfWeek == DayOfWeek.Sunday ? 7 : (int)TimeUtility.openServerDayOfWeek;
|
| | | if (specialLeagueTimes.ContainsKey(openServerWeekDay))
|
| | | {
|
| | | var dict = specialLeagueTimes[openServerWeekDay];
|
| | |
| | | {
|
| | | get
|
| | | {
|
| | | var openServerTime = TimeUtility.openServerTime;
|
| | | var openServerWeekDay = openServerTime.DayOfWeek == DayOfWeek.Sunday ? 7 : (int)openServerTime.DayOfWeek;
|
| | | var openServerWeekDay = TimeUtility.openServerDayOfWeek == DayOfWeek.Sunday ? 7 : (int)TimeUtility.openServerDayOfWeek;
|
| | | if (specialLeagueTimes.ContainsKey(openServerWeekDay))
|
| | | {
|
| | | var dict = specialLeagueTimes[openServerWeekDay];
|
| | |
| | | {
|
| | | return x.stage == FairyLeagueStage.Fight;
|
| | | });
|
| | | var time = TimeUtility.openServerTime.AddTicks((weekTime.rings[0].openServerDay - 1) * TimeSpan.TicksPerDay);
|
| | | var time = TimeUtility.ServerNow.AddTicks((weekTime.rings[0].openServerDay - TimeUtility.OpenDay - 1) * TimeSpan.TicksPerDay);
|
| | | time = new DateTime(time.Year, time.Month, time.Day, fightStage.startHour, fightStage.startMinute, 0);
|
| | | seconds = (int)(time - TimeUtility.ServerNow).TotalSeconds;
|
| | | seconds = Mathf.Max(seconds, 0);
|
| | |
| | | {
|
| | | if (TimeUtility.OpenWeekCnt <= 1)
|
| | | {
|
| | | var openServerTime = TimeUtility.openServerTime;
|
| | | var openServerWeekDay = openServerTime.DayOfWeek == DayOfWeek.Sunday ? 7 : (int)openServerTime.DayOfWeek;
|
| | | var openServerWeekDay = TimeUtility.openServerDayOfWeek == DayOfWeek.Sunday ? 7 : (int)TimeUtility.openServerDayOfWeek;
|
| | | if (specialLeagueTimes.ContainsKey(openServerWeekDay))
|
| | | {
|
| | | var dict = specialLeagueTimes[openServerWeekDay];
|
| | |
| | | day = int.Parse(dateArray[2].Trim())
|
| | | };
|
| | | }
|
| | | else if (dateArray != null && dateArray.Length == 1)
|
| | | {
|
| | | var time = TimeUtility.openServerTime;
|
| | | if (time.Equals(default(DateTime)))
|
| | | {
|
| | | DebugEx.Log("服务期开服时间下发顺序有问题");
|
| | | }
|
| | | var days = 0;
|
| | | int.TryParse(date, out days);
|
| | | days = Mathf.Max(1, days);
|
| | | time = time.AddDays(days - 1);
|
| | | return new OperationDate()
|
| | | {
|
| | | year = time.Year,
|
| | | month = time.Month,
|
| | | day = time.Day,
|
| | | };
|
| | | }
|
| | | //else if (dateArray != null && dateArray.Length == 1)
|
| | | //{
|
| | | // var time = TimeUtility.openServerTime;
|
| | | // if (time.Equals(default(DateTime)))
|
| | | // {
|
| | | // DebugEx.Log("服务期开服时间下发顺序有问题");
|
| | | // }
|
| | | // var days = 0;
|
| | | // int.TryParse(date, out days);
|
| | | // days = Mathf.Max(1, days);
|
| | | // time = time.AddDays(days - 1);
|
| | | // return new OperationDate()
|
| | | // {
|
| | | // year = time.Year,
|
| | | // month = time.Month,
|
| | | // day = time.Day,
|
| | | // };
|
| | | //}
|
| | | return default(OperationDate);
|
| | | }
|
| | |
|
| | |
| | |
|
| | | public static class TimeUtility
|
| | | {
|
| | | private static DateTime _serverTime = DateTime.Now;
|
| | | private static DateTime s_ServerTime = DateTime.Now;
|
| | |
|
| | | private static float _checkTime = 0;
|
| | | /// <summary>
|
| | |
| | | get
|
| | | {
|
| | | float tick = Time.realtimeSinceStartup - _checkTime;
|
| | | DateTime real = _serverTime.AddSeconds(tick);
|
| | | DateTime real = s_ServerTime.AddSeconds(tick);
|
| | | return real;
|
| | | }
|
| | | private set { _serverTime = value; }
|
| | | private set { s_ServerTime = value; }
|
| | | }
|
| | |
|
| | | /// <summary>
|
| | |
| | | get; private set;
|
| | | }
|
| | |
|
| | | public static DateTime openServerTime;
|
| | | public static DayOfWeek openServerDayOfWeek;
|
| | |
|
| | | public static int OpenWeekCnt
|
| | | {
|
| | |
| | | public static void OnRefreshServerTime(HA004_tagServerDateTime vNetData)
|
| | | {
|
| | | DateTime n = new DateTime(vNetData.Year, vNetData.Month, vNetData.Day, vNetData.Hour, vNetData.Minute, vNetData.Second);
|
| | | _serverTime = n;
|
| | | DebugEx.Log("OnRefreshServerTime月份:" + _serverTime.Month);
|
| | | s_ServerTime = n;
|
| | | DebugEx.Log("OnRefreshServerTime月份:" + s_ServerTime.Month);
|
| | | _checkTime = Time.realtimeSinceStartup;
|
| | | if (OnServerTimeRefresh != null) OnServerTimeRefresh();
|
| | | if (OnServerTimeRefresh != null)
|
| | | {
|
| | | OnServerTimeRefresh();
|
| | | }
|
| | | TimeDownMgr.Instance.Begin(TimeDownMgr.CoolTimeType.SyncServerTime, 60, (float tick) =>
|
| | | {
|
| | | SyncServerTime();
|
| | |
| | | OpenDay = package.Day;
|
| | | IsMixServer = package.IsMixServer == 1;
|
| | | MixOpenDay = package.MixDay;
|
| | | DateTime.TryParse(package.OpenServerTime, out openServerTime);
|
| | | openServerDayOfWeek = package.OpenWeekday == 7 ? DayOfWeek.Sunday : (DayOfWeek)package.OpenWeekday;
|
| | | OnRefreshServerTime(new HA004_tagServerDateTime()
|
| | | {
|
| | | Year = package.NowYear,
|
| | | Month = package.NowMonth,
|
| | | Day = package.NowDay,
|
| | | Hour = package.NowHour,
|
| | | Minute = package.NowMinute,
|
| | | Second = package.NowSecond,
|
| | | MicSecond = package.NowMicSecond,
|
| | | });
|
| | | //DateTime.TryParse(package.OpenServerTime, out openServerTime);
|
| | | if (OnServerOpenDayRefresh != null)
|
| | | {
|
| | | OnServerOpenDayRefresh();
|