diff --git a/core/src/ru/deadsoftware/cavedroid/game/GameItemsHolder.kt b/core/src/ru/deadsoftware/cavedroid/game/GameItemsHolder.kt
index 058e84d7f283a8ab47dc03df09d48a997cb3824e..7a7ccabb3651cc27b61996a67da991d9ee3f50db 100644 (file)
}
dtoMap.forEach { (key, dto) ->
- itemsMap[key] = itemMapper.map(key, dto, blocksMap[key])
+ try {
+ itemsMap[key] = itemMapper.map(
+ key = key,
+ dto = dto,
+ block = blocksMap[key],
+ slabTopBlock = blocksMap[dto.topSlabBlock] as? Block.Slab,
+ slabBottomBlock = blocksMap[dto.bottomSlabBlock] as? Block.Slab
+ )
+ } catch (e: Exception) {
+ Gdx.app.error(TAG, "Failed to map item $key. Reason: ${e.message}")
+ e.printStackTrace()
+ }
}
fallbackItem = itemsMap[FALLBACK_ITEM_KEY]
}
val jsonString = assetLoader.getAssetHandle("json/game_items.json").readString()
- val gameItemsDto = JsonFormat.decodeFromString(GameItemsDto.GameItemsDtoJsonSerializer, jsonString)
+ val gameItemsDto = JsonFormat.decodeFromString<GameItemsDto>(jsonString)
loadBlocks(gameItemsDto.blocks)
loadItems(gameItemsDto.items)
}
}
+ fun getAllItems(): Collection<Item> {
+ return itemsMap.values
+ }
+
+ fun getItemFromCreativeInventory(position: Int): Item {
+ return if (position in itemsMap.values.indices) {
+ itemsMap.values.elementAt(position)
+ } else {
+ fallbackItem
+ }
+ }
+
+ fun getCreativeScrollAmount(): Int = itemsMap.size / 8
+
fun <T : Block> getBlocksByType(type: Class<T>): List<T> {
return blocksMap.values.filterIsInstance(type)
}