DEADSOFTWARE

Add food
[cavedroid.git] / core / src / ru / deadsoftware / cavedroid / game / model / mapper / BlockMapper.kt
index 667d92b0e897975a5ea05e75dcc304680fe97c8f..19d8c4757d125235a8dfd62b482bbfb467c87862 100644 (file)
@@ -8,10 +8,13 @@ import ru.deadsoftware.cavedroid.game.model.block.Block.*
 import ru.deadsoftware.cavedroid.game.model.dto.BlockDto
 import ru.deadsoftware.cavedroid.game.model.item.Item
 import ru.deadsoftware.cavedroid.misc.Assets
+import ru.deadsoftware.cavedroid.misc.utils.AssetLoader
 import javax.inject.Inject
 
 @Reusable
-class BlockMapper @Inject constructor() {
+class BlockMapper @Inject constructor(
+    private val assetLoader: AssetLoader,
+) {
 
     fun map(key: String, dto: BlockDto): Block {
         val commonBlockParams = mapCommonParams(key, dto)
@@ -20,6 +23,8 @@ class BlockMapper @Inject constructor() {
             "water" -> Water(commonBlockParams, requireNotNull(dto.state))
             "lava" -> Lava(commonBlockParams, requireNotNull(dto.state))
             "slab" -> Slab(commonBlockParams, requireNotNull(dto.fullBlock), requireNotNull(dto.otherPart))
+            "furnace" -> Furnace(commonBlockParams)
+            "chest" -> Chest(commonBlockParams)
             "none" -> None(commonBlockParams)
             else -> Normal(commonBlockParams)
         }
@@ -27,7 +32,6 @@ class BlockMapper @Inject constructor() {
 
     private fun mapCommonParams(key: String, dto: BlockDto): CommonBlockParams {
         return CommonBlockParams(
-            id = dto.id,
             key = key,
             collisionMargins = BlockMargins(
                 left = dto.left,
@@ -51,6 +55,9 @@ class BlockMapper @Inject constructor() {
             ),
             toolLevel = dto.toolLevel,
             toolType = mapToolType(dto),
+            damage = dto.damage,
+            tint = dto.tint,
+            isFallable = dto.fallable,
         )
     }
 
@@ -95,7 +102,7 @@ class BlockMapper @Inject constructor() {
             return null
         }
 
-        return Assets.blockTextures[textureName]
+        return Assets.resolveBlockTexture(assetLoader, textureName)
     }
 
 }
\ No newline at end of file