Files
kiss-vscode/projects/flixel-desktop-habit-puzzle-game/source/FlxPomTimer.kiss

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))