| | |
| | | {
|
| | |
|
| | | [XLua.LuaCallCSharp]
|
| | | public class DailyQuestModel : Model, IPlayerLoginOk, IBeforePlayerDataInitialize, IMapInitOk
|
| | | public class DailyQuestModel : Model, IPlayerLoginOk, IBeforePlayerDataInitialize, IMapInitOk
|
| | | {
|
| | |
|
| | | const int DAILYQUEST_REDPOINTID = 78000;
|
| | |
| | | var unLock1 = IsDailyQuestUnLock(_lhs);
|
| | | var unLock2 = IsDailyQuestUnLock(_rhs);
|
| | |
|
| | | if (unLock1 && !unLock2)
|
| | | DailyQuestOpenTime openTime1;
|
| | | TryGetOpenTime(_lhs, out openTime1);
|
| | |
|
| | | DailyQuestOpenTime openTime2;
|
| | | TryGetOpenTime(_rhs, out openTime2);
|
| | |
|
| | | var dayOfWeek = (int)TimeUtility.ServerNow.DayOfWeek;
|
| | | var isActiveDay1 = openTime1.always || openTime1.GetHourMinuteByWeek(dayOfWeek) != null;
|
| | | var isActiveDay2 = openTime2.always || openTime2.GetHourMinuteByWeek(dayOfWeek) != null;
|
| | |
|
| | | var inOpenTime1 = openTime1.InOpenTime();
|
| | | var inOpenTime2 = openTime2.InOpenTime();
|
| | |
|
| | | var serverHour = TimeUtility.ServerNow.Hour;
|
| | | var serverMinute = TimeUtility.ServerNow.Minute;
|
| | | HourMinute hourMinute1;
|
| | | var miss1 = openTime1.TryGetTodayNearestOpenTime(out hourMinute1) && hourMinute1.AfterOpenTime(serverHour, serverMinute);
|
| | | HourMinute hourMinute2;
|
| | | var miss2 = openTime2.TryGetTodayNearestOpenTime(out hourMinute2) && hourMinute2.AfterOpenTime(serverHour, serverMinute);
|
| | |
|
| | | if ((unLock1 && inOpenTime1) && !(unLock2 && inOpenTime2))
|
| | | {
|
| | | return -1;
|
| | | }
|
| | | else if (!unLock1 && unLock2)
|
| | | else if (!(unLock1 && inOpenTime1) && (unLock2 && inOpenTime2))
|
| | | {
|
| | | return 1;
|
| | | }
|
| | | else
|
| | | {
|
| | | DailyQuestOpenTime openTime1;
|
| | | TryGetOpenTime(_lhs, out openTime1);
|
| | |
|
| | | DailyQuestOpenTime openTime2;
|
| | | TryGetOpenTime(_rhs, out openTime2);
|
| | |
|
| | | 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)
|
| | | if ((unLock1 && isActiveDay1 && !miss1) && !(unLock2 && isActiveDay2 && !miss2))
|
| | | {
|
| | | return -1;
|
| | | }
|
| | | else if (!isActiveDay1 && isActiveDay2)
|
| | | else if (!(unLock1 && isActiveDay1 && !miss1) && (unLock2 && isActiveDay2 && !miss2))
|
| | | {
|
| | | return 1;
|
| | | }
|
| | | else
|
| | | {
|
| | | var inOpenTime1 = openTime1.InOpenTime();
|
| | | var inOpenTime2 = openTime2.InOpenTime();
|
| | |
|
| | | if (inOpenTime1 && !inOpenTime2)
|
| | | if ((unLock1 && !isActiveDay1) && !(unLock2 && !isActiveDay2))
|
| | | {
|
| | | return -1;
|
| | | }
|
| | | else if (!inOpenTime1 && inOpenTime2)
|
| | | else if (!(unLock1 && !isActiveDay1) && (unLock2 && !isActiveDay2))
|
| | | {
|
| | | return 1;
|
| | | }
|
| | | else if (!inOpenTime1 && !inOpenTime2)
|
| | | else
|
| | | {
|
| | | HourMinute hourMinute1;
|
| | | var beforeOpenTime1 = openTime1.TryGetTodayNearestOpenTime(out hourMinute1);
|
| | |
|
| | | HourMinute hourMinute2;
|
| | | var beforeOpenTime2 = openTime2.TryGetTodayNearestOpenTime(out hourMinute2);
|
| | |
|
| | | if (beforeOpenTime1 && !beforeOpenTime2)
|
| | | if (unLock1 && !unLock2)
|
| | | {
|
| | | return -1;
|
| | | }
|
| | | else if (!beforeOpenTime1 && beforeOpenTime2)
|
| | | else if (!unLock1 && unLock2)
|
| | | {
|
| | | return 1;
|
| | | }
|
| | | else
|
| | | {
|
| | | return HourMinute.Compare(hourMinute1, hourMinute2);
|
| | | if (!miss1 && miss2)
|
| | | {
|
| | | return -1;
|
| | | }
|
| | | else if (miss1 && !miss2)
|
| | | {
|
| | | return 1;
|
| | | }
|
| | | else
|
| | | {
|
| | | return _lhs < _rhs ? -1 : 1;
|
| | | }
|
| | | }
|
| | | }
|
| | | else
|
| | | {
|
| | | return _lhs < _rhs ? -1 : 1;
|
| | | }
|
| | | }
|
| | | }
|