VEU.WathBody/3-app/5-watch/FenixDataField/source/RestTimer.mc

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;
}
}