Added spell_train_data property to EntityData. Also fixed up and improved a few other bindings.

This commit is contained in:
Relintai 2020-03-20 19:20:56 +01:00
parent 7c4e23ed8b
commit 33bebb19b9
6 changed files with 104 additions and 57 deletions

View File

@ -150,14 +150,14 @@ Ref<EntityAI> EntityData::_get_ai_instance() {
Ref<AIFormation> EntityData::get_formation() const {
return _formation;
}
void EntityData::set_formation(const Ref<AIFormation> data) {
void EntityData::set_formation(const Ref<AIFormation> &data) {
_formation = data;
}
Ref<LootDataBase> EntityData::get_loot_db() const {
return _lootdb;
}
void EntityData::set_loot_db(const Ref<LootDataBase> lootdb) {
void EntityData::set_loot_db(const Ref<LootDataBase> &lootdb) {
_lootdb = lootdb;
}
@ -168,10 +168,21 @@ Ref<VendorItemData> EntityData::get_vendor_item_data() const {
return _vendor_item_data;
}
void EntityData::set_vendor_item_data(const Ref<VendorItemData> data) {
void EntityData::set_vendor_item_data(const Ref<VendorItemData> &data) {
_vendor_item_data = data;
}
Ref<VendorItemData> EntityData::get_spell_train_data() const {
if (!_spell_train_data.is_valid() && _inherits.is_valid()) {
return _inherits->get_spell_train_data();
}
return _spell_train_data;
}
void EntityData::set_spell_train_data(const Ref<VendorItemData> &data) {
_spell_train_data = data;
}
Ref<ItemContainerData> EntityData::get_item_container_data() const {
if (!_vendor_item_data.is_valid() && _inherits.is_valid()) {
return _inherits->get_item_container_data();
@ -179,7 +190,7 @@ Ref<ItemContainerData> EntityData::get_item_container_data() const {
return _item_container_data;
}
void EntityData::set_item_container_data(const Ref<ItemContainerData> data) {
void EntityData::set_item_container_data(const Ref<ItemContainerData> &data) {
_item_container_data = data;
}
@ -193,7 +204,7 @@ Ref<CraftRecipe> EntityData::get_craft_recipe(int index) {
return _craft_recipes[index];
}
void EntityData::set_craft_recipe(int index, Ref<CraftRecipe> craft_data) {
void EntityData::set_craft_recipe(int index, const Ref<CraftRecipe> &craft_data) {
ERR_FAIL_INDEX(index, _craft_recipes.size());
_craft_recipes.set(index, craft_data);
@ -645,7 +656,6 @@ void EntityData::son_entity_resource_added(Ref<EntityResource> resource) {
call("_son_entity_resource_added", resource);
}
void EntityData::son_entity_resource_removed(Ref<EntityResource> resource) {
if (_entity_class_data.is_valid()) {
_entity_class_data->son_entity_resource_removed(resource);
@ -922,7 +932,6 @@ void EntityData::con_entity_resource_added(Ref<EntityResource> resource) {
call("_con_entity_resource_added", resource);
}
void EntityData::con_entity_resource_removed(Ref<EntityResource> resource) {
if (_entity_class_data.is_valid()) {
_entity_class_data->con_entity_resource_removed(resource);
@ -932,7 +941,6 @@ void EntityData::con_entity_resource_removed(Ref<EntityResource> resource) {
call("_con_entity_resource_removed", resource);
}
//Equipment
bool EntityData::should_deny_equip(Entity *entity, ItemEnums::EquipSlots equip_slot, Ref<ItemInstance> item) {
@ -1047,6 +1055,7 @@ EntityData::~EntityData() {
_lootdb.unref();
_vendor_item_data.unref();
_spell_train_data.unref();
_item_container_data.unref();
_craft_recipes.clear();
@ -1284,10 +1293,14 @@ 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");
//EntityData
//Vendor
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, "EntityData"), "set_vendor_item_data", "get_vendor_item_data");
ADD_PROPERTY(PropertyInfo(Variant::OBJECT, "vendor_item_data", PROPERTY_HINT_RESOURCE_TYPE, "VendorItemData"), "set_vendor_item_data", "get_vendor_item_data");
ClassDB::bind_method(D_METHOD("get_spell_train_data"), &EntityData::get_spell_train_data);
ClassDB::bind_method(D_METHOD("set_spell_train_data", "value"), &EntityData::set_spell_train_data);
ADD_PROPERTY(PropertyInfo(Variant::OBJECT, "spell_train_data", PROPERTY_HINT_RESOURCE_TYPE, "VendorItemData"), "set_spell_train_data", "get_spell_train_data");
//ItemContainerData
ClassDB::bind_method(D_METHOD("get_item_container_data"), &EntityData::get_item_container_data);

View File

@ -109,22 +109,25 @@ public:
Ref<EntityAI> _get_ai_instance();
Ref<AIFormation> get_formation() const;
void set_formation(const Ref<AIFormation> data);
void set_formation(const Ref<AIFormation> &data);
Ref<LootDataBase> get_loot_db() const;
void set_loot_db(const Ref<LootDataBase> data);
void set_loot_db(const Ref<LootDataBase> &data);
Ref<VendorItemData> get_vendor_item_data() const;
void set_vendor_item_data(const Ref<VendorItemData> data);
void set_vendor_item_data(const Ref<VendorItemData> &data);
Ref<VendorItemData> get_spell_train_data() const;
void set_spell_train_data(const Ref<VendorItemData> &data);
Ref<ItemContainerData> get_item_container_data() const;
void set_item_container_data(const Ref<ItemContainerData> data);
void set_item_container_data(const Ref<ItemContainerData> &data);
//Craft Recipes
int get_num_craft_recipes() const;
Ref<CraftRecipe> get_craft_recipe(int index);
void set_craft_recipe(int index, Ref<CraftRecipe> recipe);
void set_craft_recipe(int index, const Ref<CraftRecipe> &recipe);
Vector<Variant> get_craft_recipes() const;
void set_craft_recipes(const Vector<Variant> &recipe);
@ -280,6 +283,7 @@ private:
Ref<LootDataBase> _lootdb;
Ref<VendorItemData> _vendor_item_data;
Ref<VendorItemData> _spell_train_data;
Ref<ItemContainerData> _item_container_data;
Vector<Ref<CraftRecipe> > _craft_recipes;
};

View File

@ -25,9 +25,6 @@ SOFTWARE.
int VendorItemData::get_num_vendor_datas() {
return _vendor_datas.size();
}
void VendorItemData::set_num_vendor_datas(int value) {
_vendor_datas.resize(value);
}
Ref<VendorItemDataEntry> VendorItemData::get_vendor_data(int index) {
ERR_FAIL_INDEX_V(index, _vendor_datas.size(), Ref<VendorItemDataEntry>());
@ -64,8 +61,6 @@ VendorItemData::~VendorItemData() {
void VendorItemData::_bind_methods() {
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);

View File

@ -33,7 +33,6 @@ class VendorItemData : public Resource {
public:
//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);
@ -48,7 +47,7 @@ protected:
static void _bind_methods();
private:
Vector<Ref<VendorItemData> > _vendor_datas;
Vector<Ref<VendorItemDataEntry> > _vendor_datas;
};
#endif

View File

@ -23,41 +23,59 @@ SOFTWARE.
#include "vendor_item_data.h"
#include "../../data/items/item_template.h"
#include "../../data/spells/spell.h"
Ref<ItemTemplate> VendorItemDataEntry::get_item() {
return _item;
}
void VendorItemDataEntry::set_item(Ref<ItemTemplate> item) {
void VendorItemDataEntry::set_item(const Ref<ItemTemplate> &item) {
_item = item;
}
int VendorItemDataEntry::get_item_price() const {
return _item_price;
Ref<Spell> VendorItemDataEntry::get_spell() {
return _spell;
}
void VendorItemDataEntry::set_item_price(int value) {
_item_price = value;
void VendorItemDataEntry::set_spell(const Ref<Spell> &spell) {
_spell = spell;
}
int VendorItemDataEntry::get_item_count() const {
return _item_count;
Ref<ItemTemplate> VendorItemDataEntry::get_cost_item() {
return _cost_item;
}
void VendorItemDataEntry::set_item_count(int value) {
_item_count = value;
void VendorItemDataEntry::set_cost_item(const Ref<ItemTemplate> &item) {
_cost_item = item;
}
int VendorItemDataEntry::get_item_spawn_time() const {
return _item_spawn_time;
int VendorItemDataEntry::get_price() const {
return _price;
}
void VendorItemDataEntry::set_item_spawn_time(int value) {
_item_spawn_time = value;
void VendorItemDataEntry::set_price(const int value) {
_price = value;
}
int VendorItemDataEntry::get_count() const {
return _count;
}
void VendorItemDataEntry::set_count(const int value) {
_count = value;
}
int VendorItemDataEntry::get_spawn_time() const {
return _spawn_time;
}
void VendorItemDataEntry::set_spawn_time(const int value) {
_spawn_time = value;
}
VendorItemDataEntry::VendorItemDataEntry() {
_item_price = 0;
_item_count = 0;
_item_spawn_time = 0;
_price = 0;
_count = 0;
_spawn_time = 0;
}
VendorItemDataEntry::~VendorItemDataEntry() {
_item.unref();
_spell.unref();
_cost_item.unref();
}
void VendorItemDataEntry::_bind_methods() {
@ -65,15 +83,23 @@ void VendorItemDataEntry::_bind_methods() {
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_spell"), &VendorItemDataEntry::get_spell);
ClassDB::bind_method(D_METHOD("set_spell", "item"), &VendorItemDataEntry::set_spell);
ADD_PROPERTY(PropertyInfo(Variant::OBJECT, "spell", PROPERTY_HINT_RESOURCE_TYPE, "Spell"), "set_spell", "get_spell");
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_cost_item"), &VendorItemDataEntry::get_cost_item);
ClassDB::bind_method(D_METHOD("set_cost_item", "item"), &VendorItemDataEntry::set_cost_item);
ADD_PROPERTY(PropertyInfo(Variant::OBJECT, "cost_item", PROPERTY_HINT_RESOURCE_TYPE, "ItemTemplate"), "set_cost_item", "get_cost_item");
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");
ClassDB::bind_method(D_METHOD("get_price"), &VendorItemDataEntry::get_price);
ClassDB::bind_method(D_METHOD("set_price", "value"), &VendorItemDataEntry::set_price);
ADD_PROPERTY(PropertyInfo(Variant::INT, "price"), "set_price", "get_price");
ClassDB::bind_method(D_METHOD("get_count"), &VendorItemDataEntry::get_count);
ClassDB::bind_method(D_METHOD("set_count", "value"), &VendorItemDataEntry::set_count);
ADD_PROPERTY(PropertyInfo(Variant::INT, "count"), "set_count", "get_count");
ClassDB::bind_method(D_METHOD("get_spawn_time"), &VendorItemDataEntry::get_spawn_time);
ClassDB::bind_method(D_METHOD("set_spawn_time", "value"), &VendorItemDataEntry::set_spawn_time);
ADD_PROPERTY(PropertyInfo(Variant::INT, "spawn_time"), "set_spawn_time", "get_spawn_time");
}

View File

@ -26,22 +26,29 @@ SOFTWARE.
#include "core/resource.h"
class ItemTemplate;
class Spell;
class VendorItemDataEntry : public Resource {
GDCLASS(VendorItemDataEntry, Resource);
public:
Ref<ItemTemplate> get_item();
void set_item(Ref<ItemTemplate> item);
void set_item(const Ref<ItemTemplate> &item);
int get_item_price() const;
void set_item_price(int value);
Ref<Spell> get_spell();
void set_spell(const Ref<Spell> &spell);
int get_item_count() const;
void set_item_count(int value);
Ref<ItemTemplate> get_cost_item();
void set_cost_item(const Ref<ItemTemplate> &item);
int get_item_spawn_time() const;
void set_item_spawn_time(int time);
int get_price() const;
void set_price(const int value);
int get_count() const;
void set_count(const int value);
int get_spawn_time() const;
void set_spawn_time(const int time);
VendorItemDataEntry();
~VendorItemDataEntry();
@ -51,9 +58,12 @@ protected:
private:
Ref<ItemTemplate> _item;
int _item_price;
int _item_count;
int _item_spawn_time;
Ref<Spell> _spell;
Ref<ItemTemplate> _cost_item;
int _price;
int _count;
int _spawn_time;
};
#endif