Browse Source

School Calendar

Scarlett Schäfer 2 years ago
parent
commit
8f9a1518a4
3 changed files with 69 additions and 1 deletions
  1. 43 0
      source/event/school/calendar.qsps
  2. 15 1
      source/location/school/grounds.qsps
  3. 11 0
      source/util/time.qsps

+ 43 - 0
source/event/school/calendar.qsps

@@ -0,0 +1,43 @@
+# event_school_calendar
+
+if $ARGS[0] = 'schoolMode':
+
+    gs 'event_school_calendar','schoolModeCalculate'
+
+    _dayOfWeek_esc = FUNC('util_time','dayOfWeek',time_current)
+
+    if time_current >= school_calendar['vacation_summer_start'] and time_current < school_calendar['vacation_summer_end']:
+        $RESULT = 'vacation_summer'
+    elseif (time_current >= school_calendar['vacation_xmas_start'] and time_current < school_calendar['vacation_xmas_end_nextYear']) or time_current < school_calendar['vacation_xmas_end_thisYear']:
+        $RESULT = 'vacation_xmas'
+    
+    elseif _dayOfWeek_esc = 5 or _dayOfWeek_esc = 6:
+        $RESULT = 'weekend'
+    else:
+        $RESULT = 'schoolday'
+    end
+    
+elseif $ARGS[0] = 'schoolModeCalculate':
+    gs 'util_time','timeInfo_load',time_current
+    _year = time_year
+    if school_calendar_calculatedYear ! _year:
+
+        school_calendar['vacation_summer_start'] = FUNC('util_time','getNextDayOfWeekDate',FUNC('util_time','date2time',_year,7,3),5)
+        school_calendar['vacation_summer_end'] = school_calendar['vacation_summer_start'] + (6 * 7 + 2) * 86400
+
+        *PL FUNC('util_time','time2date',school_calendar['vacation_summer_start'])
+        *PL FUNC('util_time','time2date',school_calendar['vacation_summer_end'])
+
+        school_calendar['vacation_xmas_start'] = FUNC('util_time','getNextDayOfWeekDate',FUNC('util_time','date2time',_year,12,24) - 6 * 86400,5)
+        school_calendar['vacation_xmas_end_nextYear'] = FUNC('util_time','getNextDayOfWeekDate',FUNC('util_time','date2time',_year+1,1,2),0)
+        school_calendar['vacation_xmas_end_thisYear'] = FUNC('util_time','getNextDayOfWeekDate',FUNC('util_time','date2time',_year,1,2),0)
+
+        *PL FUNC('util_time','time2date',school_calendar['vacation_xmas_start'])
+        *PL FUNC('util_time','time2date',school_calendar['vacation_xmas_end_thisYear'])
+        *PL FUNC('util_time','time2date',school_calendar['vacation_xmas_end_nextYear'])
+
+        school_calendar_calculatedYear = _year
+    end
+end
+
+-

+ 15 - 1
source/location/school/grounds.qsps

@@ -18,7 +18,21 @@ elseif $ARGS[0] = 'show':
     end
 
     gs 'util_location','render_goto','residential',300,'Leave'
-    gs 'util_location','render_goto','school_hallway',60,'Enter'
+
+    $_schoolMode = FUNC('event_school_calendar','schoolMode')
+    if $_schoolMode = 'vacation_summer':
+        *P 'School is closed for summer.'
+    elseif $_schoolMode = 'vacation_xmas':
+        *P 'School is closed for Christmas vacations.'
+    elseif $_schoolMode = 'weekend':
+        *P 'School is closed for weekend.'
+    elseif FUNC('util_time','timeOfDay',time_current) < FUNC('util_vars','get','school','time_start_earliest'):
+        *P 'The school door is still locked.'
+    elseif FUNC('util_time','timeOfDay',time_current) >= FUNC('util_vars','get','school','time_end'):
+        *P 'The school door is locked for the rest of the day.'
+    else:
+        gs 'util_location','render_goto','school_hallway',60,'Enter'
+    end
 
 end 
 

+ 11 - 0
source/util/time.qsps

@@ -52,6 +52,12 @@ elseif $ARGS[0] = 'alarm_time_showDialog':
     :AlarmDialogEND
 
 elseif $ARGS[0] = 'date2time':
+    !{
+        1: Year
+        2: Month
+        3: Day
+    }
+
     temp_dateTime = (ARGS[1]-time_baseYear) * 31536000
     !temp_dateTime += ((ARGS[1]-time_baseYear)/4) * 86400
     if ARGS[2] > 1: temp_dateTime += 86400 * 31
@@ -86,6 +92,11 @@ elseif $ARGS[0] = 'get':
     if $ARGS[1] = 'hour':
         RESULT = time_hour
     end
+elseif $ARGS[0] = 'getNextDayOfWeekDate':
+    _dayOfWeek = FUNC('util_time','dayOfWeek',ARGS[1])
+    _daysMissing = (ARGS[2] - _dayOfWeek + 7) mod 7
+    RESULT = ARGS[1] + _daysMissing * 86400
+
 elseif $ARGS[0] = 'time2dayOfWeekReadable':
     $RESULT = FUNC('util_time','dayOfWeekReadable',FUNC('util_time','dayOfWeek',ARGS[1]))
 elseif $ARGS[0] = 'init':