X-Git-Url: http://deadsoftware.ru/gitweb?a=blobdiff_plain;f=core%2Fsrc%2Fru%2Fdeadsoftware%2Fcavedroid%2Fgame%2Frender%2Fwindows%2FSurvivalWindowRenderer.kt;h=7ee3b27087eb76bd0b75f2549786b54b5eac241c;hb=456e76ce31c05500ab7d9e78e2b02019143929a4;hp=39580de82cecd8a42d63a0dcf9eb25fd991ddb97;hpb=dfe9ff3e9253c250f62ee029411f773916948601;p=cavedroid.git diff --git a/core/src/ru/deadsoftware/cavedroid/game/render/windows/SurvivalWindowRenderer.kt b/core/src/ru/deadsoftware/cavedroid/game/render/windows/SurvivalWindowRenderer.kt index 39580de..7ee3b27 100644 --- a/core/src/ru/deadsoftware/cavedroid/game/render/windows/SurvivalWindowRenderer.kt +++ b/core/src/ru/deadsoftware/cavedroid/game/render/windows/SurvivalWindowRenderer.kt @@ -6,13 +6,15 @@ import com.badlogic.gdx.graphics.glutils.ShapeRenderer import com.badlogic.gdx.math.MathUtils import com.badlogic.gdx.math.Rectangle import ru.deadsoftware.cavedroid.MainConfig +import ru.deadsoftware.cavedroid.game.GameItemsHolder import ru.deadsoftware.cavedroid.game.GameScope import ru.deadsoftware.cavedroid.game.mobs.Mob import ru.deadsoftware.cavedroid.game.mobs.MobsController import ru.deadsoftware.cavedroid.game.render.IGameRenderer import ru.deadsoftware.cavedroid.game.render.WindowsRenderer -import ru.deadsoftware.cavedroid.game.windows.GameWindowsConfigs -import ru.deadsoftware.cavedroid.game.windows.GameWindowsManager +import ru.deadsoftware.cavedroid.game.ui.windows.GameWindowsConfigs +import ru.deadsoftware.cavedroid.game.ui.windows.GameWindowsManager +import ru.deadsoftware.cavedroid.game.ui.windows.inventory.SurvivalInventoryWindow import ru.deadsoftware.cavedroid.misc.Assets import javax.inject.Inject import kotlin.math.atan @@ -22,6 +24,7 @@ class SurvivalWindowRenderer @Inject constructor( private val mainConfig: MainConfig, private val mobsController: MobsController, private val gameWindowsManager: GameWindowsManager, + private val gameItemsHolder: GameItemsHolder, ) : AbstractWindowRenderer(), IGameRenderer { override val renderLayer get() = WindowsRenderer.RENDER_LAYER @@ -60,12 +63,13 @@ class SurvivalWindowRenderer @Inject constructor( } override fun draw(spriteBatch: SpriteBatch, shapeRenderer: ShapeRenderer, viewport: Rectangle, delta: Float) { - val survivalWindow = survivalWindowTexture + val windowTexture = survivalWindowTexture + val window = gameWindowsManager.currentWindow as SurvivalInventoryWindow - val windowX = viewport.width / 2 - survivalWindow.regionWidth / 2 - val windowY = viewport.height / 2 - survivalWindow.regionHeight / 2 + val windowX = viewport.width / 2 - windowTexture.regionWidth / 2 + val windowY = viewport.height / 2 - windowTexture.regionHeight / 2 - spriteBatch.draw(survivalWindow, windowX, windowY) + spriteBatch.draw(windowTexture, windowX, windowY) drawPlayerPortrait(spriteBatch, windowX, windowY, delta) @@ -74,7 +78,7 @@ class SurvivalWindowRenderer @Inject constructor( shapeRenderer = shapeRenderer, gridX = windowX + GameWindowsConfigs.Survival.itemsGridMarginLeft, gridY = windowY + GameWindowsConfigs.Survival.itemsGridMarginTop, - items = mobsController.player.inventory.asSequence() + items = mobsController.player.inventory.items.asSequence() .drop(GameWindowsConfigs.Survival.hotbarCells) .take(GameWindowsConfigs.Survival.itemsInCol * GameWindowsConfigs.Survival.itemsInRow) .asIterable(), @@ -87,8 +91,8 @@ class SurvivalWindowRenderer @Inject constructor( spriteBatch = spriteBatch, shapeRenderer = shapeRenderer, gridX = windowX + GameWindowsConfigs.Survival.itemsGridMarginLeft, - gridY = windowY + survivalWindow.regionHeight - GameWindowsConfigs.Survival.hotbarOffsetFromBottom, - items = mobsController.player.inventory.asSequence() + gridY = windowY + windowTexture.regionHeight - GameWindowsConfigs.Survival.hotbarOffsetFromBottom, + items = mobsController.player.inventory.items.asSequence() .take(GameWindowsConfigs.Survival.hotbarCells) .asIterable(), itemsInRow = GameWindowsConfigs.Survival.hotbarCells, @@ -96,7 +100,31 @@ class SurvivalWindowRenderer @Inject constructor( cellHeight = GameWindowsConfigs.Survival.itemsGridRowHeight, ) - gameWindowsManager.selectedItem?.drawSelected( + drawItemsGrid( + spriteBatch = spriteBatch, + shapeRenderer = shapeRenderer, + gridX = windowX + GameWindowsConfigs.Survival.craftOffsetX, + gridY = windowY + GameWindowsConfigs.Survival.craftOffsetY, + items = window.craftingItems.asSequence().mapIndexedNotNull { index, it -> + if (index % 3 > 1 || index / 3 > 1) { + null + } else { + it ?: gameItemsHolder.fallbackItem.toInventoryItem() + } + }.asIterable(), + itemsInRow = GameWindowsConfigs.Survival.craftGridSize, + cellWidth = GameWindowsConfigs.Survival.itemsGridColWidth, + cellHeight = GameWindowsConfigs.Survival.itemsGridRowHeight, + ) + + window.craftResult?.draw( + spriteBatch = spriteBatch, + shapeRenderer = shapeRenderer, + x = windowX + GameWindowsConfigs.Survival.craftResultOffsetX, + y = windowY + GameWindowsConfigs.Survival.craftResultOffsetY + ) + + window.selectedItem?.drawSelected( spriteBatch = spriteBatch, x = Gdx.input.x * (viewport.width / Gdx.graphics.width), y = Gdx.input.y * (viewport.height / Gdx.graphics.height)