habit game track model and remove finished texts

This commit is contained in:
2022-02-03 23:11:41 -07:00
parent 5531bc9f5b
commit ffb5028e55
4 changed files with 33 additions and 10 deletions

View File

@@ -18,7 +18,8 @@ typedef EntryLabel = {
typedef Entry = {
type: EntryType,
labels: Array<EntryLabel>
labels: Array<EntryLabel>,
doneToday: Bool
};
@:build(kiss.Kiss.build())

View File

@@ -25,6 +25,7 @@
("TODO" todoEntries)
(otherwise (throw "bad header")))
(object
doneToday false
type
(case lastHeader
("BONUS" Bonus)
@@ -90,5 +91,5 @@
(function isActive [:Entry e]
(case e.type
((Daily days)
(contains days (.getDay (Date.now))))
(and !e.doneToday (contains days (.getDay (Date.now)))))
(otherwise true)))

View File

@@ -10,6 +10,7 @@ import kiss.Prelude;
import kiss.List;
import kiss_tools.KeyShortcutHandler;
import HabitModel;
import flixel.input.keyboard.FlxKey;
@:build(kiss.Kiss.build())
class HabitState extends FlxState {}

View File

@@ -1,19 +1,18 @@
(method &override :Void create [] (super.create))
(method &override :Void update [:Float elapsed] (super.update elapsed))
(method &override :Void update [:Float elapsed]
(super.update elapsed)
(let [:FlxKey id (FlxG.keys.firstJustPressed)]
(unless (= id -1)
(shortcutHandler.handleKey (.toLowerCase (id.toString))))))
(prop &mut :FlxTypedGroup<FlxText> entryTexts null)
(prop &mut :KeyShortcutHandler<EntryLabel> shortcutHandler null)
(prop &mut :KeyShortcutHandler<Entry> shortcutHandler null)
(prop &mut :HabitModel model null)
(method setModel [m]
(set model m)
(set shortcutHandler (new KeyShortcutHandler))
(doFor e (the Array<Entry> (concat m.dailyEntries m.bonusEntries m.todoEntries))
(let [label (HabitModel.activeLabel e)]
(shortcutHandler.registerItem label.label label)))
~shortcutHandler.rootMap
(when entryTexts (remove entryTexts))
(set entryTexts (new FlxTypedGroup))
(set textY 0)
@@ -23,7 +22,28 @@
(map m.bonusEntries makeText)
(set color FlxColor.YELLOW)
(map m.todoEntries makeText)
(add entryTexts))
(add entryTexts)
(doFor e (the Array<Entry> (concat m.dailyEntries m.bonusEntries m.todoEntries))
(let [label (HabitModel.activeLabel e)]
(shortcutHandler.registerItem label.label e)))
**(set shortcutHandler.onBadKey ->:Void [_ _] {})
(set shortcutHandler.onSelectItem ->:Void [:Entry e]
(let [label (HabitModel.activeLabel e)]
**(TODO reveal a piece of the current puzzle)
(+= label.points 1)
(case e.type
(Todo
(m.todoEntries.remove e))
(Bonus)
((Daily _)
(set e.doneToday true))
(otherwise (throw "bad type")))
(m.save)
(setModel m)
(shortcutHandler.start)))
(shortcutHandler.start))
(prop &mut textY 0)
(prop &mut :FlxColor color null)