add sounds to hollywoo-flixel

This commit is contained in:
2021-11-01 16:53:05 -04:00
parent 5deead3ce9
commit 32762a4288
5 changed files with 15 additions and 4 deletions

View File

@@ -12,6 +12,7 @@ import hollywoo.Director;
import hollywoo_flixel.FlxMovie;
import flixel.util.FlxColor;
import flixel.text.FlxText;
import flixel.system.FlxSound;
@:build(kiss.Kiss.build())
class FlxDirector implements Director<String, FlxStagePosition, FlxStageFacing, FlxScreenPosition, ActorFlxSprite> {}
class FlxDirector implements Director<String, FlxStagePosition, FlxStageFacing, FlxScreenPosition, ActorFlxSprite, FlxSound> {}

View File

@@ -101,3 +101,11 @@
(dialogBox.kill)
(cc)
}))
(method :Void playSound [:FlxSound sound :Float volumeMod :Continuation cc]
// TODO preserve its original volume
(set sound.volume volumeMod)
(sound.play)
// TODO wait for its duration
(cc)
)

View File

@@ -2,6 +2,7 @@ package hollywoo_flixel;
import flixel.FlxState;
import flixel.FlxSprite;
import flixel.system.FlxSound;
import hollywoo.Movie;
import hollywoo_flixel.ActorFlxSprite;
import hollywoo_flixel.SceneFlxState;
@@ -28,4 +29,4 @@ enum FlxScreenPosition {
/**
* 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, FlxSound> {}

View File

@@ -9,9 +9,10 @@ enum Appearance {
typedef Continuation = Void -> Void;
interface Director<Set, StagePosition, StageFacing, ScreenPosition, Actor> {
interface Director<Set, StagePosition, StageFacing, ScreenPosition, Actor, Sound> {
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 playSound(sound:Sound, volumeMod:Float, cc:Continuation):Void;
function waitForInputOrDelay(delaySeconds:Float, cc:Continuation):Void;
function showDialog(speakerName:String, type:SpeechType<StagePosition, StageFacing, Actor>, wryly:String, dialog:String, cc:Continuation):Void;
}

View File

@@ -9,7 +9,7 @@ import hollywoo.Director;
* Model/controller of a Hollywoo film, and main execution script
*/
@:build(kiss.Kiss.build())
class Movie<Set, StagePosition, StageFacing, ScreenPosition, Actor> extends AsyncEmbeddedScript {
class Movie<Set, StagePosition, StageFacing, ScreenPosition, Actor, Sound> extends AsyncEmbeddedScript {
// TODO for some reason this wasn't working when declared in Movie.kiss:
// Mutable representation of frames in time:
var scenes:Map<String, Scene<Set, StagePosition, StageFacing, ScreenPosition, Actor>> = [];