mirror of
https://github.com/curioustorvald/Terrarum.git
synced 2026-06-11 11:04:05 +09:00
more transaction-based music disk jockeying wip
This commit is contained in:
@@ -62,7 +62,7 @@ class BuildingMaker(batch: FlippingSpriteBatch) : IngameInstance(batch) {
|
||||
|
||||
lateinit var gameWorld: GameWorld
|
||||
|
||||
override val musicStreamer = TerrarumMusicStreamer()
|
||||
override val musicStreamer = TerrarumMusicAndAmbientStreamer()
|
||||
|
||||
init {
|
||||
gameUpdateGovernor = ConsistentUpdateRate
|
||||
|
||||
@@ -262,7 +262,7 @@ open class TerrarumIngame(batch: FlippingSpriteBatch) : IngameInstance(batch) {
|
||||
override var gameFullyLoaded = false
|
||||
internal set
|
||||
|
||||
override val musicStreamer = TerrarumMusicStreamer()
|
||||
override val musicStreamer = TerrarumMusicAndAmbientStreamer()
|
||||
|
||||
|
||||
//////////////
|
||||
|
||||
@@ -4,14 +4,11 @@ import com.badlogic.gdx.utils.GdxRuntimeException
|
||||
import com.jme3.math.FastMath
|
||||
import net.torvald.terrarum.*
|
||||
import net.torvald.terrarum.App.printdbg
|
||||
import net.torvald.terrarum.audio.AudioBank
|
||||
import net.torvald.terrarum.audio.AudioMixer
|
||||
import net.torvald.terrarum.audio.audiobank.MusicContainer
|
||||
|
||||
import net.torvald.terrarum.gameworld.WorldTime.Companion.DAY_LENGTH
|
||||
import java.io.File
|
||||
|
||||
class TerrarumMusicStreamer : MusicStreamer() {
|
||||
class TerrarumMusicAndAmbientStreamer : MusicStreamer() {
|
||||
private val STATE_INIT = 0
|
||||
private val STATE_FIREPLAY = 1
|
||||
private val STATE_PLAYING = 2
|
||||
@@ -19,7 +16,6 @@ class TerrarumMusicStreamer : MusicStreamer() {
|
||||
|
||||
|
||||
init {
|
||||
musicState = STATE_INTERMISSION
|
||||
}
|
||||
|
||||
private var playlist: List<MusicContainer> = emptyList()
|
||||
@@ -198,40 +194,9 @@ class TerrarumMusicStreamer : MusicStreamer() {
|
||||
// start the song queueing if there is one to play
|
||||
if (firstTime) {
|
||||
firstTime = false
|
||||
if (playlist.isNotEmpty()) musicState = STATE_INTERMISSION
|
||||
if (ambients.isNotEmpty()) ambState = STATE_INTERMISSION
|
||||
}
|
||||
|
||||
when (musicState) {
|
||||
STATE_FIREPLAY -> {
|
||||
if (!musicFired) {
|
||||
MusicService.resumePlaylistPlayback(
|
||||
// onSuccess: () -> Unit
|
||||
{
|
||||
musicFired = true
|
||||
musicState = STATE_PLAYING
|
||||
},
|
||||
// onFailure: (Throwable) -> Unit
|
||||
{
|
||||
musicFired = false
|
||||
musicState = STATE_INTERMISSION
|
||||
},
|
||||
)
|
||||
}
|
||||
}
|
||||
STATE_PLAYING -> {
|
||||
// stopMusic() will be called when the music finishes; it's on the setOnCompletionListener
|
||||
}
|
||||
STATE_INTERMISSION -> {
|
||||
intermissionAkku += delta
|
||||
|
||||
if (intermissionAkku >= intermissionLength && playlist.isNotEmpty()) {
|
||||
intermissionAkku = 0f
|
||||
musicState = STATE_FIREPLAY
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
val season = ingame.world.worldTime.ecologicalSeason
|
||||
val isAM = (ingame.world.worldTime.todaySeconds < DAY_LENGTH / 2) // 0 until DAY_LENGTH (86400)
|
||||
val solarElevDeg = ingame.world.worldTime.solarElevationDeg
|
||||
@@ -19,7 +19,6 @@ import net.torvald.terrarum.gameactors.Hitbox
|
||||
import net.torvald.terrarum.gameactors.Lightbox
|
||||
import net.torvald.terrarum.gameitems.ItemID
|
||||
import net.torvald.terrarum.langpack.Lang
|
||||
import net.torvald.terrarum.modulebasegame.TerrarumMusicStreamer
|
||||
import net.torvald.terrarum.modulebasegame.gameitems.FixtureItemBase
|
||||
import net.torvald.terrarum.modulebasegame.gameitems.ItemFileRef
|
||||
import net.torvald.terrarum.modulebasegame.gameitems.MusicDiscHelper
|
||||
|
||||
@@ -9,7 +9,6 @@ import net.torvald.terrarum.gameactors.AVKey
|
||||
import net.torvald.terrarum.gameitems.GameItem
|
||||
import net.torvald.terrarum.gameitems.ItemID
|
||||
import net.torvald.terrarum.langpack.Lang
|
||||
import net.torvald.terrarum.modulebasegame.TerrarumMusicStreamer
|
||||
import net.torvald.terrarum.modulebasegame.gameitems.FixtureItemBase
|
||||
import net.torvald.terrarum.modulebasegame.gameitems.ItemFileRef
|
||||
import net.torvald.terrarum.modulebasegame.gameitems.MusicDiscHelper
|
||||
@@ -125,7 +124,6 @@ class FixtureMusicalTurntable : Electric, PlaysMusic {
|
||||
|
||||
MusicService.playMusicalFixture(
|
||||
/* action: () -> Unit */ {
|
||||
App.printdbg(this, "call startAudio(${musicNowPlaying?.name})")
|
||||
startAudio(musicNowPlaying!!) { loadEffector(it) }
|
||||
},
|
||||
/* musicFinished: () -> Boolean */ {
|
||||
@@ -151,9 +149,12 @@ class FixtureMusicalTurntable : Electric, PlaysMusic {
|
||||
fun stopGracefully() {
|
||||
stopDiscPlayback()
|
||||
try {
|
||||
MusicService.enterIntermission()
|
||||
if (musicIsPlaying)
|
||||
MusicService.enterIntermission()
|
||||
}
|
||||
catch (e: Throwable) {
|
||||
e.printStackTrace()
|
||||
}
|
||||
catch (_: Throwable) {}
|
||||
}
|
||||
|
||||
private fun stopDiscPlayback() {
|
||||
|
||||
Reference in New Issue
Block a user