48 lines
1.5 KiB
Plaintext
48 lines
1.5 KiB
Plaintext
(savedVar :Bool workMode false)
|
|
(savedVar :Float timerValue 0)
|
|
(savedVar :Float workMin 25)
|
|
(savedVar :Float breakMin 5)
|
|
(savedVar :Float longBreakMin 10)
|
|
(savedVar :Int totalPoms 0)
|
|
(prop :FlxSound dingSound)
|
|
|
|
(prop &mut :Void->Void onFinishedPom)
|
|
(prop &mut :Void->Void onStartPom)
|
|
|
|
(method getText []
|
|
"$(if workMode "FOCUS ON WORK FOR " "TAKE A BREAK FOR ")$(Std.int (/ timerValue 60)):$(.lpad (Std.string (Std.int (% timerValue 60))) "0" 2)")
|
|
|
|
(method new []
|
|
(super (fHalf FlxG.width) 0 (getText) (* 2 SimpleWindow.textSize))
|
|
(set color FlxColor.ORANGE)
|
|
(set dingSound (FlxG.sound.load "assets/ding.wav")))
|
|
|
|
(method &override :Void update [:Float elapsed]
|
|
(super.update elapsed)
|
|
(-= timerValue elapsed)
|
|
(#when debug
|
|
(when (and FlxG.keys.pressed.CONTROL FlxG.keys.justPressed.P)
|
|
(set timerValue 0)))
|
|
(when (<= timerValue 0)
|
|
(when workMode
|
|
(+= totalPoms 1)
|
|
(when onFinishedPom
|
|
(onFinishedPom)))
|
|
(set workMode !workMode)
|
|
(dingSound.play)
|
|
(set timerValue
|
|
(* 60
|
|
(if workMode
|
|
{
|
|
(when onStartPom (onStartPom))
|
|
workMin
|
|
}
|
|
(if (= 0 (% totalPoms 4))
|
|
longBreakMin
|
|
breakMin)))))
|
|
(set text (getText)))
|
|
|
|
(function resetTimer []
|
|
(set workMode false)
|
|
(set timerValue 0)
|
|
(set totalPoms 0)) |