Moved the container and vendor data into it's own classes from EntityData.

This commit is contained in:
Relintai 2019-09-17 01:14:19 +02:00
parent 0a00a12c32
commit d16e580bf4
13 changed files with 313 additions and 226 deletions

7
SCsub
View File

@ -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")

View File

@ -1,33 +0,0 @@
#include "container_item_data.h"
#include "../../data/item_template.h"
Ref<ItemTemplate> ContainerItemData::get_item() {
return _item;
}
void ContainerItemData::set_item(Ref<ItemTemplate> 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");
}

View File

@ -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<LootDataBase> 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<VendorItemData> 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<VendorItemData> data) {
_vendor_item_data = data;
}
Ref<VendorItemData> EntityData::get_vendor_data(int index) {
if (_vendor_datas.size() == 0 && _inherits.is_valid()) {
return _inherits->get_vendor_data(index);
Ref<ItemContainerData> 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<VendorItemData>());
return _vendor_datas[index];
return _item_container_data;
}
void EntityData::set_vendor_data(int index, Ref<VendorItemData> vendor_data) {
ERR_FAIL_INDEX(index, _vendor_datas.size());
_vendor_datas.set(index, vendor_data);
}
Vector<Variant> EntityData::get_vendor_datas() {
Vector<Variant> 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<Variant> &vendor_datas) {
_vendor_datas.clear();
for (int i = 0; i < vendor_datas.size(); i++) {
Ref<VendorItemData> vendor_data = Ref<VendorItemData>(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<ContainerItemData> 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<ContainerItemData>());
return _container_datas[index];
}
void EntityData::set_container_data(int index, Ref<ContainerItemData> container_data) {
ERR_FAIL_INDEX(index, _container_datas.size());
_container_datas.set(index, container_data);
}
Vector<Variant> EntityData::get_container_datas() {
Vector<Variant> 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<Variant> &container_datas) {
_container_datas.clear();
for (int i = 0; i < container_datas.size(); i++) {
Ref<ContainerItemData> container_data = Ref<ContainerItemData>(container_datas[i]);
_container_datas.push_back(container_data);
}
void EntityData::set_item_container_data(const Ref<ItemContainerData> 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");
}

View File

@ -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<EntityClassData> data);
Ref<LootDataBase> get_loot_db() const;
void set_loot_db(const Ref<LootDataBase> lootdb);
void set_loot_db(const Ref<LootDataBase> data);
//Vendor data
int get_num_vendor_datas();
void set_num_vendor_datas(int value);
Ref<VendorItemData> get_vendor_item_data() const;
void set_vendor_item_data(const Ref<VendorItemData> data);
Ref<VendorItemData> get_vendor_data(int index);
void set_vendor_data(int index, Ref<VendorItemData> aura);
Vector<Variant> get_vendor_datas();
void set_vendor_datas(const Vector<Variant> &ai_actions);
//Container data
int get_num_container_datas();
void set_num_container_datas(int value);
Ref<ContainerItemData> get_container_data(int index);
void set_container_data(int index, Ref<ContainerItemData> aura);
Vector<Variant> get_container_datas();
void set_container_datas(const Vector<Variant> &ai_actions);
Ref<ItemContainerData> get_item_container_data() const;
void set_item_container_data(const Ref<ItemContainerData> data);
/*
Vector<int> get_mob_party_ids();
@ -233,10 +219,9 @@ private:
Ref<EntityClassData> _entity_class_data;
Vector<Ref<VendorItemData> > _vendor_datas;
Vector<Ref<ContainerItemData> > _container_datas;
Ref<LootDataBase> _lootdb;
Ref<VendorItemData> _vendor_item_data;
Ref<ItemContainerData> _item_container_data;
//Vector<int> _mob_party_ids;
//Vector<int> _mob_dislike_ids;

View File

@ -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<ItemContainerDataEntry> ItemContainerData::get_container_data(int index) {
ERR_FAIL_INDEX_V(index, _container_datas.size(), Ref<ItemContainerDataEntry>());
return _container_datas[index];
}
void ItemContainerData::set_container_data(int index, Ref<ItemContainerDataEntry> container_data) {
ERR_FAIL_INDEX(index, _container_datas.size());
_container_datas.set(index, container_data);
}
Vector<Variant> ItemContainerData::get_container_datas() {
Vector<Variant> 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<Variant> &container_datas) {
_container_datas.clear();
for (int i = 0; i < container_datas.size(); i++) {
Ref<ItemContainerDataEntry> container_data = Ref<ItemContainerDataEntry>(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");
}

View File

@ -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<ItemContainerDataEntry> get_container_data(int index);
void set_container_data(int index, Ref<ItemContainerDataEntry> aura);
Vector<Variant> get_container_datas();
void set_container_datas(const Vector<Variant> &ai_actions);
ItemContainerData();
~ItemContainerData();
protected:
static void _bind_methods();
private:
Vector<Ref<ItemContainerDataEntry> > _container_datas;
};
#endif

View File

@ -0,0 +1,34 @@
#include "item_container_data_entry.h"
#include "../../data/item_template.h"
Ref<ItemTemplate> ItemContainerDataEntry::get_item() {
return _item;
}
void ItemContainerDataEntry::set_item(Ref<ItemTemplate> 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");
}

View File

@ -5,8 +5,8 @@
class ItemTemplate;
class ContainerItemData : public Resource {
GDCLASS(ContainerItemData, Resource);
class ItemContainerDataEntry : public Resource {
GDCLASS(ItemContainerDataEntry, Resource);
public:
Ref<ItemTemplate> 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();

View File

@ -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<ItemTemplate> VendorItemData::get_item() {
return _item;
Ref<VendorItemDataEntry> VendorItemData::get_vendor_data(int index) {
ERR_FAIL_INDEX_V(index, _vendor_datas.size(), Ref<VendorItemDataEntry>());
return _vendor_datas[index];
}
void VendorItemData::set_item(Ref<ItemTemplate> item) {
_item = item;
void VendorItemData::set_vendor_data(int index, Ref<VendorItemDataEntry> 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<Variant> VendorItemData::get_vendor_datas() {
Vector<Variant> 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<Variant> &vendor_datas) {
_vendor_datas.clear();
for (int i = 0; i < vendor_datas.size(); i++) {
Ref<VendorItemDataEntry> vendor_data = Ref<VendorItemDataEntry>(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");
}

View File

@ -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<ItemTemplate> get_item();
void set_item(Ref<ItemTemplate> 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<VendorItemDataEntry> get_vendor_data(int index);
void set_vendor_data(int index, Ref<VendorItemDataEntry> data);
Vector<Variant> get_vendor_datas();
void set_vendor_datas(const Vector<Variant> &data);
VendorItemData();
~VendorItemData();
@ -28,10 +26,7 @@ protected:
static void _bind_methods();
private:
Ref<ItemTemplate> _item;
int _item_price;
int _item_count;
int _item_spawn_time;
Vector<Ref<VendorItemData> > _vendor_datas;
};
#endif

View File

@ -0,0 +1,57 @@
#include "vendor_item_data.h"
#include "../../data/item_template.h"
Ref<ItemTemplate> VendorItemDataEntry::get_item() {
return _item;
}
void VendorItemDataEntry::set_item(Ref<ItemTemplate> 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");
}

View File

@ -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<ItemTemplate> get_item();
void set_item(Ref<ItemTemplate> 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<ItemTemplate> _item;
int _item_price;
int _item_count;
int _item_spawn_time;
};
#endif

View File

@ -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<EntityData>();
ClassDB::register_class<EntityClassData>();
ClassDB::register_class<VendorItemData>();
ClassDB::register_class<ContainerItemData>();
ClassDB::register_class<VendorItemDataEntry>();
ClassDB::register_class<EntityDataContainer>();
ClassDB::register_class<ItemContainerData>();
ClassDB::register_class<ItemContainerDataEntry>();
ClassDB::register_class<XPData>();
ClassDB::register_class<ItemStatModifier>();