44 lines
1.5 KiB
MonkeyC
44 lines
1.5 KiB
MonkeyC
// Автономный таймер отдыха (Ф-2.4 errata): старт по Lap, длительность —
|
|
// настройка restSec (умолчание 120 = Rest.DefaultSec телефона), конец —
|
|
// однократная лёгкая вибрация. Часы — timerTime: при паузе активности
|
|
// остаток замирает сам, отдельной логики паузы нет.
|
|
class RestTimer {
|
|
var active;
|
|
var restEndMs;
|
|
var fired;
|
|
|
|
function initialize() {
|
|
active = false;
|
|
restEndMs = 0;
|
|
fired = false;
|
|
}
|
|
|
|
function start(timerTimeMs, restSec) {
|
|
active = true;
|
|
restEndMs = timerTimeMs + restSec * 1000;
|
|
fired = false;
|
|
}
|
|
|
|
// Остаток отдыха, мс (0 если таймер не активен)
|
|
function remainingMs(timerTimeMs) {
|
|
if (active) {
|
|
return restEndMs - timerTimeMs;
|
|
}
|
|
return 0;
|
|
}
|
|
|
|
// Идёт ли отдых (остаток > 0) — на экране строка «ОТДЫХ mm:ss»
|
|
function isResting(timerTimeMs) {
|
|
return active && (restEndMs - timerTimeMs) > 0;
|
|
}
|
|
|
|
// true ровно один раз при переходе остатка через ноль — сигнал вибрации
|
|
function onEnd(timerTimeMs) {
|
|
if (active && !fired && (restEndMs - timerTimeMs) <= 0) {
|
|
fired = true;
|
|
return true;
|
|
}
|
|
return false;
|
|
}
|
|
}
|