/* a set of inheritable timer functions */
int query_time_left() { return find_call_out("time_out"); }
varargs string query_std_time(int time) {
string str;
str = "";
if(!time) time = query_time_left();
if(time/604800) {
str += (time/604800) + " Weeks ";
time = time%604800;
}
if(time/86400) {
str += (time/86400) +" Days ";
time = time%86400;
}
if(time/3600) {
str += (time/3600) +" hours ";
time = time%3600;
}
if(time/60) {
str += (time/60) +" minutes ";
time = time%60;
}
str += time +" seconds";
return str;
}
varargs string query_approx_time(int time) {
string str;
str = "";
if(!time) time = query_time_left();
if(time/604800) return (time/604800) + " Weeks";
if(time/86400) return (time/86400) +" Days";
if(time/3600) return (time/3600) +" hours";
if(time/60) {
time /= 60;
if(time > 45) return "three quarters of an hour";
if(time > 30) return "half an hour";
if(time > 15) return "quarter of an hour";
if(time > 10) return "10 minutes";
if(time > 5) return "5 minutes";
if(time > 2) return "2 minutes";
return "1 minute";
}
if(time > 45) return "45 seconds";
if(time > 30) return "30 seconds";
return "10 seconds";
}
void time_out() {
remove_call_out("time_out");
destruct(this_object());
}
void adj_time(int t) {
t += query_time_left();
remove_call_out("time_out");
if(t < 1) t = 1;
call_out("time_out",t);
}