Commit 0b24f27abfd42fa68e642aee4527139fdd55aefe

Major mod to SignOnTime.

Using new TimeFunc library (not yet included in this repository). This
uses TimeConv.time instead of the DateTime record.
src/s.mod
(25 / 51)
  
11<* LINENO + *>
22
3(* 24 December, 2008 - major mod to SignOnTime *)
34(* 12 July 2006: Modified Spells, implemented SpellsLunar *)
5
46IMPLEMENTATION MODULE s;
57
68IMPORT FileSys, FormStr;
79IMPORT M2EXCEPTION, Message;
810IMPORT ProgExec, p;
911IMPORT STextIO, StreamFile, StringParse, Strings, SysClock, Setup;
10IMPORT Timers, TextIO, TimeConv;
12IMPORT Timers, TextIO, TimeConv, TimeFunc;
1113IMPORT WholeStr;
1214IMPORT util;
1315FROM Setup IMPORT check;
6060VAR
6161 second, minute, hour, day, month, year,
6262 string, temp, temp2 : Message.strType;
63 tempcard : CARDINAL;
63 elapsed : TimeFunc.elapsedT;
64 tempcard,
65 currentTime : CARDINAL;
6466 nowTime : SysClock.DateTime;
6567 minuteadjust : BOOLEAN;
6668
117117 Strings.Concat(string, ".", string);
118118 Message.PrintLine(parse.chan, string);
119119
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();
146123
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);
148140 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
171141 Message.PrintLine(parse.chan, string);
172142
173143EXCEPT