DEADSOFTWARE

Add top slabs
[cavedroid.git] / core / src / ru / deadsoftware / cavedroid / game / model / mapper / ItemMapper.kt
index 796fc8b28fdb25a81f6c59477d7e42c56ffb2788..7646e22d70b756cb07082b2f6425b3eff03a0659 100644 (file)
@@ -1,6 +1,5 @@
 package ru.deadsoftware.cavedroid.game.model.mapper
 
-import com.badlogic.gdx.graphics.Texture
 import com.badlogic.gdx.graphics.g2d.Sprite
 import dagger.Reusable
 import ru.deadsoftware.cavedroid.game.GameItemsHolder
@@ -9,23 +8,23 @@ import ru.deadsoftware.cavedroid.game.model.dto.ItemDto
 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.utils.AssetLoader
+import ru.deadsoftware.cavedroid.misc.Assets
 import ru.deadsoftware.cavedroid.misc.utils.SpriteOrigin
 import javax.inject.Inject
 
 @Reusable
-class ItemMapper @Inject constructor(
-    private val assetLoader: AssetLoader,
-) {
+class ItemMapper @Inject constructor() {
 
-    fun map(key: String, dto: ItemDto, block: Block?): Item {
+    fun map(key: String, dto: ItemDto, block: Block?, slabTopBlock: Block.Slab?, slabBottomBlock: Block.Slab?): Item {
         val params = mapCommonParams(key, dto)
 
         return when (dto.type) {
             "bucket" -> Bucket(params, requireNotNull(loadSprite(dto)), requireNotNull(dto.actionKey))
             "shovel" -> Shovel(params, requireNotNull(loadSprite(dto)), dto.mobDamageMultiplier, dto.blockDamageMultiplier)
             "sword" -> Sword(params, requireNotNull(loadSprite(dto)), dto.mobDamageMultiplier, dto.blockDamageMultiplier)
-            "block" -> Placeable(params, requireNotNull(block))
+            "block" -> Block(params, requireNotNull(block))
+            "slab" -> Slab(params, requireNotNull(slabTopBlock), requireNotNull(slabBottomBlock))
+            "none" -> None(params)
             else -> throw IllegalArgumentException("Unknown item type ${dto.type}")
         }
     }
@@ -43,11 +42,12 @@ class ItemMapper @Inject constructor(
     }
 
     private fun loadSprite(dto: ItemDto): Sprite? {
-        if (dto.type == "block" || dto.texture == GameItemsHolder.FALLBACK_ITEM_KEY) {
+        if (dto.type == "none" || dto.type == "block" || dto.texture == GameItemsHolder.FALLBACK_ITEM_KEY) {
             return null
         }
 
-        return Sprite(Texture(assetLoader.getAssetHandle("textures/items/${dto.texture}.png")))
+        return Sprite(Assets.itemTextures[dto.texture])
+            .apply { flip(false, true) }
     }
 
 }
\ No newline at end of file