From 2618bf44ae2fc67b26e66b86b5340ddbb7f8d0cb Mon Sep 17 00:00:00 2001 From: Nat Quayle Nelson Date: Sat, 9 Jul 2022 01:16:39 +0000 Subject: [PATCH] allow switching between habit puzzles --- .../source/HabitState.kiss | 33 ++++++++++++++----- 1 file changed, 25 insertions(+), 8 deletions(-) diff --git a/projects/flixel-desktop-habit-puzzle-game/source/HabitState.kiss b/projects/flixel-desktop-habit-puzzle-game/source/HabitState.kiss index a9a84e96..2ebd1de8 100644 --- a/projects/flixel-desktop-habit-puzzle-game/source/HabitState.kiss +++ b/projects/flixel-desktop-habit-puzzle-game/source/HabitState.kiss @@ -16,6 +16,16 @@ (super.update elapsed) // Hold left-click to hide the habit text and see the image clearly: (when entryTexts (if FlxG.mouse.pressed (remove entryTexts) (add entryTexts))) + + // 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)))) // Handle keyboard input: (when shortcutHandler (shortcutHandler.update))) @@ -31,19 +41,24 @@ (var TOTAL_PIECES (* PUZZLE_WIDTH PUZZLE_HEIGHT)) (prop &mut :FlxTypedGroup rewardSprites null) -(method setModel [m] +(prop &mut rewardFileIndex 0) +(prop &mut maxRewardFile 0) + +(method setModel [m &opt :RewardFile currentRewardFile] (set model m) (set shortcutHandler (new FlxKeyShortcutHandler)) (let [p (m.totalPoints) - &mut i 0 - &mut currentRewardFile null] + &mut i 0 ] // Find, load, and add the current reward image as big as possible: - (set currentRewardFile (nth m.rewardFiles 0)) - (while (> p .startingPoints (nth m.rewardFiles i)) - (set currentRewardFile (nth m.rewardFiles i)) - (if (>= ++i m.rewardFiles.length) - (break))) + (unless currentRewardFile + (set currentRewardFile (nth m.rewardFiles 0)) + (while (> p .startingPoints (nth m.rewardFiles i)) + (set rewardFileIndex i) + (set currentRewardFile (nth m.rewardFiles i)) + (set maxRewardFile i) + (if (>= ++i m.rewardFiles.length) + (break)))) (when rewardSprites (remove rewardSprites)) @@ -53,6 +68,8 @@ (joinPath (Path.directory m.textFile) currentRewardFile.path)))] + (when rewardSprites + (remove rewardSprites)) (rewardSprite.setGraphicSize FlxG.width 0) (rewardSprite.updateHitbox) (when (> rewardSprite.height FlxG.height)