28 lines
996 B
Kotlin
28 lines
996 B
Kotlin
package ru.dbotthepony.kstarbound.lua.bindings
|
|
|
|
import org.classdump.luna.ByteString
|
|
import org.classdump.luna.LuaRuntimeException
|
|
import org.classdump.luna.TableFactory
|
|
import org.classdump.luna.impl.NonsuspendableFunctionException
|
|
import org.classdump.luna.runtime.AbstractFunction1
|
|
import org.classdump.luna.runtime.ExecutionContext
|
|
import ru.dbotthepony.kstarbound.Starbound
|
|
import ru.dbotthepony.kstarbound.lua.from
|
|
|
|
class AssetJsonFunction(private val tables: TableFactory) : AbstractFunction1<ByteString>() {
|
|
override fun resume(context: ExecutionContext?, suspendedState: Any?) {
|
|
throw NonsuspendableFunctionException(this::class.java)
|
|
}
|
|
|
|
override fun invoke(context: ExecutionContext, arg1: ByteString?) {
|
|
arg1 ?: throw LuaRuntimeException("bad argument #1 to root.assetJson (string expected, got nil)")
|
|
val load = Starbound.loadJsonAsset(arg1.decode())
|
|
|
|
if (load == null) {
|
|
context.returnBuffer.setTo()
|
|
} else {
|
|
context.returnBuffer.setTo(tables.from(load))
|
|
}
|
|
}
|
|
}
|