DEADSOFTWARE

Add environment damage
[cavedroid.git] / core / src / ru / deadsoftware / cavedroid / game / model / mapper / BlockMapper.kt
index a122754caad73e972a6cb20f7155c6b76f02a9fd..e97659a953a83e8b69dbb0bc90e0df9c188f504f 100644 (file)
@@ -6,11 +6,15 @@ import ru.deadsoftware.cavedroid.game.GameItemsHolder
 import ru.deadsoftware.cavedroid.game.model.block.*
 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)
@@ -47,10 +51,25 @@ class BlockMapper @Inject constructor() {
                 top = dto.spriteTop,
                 right = dto.spriteRight,
                 bottom = dto.spriteBottom,
-            )
+            ),
+            toolLevel = dto.toolLevel,
+            toolType = mapToolType(dto),
+            damage = dto.damage,
         )
     }
 
+    private fun mapToolType(dto: BlockDto): Class<out Item.Tool>? {
+        return when(dto.toolType) {
+            "shovel" -> Item.Shovel::class.java
+            "sword" -> Item.Sword::class.java
+            "pickaxe" -> Item.Pickaxe::class.java
+            "axe" -> Item.Axe::class.java
+            "shears" -> Item.Shears::class.java
+
+            else -> null
+        }
+    }
+
     private fun mapBlockDropInfo(dto: BlockDto): BlockDropInfo? {
         val drop = dto.drop
         val dropCount = dto.dropCount
@@ -80,7 +99,7 @@ class BlockMapper @Inject constructor() {
             return null
         }
 
-        return Assets.blockTextures[textureName]
+        return Assets.resolveBlockTexture(assetLoader, textureName)
     }
 
 }
\ No newline at end of file