diff --git a/projects/flixel-desktop-habit-puzzle-game/source/HabitState.kiss b/projects/flixel-desktop-habit-puzzle-game/source/HabitState.kiss index db68c8f8..bba17346 100644 --- a/projects/flixel-desktop-habit-puzzle-game/source/HabitState.kiss +++ b/projects/flixel-desktop-habit-puzzle-game/source/HabitState.kiss @@ -41,9 +41,13 @@ (prop &mut :DebugLayer debugLayer null) (prop &mut t 1) +(prop :FlxRect disableMouse (new FlxRect 0 0 0 0)) (method &override :Void update [:Float elapsed] (super.update elapsed) + (if (windowIsShown) + (set FlxMouseControl.mouseZone disableMouse) + (set FlxMouseControl.mouseZone null)) (#when debug (debugLayer.clear) @@ -60,17 +64,18 @@ (unless z.isEmpty (debugLayer.drawFlxRect z FlxColor.RED))))))) - (when model.rewardFiles - (let [zoom pieceCamera.zoom - scroll (pieceCamera.scroll.copyTo)] - (pieceCamera.updateScrollWheelZoom elapsed 5) - (pieceCamera.updateMouseBorderControl elapsed KEYBOARD_SCROLL_SPEED 0.002 uiCamera) - (when (or !(= zoom pieceCamera.zoom) !(scroll.equals pieceCamera.scroll)) - (set save.data.zoom pieceCamera.zoom) - (set save.data.scroll pieceCamera.scroll) - (save.flush))) + (when model.rewardFiles + (unless (windowIsShown) + (let [zoom pieceCamera.zoom + scroll (pieceCamera.scroll.copyTo)] + (pieceCamera.updateScrollWheelZoom elapsed 5) + (pieceCamera.updateMouseBorderControl elapsed KEYBOARD_SCROLL_SPEED 0.002 uiCamera) + (when (or !(= zoom pieceCamera.zoom) !(scroll.equals pieceCamera.scroll)) + (set save.data.zoom pieceCamera.zoom) + (set save.data.scroll pieceCamera.scroll) + (save.flush)))) - (when entryWindow + (when (and entryWindow !(tempWindowIsShown)) (when FlxG.keys.justPressed.ESCAPE (if (entryWindow.isShown) (entryWindow.hide) @@ -97,15 +102,15 @@ // TODO provide a saner/configurable set of bindings to trigger these ui action functions { - (when FlxG.mouse.justPressedRight - (when draggingSprite - (draggingSprite.rotate 90) - (doFor s (recursivelyConnectedPieces draggingSprite) - (dictSet (the Map save.data.storedAngles) (dictGet indexMap s) s.angle) - (dictSet (the Map save.data.storedOrigins) (dictGet indexMap s) s.origin)) - (save.flush))) - + (unless (windowIsShown) + (when FlxG.mouse.justPressedRight + (when draggingSprite + (draggingSprite.rotate 90) + (doFor s (recursivelyConnectedPieces draggingSprite) + (dictSet (the Map save.data.storedAngles) (dictGet indexMap s) s.angle) + (dictSet (the Map save.data.storedOrigins) (dictGet indexMap s) s.origin)) + (save.flush)))) (method startAdding [:EntryType type] (set typeAdding type) @@ -142,6 +147,20 @@ (prop &mut :FlxSave save null) (prop &mut :SimpleWindow entryWindow null) +// TODO add other windows and add them to the windowIsShown and tempWindowIsShown lists + +(method windowIsShown [] + (doFor window [entryWindow] + (when (and window (window.isShown)) + (return true))) + false) + +(method tempWindowIsShown [] + (doFor window [] + (when (and window (window.isShown)) + (return true))) + false) + (prop &mut :FlxTypedGroup logTexts (new FlxTypedGroup)) (prop &mut :FlxKeyShortcutHandler shortcutHandler null) diff --git a/projects/kiss-flixel/src/kiss_flixel/DragToSelectPlugin.hx b/projects/kiss-flixel/src/kiss_flixel/DragToSelectPlugin.hx index 44892345..9722767b 100644 --- a/projects/kiss-flixel/src/kiss_flixel/DragToSelectPlugin.hx +++ b/projects/kiss-flixel/src/kiss_flixel/DragToSelectPlugin.hx @@ -80,14 +80,22 @@ class DragToSelectPlugin extends FlxBasic { var camera = dragState.camera; if (camera == null) camera = FlxG.camera; + // If FlxMouseControl has a mouseZone enabled, respect it + var mousePos = FlxG.mouse.getWorldPosition(camera); + if (FlxMouseControl.mouseZone != null && !FlxMouseControl.mouseZone.containsPoint(mousePos)) { + dragState.firstCorner = null; + dragState.secondCorner = null; + return; + } + // have to skip a frame after justPressed, so KissExtendedSprites // can get first access to the mouse input if (FlxMouseControl.dragTarget == null) { if (wasJustPressed && FlxMouseControl.clickTarget == null) { deselectSprites(); - dragState.firstCorner = FlxG.mouse.getWorldPosition(camera); + dragState.firstCorner = mousePos; } - dragState.secondCorner = FlxG.mouse.getWorldPosition(camera); + dragState.secondCorner = mousePos; if (dragState.firstCorner != null && dragState.selectedSprites.length == 0) { var rounded1 = dragState.firstCorner.copyTo(); var rounded2 = dragState.secondCorner.copyTo();