From 3678e238ee59a49ecaf80248323a18dfcf3dcce2 Mon Sep 17 00:00:00 2001
From: client_Wu Xijin <364452445@qq.com>
Date: 星期四, 18 十月 2018 20:28:01 +0800
Subject: [PATCH] Merge branch 'master' of http://192.168.0.87:10010/r/snxxz_scripts
---
System/DailyQuest/DailyQuestData.cs | 174 +++++++++++++++++++++++++++++++++++-----------------------
1 files changed, 105 insertions(+), 69 deletions(-)
diff --git a/System/DailyQuest/DailyQuestData.cs b/System/DailyQuest/DailyQuestData.cs
index 8b45358..238097e 100644
--- a/System/DailyQuest/DailyQuestData.cs
+++ b/System/DailyQuest/DailyQuestData.cs
@@ -334,110 +334,133 @@
}
- public int GetFirstOpenSurplusSeconds()
+ public int GetNextSessionSurplusTime()
{
- if (IsAfterFirstOpen())
+ if (InOpenTime())
{
return 0;
}
var openDayWeek = (int)TimeUtility.openServerDayOfWeek;
var dayIndex = TimeUtility.OpenDay + 1;
- var maxDays = 15 - openDayWeek == 0 ? 7 : openDayWeek;
- var startDay = dayIndex;
- var createRoleTime = TimeUtility.createRoleTime;
- if (dayIndex == 1 && specialOpenTimes.ContainsKey(openDayWeek) && specialOpenTimes[openDayWeek].ContainsKey(dayIndex))
+ var maxSpecialDays = 15 - (openDayWeek == 0 ? 7 : openDayWeek);
+ var hour = TimeUtility.ServerNow.Hour;
+ var minute = TimeUtility.ServerNow.Minute;
+ for (int i = 0; i <= 7; i++)//涓�鍛ㄥ唴蹇呴』鏈夋椿鍔�
{
- var openServerDay = TimeUtility.ServerNow.AddTicks(-TimeUtility.OpenDay * TimeSpan.TicksPerDay);
- if (createRoleTime.Year == openServerDay.Year && createRoleTime.Month == openServerDay.Month
- && createRoleTime.Day == openServerDay.Day)
+ List<HourMinute> hourminutes = null;
+ var days = dayIndex + i;
+ if (days <= maxSpecialDays)
{
- var hourMinutes = specialOpenTimes[openDayWeek][1];
- var hourMinute = hourMinutes[hourMinutes.Count - 1];
- var hour = createRoleTime.Hour;
- var minute = createRoleTime.Minute;
- if (hour > hourMinute.hourEnd ||
- (hour == hourMinute.hourEnd && minute >= hourMinute.minuteEnd))
+ if (!specialOpenTimes.ContainsKey(openDayWeek)
+ || !specialOpenTimes[openDayWeek].ContainsKey(days))
{
- startDay++;
+ continue;
}
+ hourminutes = specialOpenTimes[openDayWeek][days];
}
- }
- for (int i = startDay; i <= maxDays; i++)
- {
- if (specialOpenTimes.ContainsKey(openDayWeek) && specialOpenTimes[openDayWeek].ContainsKey(dayIndex))
+ else
{
- var days = i - dayIndex;
- var hourMinute = specialOpenTimes[openDayWeek][dayIndex][0];
- var hour = TimeUtility.ServerNow.Hour;
- var minute = TimeUtility.ServerNow.Minute;
- var time = TimeUtility.ServerNow.AddDays(days);
- time = new DateTime(time.Year, time.Month, time.Day, hourMinute.hourBegin, hourMinute.minuteBegin, 0);
- var seconds = (int)(time - TimeUtility.ServerNow).TotalSeconds;
- return Mathf.Max(0, seconds);
+ var dayOfWeek = (int)TimeUtility.ServerNow.AddTicks(i * TimeSpan.TicksPerDay).DayOfWeek;
+ if (!openTimes.ContainsKey(dayOfWeek))
+ {
+ continue;
+ }
+ hourminutes = openTimes[dayOfWeek];
+ }
+ if (hourminutes != null)
+ {
+ foreach (var hourMinute in hourminutes)
+ {
+ if (days == dayIndex && hourMinute.AfterOpenTime(hour, minute))
+ {
+ continue;
+ }
+ var time = TimeUtility.ServerNow.AddTicks(i * TimeSpan.TicksPerDay);
+ time = new DateTime(time.Year, time.Month, time.Day, hourMinute.hourBegin, hourMinute.minuteBegin, 0);
+ var seconds = (int)(time - TimeUtility.ServerNow).TotalSeconds;
+ return Mathf.Max(0, seconds);
+ }
}
}
return 0;
}
- public bool IsAfterFirstOpen()
+ public int PassSessionCount(DateTime beginTime)
{
- var isSpecialDay = TimeUtility.OpenWeekCnt <= 1;
- if (!isSpecialDay)
- {
- return true;
- }
var openDayWeek = (int)TimeUtility.openServerDayOfWeek;
var dayIndex = TimeUtility.OpenDay + 1;
- var maxDays = 15 - openDayWeek == 0 ? 7 : openDayWeek;
- var startDay = 1;
- var createRoleTime = TimeUtility.createRoleTime;
- if (specialOpenTimes.ContainsKey(openDayWeek) && specialOpenTimes[openDayWeek].ContainsKey(1))
+ var maxSpecialDays = 15 - (openDayWeek == 0 ? 7 : openDayWeek);
+ var beginHour = beginTime.Hour;
+ var beginMinute = beginTime.Minute;
+ var session = 0;
+
+ var openServerDay = TimeUtility.ServerNow.AddTicks(-TimeUtility.OpenDay * TimeSpan.TicksPerDay);
+ openServerDay = new DateTime(openServerDay.Year, openServerDay.Month, openServerDay.Day);
+ var beginDay = (int)(beginTime - openServerDay).TotalDays + 1;
+ List<HourMinute> hourMinutes = null;
+ if (beginDay <= maxSpecialDays)
{
- var openServerDay = TimeUtility.ServerNow.AddTicks(-TimeUtility.OpenDay * TimeSpan.TicksPerDay);
- if (createRoleTime.Year == openServerDay.Year && createRoleTime.Month == openServerDay.Month
- && createRoleTime.Day == openServerDay.Day)
+ if (specialOpenTimes.ContainsKey(openDayWeek) && specialOpenTimes[openDayWeek].ContainsKey(beginDay))
{
- var hourMinutes = specialOpenTimes[openDayWeek][1];
- var hourMinute = hourMinutes[hourMinutes.Count - 1];
- var hour = createRoleTime.Hour;
- var minute = createRoleTime.Minute;
- if (hour > hourMinute.hourEnd ||
- (hour == hourMinute.hourEnd && minute >= hourMinute.minuteEnd))
- {
- startDay = 2;
- }
+ hourMinutes = specialOpenTimes[openDayWeek][beginDay];
}
}
- for (int i = startDay; i <= maxDays; i++)
+ else
{
- if (specialOpenTimes.ContainsKey(openDayWeek) && specialOpenTimes[openDayWeek].ContainsKey(dayIndex))
+ var dayOfWeek = (int)beginTime.DayOfWeek;
+ if (openTimes.ContainsKey(dayOfWeek))
+ {
+ hourMinutes = openTimes[dayOfWeek];
+ }
+ }
+ if (hourMinutes != null)
+ {
+ var hourMinute = hourMinutes[hourMinutes.Count - 1];
+ if (hourMinute.AfterOpenTime(beginHour, beginMinute))
+ {
+ beginDay++;
+ }
+ }
+
+ var nowHour = TimeUtility.ServerNow.Hour;
+ var nowMinute = TimeUtility.ServerNow.Minute;
+ for (int i = beginDay; i <= dayIndex; i++)
+ {
+ hourMinutes = null;
+ if (i <= maxSpecialDays)
+ {
+ if (specialOpenTimes.ContainsKey(openDayWeek) && specialOpenTimes[openDayWeek].ContainsKey(i))
+ {
+ hourMinutes = specialOpenTimes[openDayWeek][i];
+ }
+ }
+ else
+ {
+ var dayOfWeek = (int)openServerDay.AddTicks((i - 1) * TimeSpan.TicksPerDay).DayOfWeek;
+ if (openTimes.ContainsKey(dayOfWeek))
+ {
+ hourMinutes = openTimes[dayOfWeek];
+ }
+ }
+ if (hourMinutes != null)
{
if (i < dayIndex)
{
- return true;
+ session += hourMinutes.Count;
}
- if (i == dayIndex)
+ else if (i == dayIndex)
{
- var hourMinute = specialOpenTimes[openDayWeek][dayIndex][0];
- var hour = TimeUtility.ServerNow.Hour;
- var minute = TimeUtility.ServerNow.Minute;
- if (hour < hourMinute.hourEnd ||
- (hour == hourMinute.hourEnd && minute < hourMinute.minuteEnd))
+ foreach (var hourMinute in hourMinutes)
{
- return false;
+ if (hourMinute.AfterOpenTime(nowHour, nowMinute))
+ {
+ session++;
+ }
}
- else
- {
- return true;
- }
- }
- if (i > dayIndex)
- {
- return false;
}
}
}
- return true;
+ return session;
}
public bool ContainTimeNode(int week, int timeNode)
@@ -621,6 +644,19 @@
}
}
+ public bool AfterOpenTime(int hour,int minute)
+ {
+ if (wholeDay)
+ {
+ return false;
+ }
+ else
+ {
+ var minutes = hour * 60 + minute;
+ return (hourEnd * 60 + minuteEnd) <= minutes;
+ }
+ }
+
public override string ToString()
{
var minuteBeginStr = minuteBegin > 9 ? minuteBegin.ToString() : StringUtility.Contact("0", minuteBegin);
--
Gitblit v1.8.0