[cavedroid.git] / core / src / ru / deadsoftware / cavedroid / game / render / windows / SurvivalWindowRenderer.kt
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 39580de82cecd8a42d63a0dcf9eb25fd991ddb97..7ee3b27087eb76bd0b75f2549786b54b5eac241c 100644 (file)
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
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
}
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)
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(),
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,
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)