From 82893c5a616eadbeccfd636fd7664c514b206257 Mon Sep 17 00:00:00 2001 From: Relintai Date: Thu, 24 Oct 2019 22:25:25 +0200 Subject: [PATCH] Restored EquipmentDataEntry. --- data/equipment_data.cpp | 15 ++++++--------- data/equipment_data.h | 10 ++++------ data/equipment_data_entry.cpp | 23 +++++++++++++++++++++++ data/equipment_data_entry.h | 25 +++++++++++++++++++++++++ register_types.cpp | 2 ++ 5 files changed, 60 insertions(+), 15 deletions(-) create mode 100644 data/equipment_data_entry.cpp create mode 100644 data/equipment_data_entry.h diff --git a/data/equipment_data.cpp b/data/equipment_data.cpp index fb1c515..9a0814f 100644 --- a/data/equipment_data.cpp +++ b/data/equipment_data.cpp @@ -1,14 +1,11 @@ #include "equipment_data.h" -#include "item_template.h" -#include "item_instance.h" - -Ref EquipmentData::get_slot(int index) { - ERR_FAIL_INDEX_V(index, ItemEnums::EQUIP_SLOT_EQUIP_SLOT_MAX, Ref()); +Ref EquipmentData::get_slot(int index) { + ERR_FAIL_INDEX_V(index, ItemEnums::EQUIP_SLOT_EQUIP_SLOT_MAX, Ref()); return _entries[index]; } -void EquipmentData::set_slot(int index, Ref entry) { +void EquipmentData::set_slot(int index, Ref entry) { ERR_FAIL_INDEX(index, ItemEnums::EQUIP_SLOT_EQUIP_SLOT_MAX); _entries[index] = entry; @@ -17,12 +14,12 @@ void EquipmentData::set_slot(int index, Ref entry) { Ref EquipmentData::get_item(int index) { ERR_FAIL_INDEX_V(index, ItemEnums::EQUIP_SLOT_EQUIP_SLOT_MAX, Ref()); - Ref ede = _entries[index]; + Ref ede = _entries[index]; if (!ede.is_valid()) return Ref(); - return ede->create_item_instance(); + return ede->get_item(); } EquipmentData::EquipmentData() { @@ -39,6 +36,6 @@ void EquipmentData::_bind_methods() { ADD_GROUP("Slots", "slot"); for (int i = 0; i < ItemEnums::EQUIP_SLOT_EQUIP_SLOT_MAX; ++i) { - ADD_PROPERTYI(PropertyInfo(Variant::OBJECT, "slot_" + ItemEnums::get_equip_slot_string(i), PROPERTY_HINT_RESOURCE_TYPE, "ItemTemplate"), "set_slot", "get_slot", i); + ADD_PROPERTYI(PropertyInfo(Variant::OBJECT, "slot_" + ItemEnums::get_equip_slot_string(i), PROPERTY_HINT_RESOURCE_TYPE, "EquipmentDataEntry"), "set_slot", "get_slot", i); } } diff --git a/data/equipment_data.h b/data/equipment_data.h index 4d40084..9367d95 100644 --- a/data/equipment_data.h +++ b/data/equipment_data.h @@ -4,16 +4,14 @@ #include "core/resource.h" #include "../item_enums.h" - -class ItemTemplate; -class ItemInstance; +#include "equipment_data_entry.h" class EquipmentData : public Resource { GDCLASS(EquipmentData, Resource); public: - Ref get_slot(int index); - void set_slot(int index, Ref entry); + Ref get_slot(int index); + void set_slot(int index, Ref entry); Ref get_item(int index); @@ -24,7 +22,7 @@ protected: static void _bind_methods(); private: - Ref _entries[ItemEnums::EQUIP_SLOT_EQUIP_SLOT_MAX]; + Ref _entries[ItemEnums::EQUIP_SLOT_EQUIP_SLOT_MAX]; }; #endif diff --git a/data/equipment_data_entry.cpp b/data/equipment_data_entry.cpp new file mode 100644 index 0000000..1893343 --- /dev/null +++ b/data/equipment_data_entry.cpp @@ -0,0 +1,23 @@ +#include "equipment_data_entry.h" + + + +Ref EquipmentDataEntry::get_item() { + if (has_method("_get_item")) { + return call("_get_item"); + } + + return Ref(); +} + +EquipmentDataEntry::EquipmentDataEntry() { +} + +EquipmentDataEntry::~EquipmentDataEntry() { +} + +void EquipmentDataEntry::_bind_methods() { + BIND_VMETHOD(MethodInfo(PropertyInfo(Variant::OBJECT, "item", PROPERTY_HINT_RESOURCE_TYPE, "ItemInstance"), "_get_item")); + + ClassDB::bind_method(D_METHOD("get_item"), &EquipmentDataEntry::get_item); +} diff --git a/data/equipment_data_entry.h b/data/equipment_data_entry.h new file mode 100644 index 0000000..f781248 --- /dev/null +++ b/data/equipment_data_entry.h @@ -0,0 +1,25 @@ +#ifndef EQUIPMENT_DATA_ENTRY_H +#define EQUIPMENT_DATA_ENTRY_H + +#include "core/resource.h" + +#include "item_instance.h" + +class ItemInstance; + +class EquipmentDataEntry : public Resource { + GDCLASS(EquipmentDataEntry, Resource); + +public: + Ref get_item(); + + EquipmentDataEntry(); + ~EquipmentDataEntry(); + +protected: + static void _bind_methods(); + +//private: +}; + +#endif diff --git a/register_types.cpp b/register_types.cpp index 6830cc5..79c2920 100644 --- a/register_types.cpp +++ b/register_types.cpp @@ -11,6 +11,7 @@ #include "data/item_template_stat_modifier.h" #include "data/spell_cooldown_manipulation_data.h" #include "data/equipment_data.h" +#include "data/equipment_data_entry.h" #include "entities/data/entity_data.h" #include "entities/data/entity_class_data.h" @@ -151,6 +152,7 @@ void register_entity_spell_system_types() { ClassDB::register_class(); ClassDB::register_class(); + ClassDB::register_class(); ClassDB::register_class();