diff --git a/projects/hollywoo-flixel/src/hollywoo_flixel/FlxDirector.kiss b/projects/hollywoo-flixel/src/hollywoo_flixel/FlxDirector.kiss index a0645834..cca6c645 100644 --- a/projects/hollywoo-flixel/src/hollywoo_flixel/FlxDirector.kiss +++ b/projects/hollywoo-flixel/src/hollywoo_flixel/FlxDirector.kiss @@ -188,6 +188,8 @@ (currentState.add dialogText) (set dialogText.text text) // TODO actually page through the dialog instead of sizing it down? + // ^ though that doesn't work automatically with VO unless individual word times are kept in the json + // (which would be really clunky) (set dialogText.size DIALOG_SIZE) (while (< 720 (+ dialogText.y dialogText.height)) (-= dialogText.size 6)) @@ -254,10 +256,21 @@ (var PROP_MAX_WIDTH 500) (method :Void quickShowPropOnScreen [:FlxSprite prop :FlxScreenPosition position :Continuation cc] - // TODO assign the other possible positions - (let [[x y] + (let [left (/ 1280 6) + right (- 1280 left) + upper (/ 720 6) + lower (- 720 upper) + centerX (/ 1280 2) + centerY (/ 720 2) + [x y] (case position - (Center [(/ 1280 2) (/ 720 2)]) + (Center [centerX centerY]) + (UpperLeft [left upper]) + (UpperRight [right upper]) + (LowerLeft [left lower]) + (LowerRight [right lower]) + (LowerCenter [centerX lower]) + (UpperCenter [centerX upper]) (otherwise (throw "screen position not implemented")))] (let [width (min (max prop.width PROP_MIN_WIDTH) PROP_MAX_WIDTH)] (prop.setGraphicSize width) @@ -270,12 +283,12 @@ (set prop.x (- x (/ prop.width 2))) (set prop.y (- y (/ prop.height 2))) - // if the prop would block the dialogue box, bump it up - (let [propBottom (+ prop.y prop.height)] - (when (> propBottom DIALOG_Y) - (-= prop.y (- propBottom DIALOG_Y)))) - - (currentState.add prop))) + // if a prop meant to be centered would block the dialogue box, bump it up + (whenLet [Center position] + (let [propBottom (+ prop.y prop.height)] + (when (> propBottom DIALOG_Y) + (-= prop.y (- propBottom DIALOG_Y))))) + (.add (nth currentState.spriteLayers SceneFlxState.LAYER_MAX) prop))) (cc)) (method :Void smartShowPropOnScreen [:FlxSprite prop :Int layer :RelativePosition rpos :Continuation cc] diff --git a/projects/hollywoo-flixel/src/hollywoo_flixel/SceneFlxState.kiss b/projects/hollywoo-flixel/src/hollywoo_flixel/SceneFlxState.kiss index a061b63c..6b074651 100644 --- a/projects/hollywoo-flixel/src/hollywoo_flixel/SceneFlxState.kiss +++ b/projects/hollywoo-flixel/src/hollywoo_flixel/SceneFlxState.kiss @@ -17,7 +17,7 @@ (super) (add setSprite) // TODO characters will be in front of every prop layer -- characters need their own group layer - (doFor i (range LAYER_MAX) + (doFor i (range (+ 1 LAYER_MAX)) (let [g (new FlxTypedGroup)] (spriteLayers.push g) (add g))))