From 5531bc9f5babd14e1abaa9e09ddd47272d69fbb8 Mon Sep 17 00:00:00 2001 From: Nat Quayle Nelson Date: Thu, 3 Feb 2022 22:41:05 -0700 Subject: [PATCH] habit game make shortcut map and text labels --- projects/habit-puzzle-game/Project.xml | 1 + .../habit-puzzle-game/source/HabitModel.kiss | 6 ++++ .../habit-puzzle-game/source/HabitState.hx | 5 ++- .../habit-puzzle-game/source/HabitState.kiss | 31 ++++++++++++++++++- 4 files changed, 41 insertions(+), 2 deletions(-) diff --git a/projects/habit-puzzle-game/Project.xml b/projects/habit-puzzle-game/Project.xml index 53450bea..ef55b4f4 100644 --- a/projects/habit-puzzle-game/Project.xml +++ b/projects/habit-puzzle-game/Project.xml @@ -34,6 +34,7 @@ + diff --git a/projects/habit-puzzle-game/source/HabitModel.kiss b/projects/habit-puzzle-game/source/HabitModel.kiss index 1e129487..fc68411e 100644 --- a/projects/habit-puzzle-game/source/HabitModel.kiss +++ b/projects/habit-puzzle-game/source/HabitModel.kiss @@ -86,3 +86,9 @@ (let [lowScore (apply min (for label e.labels label.points))] (doFor label e.labels (when (= lowScore label.points) (return label))) (throw "no active?!"))) + +(function isActive [:Entry e] + (case e.type + ((Daily days) + (contains days (.getDay (Date.now)))) + (otherwise true))) \ No newline at end of file diff --git a/projects/habit-puzzle-game/source/HabitState.hx b/projects/habit-puzzle-game/source/HabitState.hx index 010723b0..422b7ce3 100644 --- a/projects/habit-puzzle-game/source/HabitState.hx +++ b/projects/habit-puzzle-game/source/HabitState.hx @@ -2,11 +2,14 @@ package; import flixel.FlxG; import flixel.FlxState; +import flixel.group.FlxGroup; import flixel.FlxSprite; import flixel.util.FlxColor; import flixel.text.FlxText; import kiss.Prelude; import kiss.List; +import kiss_tools.KeyShortcutHandler; +import HabitModel; @:build(kiss.Kiss.build()) -class HabitState extends FlxState {} \ No newline at end of file +class HabitState extends FlxState {} diff --git a/projects/habit-puzzle-game/source/HabitState.kiss b/projects/habit-puzzle-game/source/HabitState.kiss index 9548f331..32dbae3b 100644 --- a/projects/habit-puzzle-game/source/HabitState.kiss +++ b/projects/habit-puzzle-game/source/HabitState.kiss @@ -1,7 +1,36 @@ (method &override :Void create [] (super.create)) (method &override :Void update [:Float elapsed] (super.update elapsed)) +(prop &mut :FlxTypedGroup entryTexts null) +(prop &mut :KeyShortcutHandler shortcutHandler null) + (prop &mut :HabitModel model null) (method setModel [m] (set model m) - (doFor e model.bonusEntries ~(HabitModel.activeLabel e))) \ No newline at end of file + (set shortcutHandler (new KeyShortcutHandler)) + (doFor e (the Array (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) + (set color FlxColor.ORANGE) + (map (filter m.dailyEntries HabitModel.isActive) makeText) + (set color FlxColor.WHITE) + (map m.bonusEntries makeText) + (set color FlxColor.YELLOW) + (map m.todoEntries makeText) + (add entryTexts)) + +(prop &mut textY 0) +(prop &mut :FlxColor color null) + +(method makeText [:Entry e] + (let [label (HabitModel.activeLabel e) + text (new FlxText 0 textY 0 (+ label.label (* label.points "+")))] + (set text.color color) + (+= textY text.height) + (entryTexts.add text))) \ No newline at end of file