Commit 0b24f27abfd42fa68e642aee4527139fdd55aefe
- Diff rendering mode:
- inline
- side by side
src/s.mod
(25 / 51)
|   | |||
| 1 | 1 | <* LINENO + *> | |
| 2 | 2 | ||
| 3 | (* 24 December, 2008 - major mod to SignOnTime *) | ||
| 3 | 4 | (* 12 July 2006: Modified Spells, implemented SpellsLunar *) | |
| 5 | |||
| 4 | 6 | IMPLEMENTATION MODULE s; | |
| 5 | 7 | ||
| 6 | 8 | IMPORT FileSys, FormStr; | |
| 7 | 9 | IMPORT M2EXCEPTION, Message; | |
| 8 | 10 | IMPORT ProgExec, p; | |
| 9 | 11 | IMPORT STextIO, StreamFile, StringParse, Strings, SysClock, Setup; | |
| 10 | IMPORT Timers, TextIO, TimeConv; | ||
| 12 | IMPORT Timers, TextIO, TimeConv, TimeFunc; | ||
| 11 | 13 | IMPORT WholeStr; | |
| 12 | 14 | IMPORT util; | |
| 13 | 15 | FROM Setup IMPORT check; | |
| … | … | ||
| 60 | 60 | VAR | |
| 61 | 61 | second, minute, hour, day, month, year, | |
| 62 | 62 | string, temp, temp2 : Message.strType; | |
| 63 | tempcard : CARDINAL; | ||
| 63 | elapsed : TimeFunc.elapsedT; | ||
| 64 | tempcard, | ||
| 65 | currentTime : CARDINAL; | ||
| 64 | 66 | nowTime : SysClock.DateTime; | |
| 65 | 67 | minuteadjust : BOOLEAN; | |
| 66 | 68 | ||
| … | … | ||
| 117 | 117 | Strings.Concat(string, ".", string); | |
| 118 | 118 | Message.PrintLine(parse.chan, string); | |
| 119 | 119 | ||
| 120 | SysClock.GetClock(nowTime); | ||
| 121 | string := "That is "; | ||
| 122 | |||
| 123 | WholeStr.CardToStr(nowTime.day-Timers.signOnTime.day, temp); | ||
| 124 | Strings.Concat(string, temp, string); | ||
| 125 | IF nowTime.day-Timers.signOnTime.day = 1 THEN | ||
| 126 | Strings.Concat(string, " day, ", string); | ||
| 127 | ELSE | ||
| 128 | Strings.Concat(string, " days, ", string); | ||
| 129 | END; | ||
| 130 | (* Calculate hours *) | ||
| 131 | IF Timers.signOnTime.hour > nowTime.hour THEN | ||
| 132 | WholeStr.CardToStr(nowTime.hour+24-Timers.signOnTime.hour, temp); | ||
| 133 | ELSE | ||
| 134 | WholeStr.CardToStr(nowTime.hour-Timers.signOnTime.hour, temp); | ||
| 135 | END; | ||
| 136 | Strings.Concat(string, temp, string); | ||
| 137 | IF nowTime.hour-Timers.signOnTime.hour =1 THEN | ||
| 138 | Strings.Concat(string, " hour, ", string); | ||
| 139 | ELSE | ||
| 140 | Strings.Concat(string, " hours, ", string); | ||
| 141 | END; | ||
| 142 | (* Calculate minutes *) | ||
| 143 | IF Timers.signOnTime.minute > nowTime.minute THEN | ||
| 144 | WholeStr.CardToStr(nowTime.minute+60-Timers.signOnTime.minute, temp); | ||
| 145 | ELSE | ||
| 120 | (* Show elapsed time *) | ||
| 121 | elapsed.startTime := Timers.signOnSeconds; | ||
| 122 | elapsed.endTime := TimeConv.time(); | ||
| 146 | 123 | ||
| 147 | WholeStr.CardToStr(nowTime.minute-Timers.signOnTime.minute, temp); | ||
| 124 | TimeFunc.elapsedTime(elapsed); | ||
| 125 | IF elapsed.valid THEN | ||
| 126 | string := "That is: "; | ||
| 127 | IF elapsed.weeks > 0 THEN | ||
| 128 | FormStr.append(string, "%d weeks, ", elapsed.weeks); | ||
| 129 | END; | ||
| 130 | IF elapsed.days > 0 THEN | ||
| 131 | FormStr.append(string, "%d days, ", elapsed.days); | ||
| 132 | END; | ||
| 133 | IF elapsed.hours > 0 THEN | ||
| 134 | FormStr.append(string, "%d hours, ", elapsed.hours); | ||
| 135 | END; | ||
| 136 | IF elapsed.minutes > 0 THEN | ||
| 137 | FormStr.append(string, "%d minutes and ", elapsed.minutes); | ||
| 138 | END; | ||
| 139 | FormStr.append(string, "%d seconds.", elapsed.seconds); | ||
| 148 | 140 | END; | |
| 149 | Strings.Concat(string, temp, string); | ||
| 150 | Strings.Concat(string, " minutes, and ", string); | ||
| 151 | |||
| 152 | |||
| 153 | |||
| 154 | (* Calculate seconds *) | ||
| 155 | (* What is going on. DateTime.second is a cardinal. Now, if nowtime.second *) | ||
| 156 | (* is less than signontime.second, you're going to end up with a negative *) | ||
| 157 | (* number, which won't sit well with a cardinal number. So we add 60 seconds *) | ||
| 158 | (* A problem with this is that it will give you invalid times if you don't *) | ||
| 159 | (* adjust the other values. *) | ||
| 160 | |||
| 161 | IF Timers.signOnTime.second > nowTime.minute THEN | ||
| 162 | WholeStr.CardToStr(nowTime.second+60-Timers.signOnTime.second, second); | ||
| 163 | minuteadjust := TRUE; | ||
| 164 | ELSE | ||
| 165 | WholeStr.CardToStr(nowTime.second-Timers.signOnTime.second, second); | ||
| 166 | minuteadjust := FALSE; | ||
| 167 | END; | ||
| 168 | Strings.Concat(string, second, string); | ||
| 169 | Strings.Concat(string, " seconds. (note, take this time with a grain of salt at the moment)", string); | ||
| 170 | |||
| 171 | 141 | Message.PrintLine(parse.chan, string); | |
| 172 | 142 | ||
| 173 | 143 | EXCEPT |

