少年修仙传客户端代码仓库
client_Wu Xijin
2018-09-17 1b053e7cead257e81376e11c7224316061f983e5
3243  【开发】开服限时活动定制
3个文件已修改
82 ■■■■■ 已修改文件
System/DailyQuest/DailyQuestData.cs 76 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/DailyQuest/DailyQuestModel.cs 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/Dungeon/DungeonModel.cs 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/DailyQuest/DailyQuestData.cs
@@ -38,8 +38,7 @@
    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; }
    }
@@ -58,7 +57,7 @@
    //常规的活动时间,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>>>();
    Dictionary<int, Dictionary<int, List<HourMinute>>> specialOpenTimes = new Dictionary<int, Dictionary<int, List<HourMinute>>>();
    public DailyQuestOpenTime(int _id)
    {
@@ -111,7 +110,7 @@
        }
    }
    public void ParseQuestSpecificOpenTimes(List<DailyQuestSpecialOpenTimeConfig> configs)
    public void ParseQuestSpecialOpenTimes(List<DailyQuestSpecialOpenTimeConfig> configs)
    {
        if (configs == null)
        {
@@ -121,12 +120,12 @@
        foreach (var config in configs)
        {
            var openDayWeek = config.OpenServerWeek % 7;
            if (!specificOpenTimes.ContainsKey(openDayWeek))
            if (!specialOpenTimes.ContainsKey(openDayWeek))
            {
                specificOpenTimes[openDayWeek] = new Dictionary<int, List<HourMinute>>();
                specialOpenTimes[openDayWeek] = new Dictionary<int, List<HourMinute>>();
            }
            var dayIndexOpenTimes = specificOpenTimes[openDayWeek];
            var dayIndexOpenTimes = specialOpenTimes[openDayWeek];
            var dayIndex = config.OpenServerDay;
            if (!dayIndexOpenTimes.ContainsKey(dayIndex))
            {
@@ -180,7 +179,7 @@
        }
    }
    public void ParseDungeonSpecificOpenTimes(List<DungeonSpecialStateTimeConfig> configs)
    public void ParseDungeonSpecialOpenTimes(List<DungeonSpecialStateTimeConfig> configs)
    {
        if (configs == null)
        {
@@ -190,12 +189,12 @@
        foreach (var config in configs)
        {
            var openDayWeek = config.OpenServerWeek % 7;
            if (!specificOpenTimes.ContainsKey(openDayWeek))
            if (!specialOpenTimes.ContainsKey(openDayWeek))
            {
                specificOpenTimes[openDayWeek] = new Dictionary<int, List<HourMinute>>();
                specialOpenTimes[openDayWeek] = new Dictionary<int, List<HourMinute>>();
            }
            var dayIndexOpenTimes = specificOpenTimes[openDayWeek];
            var dayIndexOpenTimes = specialOpenTimes[openDayWeek];
            var dayIndex = config.OpenServerDay;
            if (!dayIndexOpenTimes.ContainsKey(dayIndex))
            {
@@ -220,12 +219,14 @@
            return true;
        }
        var isSpecificDay = TimeUtility.OpenWeekCnt <= 1;
        var isSpecialDay = TimeUtility.OpenWeekCnt <= 1;
        var openDayWeek = (int)TimeUtility.openServerTime.DayOfWeek;
        var dayIndex = TimeUtility.OpenDay + 1;
        if (isSpecificDay && specificOpenTimes.ContainsKey(openDayWeek) && specificOpenTimes[openDayWeek].ContainsKey(dayIndex))
        if (isSpecialDay && specialOpenTimes.ContainsKey(openDayWeek) && specialOpenTimes[openDayWeek].ContainsKey(dayIndex))
        {
            var hourMinutes = specificOpenTimes[openDayWeek][dayIndex];
            if (specialOpenTimes.ContainsKey(openDayWeek) && specialOpenTimes[openDayWeek].ContainsKey(dayIndex))
            {
                var hourMinutes = specialOpenTimes[openDayWeek][dayIndex];
            for (int i = 0; i < hourMinutes.Count; i++)
            {
                if (hourMinutes[i].InOpenTime())
@@ -235,6 +236,11 @@
            }
            return false;
            }
            else
            {
                return false;
            }
        }
        else
        {
@@ -262,14 +268,16 @@
    public bool TryGetTodayNearestOpenTime(out HourMinute _hourMinute)
    {
        var isSpecificDay = TimeUtility.OpenWeekCnt <= 1;
        var isSpecialDay = TimeUtility.OpenWeekCnt <= 1;
        var openDayWeek = (int)TimeUtility.openServerTime.DayOfWeek;
        var dayIndex = TimeUtility.OpenDay + 1;
        if (isSpecificDay && specificOpenTimes.ContainsKey(openDayWeek) && specificOpenTimes[openDayWeek].ContainsKey(dayIndex))
        if (isSpecialDay)
        {
            if (specialOpenTimes.ContainsKey(openDayWeek) && specialOpenTimes[openDayWeek].ContainsKey(dayIndex))
        {
            var hour = TimeUtility.ServerNow.Hour;
            var minute = TimeUtility.ServerNow.Minute;
            var hourMinutes = specificOpenTimes[openDayWeek][dayIndex];
                var hourMinutes = specialOpenTimes[openDayWeek][dayIndex];
            _hourMinute = hourMinutes[hourMinutes.Count - 1];
            for (int i = 0; i < hourMinutes.Count; i++)
            {
@@ -282,6 +290,12 @@
            }
            return true;
            }
            else
            {
                _hourMinute = default(HourMinute);
                return false;
            }
        }
        else
        {
@@ -313,7 +327,21 @@
    public bool ContainTimeNode(int week, int timeNode)
    {
        var hourMinutes = GetHourMinuteByWeek(week);
        var isSpecialDay = TimeUtility.OpenWeekCnt <= 1;
        var openDayWeek = (int)TimeUtility.openServerTime.DayOfWeek;
        var dayIndex = TimeUtility.OpenDay + 1;
        List<HourMinute> hourMinutes = null;
        var dayDelta = (week == 0 ? 7 : week) - openDayWeek;
        if (TimeUtility.OpenWeekCnt < 1 && dayDelta < 0)
        {
            openTimes.TryGetValue(week, out hourMinutes);
        }
        else
        {
            hourMinutes = GetHourMinuteByWeek(week);
        }
        if (hourMinutes != null)
        {
            foreach (var item in hourMinutes)
@@ -376,11 +404,15 @@
    public List<HourMinute> GetHourMinuteByWeek(int 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))
        if (isSpecificDay)
        {
            return specificOpenTimes[openDayWeek][dayIndex];
            var openDayWeek = (int)TimeUtility.openServerTime.DayOfWeek;
            var dayDelta = ((week == 0 ? 7 : week) - openDayWeek) + TimeUtility.OpenWeekCnt * 7;
            var dayIndex = TimeUtility.OpenDay + 1 + dayDelta;
            if (specialOpenTimes.ContainsKey(openDayWeek) && specialOpenTimes[openDayWeek].ContainsKey(dayIndex))
            {
                return specialOpenTimes[openDayWeek][dayIndex];
            }
        }
        else if (openTimes.ContainsKey(week))
        {
System/DailyQuest/DailyQuestModel.cs
@@ -959,14 +959,14 @@
                        var activityOpenTime = Config.Instance.Get<DailyQuestOpenTimeConfig>(config.RelatedID);
                        openTime = dailyQuestOpenTimes[config.ID] = new DailyQuestOpenTime(config.ID);
                        openTime.ParseQuestNormalOpenTime(activityOpenTime.OpenTime, activityOpenTime.Duration);
                        openTime.ParseQuestSpecificOpenTimes(DailyQuestSpecialOpenTimeConfig.GetDailyQuestTimes(config.RelatedID));
                        openTime.ParseQuestSpecialOpenTimes(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);
                        openTime.ParseDungeonNormalOpenTimes(dungeonOpenTimes);
                        openTime.ParseDungeonSpecificOpenTimes(DungeonSpecialStateTimeConfig.GetDungeonTimes(config.RelatedID));
                        openTime.ParseDungeonSpecialOpenTimes(DungeonSpecialStateTimeConfig.GetDungeonTimes(config.RelatedID));
                        dungeonToDailyQuestTable[config.RelatedID] = config.ID;
                        break;
                }
System/Dungeon/DungeonModel.cs
@@ -1313,7 +1313,7 @@
                {
                    var openTime = dungeonOpenTimes[config.DataMapID] = new DailyQuestOpenTime(config.DataMapID);
                    openTime.ParseDungeonNormalOpenTimes(DungeonStateTimeConfig.DungeonStateCanEnterFB(config.DataMapID));
                    openTime.ParseDungeonSpecificOpenTimes(DungeonSpecialStateTimeConfig.GetDungeonTimes(config.DataMapID));
                    openTime.ParseDungeonSpecialOpenTimes(DungeonSpecialStateTimeConfig.GetDungeonTimes(config.DataMapID));
                }
            }