Newer
Older
kotlin-webgl-test / src / main / kotlin / games / perses / sound / Music.kt
rnentjes on 26 Apr 2017 1 KB Small fixes
package games.perses.sound

import org.w3c.dom.HTMLAudioElement
import kotlin.browser.document

/**
 * User: rnentjes
 * Date: 18-5-16
 * Time: 13:02
 */

fun HTMLAudioElement.dispose() {
    this.pause()
    this.parentNode?.removeChild(this)
}

object Music {
    val playing: MutableSet<HTMLAudioElement> = HashSet()

    fun load(url: String): HTMLAudioElement {
        val audio = document.createElement("audio") as HTMLAudioElement

        audio.src = url

        return audio
    }

    fun play(url: String, volume: Double = 0.75, looping: Boolean = false): HTMLAudioElement {
        val audio = document.createElement("audio") as HTMLAudioElement

        audio.src = url
        audio.volume = volume
        audio.play()

        audio.onended = {
            if (looping) {
                audio.currentTime = 0.0
                audio.play()
            } else {
                //println("REMOVING: $audio")
                audio.parentNode?.removeChild(audio)
                playing.remove(audio)
            }
        }

        return audio
    }

    fun stopAll() {

    }
}