// Автономный таймер отдыха (Ф-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; } }