X-Git-Url: https://deadsoftware.ru/gitweb?a=blobdiff_plain;f=core%2Fsrc%2Fru%2Fdeadsoftware%2Fcavedroid%2Fgame%2Fmodel%2Fmapper%2FItemMapper.kt;h=7646e22d70b756cb07082b2f6425b3eff03a0659;hb=8b34480aaaf0112671d319accff573030079c7b6;hp=796fc8b28fdb25a81f6c59477d7e42c56ffb2788;hpb=63ffd8af5e9788f36fc75b6d5c29ae525eb74692;p=cavedroid.git diff --git a/core/src/ru/deadsoftware/cavedroid/game/model/mapper/ItemMapper.kt b/core/src/ru/deadsoftware/cavedroid/game/model/mapper/ItemMapper.kt index 796fc8b..7646e22 100644 --- a/core/src/ru/deadsoftware/cavedroid/game/model/mapper/ItemMapper.kt +++ b/core/src/ru/deadsoftware/cavedroid/game/model/mapper/ItemMapper.kt @@ -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