DEADSOFTWARE

Add tools
[cavedroid.git] / core / src / ru / deadsoftware / cavedroid / game / model / mapper / ItemMapper.kt
index 311c10c838b3fe33b6d92d3af93cb68b9b12d138..6bcad04d5c454e0f516526d3abb3c8a4c5b7582f 100644 (file)
@@ -15,14 +15,19 @@ import javax.inject.Inject
 @Reusable
 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))
+            "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))
+            "axe" -> Axe(params, requireNotNull(loadSprite(dto)), dto.mobDamageMultiplier, dto.blockDamageMultiplier, requireNotNull(dto.toolLevel))
+            "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))
+            "none" -> None(params)
             else -> throw IllegalArgumentException("Unknown item type ${dto.type}")
         }
     }
@@ -40,7 +45,7 @@ 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
         }