habit game add bonus/todo entries with flxinputtext. close #99
This commit is contained in:
@@ -34,6 +34,7 @@
|
||||
|
||||
<haxelib name="flixel" />
|
||||
<haxelib name="flixel-addons" />
|
||||
<haxelib name="flixel-ui" />
|
||||
<haxelib name="haxe-strings" />
|
||||
<haxelib name="kiss" />
|
||||
<haxelib name="kiss-tools" />
|
||||
|
@@ -202,4 +202,15 @@
|
||||
(filter bonusEntries isActive))
|
||||
|
||||
(method :Array<Entry> activeTodoEntries []
|
||||
(filter todoEntries isActive))
|
||||
(filter todoEntries isActive))
|
||||
|
||||
(method addEntry [:EntryType type :Array<String> labels]
|
||||
(.push (case type
|
||||
(Todo todoEntries)
|
||||
(Bonus bonusEntries)
|
||||
((Interval _ _) intervalEntries)
|
||||
((Daily _ _) dailyEntries)
|
||||
((Monthly _ _) monthlyEntries)
|
||||
(otherwise (throw "")))
|
||||
(objectWith [labels (for label labels (objectWith [points 0] label))] type))
|
||||
(save))
|
@@ -21,6 +21,7 @@ import flixel.util.FlxSave;
|
||||
import flixel.input.mouse.FlxMouseEventManager;
|
||||
import flixel.addons.display.FlxExtendedSprite;
|
||||
import flixel.addons.plugin.FlxMouseControl;
|
||||
import flixel.addons.ui.FlxInputText;
|
||||
import kiss.Prelude;
|
||||
import kiss.List;
|
||||
import kiss_tools.FlxKeyShortcutHandler;
|
||||
|
@@ -17,6 +17,9 @@
|
||||
|
||||
(var KEYBOARD_SCROLL_SPEED 200)
|
||||
|
||||
(prop &mut :EntryType typeAdding Todo)
|
||||
(prop &mut :FlxInputText entryNameText)
|
||||
|
||||
(method &override :Void update [:Float elapsed]
|
||||
(super.update elapsed)
|
||||
|
||||
@@ -31,17 +34,33 @@
|
||||
|
||||
// TODO provide a saner/configurable set of bindings to trigger these ui action functions
|
||||
{
|
||||
(when FlxG.keys.justPressed.SPACE
|
||||
(when (and FlxG.keys.justPressed.SPACE !entryNameText)
|
||||
(defAndCall method toggleBackgroundColor
|
||||
(set save.data.backgroundIndex #{(save.data.backgroundIndex + 1) % backgroundOptions.length;}#)
|
||||
(save.flush)
|
||||
// setModel so the entry text gets remade in inverted/lightened colors when necessary
|
||||
(setModel model (nth model.rewardFiles rewardFileIndex))))
|
||||
|
||||
(method startAdding [:EntryType type]
|
||||
(set typeAdding type)
|
||||
(set entryNameText (new FlxInputText 0 0 FlxG.width "" textSize true))
|
||||
(set entryNameText.cameras [uiCamera])
|
||||
(set entryNameText.hasFocus true)
|
||||
(add entryNameText))
|
||||
|
||||
(when FlxG.keys.justPressed.ENTER
|
||||
0)
|
||||
(cond
|
||||
(entryNameText
|
||||
(model.addEntry typeAdding [entryNameText.text])
|
||||
(setModel model (nth model.rewardFiles rewardFileIndex))
|
||||
(entryNameText.kill)
|
||||
(set entryNameText null))
|
||||
(true
|
||||
(startAdding Todo))))
|
||||
(when FlxG.keys.justPressed.UP
|
||||
(startAdding Bonus))
|
||||
}
|
||||
|
||||
|
||||
// drag along connected pieces
|
||||
(when draggingSprite
|
||||
(let [dx (- draggingSprite.x draggingLastPos.x)
|
||||
@@ -56,16 +75,17 @@
|
||||
|
||||
|
||||
// Left and right arrow keys can switch between unlocked puzzles
|
||||
(when FlxG.keys.justPressed.LEFT
|
||||
(unless (= rewardFileIndex 0)
|
||||
(-= rewardFileIndex 1)
|
||||
(setModel model (nth model.rewardFiles rewardFileIndex))))
|
||||
(when FlxG.keys.justPressed.RIGHT
|
||||
(unless (= rewardFileIndex maxRewardFile)
|
||||
(+= rewardFileIndex 1)
|
||||
(setModel model (nth model.rewardFiles rewardFileIndex))))
|
||||
(unless entryNameText
|
||||
(when FlxG.keys.justPressed.LEFT
|
||||
(unless (= rewardFileIndex 0)
|
||||
(-= rewardFileIndex 1)
|
||||
(setModel model (nth model.rewardFiles rewardFileIndex))))
|
||||
(when FlxG.keys.justPressed.RIGHT
|
||||
(unless (= rewardFileIndex maxRewardFile)
|
||||
(+= rewardFileIndex 1)
|
||||
(setModel model (nth model.rewardFiles rewardFileIndex)))))
|
||||
// Handle keyboard input:
|
||||
(when shortcutHandler
|
||||
(when (and shortcutHandler !entryNameText)
|
||||
(shortcutHandler.update)))
|
||||
|
||||
(prop &mut :FlxSave save null)
|
||||
@@ -318,8 +338,9 @@
|
||||
(let [label (HabitModel.activeLabel e)]
|
||||
(_makeText label.label label.points)))
|
||||
|
||||
// TODO configurable text size
|
||||
(method _makeText [:String s :Int points]
|
||||
(let [text (new FlxText 0 textY 0 (+ s (* points "+")) 16)]
|
||||
(let [text (new FlxText 0 textY 0 (+ s (* points "+")) (defAndReturn var &mut textSize 16))]
|
||||
(set text.color color)
|
||||
(set text.cameras [uiCamera])
|
||||
(+= textY text.height)
|
||||
|
Reference in New Issue
Block a user