From 02ad3c92a7efce07bcabcab84eabb71c753225aa Mon Sep 17 00:00:00 2001 From: Nat Quayle Nelson Date: Thu, 22 Jun 2023 13:22:43 -0600 Subject: [PATCH] scale props before calculating FullControl positions --- haxe_libraries/kiss-flixel.hxml | 4 ++-- src/hollywoo_flixel/FlxDirector.kiss | 20 ++++++++++++-------- src/hollywoo_flixel/HollywooFlixelDSL.kiss | 6 ++++-- 3 files changed, 18 insertions(+), 12 deletions(-) diff --git a/haxe_libraries/kiss-flixel.hxml b/haxe_libraries/kiss-flixel.hxml index 524896f..5c0a3e4 100644 --- a/haxe_libraries/kiss-flixel.hxml +++ b/haxe_libraries/kiss-flixel.hxml @@ -1,4 +1,4 @@ -# @install: lix --silent download "gh://github.com/kiss-lang/kiss-flixel#7381447087453981c8fa71dc004063bdc77033a7" into kiss-flixel/0.0.0/github/7381447087453981c8fa71dc004063bdc77033a7 +# @install: lix --silent download "gh://github.com/kiss-lang/kiss-flixel#70a1f880152be4bb03179dd79e9fe739d086ba7b" into kiss-flixel/0.0.0/github/70a1f880152be4bb03179dd79e9fe739d086ba7b -lib flixel -lib flixel-addons -lib flixel-ui @@ -6,5 +6,5 @@ -lib kiss-tools -lib lime -lib openfl --cp ${HAXE_LIBCACHE}/kiss-flixel/0.0.0/github/7381447087453981c8fa71dc004063bdc77033a7/src/ +-cp ${HAXE_LIBCACHE}/kiss-flixel/0.0.0/github/70a1f880152be4bb03179dd79e9fe739d086ba7b/src/ -D kiss-flixel=0.0.0 \ No newline at end of file diff --git a/src/hollywoo_flixel/FlxDirector.kiss b/src/hollywoo_flixel/FlxDirector.kiss index 380e44f..44771c7 100644 --- a/src/hollywoo_flixel/FlxDirector.kiss +++ b/src/hollywoo_flixel/FlxDirector.kiss @@ -586,6 +586,17 @@ (prop &mut :Bool autoPlaceProps true) +(method scaleProp [:FlxSprite prop] + (let [propKey (_propKey prop) + :Float scale .value (flxMovie.propScales.get propKey)] + (when (StringTools.contains propKey "anonProp") (return)) + (unless (flxMovie.propsInScene.exists flxMovie.sceneKey) + (dictSet flxMovie.propsInScene flxMovie.sceneKey [])) + (unless !(= -1 (.indexOf (dictGet flxMovie.propsInScene flxMovie.sceneKey) propKey)) + (.push (dictGet flxMovie.propsInScene flxMovie.sceneKey) propKey)) + (prop.scale.set scale scale) + (prop.updateHitbox))) + (method :Void showProp [:FlxSprite prop :StagePosition position :Appearance appearance :FlxCamera camera :Continuation cc] (set prop.cameras [camera]) (let [width (min (max prop.width PROP_MIN_WIDTH) PROP_MAX_WIDTH)] @@ -616,14 +627,7 @@ (-= prop.y (- propBottom FlxG.height))))) // Otherwise, let the director scale props (true - (let [propKey (_propKey prop) - :Float scale .value (flxMovie.propScales.get propKey)] - (unless (flxMovie.propsInScene.exists flxMovie.sceneKey) - (dictSet flxMovie.propsInScene flxMovie.sceneKey [])) - (unless !(= -1 (.indexOf (dictGet flxMovie.propsInScene flxMovie.sceneKey) propKey)) - (.push (dictGet flxMovie.propsInScene flxMovie.sceneKey) propKey)) - (prop.scale.set scale scale) - (prop.updateHitbox)))) + (scaleProp prop))) (let [layerNum position.z] (assertEquals layerNum (Std.int layerNum)) diff --git a/src/hollywoo_flixel/HollywooFlixelDSL.kiss b/src/hollywoo_flixel/HollywooFlixelDSL.kiss index 1d455c9..cba5111 100644 --- a/src/hollywoo_flixel/HollywooFlixelDSL.kiss +++ b/src/hollywoo_flixel/HollywooFlixelDSL.kiss @@ -137,9 +137,11 @@ (_canvas.makeGraphic FlxG.width FlxG.height FlxColor.BLACK)) _canvas) -(method :StagePosition FullControl [:FlxSprite s :Int layer :RelativePosition rpos] +(method :StagePosition FullControl [:FlxSprite s :Int layer :RelativePosition rpos &opt :Bool isProp] (assert (<= 0 layer FlxDirector.LAYER_MAX) "Layer $layer is out of range 0-$FlxDirector.LAYER_MAX") - (let [[x y] (SpriteTools.positionOn s (canvas) rpos)] + (when isProp + (flxDirector.scaleProp s)) + (let [[x y] (SpriteTools.positionOn s (canvas) rpos true)] (new StagePosition x y layer))) (method namePlates [:Array names :Dynamic delayLength :Bool delayWhileShown :Void->Void cc]