From d16e580bf4fd346b46e93a42af319c283bc22ced Mon Sep 17 00:00:00 2001 From: Relintai Date: Tue, 17 Sep 2019 01:14:19 +0200 Subject: [PATCH] Moved the container and vendor data into it's own classes from EntityData. --- SCsub | 7 +- entities/data/container_item_data.cpp | 33 ----- entities/data/entity_data.cpp | 127 ++++-------------- entities/data/entity_data.h | 31 ++--- entities/data/item_container_data.cpp | 54 ++++++++ entities/data/item_container_data.h | 31 +++++ entities/data/item_container_data_entry.cpp | 34 +++++ ...tem_data.h => item_container_data_entry.h} | 8 +- entities/data/vendor_item_data.cpp | 81 ++++++----- entities/data/vendor_item_data.h | 29 ++-- entities/data/vendor_item_data_entry.cpp | 57 ++++++++ entities/data/vendor_item_data_entry.h | 37 +++++ register_types.cpp | 10 +- 13 files changed, 313 insertions(+), 226 deletions(-) delete mode 100644 entities/data/container_item_data.cpp create mode 100644 entities/data/item_container_data.cpp create mode 100644 entities/data/item_container_data.h create mode 100644 entities/data/item_container_data_entry.cpp rename entities/data/{container_item_data.h => item_container_data_entry.h} (71%) create mode 100644 entities/data/vendor_item_data_entry.cpp create mode 100644 entities/data/vendor_item_data_entry.h diff --git a/SCsub b/SCsub index 0c0f4be..cdee6b2 100644 --- a/SCsub +++ b/SCsub @@ -25,10 +25,15 @@ module_env.add_source_files(env.modules_sources,"data/spell_cooldown_manipulatio module_env.add_source_files(env.modules_sources,"entities/data/entity_data.cpp") module_env.add_source_files(env.modules_sources,"entities/data/entity_class_data.cpp") + module_env.add_source_files(env.modules_sources,"entities/data/vendor_item_data.cpp") -module_env.add_source_files(env.modules_sources,"entities/data/container_item_data.cpp") +module_env.add_source_files(env.modules_sources,"entities/data/vendor_item_data_entry.cpp") + module_env.add_source_files(env.modules_sources,"entities/data/entity_data_container.cpp") +module_env.add_source_files(env.modules_sources,"entities/data/item_container_data.cpp") +module_env.add_source_files(env.modules_sources,"entities/data/item_container_data_entry.cpp") + module_env.add_source_files(env.modules_sources,"entities/skills/entity_skill.cpp") module_env.add_source_files(env.modules_sources,"entities/data/character_spec.cpp") diff --git a/entities/data/container_item_data.cpp b/entities/data/container_item_data.cpp deleted file mode 100644 index eade471..0000000 --- a/entities/data/container_item_data.cpp +++ /dev/null @@ -1,33 +0,0 @@ -#include "container_item_data.h" - -#include "../../data/item_template.h" - -Ref ContainerItemData::get_item() { - return _item; -} -void ContainerItemData::set_item(Ref item) { - _item = item; -} - -int ContainerItemData::get_item_count() const { - return _item_count; -} -void ContainerItemData::set_item_count(int value) { - _item_count = value; -} - -ContainerItemData::ContainerItemData() { - _item_count = 0; -} -ContainerItemData::~ContainerItemData() { -} - -void ContainerItemData::_bind_methods() { - ClassDB::bind_method(D_METHOD("get_item"), &ContainerItemData::get_item); - ClassDB::bind_method(D_METHOD("set_item", "item"), &ContainerItemData::set_item); - ADD_PROPERTY(PropertyInfo(Variant::OBJECT, "item", PROPERTY_HINT_RESOURCE_TYPE, "ItemTemplate"), "set_item", "get_item"); - - ClassDB::bind_method(D_METHOD("get_item_count"), &ContainerItemData::get_item_count); - ClassDB::bind_method(D_METHOD("set_item_count", "value"), &ContainerItemData::set_item_count); - ADD_PROPERTY(PropertyInfo(Variant::INT, "item_count"), "set_item_count", "get_item_count"); -} diff --git a/entities/data/entity_data.cpp b/entities/data/entity_data.cpp index 1ed3a2d..db2501a 100644 --- a/entities/data/entity_data.cpp +++ b/entities/data/entity_data.cpp @@ -7,7 +7,6 @@ #include "../entity.h" #include "character_spec.h" #include "vendor_item_data.h" -#include "container_item_data.h" int EntityData::get_id() { return _id; @@ -95,93 +94,26 @@ void EntityData::set_loot_db(const Ref lootdb) { _lootdb = lootdb; } - -//// VENDOR DATA //// - -int EntityData::get_num_vendor_datas() { - if (_vendor_datas.size() == 0 && _inherits.is_valid()) { - return _inherits->get_num_vendor_datas(); +Ref EntityData::get_vendor_item_data() const { + if (!_vendor_item_data.is_valid() && _inherits.is_valid()) { + return _inherits->get_vendor_item_data(); } - return _vendor_datas.size(); + return _vendor_item_data; } -void EntityData::set_num_vendor_datas(int value) { - _vendor_datas.resize(value); +void EntityData::set_vendor_item_data(const Ref data) { + _vendor_item_data = data; } -Ref EntityData::get_vendor_data(int index) { - if (_vendor_datas.size() == 0 && _inherits.is_valid()) { - return _inherits->get_vendor_data(index); +Ref EntityData::get_item_container_data() const { + if (!_vendor_item_data.is_valid() && _inherits.is_valid()) { + return _inherits->get_item_container_data(); } - ERR_FAIL_INDEX_V(index, _vendor_datas.size(), Ref()); - - return _vendor_datas[index]; + return _item_container_data; } -void EntityData::set_vendor_data(int index, Ref vendor_data) { - ERR_FAIL_INDEX(index, _vendor_datas.size()); - - _vendor_datas.set(index, vendor_data); -} - -Vector EntityData::get_vendor_datas() { - Vector r; - for (int i = 0; i < _vendor_datas.size(); i++) { - r.push_back(_vendor_datas[i].get_ref_ptr()); - } - return r; -} -void EntityData::set_vendor_datas(const Vector &vendor_datas) { - _vendor_datas.clear(); - for (int i = 0; i < vendor_datas.size(); i++) { - Ref vendor_data = Ref(vendor_datas[i]); - - _vendor_datas.push_back(vendor_data); - } -} - -//// Container Data //// - -int EntityData::get_num_container_datas() { - if (_container_datas.size() == 0 && _inherits.is_valid()) { - return _inherits->get_num_container_datas(); - } - - return _container_datas.size(); -} -void EntityData::set_num_container_datas(int value) { - _container_datas.resize(value); -} - -Ref EntityData::get_container_data(int index) { - if (_container_datas.size() == 0 && _inherits.is_valid()) { - return _inherits->get_container_data(index); - } - - ERR_FAIL_INDEX_V(index, _container_datas.size(), Ref()); - - return _container_datas[index]; -} -void EntityData::set_container_data(int index, Ref container_data) { - ERR_FAIL_INDEX(index, _container_datas.size()); - - _container_datas.set(index, container_data); -} - -Vector EntityData::get_container_datas() { - Vector r; - for (int i = 0; i < _container_datas.size(); i++) { - r.push_back(_container_datas[i].get_ref_ptr()); - } - return r; -} -void EntityData::set_container_datas(const Vector &container_datas) { - _container_datas.clear(); - for (int i = 0; i < container_datas.size(); i++) { - Ref container_data = Ref(container_datas[i]); - - _container_datas.push_back(container_data); - } +void EntityData::set_item_container_data(const Ref data) { + _item_container_data = data; } //void EntityData::_setup_resources(Entity *entity) { @@ -902,8 +834,7 @@ EntityData::EntityData() { _entity_controller = EntityEnums::ENITIY_CONTROLLER_NONE; } EntityData::~EntityData() { - _vendor_datas.clear(); - _container_datas.clear(); + } void EntityData::_bind_methods() { @@ -1085,6 +1016,16 @@ void EntityData::_bind_methods() { ClassDB::bind_method(D_METHOD("set_loot_db", "value"), &EntityData::set_loot_db); ADD_PROPERTY(PropertyInfo(Variant::OBJECT, "loot_db", PROPERTY_HINT_RESOURCE_TYPE, "LootDataBase"), "set_loot_db", "get_loot_db"); + //VendorItemData + ClassDB::bind_method(D_METHOD("get_vendor_item_data"), &EntityData::get_vendor_item_data); + ClassDB::bind_method(D_METHOD("set_vendor_item_data", "value"), &EntityData::set_vendor_item_data); + ADD_PROPERTY(PropertyInfo(Variant::OBJECT, "vendor_item_data", PROPERTY_HINT_RESOURCE_TYPE, "VendorItemData"), "set_vendor_item_data", "get_vendor_item_data"); + + //ItemContainerData + ClassDB::bind_method(D_METHOD("get_item_container_data"), &EntityData::get_item_container_data); + ClassDB::bind_method(D_METHOD("set_item_container_data", "value"), &EntityData::set_item_container_data); + ADD_PROPERTY(PropertyInfo(Variant::OBJECT, "item_container_data", PROPERTY_HINT_RESOURCE_TYPE, "ItemContainerData"), "set_item_container_data", "get_item_container_data"); + ClassDB::bind_method(D_METHOD("generate_name"), &EntityData::generate_name); BIND_VMETHOD(MethodInfo(PropertyInfo(Variant::STRING, "name"), "_generate_name")); @@ -1098,27 +1039,5 @@ void EntityData::_bind_methods() { ClassDB::bind_method(D_METHOD("set_entity_flags", "value"), &EntityData::set_entity_flags); ADD_PROPERTY(PropertyInfo(Variant::INT, "entity_flags", PROPERTY_HINT_FLAGS, EntityEnums::BINDING_STRING_ENTITY_FLAGS), "set_entity_flags", "get_entity_flags"); - //// Vendor data //// - ADD_GROUP("Vendor Data", "vendor_datas"); - ClassDB::bind_method(D_METHOD("get_num_vendor_datas"), &EntityData::get_num_vendor_datas); - ClassDB::bind_method(D_METHOD("set_num_vendor_datas", "value"), &EntityData::set_num_vendor_datas); - ClassDB::bind_method(D_METHOD("get_vendor_data", "index"), &EntityData::get_vendor_data); - ClassDB::bind_method(D_METHOD("set_vendor_data", "index", "vendor_data"), &EntityData::set_vendor_data); - - ClassDB::bind_method(D_METHOD("get_vendor_datas"), &EntityData::get_vendor_datas); - ClassDB::bind_method(D_METHOD("set_vendor_datas", "vendor_datas"), &EntityData::set_vendor_datas); - ADD_PROPERTY(PropertyInfo(Variant::ARRAY, "vendor_datas", PROPERTY_HINT_NONE, "17/17:VendorItemData", PROPERTY_USAGE_DEFAULT, "VendorItemData"), "set_vendor_datas", "get_vendor_datas"); - - //// Container data //// - ADD_GROUP("Container Data", "container_datas"); - ClassDB::bind_method(D_METHOD("get_num_container_datas"), &EntityData::get_num_container_datas); - ClassDB::bind_method(D_METHOD("set_num_container_datas", "value"), &EntityData::set_num_container_datas); - - ClassDB::bind_method(D_METHOD("get_container_data", "index"), &EntityData::get_container_data); - ClassDB::bind_method(D_METHOD("set_container_data", "index", "container_data"), &EntityData::set_container_data); - - ClassDB::bind_method(D_METHOD("get_container_datas"), &EntityData::get_container_datas); - ClassDB::bind_method(D_METHOD("set_container_datas", "container_datas"), &EntityData::set_container_datas); - ADD_PROPERTY(PropertyInfo(Variant::ARRAY, "container_datas", PROPERTY_HINT_NONE, "17/17:ContainerItemData", PROPERTY_USAGE_DEFAULT, "ContainerItemData"), "set_container_datas", "get_container_datas"); } diff --git a/entities/data/entity_data.h b/entities/data/entity_data.h index e55b10e..f7e1be0 100644 --- a/entities/data/entity_data.h +++ b/entities/data/entity_data.h @@ -19,6 +19,7 @@ #include "../../loot/loot_data_base.h" #include "entity_class_data.h" +#include "item_container_data.h" class Aura; class Spell; @@ -28,7 +29,6 @@ class Entity; class SpellCastInfo; class AIAction; class VendorItemData; -class ContainerItemData; class EntityData : public Resource { GDCLASS(EntityData, Resource); @@ -68,27 +68,13 @@ public: void set_entity_class_data(Ref data); Ref get_loot_db() const; - void set_loot_db(const Ref lootdb); + void set_loot_db(const Ref data); - //Vendor data - int get_num_vendor_datas(); - void set_num_vendor_datas(int value); + Ref get_vendor_item_data() const; + void set_vendor_item_data(const Ref data); - Ref get_vendor_data(int index); - void set_vendor_data(int index, Ref aura); - - Vector get_vendor_datas(); - void set_vendor_datas(const Vector &ai_actions); - - //Container data - int get_num_container_datas(); - void set_num_container_datas(int value); - - Ref get_container_data(int index); - void set_container_data(int index, Ref aura); - - Vector get_container_datas(); - void set_container_datas(const Vector &ai_actions); + Ref get_item_container_data() const; + void set_item_container_data(const Ref data); /* Vector get_mob_party_ids(); @@ -233,10 +219,9 @@ private: Ref _entity_class_data; - Vector > _vendor_datas; - Vector > _container_datas; - Ref _lootdb; + Ref _vendor_item_data; + Ref _item_container_data; //Vector _mob_party_ids; //Vector _mob_dislike_ids; diff --git a/entities/data/item_container_data.cpp b/entities/data/item_container_data.cpp new file mode 100644 index 0000000..978a0a3 --- /dev/null +++ b/entities/data/item_container_data.cpp @@ -0,0 +1,54 @@ +#include "item_container_data.h" + +int ItemContainerData::get_num_container_datas() { + return _container_datas.size(); +} +void ItemContainerData::set_num_container_datas(int value) { + _container_datas.resize(value); +} + +Ref ItemContainerData::get_container_data(int index) { + ERR_FAIL_INDEX_V(index, _container_datas.size(), Ref()); + + return _container_datas[index]; +} +void ItemContainerData::set_container_data(int index, Ref container_data) { + ERR_FAIL_INDEX(index, _container_datas.size()); + + _container_datas.set(index, container_data); +} + +Vector ItemContainerData::get_container_datas() { + Vector r; + for (int i = 0; i < _container_datas.size(); i++) { + r.push_back(_container_datas[i].get_ref_ptr()); + } + return r; +} +void ItemContainerData::set_container_datas(const Vector &container_datas) { + _container_datas.clear(); + for (int i = 0; i < container_datas.size(); i++) { + Ref container_data = Ref(container_datas[i]); + + _container_datas.push_back(container_data); + } +} + +ItemContainerData::ItemContainerData() { +} + +ItemContainerData::~ItemContainerData() { + _container_datas.clear(); +} + +void ItemContainerData::_bind_methods() { + ClassDB::bind_method(D_METHOD("get_num_container_datas"), &ItemContainerData::get_num_container_datas); + ClassDB::bind_method(D_METHOD("set_num_container_datas", "value"), &ItemContainerData::set_num_container_datas); + + ClassDB::bind_method(D_METHOD("get_container_data", "index"), &ItemContainerData::get_container_data); + ClassDB::bind_method(D_METHOD("set_container_data", "index", "container_data"), &ItemContainerData::set_container_data); + + ClassDB::bind_method(D_METHOD("get_container_datas"), &ItemContainerData::get_container_datas); + ClassDB::bind_method(D_METHOD("set_container_datas", "container_datas"), &ItemContainerData::set_container_datas); + ADD_PROPERTY(PropertyInfo(Variant::ARRAY, "container_datas", PROPERTY_HINT_NONE, "17/17:ItemContainerDataEntry", PROPERTY_USAGE_DEFAULT, "ItemContainerDataEntry"), "set_container_datas", "get_container_datas"); +} diff --git a/entities/data/item_container_data.h b/entities/data/item_container_data.h new file mode 100644 index 0000000..f0ae8dd --- /dev/null +++ b/entities/data/item_container_data.h @@ -0,0 +1,31 @@ +#ifndef ITEM_CONTAINER_DATA_H +#define ITEM_CONTAINER_DATA_H + +#include "core/resource.h" + +#include "item_container_data_entry.h" + +class ItemContainerData : public Resource { + GDCLASS(ItemContainerData, Resource); + +public: + int get_num_container_datas(); + void set_num_container_datas(int value); + + Ref get_container_data(int index); + void set_container_data(int index, Ref aura); + + Vector get_container_datas(); + void set_container_datas(const Vector &ai_actions); + + ItemContainerData(); + ~ItemContainerData(); + +protected: + static void _bind_methods(); + +private: + Vector > _container_datas; +}; + +#endif diff --git a/entities/data/item_container_data_entry.cpp b/entities/data/item_container_data_entry.cpp new file mode 100644 index 0000000..9ef4dcd --- /dev/null +++ b/entities/data/item_container_data_entry.cpp @@ -0,0 +1,34 @@ +#include "item_container_data_entry.h" + +#include "../../data/item_template.h" + +Ref ItemContainerDataEntry::get_item() { + return _item; +} +void ItemContainerDataEntry::set_item(Ref item) { + _item = item; +} + +int ItemContainerDataEntry::get_item_count() const { + return _item_count; +} +void ItemContainerDataEntry::set_item_count(int value) { + _item_count = value; +} + +ItemContainerDataEntry::ItemContainerDataEntry() { + _item_count = 0; +} +ItemContainerDataEntry::~ItemContainerDataEntry() { + +} + +void ItemContainerDataEntry::_bind_methods() { + ClassDB::bind_method(D_METHOD("get_item"), &ItemContainerDataEntry::get_item); + ClassDB::bind_method(D_METHOD("set_item", "item"), &ItemContainerDataEntry::set_item); + ADD_PROPERTY(PropertyInfo(Variant::OBJECT, "item", PROPERTY_HINT_RESOURCE_TYPE, "ItemTemplate"), "set_item", "get_item"); + + ClassDB::bind_method(D_METHOD("get_item_count"), &ItemContainerDataEntry::get_item_count); + ClassDB::bind_method(D_METHOD("set_item_count", "value"), &ItemContainerDataEntry::set_item_count); + ADD_PROPERTY(PropertyInfo(Variant::INT, "item_count"), "set_item_count", "get_item_count"); +} diff --git a/entities/data/container_item_data.h b/entities/data/item_container_data_entry.h similarity index 71% rename from entities/data/container_item_data.h rename to entities/data/item_container_data_entry.h index 3bc040b..12d89d6 100644 --- a/entities/data/container_item_data.h +++ b/entities/data/item_container_data_entry.h @@ -5,8 +5,8 @@ class ItemTemplate; -class ContainerItemData : public Resource { - GDCLASS(ContainerItemData, Resource); +class ItemContainerDataEntry : public Resource { + GDCLASS(ItemContainerDataEntry, Resource); public: Ref get_item(); @@ -15,8 +15,8 @@ public: int get_item_count() const; void set_item_count(int value); - ContainerItemData(); - ~ContainerItemData(); + ItemContainerDataEntry(); + ~ItemContainerDataEntry(); protected: static void _bind_methods(); diff --git a/entities/data/vendor_item_data.cpp b/entities/data/vendor_item_data.cpp index d5c9b6b..9b0e521 100644 --- a/entities/data/vendor_item_data.cpp +++ b/entities/data/vendor_item_data.cpp @@ -1,57 +1,54 @@ #include "vendor_item_data.h" -#include "../../data/item_template.h" +int VendorItemData::get_num_vendor_datas() { + return _vendor_datas.size(); +} +void VendorItemData::set_num_vendor_datas(int value) { + _vendor_datas.resize(value); +} -Ref VendorItemData::get_item() { - return _item; +Ref VendorItemData::get_vendor_data(int index) { + ERR_FAIL_INDEX_V(index, _vendor_datas.size(), Ref()); + + return _vendor_datas[index]; } -void VendorItemData::set_item(Ref item) { - _item = item; +void VendorItemData::set_vendor_data(int index, Ref vendor_data) { + ERR_FAIL_INDEX(index, _vendor_datas.size()); + + _vendor_datas.set(index, vendor_data); } - -int VendorItemData::get_item_price() const { - return _item_price; + +Vector VendorItemData::get_vendor_datas() { + Vector r; + for (int i = 0; i < _vendor_datas.size(); i++) { + r.push_back(_vendor_datas[i].get_ref_ptr()); + } + return r; } -void VendorItemData::set_item_price(int value) { - _item_price = value; -} - -int VendorItemData::get_item_count() const { - return _item_count; -} -void VendorItemData::set_item_count(int value) { - _item_count = value; -} - -int VendorItemData::get_item_spawn_time() const { - return _item_spawn_time; -} -void VendorItemData::set_item_spawn_time(int value) { - _item_spawn_time = value; +void VendorItemData::set_vendor_datas(const Vector &vendor_datas) { + _vendor_datas.clear(); + for (int i = 0; i < vendor_datas.size(); i++) { + Ref vendor_data = Ref(vendor_datas[i]); + + _vendor_datas.push_back(vendor_data); + } } + VendorItemData::VendorItemData() { - _item_price = 0; - _item_count = 0; - _item_spawn_time = 0; } VendorItemData::~VendorItemData() { + _vendor_datas.clear(); } void VendorItemData::_bind_methods() { - ClassDB::bind_method(D_METHOD("get_item"), &VendorItemData::get_item); - ClassDB::bind_method(D_METHOD("set_item", "item"), &VendorItemData::set_item); - ADD_PROPERTY(PropertyInfo(Variant::OBJECT, "item", PROPERTY_HINT_RESOURCE_TYPE, "ItemTemplate"), "set_item", "get_item"); - - ClassDB::bind_method(D_METHOD("get_item_price"), &VendorItemData::get_item_price); - ClassDB::bind_method(D_METHOD("set_item_price", "value"), &VendorItemData::set_item_price); - ADD_PROPERTY(PropertyInfo(Variant::INT, "item_price"), "set_item_price", "get_item_price"); - - ClassDB::bind_method(D_METHOD("get_item_count"), &VendorItemData::get_item_count); - ClassDB::bind_method(D_METHOD("set_item_count", "value"), &VendorItemData::set_item_count); - ADD_PROPERTY(PropertyInfo(Variant::INT, "item_count"), "set_item_count", "get_item_count"); - - ClassDB::bind_method(D_METHOD("get_item_spawn_time"), &VendorItemData::get_item_spawn_time); - ClassDB::bind_method(D_METHOD("set_item_spawn_time", "value"), &VendorItemData::set_item_spawn_time); - ADD_PROPERTY(PropertyInfo(Variant::INT, "item_spawn_time"), "set_item_spawn_time", "get_item_spawn_time"); + ClassDB::bind_method(D_METHOD("get_num_vendor_datas"), &VendorItemData::get_num_vendor_datas); + ClassDB::bind_method(D_METHOD("set_num_vendor_datas", "value"), &VendorItemData::set_num_vendor_datas); + + ClassDB::bind_method(D_METHOD("get_vendor_data", "index"), &VendorItemData::get_vendor_data); + ClassDB::bind_method(D_METHOD("set_vendor_data", "index", "vendor_data"), &VendorItemData::set_vendor_data); + + ClassDB::bind_method(D_METHOD("get_vendor_datas"), &VendorItemData::get_vendor_datas); + ClassDB::bind_method(D_METHOD("set_vendor_datas", "vendor_datas"), &VendorItemData::set_vendor_datas); + ADD_PROPERTY(PropertyInfo(Variant::ARRAY, "vendor_datas", PROPERTY_HINT_NONE, "17/17:VendorItemDataEntry", PROPERTY_USAGE_DEFAULT, "VendorItemDataEntry"), "set_vendor_datas", "get_vendor_datas"); } diff --git a/entities/data/vendor_item_data.h b/entities/data/vendor_item_data.h index 0bade75..bd24f7c 100644 --- a/entities/data/vendor_item_data.h +++ b/entities/data/vendor_item_data.h @@ -3,24 +3,22 @@ #include "core/resource.h" -class ItemTemplate; +#include "vendor_item_data_entry.h" class VendorItemData : public Resource { GDCLASS(VendorItemData, Resource); public: - Ref get_item(); - void set_item(Ref item); - - int get_item_price() const; - void set_item_price(int value); - - int get_item_count() const; - void set_item_count(int value); - - int get_item_spawn_time() const; - void set_item_spawn_time(int time); - + //Vendor data + int get_num_vendor_datas(); + void set_num_vendor_datas(int value); + + Ref get_vendor_data(int index); + void set_vendor_data(int index, Ref data); + + Vector get_vendor_datas(); + void set_vendor_datas(const Vector &data); + VendorItemData(); ~VendorItemData(); @@ -28,10 +26,7 @@ protected: static void _bind_methods(); private: - Ref _item; - int _item_price; - int _item_count; - int _item_spawn_time; + Vector > _vendor_datas; }; #endif diff --git a/entities/data/vendor_item_data_entry.cpp b/entities/data/vendor_item_data_entry.cpp new file mode 100644 index 0000000..5e4161e --- /dev/null +++ b/entities/data/vendor_item_data_entry.cpp @@ -0,0 +1,57 @@ +#include "vendor_item_data.h" + +#include "../../data/item_template.h" + +Ref VendorItemDataEntry::get_item() { + return _item; +} +void VendorItemDataEntry::set_item(Ref item) { + _item = item; +} + +int VendorItemDataEntry::get_item_price() const { + return _item_price; +} +void VendorItemDataEntry::set_item_price(int value) { + _item_price = value; +} + +int VendorItemDataEntry::get_item_count() const { + return _item_count; +} +void VendorItemDataEntry::set_item_count(int value) { + _item_count = value; +} + +int VendorItemDataEntry::get_item_spawn_time() const { + return _item_spawn_time; +} +void VendorItemDataEntry::set_item_spawn_time(int value) { + _item_spawn_time = value; +} + +VendorItemDataEntry::VendorItemDataEntry() { + _item_price = 0; + _item_count = 0; + _item_spawn_time = 0; +} +VendorItemDataEntry::~VendorItemDataEntry() { +} + +void VendorItemDataEntry::_bind_methods() { + ClassDB::bind_method(D_METHOD("get_item"), &VendorItemDataEntry::get_item); + ClassDB::bind_method(D_METHOD("set_item", "item"), &VendorItemDataEntry::set_item); + ADD_PROPERTY(PropertyInfo(Variant::OBJECT, "item", PROPERTY_HINT_RESOURCE_TYPE, "ItemTemplate"), "set_item", "get_item"); + + ClassDB::bind_method(D_METHOD("get_item_price"), &VendorItemDataEntry::get_item_price); + ClassDB::bind_method(D_METHOD("set_item_price", "value"), &VendorItemDataEntry::set_item_price); + ADD_PROPERTY(PropertyInfo(Variant::INT, "item_price"), "set_item_price", "get_item_price"); + + ClassDB::bind_method(D_METHOD("get_item_count"), &VendorItemDataEntry::get_item_count); + ClassDB::bind_method(D_METHOD("set_item_count", "value"), &VendorItemDataEntry::set_item_count); + ADD_PROPERTY(PropertyInfo(Variant::INT, "item_count"), "set_item_count", "get_item_count"); + + ClassDB::bind_method(D_METHOD("get_item_spawn_time"), &VendorItemDataEntry::get_item_spawn_time); + ClassDB::bind_method(D_METHOD("set_item_spawn_time", "value"), &VendorItemDataEntry::set_item_spawn_time); + ADD_PROPERTY(PropertyInfo(Variant::INT, "item_spawn_time"), "set_item_spawn_time", "get_item_spawn_time"); +} diff --git a/entities/data/vendor_item_data_entry.h b/entities/data/vendor_item_data_entry.h new file mode 100644 index 0000000..2c30100 --- /dev/null +++ b/entities/data/vendor_item_data_entry.h @@ -0,0 +1,37 @@ +#ifndef VENDOR_ITEM_DATA_ENTRY_H +#define VENDOR_ITEM_DATA_ENTRY_H + +#include "core/resource.h" + +class ItemTemplate; + +class VendorItemDataEntry : public Resource { + GDCLASS(VendorItemDataEntry, Resource); + +public: + Ref get_item(); + void set_item(Ref item); + + int get_item_price() const; + void set_item_price(int value); + + int get_item_count() const; + void set_item_count(int value); + + int get_item_spawn_time() const; + void set_item_spawn_time(int time); + + VendorItemDataEntry(); + ~VendorItemDataEntry(); + +protected: + static void _bind_methods(); + +private: + Ref _item; + int _item_price; + int _item_count; + int _item_spawn_time; +}; + +#endif diff --git a/register_types.cpp b/register_types.cpp index ac9a41a..227c0b1 100644 --- a/register_types.cpp +++ b/register_types.cpp @@ -16,7 +16,9 @@ #include "entities/data/entity_data.h" #include "entities/data/entity_class_data.h" #include "entities/data/vendor_item_data.h" -#include "entities/data/container_item_data.h" +#include "entities/data/vendor_item_data_entry.h" +#include "entities/data/item_container_data.h" +#include "entities/data/item_container_data_entry.h" #include "entities/data/entity_data_container.h" #include "entities/skills/entity_skill.h" @@ -121,8 +123,12 @@ void register_entity_spell_system_types() { ClassDB::register_class(); ClassDB::register_class(); ClassDB::register_class(); - ClassDB::register_class(); + ClassDB::register_class(); + ClassDB::register_class(); + + ClassDB::register_class(); + ClassDB::register_class(); ClassDB::register_class(); ClassDB::register_class();