summary refs log tree commit diff stats
diff options
context:
space:
mode:
-rw-r--r--gradle.properties2
-rw-r--r--src/client/kotlin/space/autistic/radio/client/flite/FliteFactory.kt12
-rw-r--r--src/client/kotlin/space/autistic/radio/client/sound/PirateRadioSoundInstance.kt22
3 files changed, 24 insertions, 12 deletions
diff --git a/gradle.properties b/gradle.properties
index 72b9c28..cbc5cac 100644
--- a/gradle.properties
+++ b/gradle.properties
@@ -10,7 +10,7 @@ loader_version=0.16.10
 fabric_kotlin_version=1.13.1+kotlin.2.1.10
 
 # Mod Properties
-mod_version=1.0.2
+mod_version=1.0.3
 maven_group=space.autistic.radio
 archives_base_name=pirate-radio
 
diff --git a/src/client/kotlin/space/autistic/radio/client/flite/FliteFactory.kt b/src/client/kotlin/space/autistic/radio/client/flite/FliteFactory.kt
index 89b9656..768a040 100644
--- a/src/client/kotlin/space/autistic/radio/client/flite/FliteFactory.kt
+++ b/src/client/kotlin/space/autistic/radio/client/flite/FliteFactory.kt
@@ -14,19 +14,23 @@ import kotlin.reflect.jvm.javaMethod
 
 object FliteFactory : () -> Instance {
     private fun fd_read(a: Int, b: Int, c: Int, d: Int): Int {
-        throw UnsupportedOperationException()
+        // EBADF
+        return 8
     }
 
     private fun fd_seek(a: Int, b: Long, c: Int, d: Int): Int {
-        throw UnsupportedOperationException()
+        // EBADF
+        return 8
     }
 
     private fun fd_close(a: Int): Int {
-        throw UnsupportedOperationException()
+        // EBADF
+        return 8
     }
 
     private fun fd_write(a: Int, b: Int, c: Int, d: Int): Int {
-        throw UnsupportedOperationException()
+        // EBADF
+        return 8
     }
 
     private fun proc_exit(status: Int): Nothing {
diff --git a/src/client/kotlin/space/autistic/radio/client/sound/PirateRadioSoundInstance.kt b/src/client/kotlin/space/autistic/radio/client/sound/PirateRadioSoundInstance.kt
index 601b458..98db4d6 100644
--- a/src/client/kotlin/space/autistic/radio/client/sound/PirateRadioSoundInstance.kt
+++ b/src/client/kotlin/space/autistic/radio/client/sound/PirateRadioSoundInstance.kt
@@ -1,5 +1,6 @@
 package space.autistic.radio.client.sound
 
+import com.dylibso.chicory.wasm.ChicoryException
 import net.fabricmc.fabric.api.client.sound.v1.FabricSoundInstance
 import net.minecraft.client.network.ClientPlayerEntity
 import net.minecraft.client.sound.*
@@ -13,6 +14,7 @@ import space.autistic.radio.client.fmsim.FmFullThread
 import space.autistic.radio.client.fmsim.FmFullThread.trackedTransmitterQueue
 import space.autistic.radio.client.fmsim.FmSimulatorMode
 import space.autistic.radio.entity.DisposableTransmitterEntity
+import space.autistic.radio.wasm.WasmExitException
 import java.lang.ref.WeakReference
 import java.nio.FloatBuffer
 import java.util.UUID
@@ -73,15 +75,21 @@ class PirateRadioSoundInstance(private val player: ClientPlayerEntity) : MovingS
         listOf(lower, main, upper).flatten().associateTo(trackedTransmitters) {
             val text = it.text
             val audio = futuresCache[text]?.get() ?: CompletableFuture.supplyAsync {
-                lateinit var buffer: FloatBuffer
-                FliteWrapper.textToWave(text) {
-                    buffer = FloatBuffer.allocate(it.capacity())
-                    while (it.hasRemaining()) {
-                        val sample = (it.get().toFloat() + 0.5f) / 32767.5f
-                        buffer.put(sample)
+                try {
+                    lateinit var buffer: FloatBuffer
+                    FliteWrapper.textToWave(text) {
+                        buffer = FloatBuffer.allocate(it.capacity())
+                        while (it.hasRemaining()) {
+                            val sample = (it.get().toFloat() + 0.5f) / 32767.5f
+                            buffer.put(sample)
+                        }
                     }
+                    buffer.array()
+                } catch (e: ChicoryException) {
+                    floatArrayOf()
+                } catch (e: WasmExitException) {
+                    floatArrayOf()
                 }
-                buffer.array()
             }
             futuresCache[text] = WeakReference(audio)
             it.uuid to TrackedTransmitter(