using cfg.ActorCfg; using cfg.CharacterCfg; using Framework; using Gameplay.Net; using System; namespace Gameplay { public partial class CommonUtils { public enum E_TimeType { /// /// 本地 /// Local, /// /// 服务器 /// Server, } private static readonly DateTime Epoch = new(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc); /// /// 根据时间戳获取时间(秒时间戳) /// /// 秒 /// public static DateTime GetTimeByTimestamp(uint timestamp) { return Epoch.AddSeconds(timestamp).ToLocalTime(); } /// /// 根据时间戳获取时间(毫秒时间戳) /// /// 毫秒 /// public static DateTime GetTimeByTimestamp(ulong timestamp) { return Epoch.AddMilliseconds(timestamp).ToLocalTime(); } /// /// 获取当前时间 /// /// /// public static DateTime GetCurTime(E_TimeType timeType) { return timeType switch { E_TimeType.Local => DateTime.Now, E_TimeType.Server => GetTimeByTimestamp(NetManager.Instance.ServerTimeMS), _ => DateTime.MinValue, }; } /// /// 判断是否是生日 /// /// /// public static bool IsBirth(DateTime birthTime) { DateTime curTime = GetCurTime(E_TimeType.Server); return curTime.Month == birthTime.Month && curTime.Day == birthTime.Day; } /// /// 判断是否在未成年人游玩时间段内 /// /// public static bool IsUnderagePlayTimeAllowed() { var time = GetCurTime(E_TimeType.Server); if (time.Hour != TableManager.Instance.Tables.GlobalConfig.UnderEighteenGameHour)//不在时间段内 { return false; } bool isDayOK = false; if (TableManager.Instance.Tables.GlobalConfig.UnderEighteenGameWeekDay.Contains((int)time.DayOfWeek))//在游玩日内 { isDayOK = true; } foreach (var date in TableManager.Instance.Tables.Holidays.DataList)//节假日 { if (date.Month == time.Month && date.Day == time.Day) { isDayOK = true; break; } } return isDayOK; } } }