DEADSOFTWARE

Add crafting
[cavedroid.git] / core / src / ru / deadsoftware / cavedroid / game / model / mapper / ItemMapper.kt
index 6bcad04d5c454e0f516526d3abb3c8a4c5b7582f..b951f261e795b7937d40c0c6a6f3b08272e50d72 100644 (file)
@@ -9,16 +9,20 @@ import ru.deadsoftware.cavedroid.game.model.item.CommonItemParams
 import ru.deadsoftware.cavedroid.game.model.item.Item
 import ru.deadsoftware.cavedroid.game.model.item.Item.*
 import ru.deadsoftware.cavedroid.misc.Assets
+import ru.deadsoftware.cavedroid.misc.utils.AssetLoader
 import ru.deadsoftware.cavedroid.misc.utils.SpriteOrigin
 import javax.inject.Inject
 
 @Reusable
-class ItemMapper @Inject constructor() {
+class ItemMapper @Inject constructor(
+    private val assetLoader: AssetLoader,
+) {
 
     fun map(key: String, dto: ItemDto, block: Block?, slabTopBlock: Block.Slab?, slabBottomBlock: Block.Slab?): Item {
         val params = mapCommonParams(key, dto)
 
         return when (dto.type) {
+            "normal" -> Normal(params, requireNotNull(loadSprite(dto)))
             "bucket" -> Bucket(params, requireNotNull(loadSprite(dto)), requireNotNull(dto.actionKey))
             "shovel" -> Shovel(params, requireNotNull(loadSprite(dto)), dto.mobDamageMultiplier, dto.blockDamageMultiplier, requireNotNull(dto.toolLevel))
             "sword" -> Sword(params, requireNotNull(loadSprite(dto)), dto.mobDamageMultiplier, dto.blockDamageMultiplier, requireNotNull(dto.toolLevel))
@@ -40,7 +44,8 @@ class ItemMapper @Inject constructor() {
             inHandSpriteOrigin = SpriteOrigin(
                 x = dto.originX,
                 y = dto.origin_y,
-            )
+            ),
+            maxStack = dto.maxStack,
         )
     }
 
@@ -49,7 +54,8 @@ class ItemMapper @Inject constructor() {
             return null
         }
 
-        return Sprite(Assets.itemTextures[dto.texture])
+        val texture = Assets.resolveItemTexture(assetLoader, dto.texture)
+        return Sprite(texture)
             .apply { flip(false, true) }
     }