diff --git a/core/src/ru/deadsoftware/cavedroid/game/model/dto/GameItemsDto.kt b/core/src/ru/deadsoftware/cavedroid/game/model/dto/GameItemsDto.kt
index 63229b390578e87b6bebfeb1c3b74b2df700933f..aef3a13a2cc0011ebadebbf24254ee3bc5555310 100644 (file)
data class GameItemsDto(
@SerialName("blocks") val blocks: Map<String, BlockDto>,
@SerialName("items") val items: Map<String, ItemDto>,
-) {
- object GameItemsDtoJsonSerializer : JsonTransformingSerializer<GameItemsDto>(GameItemsDto.serializer()) {
- private val defaultBlockValuesEqualKeyFieldNames = listOf("drop", "texture")
- private val defaultItemValuesEqualKeyFieldNames = listOf("name", "texture")
-
- override fun transformDeserialize(element: JsonElement): JsonElement {
- val root = element.jsonObject
- val blocks = root["blocks"]!!.jsonObject
- val items = root["items"]!!.jsonObject
-
- return buildJsonObject {
- putJsonObject("blocks") {
- blocks.forEach { (key, blockObj) ->
- putJsonObject(key) {
- defaultBlockValuesEqualKeyFieldNames.forEach { fieldName ->
- put(fieldName, key)
- }
- blockObj.jsonObject.forEach { (prop, propValue) ->
- put(prop, propValue)
- }
- }
- }
- }
-
- putJsonObject("items") {
- items.forEach { (key, itemObj) ->
- putJsonObject(key) {
- defaultItemValuesEqualKeyFieldNames.forEach { fieldName ->
- put(fieldName, key)
- }
- itemObj.jsonObject.forEach { (prop, propValue) ->
- put(prop, propValue)
- }
- }
- }
- }
- }
- }
- }
-}
\ No newline at end of file
+)
\ No newline at end of file