diff --git a/src/hollywoo_flixel/FlxDirector.kiss b/src/hollywoo_flixel/FlxDirector.kiss index d1ad5d5..1ee52a1 100644 --- a/src/hollywoo_flixel/FlxDirector.kiss +++ b/src/hollywoo_flixel/FlxDirector.kiss @@ -8,15 +8,25 @@ (prop :Array> spriteLayers []) (var LAYER_MAX 8) -(savedVar :String lastSceneLabel "") +(savedVar :Map lastSceneLabels (new Map)) + +(function lastSceneForMovie [:FlxMovie m &opt :String setValue] + (let [clazz (Type.getClass m) + className (Type.getClassName clazz) + currentValue (dictGet lastSceneLabels className)] + (if setValue + (withMutProperties [lastSceneLabels] + (dictSet lastSceneLabels className setValue) + setValue) + currentValue))) // TODO this should be part of Hollywoo's logic (method :Void promptForResume [:FlxMovie movie] (movie.createCameras) - (if (and FlxDirector.lastSceneLabel (.exists (movie.labelRunners) FlxDirector.lastSceneLabel)) - {(_chooseString "Resume from '${FlxDirector.lastSceneLabel}'?" ["" "Resume" "Scene Selection" "Start From Beginning"] + (if (.exists (movie.labelRunners) (lastSceneForMovie movie)) + {(_chooseString "Resume from '$(lastSceneForMovie movie)'?" ["" "Resume" "Scene Selection" "Start From Beginning"] ->choice (case choice - ("Resume" (movie.runFromLabel FlxDirector.lastSceneLabel)) + ("Resume" (movie.runFromLabel (lastSceneForMovie movie))) ("Scene Selection" (sceneSelection ->:Void { diff --git a/src/hollywoo_flixel/HollywooFlixelDSL.kiss b/src/hollywoo_flixel/HollywooFlixelDSL.kiss index 817103b..6b01c09 100644 --- a/src/hollywoo_flixel/HollywooFlixelDSL.kiss +++ b/src/hollywoo_flixel/HollywooFlixelDSL.kiss @@ -502,7 +502,7 @@ (unless (FlxG.inputs.list.contains flxDirector.actionManager) (FlxG.inputs.add flxDirector.actionManager)) - (set onLabel ->:Void label (set FlxDirector.lastSceneLabel label))) + (set onLabel ->:Void label (FlxDirector.lastSceneForMovie this label))) (cleanup (when skipMovie