music for hollywoo-flixel

This commit is contained in:
2021-11-01 20:35:30 -04:00
parent 9de7b8166f
commit 9802f3512b
6 changed files with 58 additions and 13 deletions

View File

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

View File

@@ -102,8 +102,27 @@
(cc)
}))
(method :Void playSound [:FlxSound sound :Float volumeMod :Continuation cc]
// TODO preserve its original volume
(set sound.volume volumeMod)
(set sound.onComplete cc)
(sound.play))
(method :Void playSound [:FlxSound sound :Float volumeMod :Bool waitForEnd :Continuation cc]
(let [originalVolume sound.volume
restoreOriginalVolume ->(set sound.volume originalVolume)]
(*= sound.volume volumeMod)
(set sound.onComplete
(if waitForEnd
->{(restoreOriginalVolume) (cc)}
restoreOriginalVolume)))
(sound.play)
(unless waitForEnd (cc)))
(prop &mut :FlxSound music)
(prop MUSIC_FADE_SEC 1)
(prop MUSIC_FADE_STEPS 10)
(method :Void playSong [:String song :Float volumeMod :Bool loop :Bool waitForEnd :Continuation cc]
(set music (FlxG.sound.play song 0 loop null true (if waitForEnd cc ->{})))
(.start (new FlxTimer)
(/ MUSIC_FADE_SEC MUSIC_FADE_STEPS)
->:Void _ (+= music.volume (/ volumeMod MUSIC_FADE_STEPS))
MUSIC_FADE_STEPS)
(set music.persist true)
(unless waitForEnd (cc)))
(method :Void stopSong [] (when music (music.stop)))

View File

@@ -29,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, FlxSound> {}
class FlxMovie extends Movie<String, FlxStagePosition, FlxStageFacing, FlxScreenPosition, ActorFlxSprite, FlxSound, String> {}