X-Git-Url: https://deadsoftware.ru/gitweb?a=blobdiff_plain;f=core%2Fsrc%2Fru%2Fdeadsoftware%2Fcavedroid%2Fgame%2Fmodel%2Fmapper%2FBlockMapper.kt;h=85d8cb722d457511ba96d4f46c10e81e994a0e38;hb=f34df6e5eb1052467333f1461c67e75b21eb0d95;hp=cae219f00c053b679141776e2ec8a67b40395bf1;hpb=fd73b6dd24b9fe55c0bc8f52f8aa1104a5fe3cb0;p=cavedroid.git diff --git a/core/src/ru/deadsoftware/cavedroid/game/model/mapper/BlockMapper.kt b/core/src/ru/deadsoftware/cavedroid/game/model/mapper/BlockMapper.kt index cae219f..85d8cb7 100644 --- a/core/src/ru/deadsoftware/cavedroid/game/model/mapper/BlockMapper.kt +++ b/core/src/ru/deadsoftware/cavedroid/game/model/mapper/BlockMapper.kt @@ -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) @@ -18,7 +22,7 @@ class BlockMapper @Inject constructor() { return when (dto.meta) { "water" -> Water(commonBlockParams, requireNotNull(dto.state)) "lava" -> Lava(commonBlockParams, requireNotNull(dto.state)) - "slab" -> Slab(commonBlockParams, requireNotNull(dto.fullBlock)) + "slab" -> Slab(commonBlockParams, requireNotNull(dto.fullBlock), requireNotNull(dto.otherPart)) "none" -> None(commonBlockParams) else -> Normal(commonBlockParams) } @@ -41,16 +45,32 @@ 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, right = dto.spriteRight, bottom = dto.spriteBottom, - ) + ), + toolLevel = dto.toolLevel, + toolType = mapToolType(dto), + damage = dto.damage, + tint = dto.tint, ) } + private fun mapToolType(dto: BlockDto): Class? { + 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 @@ -75,12 +95,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 Assets.blockTextures[textureName] + return Assets.resolveBlockTexture(assetLoader, textureName) } } \ No newline at end of file