From 7602bee194a7d0604fe1265b72a2ba89ba8cf47a Mon Sep 17 00:00:00 2001 From: GregHib Date: Thu, 11 Apr 2024 16:34:59 +0100 Subject: [PATCH] Fix item charges check --- .../main/kotlin/world/gregs/voidps/engine/entity/item/Item.kt | 2 +- .../gregs/voidps/engine/inv/transact/TransactionError.kt | 4 ++-- .../voidps/engine/inv/transact/operation/AddChargeTest.kt | 3 +++ 3 files changed, 6 insertions(+), 3 deletions(-) diff --git a/engine/src/main/kotlin/world/gregs/voidps/engine/entity/item/Item.kt b/engine/src/main/kotlin/world/gregs/voidps/engine/entity/item/Item.kt index 4715db02e5..fc7d93a6fb 100644 --- a/engine/src/main/kotlin/world/gregs/voidps/engine/entity/item/Item.kt +++ b/engine/src/main/kotlin/world/gregs/voidps/engine/entity/item/Item.kt @@ -14,7 +14,7 @@ class Item( private val defOrNull: ItemDefinition? get() = KoinPlatformTools.defaultContext().getOrNull()?.get()?.getOrNull(id) private val itemCharge: Boolean - get() = defOrNull?.contains("charges") == true && defOrNull?.contains("charge") == true + get() = defOrNull?.contains("charges") == true && defOrNull?.contains("charge") != true val amount: Int get() = if (itemCharge) 1 else value val charges: Int diff --git a/engine/src/main/kotlin/world/gregs/voidps/engine/inv/transact/TransactionError.kt b/engine/src/main/kotlin/world/gregs/voidps/engine/inv/transact/TransactionError.kt index 8ead2e7043..ef9322eb80 100644 --- a/engine/src/main/kotlin/world/gregs/voidps/engine/inv/transact/TransactionError.kt +++ b/engine/src/main/kotlin/world/gregs/voidps/engine/inv/transact/TransactionError.kt @@ -14,13 +14,13 @@ sealed class TransactionError { * An error indicating that the inventory is full and cannot accept any more items. * @property amount The number of items that could be successfully added before running out of space. */ - class Full(val amount: Int = 0) : TransactionError() + data class Full(val amount: Int = 0) : TransactionError() /** * An error indicating that the inventory does not have enough of the item to fulfill the request. * @property amount The number of items that could be successfully removed. */ - class Deficient(val amount: Int = 0) : TransactionError() + data class Deficient(val amount: Int = 0) : TransactionError() /** * The transaction completed without error or is no longer in progress. diff --git a/engine/src/test/kotlin/world/gregs/voidps/engine/inv/transact/operation/AddChargeTest.kt b/engine/src/test/kotlin/world/gregs/voidps/engine/inv/transact/operation/AddChargeTest.kt index 7b89815d5d..6724165ea2 100644 --- a/engine/src/test/kotlin/world/gregs/voidps/engine/inv/transact/operation/AddChargeTest.kt +++ b/engine/src/test/kotlin/world/gregs/voidps/engine/inv/transact/operation/AddChargeTest.kt @@ -93,6 +93,7 @@ internal class AddChargeTest : TransactionOperationTest() { transaction.charge(0, amountToAdd) assertFalse(transaction.commit()) + assertEquals(TransactionError.Full(5), transaction.error) } @Test @@ -105,6 +106,7 @@ internal class AddChargeTest : TransactionOperationTest() { transaction.charge(0, amountToAdd) assertFalse(transaction.commit()) + assertEquals(TransactionError.Full(10), transaction.error) } @Test @@ -117,5 +119,6 @@ internal class AddChargeTest : TransactionOperationTest() { assertFalse(transaction.commit()) assertEquals(0, inventory[0].charges) + assertEquals(TransactionError.Invalid, transaction.error) } } \ No newline at end of file