Add voice track support to Hollywoo

This commit is contained in:
2021-12-15 20:07:50 -07:00
parent c2ef99cbbe
commit 2bd2537bed
7 changed files with 48 additions and 20 deletions

View File

@@ -17,4 +17,4 @@ import flixel.system.FlxSound;
import flixel.util.FlxTimer;
@:build(kiss.Kiss.build())
class FlxDirector implements Director<String, FlxStagePosition, FlxStageFacing, FlxScreenPosition, ActorFlxSprite, FlxSound, String, FlxSprite> {}
class FlxDirector implements Director<String, FlxStagePosition, FlxStageFacing, FlxScreenPosition, ActorFlxSprite, FlxSound, String, FlxSprite, FlxSound> {}

View File

@@ -1,6 +1,6 @@
(prop :FlxActionDigital continueAction)
(prop actionManager (new FlxActionManager))
(prop &mut :Movie<String,FlxStagePosition,FlxStageFacing,FlxScreenPosition,ActorFlxSprite,FlxSound,String,FlxSprite> movie)
(prop &mut :Movie<String,FlxStagePosition,FlxStageFacing,FlxScreenPosition,ActorFlxSprite,FlxSound,String,FlxSprite,FlxSound> movie)
(defNew []
(set continueAction (new FlxActionDigital "Continue" onContinue))
@@ -105,17 +105,12 @@
}
(set dialogText.y DIALOG_Y))
(dialogText.revive)
(startWaitForInput cc))
// wait for input or delay
// TODO customize the delay in a more sophisticated way to the dialog length or voice-over length,
// or rely on FlxTypeText to add breathing room
(movie.delay (+ 5 (* 0.5 .length (text.split " ")))
->{
(dialogText.kill)
(speakerNameText.kill)
(dialogBox.kill)
(cc)
}))
(method :Void hideDialog []
(dialogText.kill)
(speakerNameText.kill)
(dialogBox.kill))
(method :Void playSound [:FlxSound sound :Float volumeMod :Bool waitForEnd :Continuation cc]
(let [originalVolume sound.volume
@@ -128,6 +123,13 @@
(sound.play)
(unless waitForEnd (cc)))
(method :Void playVoiceTrack [:FlxSound track :Float volumeMod :Float start :Float end :Continuation cc]
(let [originalVolume track.volume
restoreOriginalVolume ->(set track.volume originalVolume)]
(*= track.volume volumeMod)
(set track.onComplete ->{(restoreOriginalVolume) (cc)}))
(track.play false (* 1000 start) (* 1000 end)))
(prop &mut :FlxSound music)
(prop MUSIC_FADE_SEC 1)
(prop MUSIC_FADE_STEPS 10)

View File

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