DEADSOFTWARE

Add food
[cavedroid.git] / core / src / ru / deadsoftware / cavedroid / game / model / mapper / ItemMapper.kt
index b951f261e795b7937d40c0c6a6f3b08272e50d72..a1a6f0c68d0cb2357eebc5262fa2acb9c1b6f777 100644 (file)
@@ -11,6 +11,7 @@ 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 ru.deadsoftware.cavedroid.misc.utils.colorFromHexString
 import javax.inject.Inject
 
 @Reusable
@@ -23,7 +24,7 @@ class ItemMapper @Inject constructor(
 
         return when (dto.type) {
             "normal" -> Normal(params, requireNotNull(loadSprite(dto)))
-            "bucket" -> Bucket(params, requireNotNull(loadSprite(dto)), requireNotNull(dto.actionKey))
+            "usable" -> Usable(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))
             "pickaxe" -> Pickaxe(params, requireNotNull(loadSprite(dto)), dto.mobDamageMultiplier, dto.blockDamageMultiplier, requireNotNull(dto.toolLevel))
@@ -31,6 +32,7 @@ class ItemMapper @Inject constructor(
             "shears" -> Shears(params, requireNotNull(loadSprite(dto)), dto.mobDamageMultiplier, dto.blockDamageMultiplier, requireNotNull(dto.toolLevel))
             "block" -> Block(params, requireNotNull(block))
             "slab" -> Slab(params, requireNotNull(slabTopBlock), requireNotNull(slabBottomBlock))
+            "food" -> Food(params, requireNotNull(loadSprite(dto)), requireNotNull(dto.heal))
             "none" -> None(params)
             else -> throw IllegalArgumentException("Unknown item type ${dto.type}")
         }
@@ -38,7 +40,6 @@ class ItemMapper @Inject constructor(
 
     private fun mapCommonParams(key: String, dto: ItemDto): CommonItemParams {
         return CommonItemParams(
-            id = dto.id,
             key = key,
             name = dto.name,
             inHandSpriteOrigin = SpriteOrigin(
@@ -46,6 +47,8 @@ class ItemMapper @Inject constructor(
                 y = dto.origin_y,
             ),
             maxStack = dto.maxStack,
+            burningTimeMs = dto.burningTime,
+            smeltProductKey = dto.smeltProduct,
         )
     }
 
@@ -56,7 +59,12 @@ class ItemMapper @Inject constructor(
 
         val texture = Assets.resolveItemTexture(assetLoader, dto.texture)
         return Sprite(texture)
-            .apply { flip(false, true) }
+            .apply {
+                flip(false, true)
+                dto.tint?.let {
+                    color = colorFromHexString(it)
+                }
+            }
     }
 
 }
\ No newline at end of file