Restored EquipmentDataEntry.

This commit is contained in:
Relintai 2019-10-24 22:25:25 +02:00
parent be520eb184
commit 82893c5a61
5 changed files with 60 additions and 15 deletions

View File

@ -1,14 +1,11 @@
#include "equipment_data.h"
#include "item_template.h"
#include "item_instance.h"
Ref<ItemTemplate> EquipmentData::get_slot(int index) {
ERR_FAIL_INDEX_V(index, ItemEnums::EQUIP_SLOT_EQUIP_SLOT_MAX, Ref<ItemTemplate>());
Ref<EquipmentDataEntry> EquipmentData::get_slot(int index) {
ERR_FAIL_INDEX_V(index, ItemEnums::EQUIP_SLOT_EQUIP_SLOT_MAX, Ref<EquipmentDataEntry>());
return _entries[index];
}
void EquipmentData::set_slot(int index, Ref<ItemTemplate> entry) {
void EquipmentData::set_slot(int index, Ref<EquipmentDataEntry> 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<ItemTemplate> entry) {
Ref<ItemInstance> EquipmentData::get_item(int index) {
ERR_FAIL_INDEX_V(index, ItemEnums::EQUIP_SLOT_EQUIP_SLOT_MAX, Ref<ItemInstance>());
Ref<ItemTemplate> ede = _entries[index];
Ref<EquipmentDataEntry> ede = _entries[index];
if (!ede.is_valid())
return Ref<ItemInstance>();
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);
}
}

View File

@ -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<ItemTemplate> get_slot(int index);
void set_slot(int index, Ref<ItemTemplate> entry);
Ref<EquipmentDataEntry> get_slot(int index);
void set_slot(int index, Ref<EquipmentDataEntry> entry);
Ref<ItemInstance> get_item(int index);
@ -24,7 +22,7 @@ protected:
static void _bind_methods();
private:
Ref<ItemTemplate> _entries[ItemEnums::EQUIP_SLOT_EQUIP_SLOT_MAX];
Ref<EquipmentDataEntry> _entries[ItemEnums::EQUIP_SLOT_EQUIP_SLOT_MAX];
};
#endif

View File

@ -0,0 +1,23 @@
#include "equipment_data_entry.h"
Ref<ItemInstance> EquipmentDataEntry::get_item() {
if (has_method("_get_item")) {
return call("_get_item");
}
return Ref<ItemInstance>();
}
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);
}

View File

@ -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<ItemInstance> get_item();
EquipmentDataEntry();
~EquipmentDataEntry();
protected:
static void _bind_methods();
//private:
};
#endif

View File

@ -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<TalentRowData>();
ClassDB::register_class<EquipmentData>();
ClassDB::register_class<EquipmentDataEntry>();
ClassDB::register_class<EntitySkill>();