diff --git a/projects/flixel-desktop-habit-puzzle-game/source/HabitModel.hx b/projects/flixel-desktop-habit-puzzle-game/source/HabitModel.hx index 0e1fe571..351e33b0 100644 --- a/projects/flixel-desktop-habit-puzzle-game/source/HabitModel.hx +++ b/projects/flixel-desktop-habit-puzzle-game/source/HabitModel.hx @@ -31,7 +31,8 @@ typedef RewardFile = { path: String, startingPoints: Int, puzzleWidth: Int, - puzzleHeight: Int + puzzleHeight: Int, + piecesPerPoint: Int }; typedef Puzzle = { diff --git a/projects/flixel-desktop-habit-puzzle-game/source/HabitModel.kiss b/projects/flixel-desktop-habit-puzzle-game/source/HabitModel.kiss index 1487b770..3f3279bf 100644 --- a/projects/flixel-desktop-habit-puzzle-game/source/HabitModel.kiss +++ b/projects/flixel-desktop-habit-puzzle-game/source/HabitModel.kiss @@ -30,11 +30,12 @@ ((when (= lastHeader "FILES") (Some line)) (rewardFiles.push (let [parts (line.split " ") + piecesPerPoint (Std.parseInt (parts.pop)) puzzleHeight (Std.parseInt (parts.pop)) puzzleWidth (Std.parseInt (parts.pop)) startingPoints (Std.parseInt (parts.pop)) path (parts.join " ")] - (objectWith path startingPoints puzzleWidth puzzleHeight)))) + (objectWith path startingPoints puzzleWidth puzzleHeight piecesPerPoint)))) ((Some line) (.push (case lastHeader @@ -140,7 +141,7 @@ "${label.label} $(* "|" label.points)") "/")") (function :String stringifyRewardFile [:RewardFile rewardFile] - "${rewardFile.path} ${rewardFile.startingPoints} ${rewardFile.puzzleWidth} ${rewardFile.puzzleHeight}") + "${rewardFile.path} ${rewardFile.startingPoints} ${rewardFile.puzzleWidth} ${rewardFile.puzzleHeight} ${rewardFile.piecesPerPoint}") (method :Void save [] (localVar &mut content "DAILY\n-----\n") @@ -219,6 +220,6 @@ (objectWith [labels (for label labels (objectWith [points 0] label))] type)) (save)) -(method addRewardFile [path startingPoints puzzleWidth puzzleHeight] - (rewardFiles.push (objectWith path startingPoints puzzleWidth puzzleHeight)) +(method addRewardFile [path startingPoints puzzleWidth puzzleHeight piecesPerPoint] + (rewardFiles.push (objectWith path startingPoints puzzleWidth puzzleHeight piecesPerPoint)) (save)) \ No newline at end of file diff --git a/projects/flixel-desktop-habit-puzzle-game/source/HabitState.kiss b/projects/flixel-desktop-habit-puzzle-game/source/HabitState.kiss index 96b9d0c1..c6ef01ff 100644 --- a/projects/flixel-desktop-habit-puzzle-game/source/HabitState.kiss +++ b/projects/flixel-desktop-habit-puzzle-game/source/HabitState.kiss @@ -154,8 +154,10 @@ (set currentRewardFile (nth m.rewardFiles i)) (set maxRewardFile i) (when (>= ++i m.rewardFiles.length) - (let [lastStartingPoints .startingPoints (nth m.rewardFiles --i) - nextStartingPoints (+ lastStartingPoints TOTAL_PIECES)] + --i + (let [lastStartingPoints .startingPoints (nth m.rewardFiles i) + piecesPerPoint .piecesPerPoint (nth m.rewardFiles i) + nextStartingPoints (+ lastStartingPoints (Math.ceil (/ TOTAL_PIECES piecesPerPoint)))] (when (> p nextStartingPoints) (set puzzleUnlocked nextStartingPoints)) (break))))) @@ -215,7 +217,7 @@ (r.shuffle jigsaw.jigs) (localVar spriteGrid (for y (range PUZZLE_HEIGHT) (for x (range PUZZLE_WIDTH) null))) (localVar indexGrid (for y (range PUZZLE_HEIGHT) (for x (range PUZZLE_WIDTH) 0))) - (doFor i (range (min TOTAL_PIECES (- p currentRewardFile.startingPoints))) + (doFor i (range (min TOTAL_PIECES (* currentRewardFile.piecesPerPoint (- p currentRewardFile.startingPoints)))) (let [jig (nth jigsaw.jigs i) pos (ifLet [point (dictGet (the Map save.data.storedPositions) i)] point @@ -298,7 +300,7 @@ (set entryWindow (new SimpleWindow "" (FlxColor.fromRGBFloat 0 0 0 0.5) FlxColor.WHITE 0.9 0.9)) (set entryWindow.cameras [uiCamera]) (set entryWindow.textColor FlxColor.LIME) - (_makeText "Puzzle #$(+ 1 rewardFileIndex) / ${model.rewardFiles.length}" (- TOTAL_PIECES (- p currentRewardFile.startingPoints))) + (_makeText "Puzzle #$(+ 1 rewardFileIndex) / ${model.rewardFiles.length}" (max 0 (- TOTAL_PIECES (* currentRewardFile.piecesPerPoint (- p currentRewardFile.startingPoints))))) (set entryWindow.textColor FlxColor.ORANGE) (map (m.activeDailyEntries) makeText) (set entryWindow.textColor FlxColor.GREEN)