Audio.gd 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. extends AudioStreamPlayer
  2. var currentTrack : int = DB.UnknownHash
  3. var soundStream : AudioStreamOggVorbis = null
  4. #
  5. func Stop():
  6. if is_playing():
  7. stop()
  8. currentTrack = DB.UnknownHash
  9. func Load(soundID : int):
  10. if currentTrack != soundID:
  11. if soundStream:
  12. soundStream = null
  13. currentTrack = DB.UnknownHash
  14. var soundData : FileData = DB.MusicsDB.get(soundID, null)
  15. if not soundData:
  16. assert(false, "Could not load music database id: %s" % soundID)
  17. return
  18. soundStream = FileSystem.LoadMusic(soundData._path)
  19. if not soundStream:
  20. assert(false, "Could not load music: %s" % soundData._name)
  21. return
  22. soundStream.set_loop(true)
  23. set_stream(soundStream)
  24. currentTrack = soundID
  25. set_autoplay(true)
  26. play()
  27. func SetVolume(volume : float):
  28. set_volume_db(volume)
  29. func Warped():
  30. if Launcher.Map.currentMapNode:
  31. var mapName : String = Launcher.Map.currentMapNode.get_meta("music", "")
  32. if not mapName.is_empty():
  33. Load(mapName.hash())
  34. else:
  35. Stop()
  36. #
  37. func _post_launch():
  38. if not FSM.exit_game.is_connected(Stop):
  39. FSM.exit_game.connect(Stop)
  40. if Launcher.Map and not Launcher.Map.PlayerWarped.is_connected(Warped):
  41. Launcher.Map.PlayerWarped.connect(Warped)
  42. Warped()