From dd73c40d35b0cb32e124dc05d80eff09aa35c7d5 Mon Sep 17 00:00:00 2001 From: Nat Quayle Nelson Date: Thu, 9 Mar 2023 07:48:33 -0700 Subject: [PATCH] Hollywoo loading screen/allow threaded loading --- projects/hollywoo-flixel/haxelib.json | 1 + .../src/hollywoo_flixel/FlxDirector.kiss | 9 ++++++--- projects/hollywoo/src/hollywoo/Director.hx | 1 + projects/hollywoo/src/hollywoo/HollywooDSL.kiss | 13 +++++++++---- projects/hollywoo/src/hollywoo/Movie.kiss | 7 +++++-- 5 files changed, 22 insertions(+), 9 deletions(-) diff --git a/projects/hollywoo-flixel/haxelib.json b/projects/hollywoo-flixel/haxelib.json index 0a802f53..1b6a0429 100644 --- a/projects/hollywoo-flixel/haxelib.json +++ b/projects/hollywoo-flixel/haxelib.json @@ -5,6 +5,7 @@ "dependencies": { "kiss": "", "kiss-flixel": "", + "flixel-addons": "", "hollywoo": "" }, "url": "https://github.com/NQNStudios/kisslang", diff --git a/projects/hollywoo-flixel/src/hollywoo_flixel/FlxDirector.kiss b/projects/hollywoo-flixel/src/hollywoo_flixel/FlxDirector.kiss index 1b7da634..e478859c 100644 --- a/projects/hollywoo-flixel/src/hollywoo_flixel/FlxDirector.kiss +++ b/projects/hollywoo-flixel/src/hollywoo_flixel/FlxDirector.kiss @@ -102,13 +102,16 @@ (SpriteTools.writeOnSprite subtitle SUBTITLES_SIZE titleCard (object x (Percent 0.5) y (Pixels subtitleY))) (+= subtitleY SUBTITLES_SIZE SUBTITLES_MARGIN)) (FlxG.state.add titleCard) - // Allow skipping - (startWaitForInput cc)) + (cc)) + +(method :Void doLoading [:Void->Void _load :Continuation cc] + (let [loop (new flixel.addons.util.FlxAsyncLoop 1 ->:Void {(_load)(cc)})] + (haxe.Timer.delay ->:Void (loop.start) 1) + (FlxG.state.add loop))) (method :Void hideTitleCard [] (FlxG.state.remove titleCard)) - // TODO these could be customizable to the Actor, wrylies, etc. (var DIALOG_BOX_COLOR FlxColor.BLACK) (var DIALOG_COLOR FlxColor.WHITE) diff --git a/projects/hollywoo/src/hollywoo/Director.hx b/projects/hollywoo/src/hollywoo/Director.hx index 928efd93..50370132 100644 --- a/projects/hollywoo/src/hollywoo/Director.hx +++ b/projects/hollywoo/src/hollywoo/Director.hx @@ -56,5 +56,6 @@ interface Director, ScreenPosition, Actor, Sound, Song, Prop, function rollCredits(credits:Array, cc:Continuation):Void; + function doLoading(_load:Void->Void, cc:Continuation):Void; function cleanup():Void; } diff --git a/projects/hollywoo/src/hollywoo/HollywooDSL.kiss b/projects/hollywoo/src/hollywoo/HollywooDSL.kiss index 7203b991..ff399bd8 100644 --- a/projects/hollywoo/src/hollywoo/HollywooDSL.kiss +++ b/projects/hollywoo/src/hollywoo/HollywooDSL.kiss @@ -38,10 +38,15 @@ (defMacro end [] `{ (method doPreload [:Void->Void cc] - (set isLoading true) - (collectedBlocks preload) - (set isLoading false) - (cc)) + (director.showTitleCard ["LOADING"] + (makeCC + (set isLoading true) + (director.doLoading ->:Void { + (collectedBlocks preload) + (set isLoading false) + } (makeCC + (director.hideTitleCard) + (cc)))))) (method doCleanup [] (director.cleanup) (set lastInstructionPointer -2) diff --git a/projects/hollywoo/src/hollywoo/Movie.kiss b/projects/hollywoo/src/hollywoo/Movie.kiss index befd0217..e367f087 100644 --- a/projects/hollywoo/src/hollywoo/Movie.kiss +++ b/projects/hollywoo/src/hollywoo/Movie.kiss @@ -374,8 +374,11 @@ (hollywooMethod timedTitleCard true [time :Array lines :Continuation cc] (let [cc ->{(director.hideTitleCard)(cc)}] - (director.showTitleCard lines cc) - (delay time cc))) + (director.showTitleCard lines + (makeCC + // Allow skipping + (director.startWaitForInput cc) + (delay time cc))))) // TODO themed titleCard (wait for song or sound)