From edfeb7b64520946401a1b3c804886e6fee921f0c Mon Sep 17 00:00:00 2001 From: Matthias Date: Sat, 19 Nov 2022 12:08:27 +0100 Subject: [PATCH] rework inventory handling --- .../main/kotlin/com/last/commit/FirstScreen.kt | 5 ++++- core/src/main/kotlin/com/last/commit/Player.kt | 2 +- .../com/last/commit/inventory/Inventory.kt | 7 +++++-- .../com/last/commit/stages/InventoryStage.kt | 17 ++++++++++++----- 4 files changed, 22 insertions(+), 9 deletions(-) diff --git a/core/src/main/kotlin/com/last/commit/FirstScreen.kt b/core/src/main/kotlin/com/last/commit/FirstScreen.kt index c7d0565..3e0b526 100644 --- a/core/src/main/kotlin/com/last/commit/FirstScreen.kt +++ b/core/src/main/kotlin/com/last/commit/FirstScreen.kt @@ -198,6 +198,7 @@ class FirstScreen : Screen, InputProcessor { } override fun resize(width: Int, height: Int) { + inventoryStage.resize(width, height) // Resize your screen here. The parameters represent the new window size. } @@ -238,8 +239,10 @@ class FirstScreen : Screen, InputProcessor { map.teleport(player) } else if (character == 'i') { inventoryStage.visible = !inventoryStage.visible + } else if (character == 'p') { + player.inventory.add("compass") + inventoryStage.refresh() } - // TODO Auto-generated method stub return false } diff --git a/core/src/main/kotlin/com/last/commit/Player.kt b/core/src/main/kotlin/com/last/commit/Player.kt index f0fb432..bc63d8d 100644 --- a/core/src/main/kotlin/com/last/commit/Player.kt +++ b/core/src/main/kotlin/com/last/commit/Player.kt @@ -15,7 +15,7 @@ class Player(private val textureRegion: TextureRegion) : Collidable { private val movementSpeed = 200f private val interactionRange = 60f - val inventory = Inventory() + val inventory = Inventory("sprites/genericItems_spritesheet_colored") init { val size = Math.max(textureRegion.regionWidth, textureRegion.regionHeight).toFloat() diff --git a/core/src/main/kotlin/com/last/commit/inventory/Inventory.kt b/core/src/main/kotlin/com/last/commit/inventory/Inventory.kt index 4a99aac..61a8777 100644 --- a/core/src/main/kotlin/com/last/commit/inventory/Inventory.kt +++ b/core/src/main/kotlin/com/last/commit/inventory/Inventory.kt @@ -1,14 +1,17 @@ package com.last.commit.inventory -class Inventory { +class Inventory(path: String) { val items: MutableList = ArrayList() - val textureLoader = InventoryItemTextureLoader("sprites/genericItems_spritesheet_colored") + val textureLoader = InventoryItemTextureLoader(path) init { textureLoader.parse() } + /** + * @param name the name of the subtexture loaded from xml + */ fun add(name: String) { items.add(InventoryItem(name, textureLoader.loadTexture(name))) } diff --git a/core/src/main/kotlin/com/last/commit/stages/InventoryStage.kt b/core/src/main/kotlin/com/last/commit/stages/InventoryStage.kt index 8924e35..d4d6143 100644 --- a/core/src/main/kotlin/com/last/commit/stages/InventoryStage.kt +++ b/core/src/main/kotlin/com/last/commit/stages/InventoryStage.kt @@ -4,14 +4,21 @@ import com.badlogic.gdx.scenes.scene2d.Stage import com.badlogic.gdx.scenes.scene2d.ui.Image import com.last.commit.inventory.Inventory -class InventoryStage(inventory: Inventory) : Stage() { +class InventoryStage(val inventory: Inventory) : Stage() { var visible = false + set(visible) { + field = visible + if (visible) { + refresh() + } + } - init { - for (item in inventory.items) { - - val image = Image(item.texture) + fun refresh() { + super.clear() + inventory.items.forEachIndexed { index, inventoryItem -> + val image = Image(inventoryItem.texture) + image.x = index * 32f image.width = 32f image.height = 32f