diff --git a/projects/flixel-desktop-habit-puzzle-game/source/HabitState.kiss b/projects/flixel-desktop-habit-puzzle-game/source/HabitState.kiss index e5159abb..5bf7b564 100644 --- a/projects/flixel-desktop-habit-puzzle-game/source/HabitState.kiss +++ b/projects/flixel-desktop-habit-puzzle-game/source/HabitState.kiss @@ -229,12 +229,10 @@ (set s.mouseStartDragCallback ->:Void [s x y] (let [s (cast s KissExtendedSprite)] - // Bring currently held pieces to the front: - (rewardSprites.bringToFront s) (set s.priorityID (+ 1 .priorityID (last (the kiss.List rewardSprites.members)))) (let [connectedPieces (recursivelyConnectedPieces s)] - (doFor connected connectedPieces - (rewardSprites.bringToFront connected)) + // Bring currently held pieces to the front: + (rewardSprites.bringAllToFront (cast (concat [s] connectedPieces))) (set s.connectedSprites connectedPieces)) (set draggingSprite s) (set draggingLastPos (new FlxPoint s.x s.y)))) diff --git a/projects/kiss-flixel/src/kiss_flixel/GroupTools.kiss b/projects/kiss-flixel/src/kiss_flixel/GroupTools.kiss index 6726081b..a20f86b0 100644 --- a/projects/kiss-flixel/src/kiss_flixel/GroupTools.kiss +++ b/projects/kiss-flixel/src/kiss_flixel/GroupTools.kiss @@ -8,6 +8,14 @@ (group.remove obj) (group.insert 0 obj))) +(function :Void bringAllToFront <>[:FlxObject T] [:FlxTypedGroup group :Array arr] + (doFor s (group.members.copy) + (when (contains arr s) (bringToFront group s)))) + +(function :Void sendAllToBack <>[:FlxObject T] [:FlxTypedGroup group :Array arr] + (doFor s (reverse (group.members.copy)) + (when (contains arr s) (sendToBack group s)))) + (function :FlxRect calculateScreenBounds <>[:FlxSprite T] [:FlxTypedGroup group &opt :FlxCamera camera :Float margin] (unless margin (set margin 0)) (let [s (group.getFirstAlive)