X-Git-Url: https://deadsoftware.ru/gitweb?a=blobdiff_plain;f=core%2Fsrc%2Fru%2Fdeadsoftware%2Fcavedroid%2Fgame%2FGameItemsHolder.kt;h=1fbcd3dbfe8313c8beaccd390b10b89041c01518;hb=cf4113d5bfd3fca7c3815bf14a214eebd822216c;hp=23fe4fbe4104977b0f47e1b1523417e7fae2cfc2;hpb=121928e90bdfa3a9d9c8bd708b9f8da28d3807c0;p=cavedroid.git diff --git a/core/src/ru/deadsoftware/cavedroid/game/GameItemsHolder.kt b/core/src/ru/deadsoftware/cavedroid/game/GameItemsHolder.kt index 23fe4fb..1fbcd3d 100644 --- a/core/src/ru/deadsoftware/cavedroid/game/GameItemsHolder.kt +++ b/core/src/ru/deadsoftware/cavedroid/game/GameItemsHolder.kt @@ -49,7 +49,18 @@ class GameItemsHolder @Inject constructor( } 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] @@ -99,15 +110,15 @@ class GameItemsHolder @Inject constructor( return itemsMap.values } - fun getItemFromCreativeInventory(position: Int): Item? { + fun getItemFromCreativeInventory(position: Int): Item { return if (position in itemsMap.values.indices) { itemsMap.values.elementAt(position) } else { - null + fallbackItem } } - fun getCreativeScrollAmount(): Int = itemsMap.size / 8 + fun getMaxCreativeScrollAmount(): Int = itemsMap.size / 8 fun getBlocksByType(type: Class): List { return blocksMap.values.filterIsInstance(type)