From 10071be9c073f576e7288ec56624ff0c06da32f3 Mon Sep 17 00:00:00 2001 From: Nat Quayle Nelson Date: Wed, 14 Jun 2023 08:08:15 -0600 Subject: [PATCH] preserve overlay status of props in scenes --- src/hollywoo_flixel/FlxMovie.hx | 1 + src/hollywoo_flixel/HollywooFlixelDSL.kiss | 12 ++++++++++++ 2 files changed, 13 insertions(+) diff --git a/src/hollywoo_flixel/FlxMovie.hx b/src/hollywoo_flixel/FlxMovie.hx index 8cd0fa5..04020ec 100644 --- a/src/hollywoo_flixel/FlxMovie.hx +++ b/src/hollywoo_flixel/FlxMovie.hx @@ -35,6 +35,7 @@ class FlxMovie extends Movie; public var propsInScene:Map> = []; + public var overlaidPropsInScenes:Map> = []; public var tweenedPositionsOfSpritesInScenes:Map> = []; public var tweens:Array = []; diff --git a/src/hollywoo_flixel/HollywooFlixelDSL.kiss b/src/hollywoo_flixel/HollywooFlixelDSL.kiss index 4703c0b..1d455c9 100644 --- a/src/hollywoo_flixel/HollywooFlixelDSL.kiss +++ b/src/hollywoo_flixel/HollywooFlixelDSL.kiss @@ -21,6 +21,9 @@ (method &override :Void _showScene [:Scene scene :Appearance appearance :FlxCamera camera :Continuation cc] (super._showScene scene appearance camera (makeCC + (whenLet [overlaidProps (dictGet overlaidPropsInScenes sceneKey)] + (doFor =>sprite key overlaidProps + (overlayPropOnCurrentSet key (makeCC null)))) (whenLet [tweenedPositions (dictGet tweenedPositionsOfSpritesInScenes sceneKey)] (doFor =>sprite point tweenedPositions (set sprite.x point.x) @@ -32,6 +35,12 @@ (tweenedPositions.remove (dictGet actors actorName))) (super.moveCharacter actorName newPosition newFacing cc)) +(method &override removeProp [name :Continuation cc] + (let [prop (dictGet props name)] + (whenLet [overlaidProps (dictGet overlaidPropsInScenes sceneKey)] + (overlaidProps.remove prop))) + (super.removeProp name cc)) + (method linearMotion [:FlxSprite sprite :Float destX :Float destY :Float speed &opt :Void->Void cc :String soundLoop :Float volumeMod :Array connectedSprites] (unless (tweenedPositionsOfSpritesInScenes.exists sceneKey) (dictSet tweenedPositionsOfSpritesInScenes sceneKey (new Map))) @@ -229,6 +238,9 @@ (let [propKey (kiss.FuzzyMapTools.bestMatch props propKey)] (dictSet shownProps propKey true) // Don't scale when showing (withProp propKey p + (unless (overlaidPropsInScenes.exists sceneKey) + (dictSet overlaidPropsInScenes sceneKey (new Map))) + (dictSet (dictGet overlaidPropsInScenes sceneKey) p propKey) (withSceneSetCC sceneKey bg (addProp propKey (new StagePosition bg.x bg.y 1) cc) (p.setGraphicSize (Std.int bg.width) (Std.int bg.height))