Flixel-hollywoo waitForInputOrDelay()

This commit is contained in:
2021-10-27 14:15:46 -04:00
parent 81a447785d
commit d342bfda6d
5 changed files with 39 additions and 4 deletions

View File

@@ -4,6 +4,9 @@ import kiss.Prelude;
import kiss.List; import kiss.List;
import flixel.FlxG; import flixel.FlxG;
import flixel.FlxSprite; import flixel.FlxSprite;
import flixel.input.actions.FlxAction;
import flixel.input.actions.FlxActionManager;
import flixel.input.mouse.FlxMouseButton;
import hollywoo.Scene; import hollywoo.Scene;
import hollywoo.Director; import hollywoo.Director;
import hollywoo_flixel.FlxMovie; import hollywoo_flixel.FlxMovie;

View File

@@ -1,7 +1,35 @@
(defNew []) (prop :FlxActionDigital continueAction)
(prop actionManager (new FlxActionManager))
(defNew []
(set continueAction (new FlxActionDigital "Continue" onContinue))
// TODO allow configuring continue keys -- any key, specifically mapped keys, etc.
(continueAction.addKey SPACE JUST_PRESSED)
(continueAction.addMouse LEFT JUST_PRESSED)
(actionManager.addAction continueAction)
(FlxG.inputs.add actionManager)
(set actionManager.resetOnStateSwitch NONE))
(method :Void showScene [:Scene<String,FlxStagePosition,FlxStageFacing,FlxScreenPosition,ActorFlxSprite> scene :Appearance appearance :Continuation cc] (method :Void showScene [:Scene<String,FlxStagePosition,FlxStageFacing,FlxScreenPosition,ActorFlxSprite> scene :Appearance appearance :Continuation cc]
(FlxG.switchState (cast scene SceneFlxState))) (FlxG.switchState (cast scene SceneFlxState))
(cc))
(method :Void showCharacter [:Character<FlxStagePosition,FlxStageFacing,ActorFlxSprite> character :Appearance appearance :Continuation cc] (method :Void showCharacter [:Character<FlxStagePosition,FlxStageFacing,ActorFlxSprite> character :Appearance appearance :Continuation cc]
(print "Character shneezy")) (print "Character shneezy")
(cc))
(prop &mut :Null<Continuation> nextCC)
(method onContinue [:FlxActionDigital continueAction]
(whenLet [cc nextCC]
(set nextCC null)
(cc)))
(method :Void waitForInputOrDelay [:Float delaySeconds :Continuation cc]
// TODO allow user to choose between automatic delays and continue checks
(if true
//{
(set nextCC cc)
// TODO show an indicator that input is needed
//}
)
)

View File

@@ -25,4 +25,7 @@ enum FlxScreenPosition {
UpperCenter; UpperCenter;
} }
/**
* Model/controller of a Hollywoo-Flixel film, and main execution script
*/
class FlxMovie extends Movie<String, FlxStagePosition, FlxStageFacing, FlxScreenPosition, ActorFlxSprite> {} class FlxMovie extends Movie<String, FlxStagePosition, FlxStageFacing, FlxScreenPosition, ActorFlxSprite> {}

View File

@@ -12,4 +12,5 @@ typedef Continuation = Void -> Void;
interface Director<Set, StagePosition, StageFacing, ScreenPosition, Actor> { interface Director<Set, StagePosition, StageFacing, ScreenPosition, Actor> {
function showScene(scene:Scene<Set, StagePosition, StageFacing, ScreenPosition, Actor>, appearance:Appearance, cc:Continuation):Void; function showScene(scene:Scene<Set, StagePosition, StageFacing, ScreenPosition, Actor>, appearance:Appearance, cc:Continuation):Void;
function showCharacter(character:Character<StagePosition, StageFacing, Actor>, appearance:Appearance, cc:Continuation):Void; function showCharacter(character:Character<StagePosition, StageFacing, Actor>, appearance:Appearance, cc:Continuation):Void;
function waitForInputOrDelay(delaySeconds:Float, cc:Continuation):Void;
} }

View File

@@ -3,7 +3,7 @@ package hollywoo;
import kiss.AsyncEmbeddedScript; import kiss.AsyncEmbeddedScript;
/** /**
* Model of a Hollywoo film * Model/controller of a Hollywoo film, and main execution script
*/ */
@:build(kiss.Kiss.build()) @:build(kiss.Kiss.build())
class Movie<Set, StagePosition, StageFacing, ScreenPosition, Actor> extends AsyncEmbeddedScript { class Movie<Set, StagePosition, StageFacing, ScreenPosition, Actor> extends AsyncEmbeddedScript {