From 1c1c7977de0307fc8f1dfe3d8848a78bb9208da4 Mon Sep 17 00:00:00 2001 From: Sara Date: Mon, 2 Sep 2024 21:26:37 +0200 Subject: [PATCH] feat: exposed Inventory::get_/set_utility_id to editor --- godot/GameObjects/player_unit.tscn | 1 + src/inventory.cpp | 21 +++++++++++++++++++-- src/inventory.hpp | 8 ++++++-- 3 files changed, 26 insertions(+), 4 deletions(-) diff --git a/godot/GameObjects/player_unit.tscn b/godot/GameObjects/player_unit.tscn index c807cac..7e4d1b7 100644 --- a/godot/GameObjects/player_unit.tscn +++ b/godot/GameObjects/player_unit.tscn @@ -35,6 +35,7 @@ unique_name_in_owner = true [node name="Inventory" type="Inventory" parent="."] weapon_id = 2 +utility_id = 3 unique_name_in_owner = true [node name="NavigationAgent3D" type="NavigationAgent3D" parent="."] diff --git a/src/inventory.cpp b/src/inventory.cpp index c915199..607ba4a 100644 --- a/src/inventory.cpp +++ b/src/inventory.cpp @@ -7,6 +7,7 @@ void Inventory::_bind_methods() { #define CLASSNAME Inventory GDPROPERTY_HINTED(weapon_id, gd::Variant::INT, gd::PROPERTY_HINT_ENUM, ItemDB::get_enum_hint()); GDPROPERTY_HINTED(armour_id, gd::Variant::INT, gd::PROPERTY_HINT_ENUM, ItemDB::get_enum_hint()); + GDPROPERTY_HINTED(utility_id, gd::Variant::INT, gd::PROPERTY_HINT_ENUM, ItemDB::get_enum_hint()); GDPROPERTY(inventory_inspector, gd::Variant::DICTIONARY); } @@ -56,12 +57,20 @@ Item const *Inventory::get_armour() const { return this->armour; } +void Inventory::set_utility(Item const *item) { + this->utility = item != nullptr && item->has_capability(ItemCapability::UtilityEquip) ? item : nullptr; +} + +Item const *Inventory::get_utility() const { + return this->utility; +} + void Inventory::set_weapon_id(int item_id) { this->set_weapon(ItemDB::get_item(item_id)); } int Inventory::get_weapon_id() const { - return this->weapon ? this->weapon->get_id() : 0; + return this->weapon != nullptr ? this->weapon->get_id() : 0; } void Inventory::set_armour_id(int item_id) { @@ -69,7 +78,15 @@ void Inventory::set_armour_id(int item_id) { } int Inventory::get_armour_id() const { - return this->armour ? this->armour->get_id() : 0; + return this->armour != nullptr ? this->armour->get_id() : 0; +} + +void Inventory::set_utility_id(int item_id) { + this->set_utility(ItemDB::get_item(item_id)); +} + +int Inventory::get_utility_id() const { + return this->utility != nullptr ? this->utility->get_id() : 0; } void Inventory::set_inventory_inspector(gd::Dictionary dict) { diff --git a/src/inventory.hpp b/src/inventory.hpp index d867d56..2ead65c 100644 --- a/src/inventory.hpp +++ b/src/inventory.hpp @@ -23,15 +23,19 @@ public: unsigned get_item_amount(Item const *item); bool has_item(Item const *item); - void set_weapon(Item const *weapon); + void set_weapon(Item const *item); Item const *get_weapon() const; - void set_armour(Item const *weapon); + void set_armour(Item const *item); Item const *get_armour() const; + void set_utility(Item const *item); + Item const *get_utility() const; void set_weapon_id(int item_id); int get_weapon_id() const; void set_armour_id(int item_id); int get_armour_id() const; + void set_utility_id(int item_id); + int get_utility_id() const; void set_inventory_inspector(gd::Dictionary dict); gd::Dictionary get_inventory_inspector() const; private: