DEADSOFTWARE

Add top slabs
[cavedroid.git] / core / src / ru / deadsoftware / cavedroid / game / model / mapper / BlockMapper.kt
index 0838491c3fa173b2361f0174cd94dbabe8a6aebc..a122754caad73e972a6cb20f7155c6b76f02a9fd 100644 (file)
@@ -6,21 +6,20 @@ 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.misc.utils.AssetLoader
+import ru.deadsoftware.cavedroid.misc.Assets
 import javax.inject.Inject
 
 @Reusable
-class BlockMapper @Inject constructor(
-    private val assetLoader: AssetLoader,
-) {
+class BlockMapper @Inject constructor() {
 
     fun map(key: String, dto: BlockDto): Block {
         val commonBlockParams = mapCommonParams(key, dto)
 
         return when (dto.meta) {
-            "water" -> Water(commonBlockParams)
-            "lava" -> Lava(commonBlockParams)
-            "slab" -> Slab(commonBlockParams, requireNotNull(dto.fullBlock))
+            "water" -> Water(commonBlockParams, requireNotNull(dto.state))
+            "lava" -> Lava(commonBlockParams, requireNotNull(dto.state))
+            "slab" -> Slab(commonBlockParams, requireNotNull(dto.fullBlock), requireNotNull(dto.otherPart))
+            "none" -> None(commonBlockParams)
             else -> Normal(commonBlockParams)
         }
     }
@@ -42,7 +41,7 @@ class BlockMapper @Inject constructor(
             isTransparent = dto.transparent,
             requiresBlock = dto.blockRequired,
             animationInfo = mapBlockAnimationInfo(dto),
-            texture = loadTexture(dto.texture),
+            texture = getTexture(dto.texture),
             spriteMargins = BlockMargins(
                 left = dto.spriteLeft,
                 top = dto.spriteTop,
@@ -76,12 +75,12 @@ class BlockMapper @Inject constructor(
         )
     }
 
-    private fun loadTexture(textureName: String): Texture? {
+    private fun getTexture(textureName: String): Texture? {
         if (textureName == GameItemsHolder.FALLBACK_BLOCK_KEY) {
             return null
         }
 
-        return Texture(assetLoader.getAssetHandle("textures/blocks/$textureName.png"))
+        return Assets.blockTextures[textureName]
     }
 
 }
\ No newline at end of file