88 lines
2.4 KiB
GDScript
88 lines
2.4 KiB
GDScript
extends Tween
|
|
|
|
const fadeMusicTime = 0.8;
|
|
const lowVolume = - 80;
|
|
const defaultVolume:float = 0.0;
|
|
var bgmStream:AudioStreamPlayer;
|
|
|
|
var darkChild:Sprite;
|
|
|
|
func _ready():
|
|
bgmStream = self.get_child(0);
|
|
bgmStream.bus = "BGM";
|
|
|
|
loopEnable = false;
|
|
|
|
func PlayBGM(bgmPath):
|
|
PrepareLoopVersion(bgmPath);
|
|
|
|
bgmStream.volume_db = lowVolume;
|
|
bgmStream.stream = load(bgmPath);
|
|
|
|
var _temp = self.interpolate_property(bgmStream, "volume_db", lowVolume, defaultVolume, fadeMusicTime, Tween.TRANS_EXPO, 0)
|
|
if bgmPath == "res://resources/audio/bgm/25.ogg":
|
|
bgmStream.play(1.5);
|
|
else :
|
|
bgmStream.play(0.0);
|
|
_temp = self.start();
|
|
|
|
func StopBGM():
|
|
|
|
var _temp = self.interpolate_property(bgmStream, "volume_db", defaultVolume, lowVolume, fadeMusicTime, Tween.TRANS_LINEAR, 0)
|
|
_temp = self.start();
|
|
loopEnable = false
|
|
yield (self, "tween_all_completed");
|
|
if bgmStream.stream != null:
|
|
bgmStream.stream.resource_path = ""
|
|
bgmStream.stream = null;
|
|
|
|
func ChangeBGM(bgmPath2):
|
|
if bgmStream.stream != null and bgmStream.stream.resource_path == bgmPath2:
|
|
return ;
|
|
|
|
var bgmPath3 = bgmPath2.trim_suffix(".ogg") + "_loop.ogg"
|
|
|
|
if bgmStream.stream.resource_path == bgmPath2 or bgmStream.stream.resource_path == bgmPath3:
|
|
return ;
|
|
|
|
StopBGM();
|
|
yield (self, "tween_all_completed")
|
|
PlayBGM(bgmPath2);
|
|
|
|
func SetNextTriptych(bgmPath):
|
|
loopEnable = true;
|
|
bgmStream.stream.set_loop_mode(0);
|
|
loopVersionPath = bgmPath;
|
|
|
|
var dict = {
|
|
"res://resources/audio/bgm/14.ogg":"res://resources/audio/bgm/14_loop.ogg",
|
|
"res://resources/audio/bgm/17.ogg":"res://resources/audio/bgm/17_loop.ogg",
|
|
"res://resources/audio/bgm/18.ogg":"res://resources/audio/bgm/18_loop.ogg",
|
|
"res://resources/audio/bgm/19.ogg":"res://resources/audio/bgm/19_loop.ogg",
|
|
"res://resources/audio/bgm/20.ogg":"res://resources/audio/bgm/20_loop.ogg",
|
|
"res://resources/audio/bgm/21.ogg":"res://resources/audio/bgm/21_loop.ogg",
|
|
"res://resources/audio/bgm/22.ogg":"res://resources/audio/bgm/22_loop.ogg",
|
|
"res://resources/audio/bgm/23.ogg":"res://resources/audio/bgm/23_loop.ogg",
|
|
"res://resources/audio/bgm/26.ogg":"res://resources/audio/bgm/26_loop.ogg",
|
|
}
|
|
|
|
var loopEnable;
|
|
var loopVersionPath;
|
|
|
|
func PrepareLoopVersion(bgmPath):
|
|
if dict.has(bgmPath):
|
|
loopVersionPath = dict[bgmPath];
|
|
loopEnable = true;
|
|
else :
|
|
loopVersionPath = "";
|
|
loopEnable = false;
|
|
|
|
|
|
|
|
|
|
func _on_BGMStreamPlayer_finished():
|
|
if loopEnable:
|
|
bgmStream.stream = load(loopVersionPath);
|
|
bgmStream.play(0.0);
|
|
loopEnable = false;
|
|
|