mirror of
https://gitlab.bixilon.de/bixilon/pixlyzer.git
synced 2025-09-27 14:10:01 -04:00
properly serialize message types in 1.19
This commit is contained in:
parent
2a55f289c0
commit
27f146c317
@ -3,6 +3,7 @@ package de.bixilon.pixlyzer.generator.generators
|
||||
import de.bixilon.pixlyzer.generator.Generator
|
||||
import de.bixilon.pixlyzer.util.ReflectionUtil.getClass
|
||||
import de.bixilon.pixlyzer.util.ReflectionUtil.getField
|
||||
import de.bixilon.pixlyzer.util.ReflectionUtil.variable
|
||||
import de.bixilon.pixlyzer.util.RegistryUtil
|
||||
import de.bixilon.pixlyzer.util.Util
|
||||
import de.bixilon.pixlyzer.util.Util.JSON_MAP_TYPE
|
||||
@ -34,18 +35,31 @@ object MessageTypeGenerator : Generator(
|
||||
val json = compound()
|
||||
|
||||
json["id"] = registry.getRawId(type)
|
||||
getField(messageTypeClass, "chat")?.get(type)?.serializeChat()?.let { json["chat"] = it }
|
||||
getField(messageTypeClass, "narration")?.get(type)?.nullCast<Any>()?.serializeDecoration()?.let { json["narration"] = it }
|
||||
getField(messageTypeClass, "chat")?.get(type)?.getOptional()?.getDecoration()?.serializeChat()?.let { json["chat"] = it }
|
||||
getField(messageTypeClass, "narration")?.get(type)?.getOptional()?.getDecoration()?.serializeDecoration()?.let { json["narration"] = it }
|
||||
|
||||
this.data[identifier.toString()] = json
|
||||
}
|
||||
}
|
||||
|
||||
fun Any.getOptional(): Any? {
|
||||
if (this is Optional<*>) {
|
||||
return if (this.isPresent) this.get() else null
|
||||
}
|
||||
return this
|
||||
}
|
||||
|
||||
fun Any.getDecoration(): Any? {
|
||||
this.variable<Any>("decoration")?.let { return it.getOptional() }
|
||||
return this
|
||||
}
|
||||
|
||||
private fun Any.serializeChat(): Map<String, Any?>? {
|
||||
if (this::class.java.simpleName == "Decoration") {
|
||||
return this.serializeDecoration()
|
||||
}
|
||||
return getField(this::class.java, "decoration")?.get(this)?.nullCast<Optional<Any>>()?.get()?.serializeDecoration()
|
||||
var value = this.getOptional() ?: return null
|
||||
return getField(value::class.java, "decoration")?.get(value)?.nullCast<Optional<Any>>()?.get()?.serializeDecoration()
|
||||
}
|
||||
|
||||
fun Any.serializeDecoration(): Map<String, Any?> {
|
||||
|
Loading…
x
Reference in New Issue
Block a user