habit game make shortcut map and text labels

This commit is contained in:
2022-02-03 22:41:05 -07:00
parent e303c66655
commit 5531bc9f5b
4 changed files with 41 additions and 2 deletions

View File

@@ -34,6 +34,7 @@
<haxelib name="flixel" />
<haxelib name="kiss" />
<haxelib name="kiss-tools" />
<!--In case you want to use the addons package-->
<!--<haxelib name="flixel-addons" />-->

View File

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

View File

@@ -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 {}
class HabitState extends FlxState {}

View File

@@ -1,7 +1,36 @@
(method &override :Void create [] (super.create))
(method &override :Void update [:Float elapsed] (super.update elapsed))
(prop &mut :FlxTypedGroup<FlxText> entryTexts null)
(prop &mut :KeyShortcutHandler<EntryLabel> shortcutHandler null)
(prop &mut :HabitModel model null)
(method setModel [m]
(set model m)
(doFor e model.bonusEntries ~(HabitModel.activeLabel e)))
(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)
(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)))