mirror of
https://github.com/Relintai/entity_spell_system.git
synced 2025-04-19 21:33:15 +02:00
EquipSlots are now customizable from the ProjectSettings.
This commit is contained in:
parent
d20419621d
commit
b1efeb662a
1
SCsub
1
SCsub
@ -24,7 +24,6 @@ sources = [
|
||||
"data/items/item_instance.cpp",
|
||||
"data/items/item_template.cpp",
|
||||
"data/items/equipment_data.cpp",
|
||||
"data/items/equipment_data_entry.cpp",
|
||||
"data/items/craft_recipe_helper.cpp",
|
||||
"data/items/craft_recipe.cpp",
|
||||
"data/items/item_visual.cpp",
|
||||
|
@ -21,7 +21,6 @@ def get_doc_classes():
|
||||
"Aura",
|
||||
"CraftRecipeHelper",
|
||||
"CraftRecipe",
|
||||
"EquipmentDataEntry",
|
||||
"EquipmentData",
|
||||
"ItemInstance",
|
||||
"ItemStatModifier",
|
||||
|
@ -799,7 +799,7 @@ void Aura::notification_centity_resource_removed(Ref<AuraData> data, Ref<EntityR
|
||||
|
||||
//Equipment
|
||||
|
||||
bool Aura::equip_should_deny(Ref<AuraData> data, ItemEnums::EquipSlots equip_slot, Ref<ItemInstance> item) {
|
||||
bool Aura::equip_should_deny(Ref<AuraData> data, int equip_slot, Ref<ItemInstance> item) {
|
||||
ERR_FAIL_COND_V(!data.is_valid(), false);
|
||||
|
||||
if (has_method("_equip_should_deny"))
|
||||
@ -809,26 +809,26 @@ bool Aura::equip_should_deny(Ref<AuraData> data, ItemEnums::EquipSlots equip_slo
|
||||
return false;
|
||||
}
|
||||
|
||||
void Aura::equip_son_success(Ref<AuraData> data, ItemEnums::EquipSlots equip_slot, Ref<ItemInstance> item, Ref<ItemInstance> old_item, int bag_slot) {
|
||||
void Aura::equip_son_success(Ref<AuraData> data, int equip_slot, Ref<ItemInstance> item, Ref<ItemInstance> old_item, int bag_slot) {
|
||||
ERR_FAIL_COND(!data.is_valid());
|
||||
|
||||
if (has_method("_equip_son_success"))
|
||||
call("_equip_son_success", data, equip_slot, item, old_item, bag_slot);
|
||||
}
|
||||
void Aura::equip_son_fail(Ref<AuraData> data, ItemEnums::EquipSlots equip_slot, Ref<ItemInstance> item, Ref<ItemInstance> old_item, int bag_slot) {
|
||||
void Aura::equip_son_fail(Ref<AuraData> data, int equip_slot, Ref<ItemInstance> item, Ref<ItemInstance> old_item, int bag_slot) {
|
||||
ERR_FAIL_COND(!data.is_valid());
|
||||
|
||||
if (has_method("_equip_son_fail"))
|
||||
call("_equip_son_fail", data, equip_slot, item, old_item, bag_slot);
|
||||
}
|
||||
|
||||
void Aura::equip_con_success(Ref<AuraData> data, ItemEnums::EquipSlots equip_slot, Ref<ItemInstance> item, Ref<ItemInstance> old_item, int bag_slot) {
|
||||
void Aura::equip_con_success(Ref<AuraData> data, int equip_slot, Ref<ItemInstance> item, Ref<ItemInstance> old_item, int bag_slot) {
|
||||
ERR_FAIL_COND(!data.is_valid());
|
||||
|
||||
if (has_method("_equip_con_success"))
|
||||
call("_equip_con_success", data, equip_slot, item, old_item, bag_slot);
|
||||
}
|
||||
void Aura::equip_con_fail(Ref<AuraData> data, ItemEnums::EquipSlots equip_slot, Ref<ItemInstance> item, Ref<ItemInstance> old_item, int bag_slot) {
|
||||
void Aura::equip_con_fail(Ref<AuraData> data, int equip_slot, Ref<ItemInstance> item, Ref<ItemInstance> old_item, int bag_slot) {
|
||||
ERR_FAIL_COND(!data.is_valid());
|
||||
|
||||
if (has_method("_equip_con_fail"))
|
||||
|
@ -304,13 +304,13 @@ public:
|
||||
void notification_centity_resource_removed(Ref<AuraData> data, Ref<EntityResource> resource);
|
||||
|
||||
//Equipment
|
||||
bool equip_should_deny(Ref<AuraData> data, ItemEnums::EquipSlots equip_slot, Ref<ItemInstance> item);
|
||||
bool equip_should_deny(Ref<AuraData> data, int equip_slot, Ref<ItemInstance> item);
|
||||
|
||||
void equip_son_success(Ref<AuraData> data, ItemEnums::EquipSlots equip_slot, Ref<ItemInstance> item, Ref<ItemInstance> old_item, int bag_slot);
|
||||
void equip_son_fail(Ref<AuraData> data, ItemEnums::EquipSlots equip_slot, Ref<ItemInstance> item, Ref<ItemInstance> old_item, int bag_slot);
|
||||
void equip_son_success(Ref<AuraData> data, int equip_slot, Ref<ItemInstance> item, Ref<ItemInstance> old_item, int bag_slot);
|
||||
void equip_son_fail(Ref<AuraData> data, int equip_slot, Ref<ItemInstance> item, Ref<ItemInstance> old_item, int bag_slot);
|
||||
|
||||
void equip_con_success(Ref<AuraData> data, ItemEnums::EquipSlots equip_slot, Ref<ItemInstance> item, Ref<ItemInstance> old_item, int bag_slot);
|
||||
void equip_con_fail(Ref<AuraData> data, ItemEnums::EquipSlots equip_slot, Ref<ItemInstance> item, Ref<ItemInstance> old_item, int bag_slot);
|
||||
void equip_con_success(Ref<AuraData> data, int equip_slot, Ref<ItemInstance> item, Ref<ItemInstance> old_item, int bag_slot);
|
||||
void equip_con_fail(Ref<AuraData> data, int equip_slot, Ref<ItemInstance> item, Ref<ItemInstance> old_item, int bag_slot);
|
||||
|
||||
//Calculations / Queries
|
||||
void setup_aura_data(Ref<AuraData> data, Ref<AuraApplyInfo> info);
|
||||
|
@ -22,42 +22,100 @@ SOFTWARE.
|
||||
|
||||
#include "equipment_data.h"
|
||||
|
||||
Ref<EquipmentDataEntry> EquipmentData::get_slot(int index) {
|
||||
ERR_FAIL_INDEX_V(index, ItemEnums::EQUIP_SLOT_EQUIP_SLOT_MAX, Ref<EquipmentDataEntry>());
|
||||
#include "item_instance.h"
|
||||
#include "item_template.h"
|
||||
|
||||
#include "../../singletons/ess.h"
|
||||
|
||||
Ref<ItemTemplate> EquipmentData::get_slot(int index) {
|
||||
ERR_FAIL_INDEX_V(index, ESS::get_instance()->equip_slot_get_count(), Ref<ItemTemplate>());
|
||||
|
||||
return _entries[index];
|
||||
}
|
||||
void EquipmentData::set_slot(int index, Ref<EquipmentDataEntry> entry) {
|
||||
ERR_FAIL_INDEX(index, ItemEnums::EQUIP_SLOT_EQUIP_SLOT_MAX);
|
||||
void EquipmentData::set_slot(int index, Ref<ItemTemplate> entry) {
|
||||
ERR_FAIL_INDEX(index, ESS::get_instance()->equip_slot_get_count());
|
||||
|
||||
_entries[index] = entry;
|
||||
_entries.write[index] = entry;
|
||||
}
|
||||
|
||||
Ref<ItemInstance> EquipmentData::get_item(int index) {
|
||||
ERR_FAIL_INDEX_V(index, ItemEnums::EQUIP_SLOT_EQUIP_SLOT_MAX, Ref<ItemInstance>());
|
||||
ERR_FAIL_INDEX_V(index, ESS::get_instance()->equip_slot_get_count(), Ref<ItemInstance>());
|
||||
|
||||
Ref<EquipmentDataEntry> ede = _entries[index];
|
||||
Ref<ItemTemplate> ede = _entries[index];
|
||||
|
||||
if (!ede.is_valid())
|
||||
return Ref<ItemInstance>();
|
||||
|
||||
return ede->get_item();
|
||||
return ede->create_item_instance();
|
||||
}
|
||||
|
||||
EquipmentData::EquipmentData() {
|
||||
_entries.resize(ESS::get_instance()->equip_slot_get_count());
|
||||
}
|
||||
|
||||
EquipmentData::~EquipmentData() {
|
||||
for (int i = 0; i < ItemEnums::EQUIP_SLOT_EQUIP_SLOT_MAX; ++i)
|
||||
_entries[i].unref();
|
||||
_entries.clear();
|
||||
}
|
||||
|
||||
bool EquipmentData::_set(const StringName &p_name, const Variant &p_value) {
|
||||
String name = p_name;
|
||||
|
||||
if (name.get_slicec('/', 0) == "slot") {
|
||||
StringName prop = name.get_slicec('/', 1);
|
||||
|
||||
if (ESS::get_instance()->equip_slot_is_property(prop)) {
|
||||
int id = ESS::get_instance()->equip_slot_get_property_id(prop);
|
||||
|
||||
if (_entries.size() < id) {
|
||||
return false;
|
||||
}
|
||||
|
||||
_entries.set(id, p_value);
|
||||
|
||||
return true;
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
bool EquipmentData::_get(const StringName &p_name, Variant &r_ret) const {
|
||||
String name = p_name;
|
||||
|
||||
if (name.get_slicec('/', 0) == "slot") {
|
||||
StringName prop = name.get_slicec('/', 1);
|
||||
|
||||
if (ESS::get_instance()->equip_slot_is_property(prop)) {
|
||||
int id = ESS::get_instance()->equip_slot_get_property_id(prop);
|
||||
|
||||
if (_entries.size() < id) {
|
||||
return false;
|
||||
}
|
||||
|
||||
r_ret = _entries[id];
|
||||
|
||||
return true;
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
void EquipmentData::_get_property_list(List<PropertyInfo> *p_list) const {
|
||||
for (int i = 0; i < ESS::get_instance()->equip_slot_get_count(); ++i) {
|
||||
p_list->push_back(PropertyInfo(Variant::OBJECT, "slot/" + ESS::get_instance()->equip_slot_get_property_name(i), PROPERTY_HINT_RESOURCE_TYPE, "ItemTemplate"));
|
||||
}
|
||||
}
|
||||
|
||||
void EquipmentData::_bind_methods() {
|
||||
ClassDB::bind_method(D_METHOD("get_slot", "index"), &EquipmentData::get_slot);
|
||||
ClassDB::bind_method(D_METHOD("set_slot", "index", "entry"), &EquipmentData::set_slot);
|
||||
|
||||
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, "EquipmentDataEntry"), "set_slot", "get_slot", i);
|
||||
}
|
||||
}
|
||||
|
@ -25,15 +25,15 @@ SOFTWARE.
|
||||
|
||||
#include "core/resource.h"
|
||||
|
||||
#include "../../item_enums.h"
|
||||
#include "equipment_data_entry.h"
|
||||
class ItemInstance;
|
||||
class ItemTemplate;
|
||||
|
||||
class EquipmentData : public Resource {
|
||||
GDCLASS(EquipmentData, Resource);
|
||||
|
||||
public:
|
||||
Ref<EquipmentDataEntry> get_slot(int index);
|
||||
void set_slot(int index, Ref<EquipmentDataEntry> entry);
|
||||
Ref<ItemTemplate> get_slot(int index);
|
||||
void set_slot(int index, Ref<ItemTemplate> entry);
|
||||
|
||||
Ref<ItemInstance> get_item(int index);
|
||||
|
||||
@ -41,10 +41,13 @@ public:
|
||||
~EquipmentData();
|
||||
|
||||
protected:
|
||||
bool _set(const StringName &p_name, const Variant &p_value);
|
||||
bool _get(const StringName &p_name, Variant &r_ret) const;
|
||||
void _get_property_list(List<PropertyInfo> *p_list) const;
|
||||
static void _bind_methods();
|
||||
|
||||
private:
|
||||
Ref<EquipmentDataEntry> _entries[ItemEnums::EQUIP_SLOT_EQUIP_SLOT_MAX];
|
||||
Vector<Ref<ItemTemplate> > _entries;
|
||||
};
|
||||
|
||||
#endif
|
||||
|
@ -1,43 +0,0 @@
|
||||
/*
|
||||
Copyright (c) 2019-2020 Péter Magyar
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
in the Software without restriction, including without limitation the rights
|
||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the Software is
|
||||
furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in all
|
||||
copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
SOFTWARE.
|
||||
*/
|
||||
|
||||
#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);
|
||||
}
|
@ -1,47 +0,0 @@
|
||||
/*
|
||||
Copyright (c) 2019-2020 Péter Magyar
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
in the Software without restriction, including without limitation the rights
|
||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the Software is
|
||||
furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in all
|
||||
copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
SOFTWARE.
|
||||
*/
|
||||
|
||||
#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
|
@ -73,10 +73,10 @@ void ItemTemplate::set_armor_type(const ItemEnums::ArmorType value) {
|
||||
_armor_type = value;
|
||||
}
|
||||
|
||||
ItemEnums::EquipSlots ItemTemplate::get_equip_slot() const {
|
||||
int ItemTemplate::get_equip_slot() const {
|
||||
return _equip_slot;
|
||||
}
|
||||
void ItemTemplate::set_equip_slot(const ItemEnums::EquipSlots value) {
|
||||
void ItemTemplate::set_equip_slot(const int value) {
|
||||
_equip_slot = value;
|
||||
}
|
||||
|
||||
@ -461,7 +461,7 @@ ItemTemplate::ItemTemplate() {
|
||||
_item_sub_sub_type = ItemEnums::ITEM_SUB_SUB_TYPE_NONE;
|
||||
_rarity = ItemEnums::ITEM_RARITY_NONE;
|
||||
_armor_type = ItemEnums::ARMOR_TYPE_NONE;
|
||||
_equip_slot = ItemEnums::EQUIP_SLOT_NONE;
|
||||
_equip_slot = ESS::get_instance()->equip_slot_get_count();
|
||||
_price = 0;
|
||||
|
||||
_scale_x = 0;
|
||||
@ -497,6 +497,8 @@ void ItemTemplate::_validate_property(PropertyInfo &property) const {
|
||||
|
||||
if (property.name.ends_with("stat_id"))
|
||||
property.hint_string = ESS::get_instance()->stat_get_string();
|
||||
} else if (prop == "equip_slot") {
|
||||
property.hint_string = ESS::get_instance()->equip_slot_get_string();
|
||||
}
|
||||
}
|
||||
|
||||
@ -531,7 +533,7 @@ void ItemTemplate::_bind_methods() {
|
||||
|
||||
ClassDB::bind_method(D_METHOD("get_equip_slot"), &ItemTemplate::get_equip_slot);
|
||||
ClassDB::bind_method(D_METHOD("set_equip_slot", "count"), &ItemTemplate::set_equip_slot);
|
||||
ADD_PROPERTY(PropertyInfo(Variant::INT, "equip_slot", PROPERTY_HINT_ENUM, ItemEnums::BINDING_STRING_EQUIP_SLOTS), "set_equip_slot", "get_equip_slot");
|
||||
ADD_PROPERTY(PropertyInfo(Variant::INT, "equip_slot", PROPERTY_HINT_ENUM, ""), "set_equip_slot", "get_equip_slot");
|
||||
|
||||
ClassDB::bind_method(D_METHOD("get_price"), &ItemTemplate::get_price);
|
||||
ClassDB::bind_method(D_METHOD("set_price", "count"), &ItemTemplate::set_price);
|
||||
|
@ -58,8 +58,8 @@ public:
|
||||
ItemEnums::ArmorType get_armor_type() const;
|
||||
void set_armor_type(const ItemEnums::ArmorType value);
|
||||
|
||||
ItemEnums::EquipSlots get_equip_slot() const;
|
||||
void set_equip_slot(const ItemEnums::EquipSlots value);
|
||||
int get_equip_slot() const;
|
||||
void set_equip_slot(const int value);
|
||||
|
||||
Ref<ItemVisual> get_item_visual() const;
|
||||
void set_item_visual(const Ref<ItemVisual> &value);
|
||||
@ -195,7 +195,7 @@ private:
|
||||
ItemEnums::ItemSubtype _item_sub_type;
|
||||
ItemEnums::ItemSubSubtype _item_sub_sub_type;
|
||||
ItemEnums::ArmorType _armor_type;
|
||||
ItemEnums::EquipSlots _equip_slot;
|
||||
int _equip_slot;
|
||||
|
||||
int _price;
|
||||
|
||||
|
@ -1,26 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8" ?>
|
||||
<class name="EquipmentDataEntry" inherits="Resource" version="3.2">
|
||||
<brief_description>
|
||||
Stores equipment information.
|
||||
</brief_description>
|
||||
<description>
|
||||
</description>
|
||||
<tutorials>
|
||||
</tutorials>
|
||||
<methods>
|
||||
<method name="_get_item" qualifiers="virtual">
|
||||
<return type="ItemInstance">
|
||||
</return>
|
||||
<description>
|
||||
</description>
|
||||
</method>
|
||||
<method name="get_item">
|
||||
<return type="ItemInstance">
|
||||
</return>
|
||||
<description>
|
||||
</description>
|
||||
</method>
|
||||
</methods>
|
||||
<constants>
|
||||
</constants>
|
||||
</class>
|
@ -732,14 +732,14 @@ void EntityClassData::notification_centity_resource_removed(Ref<EntityResource>
|
||||
|
||||
//Equipment
|
||||
|
||||
bool EntityClassData::equip_should_deny(Entity *entity, ItemEnums::EquipSlots equip_slot, Ref<ItemInstance> item) {
|
||||
bool EntityClassData::equip_should_deny(Entity *entity, int equip_slot, Ref<ItemInstance> item) {
|
||||
if (has_method("_equip_should_deny"))
|
||||
if (call("_equip_should_deny", entity, equip_slot, item))
|
||||
return true;
|
||||
|
||||
return false;
|
||||
}
|
||||
bool EntityClassData::equip_should_deny_bind(Node *entity, ItemEnums::EquipSlots equip_slot, Ref<ItemInstance> item) {
|
||||
bool EntityClassData::equip_should_deny_bind(Node *entity, int equip_slot, Ref<ItemInstance> item) {
|
||||
#if VERSION_MAJOR < 4
|
||||
ERR_FAIL_COND_V(!ObjectDB::instance_validate(entity), false);
|
||||
#else
|
||||
@ -753,11 +753,11 @@ bool EntityClassData::equip_should_deny_bind(Node *entity, ItemEnums::EquipSlots
|
||||
return equip_should_deny(e, equip_slot, item);
|
||||
}
|
||||
|
||||
void EntityClassData::equip_son_success(Entity *entity, ItemEnums::EquipSlots equip_slot, Ref<ItemInstance> item, Ref<ItemInstance> old_item, int bag_slot) {
|
||||
void EntityClassData::equip_son_success(Entity *entity, int equip_slot, Ref<ItemInstance> item, Ref<ItemInstance> old_item, int bag_slot) {
|
||||
if (has_method("_equip_son_success"))
|
||||
call("_equip_son_success", entity, equip_slot, item, old_item, bag_slot);
|
||||
}
|
||||
void EntityClassData::equip_son_success_bind(Node *entity, ItemEnums::EquipSlots equip_slot, Ref<ItemInstance> item, Ref<ItemInstance> old_item, int bag_slot) {
|
||||
void EntityClassData::equip_son_success_bind(Node *entity, int equip_slot, Ref<ItemInstance> item, Ref<ItemInstance> old_item, int bag_slot) {
|
||||
#if VERSION_MAJOR < 4
|
||||
ERR_FAIL_COND(!ObjectDB::instance_validate(entity));
|
||||
#else
|
||||
@ -771,11 +771,11 @@ void EntityClassData::equip_son_success_bind(Node *entity, ItemEnums::EquipSlots
|
||||
equip_son_success(e, equip_slot, item, old_item, bag_slot);
|
||||
}
|
||||
|
||||
void EntityClassData::equip_son_fail(Entity *entity, ItemEnums::EquipSlots equip_slot, Ref<ItemInstance> item, Ref<ItemInstance> old_item, int bag_slot) {
|
||||
void EntityClassData::equip_son_fail(Entity *entity, int equip_slot, Ref<ItemInstance> item, Ref<ItemInstance> old_item, int bag_slot) {
|
||||
if (has_method("_equip_son_fail"))
|
||||
call("_equip_son_fail", entity, equip_slot, item, old_item, bag_slot);
|
||||
}
|
||||
void EntityClassData::equip_son_fail_bind(Node *entity, ItemEnums::EquipSlots equip_slot, Ref<ItemInstance> item, Ref<ItemInstance> old_item, int bag_slot) {
|
||||
void EntityClassData::equip_son_fail_bind(Node *entity, int equip_slot, Ref<ItemInstance> item, Ref<ItemInstance> old_item, int bag_slot) {
|
||||
#if VERSION_MAJOR < 4
|
||||
ERR_FAIL_COND(!ObjectDB::instance_validate(entity));
|
||||
#else
|
||||
@ -789,11 +789,11 @@ void EntityClassData::equip_son_fail_bind(Node *entity, ItemEnums::EquipSlots eq
|
||||
equip_son_fail(e, equip_slot, item, old_item, bag_slot);
|
||||
}
|
||||
|
||||
void EntityClassData::equip_con_success(Entity *entity, ItemEnums::EquipSlots equip_slot, Ref<ItemInstance> item, Ref<ItemInstance> old_item, int bag_slot) {
|
||||
void EntityClassData::equip_con_success(Entity *entity, int equip_slot, Ref<ItemInstance> item, Ref<ItemInstance> old_item, int bag_slot) {
|
||||
if (has_method("_equip_con_success"))
|
||||
call("_equip_con_success", entity, equip_slot, item, old_item, bag_slot);
|
||||
}
|
||||
void EntityClassData::equip_con_success_bind(Node *entity, ItemEnums::EquipSlots equip_slot, Ref<ItemInstance> item, Ref<ItemInstance> old_item, int bag_slot) {
|
||||
void EntityClassData::equip_con_success_bind(Node *entity, int equip_slot, Ref<ItemInstance> item, Ref<ItemInstance> old_item, int bag_slot) {
|
||||
#if VERSION_MAJOR < 4
|
||||
ERR_FAIL_COND(!ObjectDB::instance_validate(entity));
|
||||
#else
|
||||
@ -807,11 +807,11 @@ void EntityClassData::equip_con_success_bind(Node *entity, ItemEnums::EquipSlots
|
||||
equip_con_success(e, equip_slot, item, old_item, bag_slot);
|
||||
}
|
||||
|
||||
void EntityClassData::equip_con_fail(Entity *entity, ItemEnums::EquipSlots equip_slot, Ref<ItemInstance> item, Ref<ItemInstance> old_item, int bag_slot) {
|
||||
void EntityClassData::equip_con_fail(Entity *entity, int equip_slot, Ref<ItemInstance> item, Ref<ItemInstance> old_item, int bag_slot) {
|
||||
if (has_method("_equip_con_fail"))
|
||||
call("_equip_con_fail", entity, equip_slot, item, old_item, bag_slot);
|
||||
}
|
||||
void EntityClassData::equip_con_fail_bind(Node *entity, ItemEnums::EquipSlots equip_slot, Ref<ItemInstance> item, Ref<ItemInstance> old_item, int bag_slot) {
|
||||
void EntityClassData::equip_con_fail_bind(Node *entity, int equip_slot, Ref<ItemInstance> item, Ref<ItemInstance> old_item, int bag_slot) {
|
||||
#if VERSION_MAJOR < 4
|
||||
ERR_FAIL_COND(!ObjectDB::instance_validate(entity));
|
||||
#else
|
||||
|
@ -204,18 +204,18 @@ public:
|
||||
|
||||
//Equipment
|
||||
|
||||
bool equip_should_deny(Entity *entity, ItemEnums::EquipSlots equip_slot, Ref<ItemInstance> item);
|
||||
bool equip_should_deny_bind(Node *entity, ItemEnums::EquipSlots equip_slot, Ref<ItemInstance> item);
|
||||
bool equip_should_deny(Entity *entity, int equip_slot, Ref<ItemInstance> item);
|
||||
bool equip_should_deny_bind(Node *entity, int equip_slot, Ref<ItemInstance> item);
|
||||
|
||||
void equip_son_success(Entity *entity, ItemEnums::EquipSlots equip_slot, Ref<ItemInstance> item, Ref<ItemInstance> old_item, int bag_slot);
|
||||
void equip_son_success_bind(Node *entity, ItemEnums::EquipSlots equip_slot, Ref<ItemInstance> item, Ref<ItemInstance> old_item, int bag_slot);
|
||||
void equip_son_fail(Entity *entity, ItemEnums::EquipSlots equip_slot, Ref<ItemInstance> item, Ref<ItemInstance> old_item, int bag_slot);
|
||||
void equip_son_fail_bind(Node *entity, ItemEnums::EquipSlots equip_slot, Ref<ItemInstance> item, Ref<ItemInstance> old_item, int bag_slot);
|
||||
void equip_son_success(Entity *entity, int equip_slot, Ref<ItemInstance> item, Ref<ItemInstance> old_item, int bag_slot);
|
||||
void equip_son_success_bind(Node *entity, int equip_slot, Ref<ItemInstance> item, Ref<ItemInstance> old_item, int bag_slot);
|
||||
void equip_son_fail(Entity *entity, int equip_slot, Ref<ItemInstance> item, Ref<ItemInstance> old_item, int bag_slot);
|
||||
void equip_son_fail_bind(Node *entity, int equip_slot, Ref<ItemInstance> item, Ref<ItemInstance> old_item, int bag_slot);
|
||||
|
||||
void equip_con_success(Entity *entity, ItemEnums::EquipSlots equip_slot, Ref<ItemInstance> item, Ref<ItemInstance> old_item, int bag_slot);
|
||||
void equip_con_success_bind(Node *entity, ItemEnums::EquipSlots equip_slot, Ref<ItemInstance> item, Ref<ItemInstance> old_item, int bag_slot);
|
||||
void equip_con_fail(Entity *entity, ItemEnums::EquipSlots equip_slot, Ref<ItemInstance> item, Ref<ItemInstance> old_item, int bag_slot);
|
||||
void equip_con_fail_bind(Node *entity, ItemEnums::EquipSlots equip_slot, Ref<ItemInstance> item, Ref<ItemInstance> old_item, int bag_slot);
|
||||
void equip_con_success(Entity *entity, int equip_slot, Ref<ItemInstance> item, Ref<ItemInstance> old_item, int bag_slot);
|
||||
void equip_con_success_bind(Node *entity, int equip_slot, Ref<ItemInstance> item, Ref<ItemInstance> old_item, int bag_slot);
|
||||
void equip_con_fail(Entity *entity, int equip_slot, Ref<ItemInstance> item, Ref<ItemInstance> old_item, int bag_slot);
|
||||
void equip_con_fail_bind(Node *entity, int equip_slot, Ref<ItemInstance> item, Ref<ItemInstance> old_item, int bag_slot);
|
||||
|
||||
EntityClassData();
|
||||
~EntityClassData();
|
||||
|
@ -770,7 +770,7 @@ void EntityData::notification_centity_resource_removed(Ref<EntityResource> resou
|
||||
|
||||
//Equipment
|
||||
|
||||
bool EntityData::equip_should_deny(Entity *entity, ItemEnums::EquipSlots equip_slot, Ref<ItemInstance> item) {
|
||||
bool EntityData::equip_should_deny(Entity *entity, int equip_slot, Ref<ItemInstance> item) {
|
||||
if (_entity_class_data.is_valid())
|
||||
if (_entity_class_data->equip_should_deny(entity, equip_slot, item))
|
||||
return true;
|
||||
@ -781,7 +781,7 @@ bool EntityData::equip_should_deny(Entity *entity, ItemEnums::EquipSlots equip_s
|
||||
|
||||
return false;
|
||||
}
|
||||
bool EntityData::equip_should_deny_bind(Node *entity, ItemEnums::EquipSlots equip_slot, Ref<ItemInstance> item) {
|
||||
bool EntityData::equip_should_deny_bind(Node *entity, int equip_slot, Ref<ItemInstance> item) {
|
||||
#if VERSION_MAJOR < 4
|
||||
ERR_FAIL_COND_V(!ObjectDB::instance_validate(entity), false);
|
||||
#else
|
||||
@ -795,14 +795,14 @@ bool EntityData::equip_should_deny_bind(Node *entity, ItemEnums::EquipSlots equi
|
||||
return equip_should_deny(e, equip_slot, item);
|
||||
}
|
||||
|
||||
void EntityData::equip_son_success(Entity *entity, ItemEnums::EquipSlots equip_slot, Ref<ItemInstance> item, Ref<ItemInstance> old_item, int bag_slot) {
|
||||
void EntityData::equip_son_success(Entity *entity, int equip_slot, Ref<ItemInstance> item, Ref<ItemInstance> old_item, int bag_slot) {
|
||||
if (_entity_class_data.is_valid())
|
||||
_entity_class_data->equip_son_success(entity, equip_slot, item, old_item, bag_slot);
|
||||
|
||||
if (has_method("_equip_son_success"))
|
||||
call("_equip_son_success", entity, equip_slot, item, old_item, bag_slot);
|
||||
}
|
||||
void EntityData::equip_son_success_bind(Node *entity, ItemEnums::EquipSlots equip_slot, Ref<ItemInstance> item, Ref<ItemInstance> old_item, int bag_slot) {
|
||||
void EntityData::equip_son_success_bind(Node *entity, int equip_slot, Ref<ItemInstance> item, Ref<ItemInstance> old_item, int bag_slot) {
|
||||
#if VERSION_MAJOR < 4
|
||||
ERR_FAIL_COND(!ObjectDB::instance_validate(entity));
|
||||
#else
|
||||
@ -816,14 +816,14 @@ void EntityData::equip_son_success_bind(Node *entity, ItemEnums::EquipSlots equi
|
||||
equip_son_success(e, equip_slot, item, old_item, bag_slot);
|
||||
}
|
||||
|
||||
void EntityData::equip_son_fail(Entity *entity, ItemEnums::EquipSlots equip_slot, Ref<ItemInstance> item, Ref<ItemInstance> old_item, int bag_slot) {
|
||||
void EntityData::equip_son_fail(Entity *entity, int equip_slot, Ref<ItemInstance> item, Ref<ItemInstance> old_item, int bag_slot) {
|
||||
if (_entity_class_data.is_valid())
|
||||
_entity_class_data->equip_son_fail(entity, equip_slot, item, old_item, bag_slot);
|
||||
|
||||
if (has_method("_equip_son_fail"))
|
||||
call("_equip_son_fail", entity, equip_slot, item, old_item, bag_slot);
|
||||
}
|
||||
void EntityData::equip_son_fail_bind(Node *entity, ItemEnums::EquipSlots equip_slot, Ref<ItemInstance> item, Ref<ItemInstance> old_item, int bag_slot) {
|
||||
void EntityData::equip_son_fail_bind(Node *entity, int equip_slot, Ref<ItemInstance> item, Ref<ItemInstance> old_item, int bag_slot) {
|
||||
#if VERSION_MAJOR < 4
|
||||
ERR_FAIL_COND(!ObjectDB::instance_validate(entity));
|
||||
#else
|
||||
@ -837,14 +837,14 @@ void EntityData::equip_son_fail_bind(Node *entity, ItemEnums::EquipSlots equip_s
|
||||
equip_son_fail(e, equip_slot, item, old_item, bag_slot);
|
||||
}
|
||||
|
||||
void EntityData::equip_con_success(Entity *entity, ItemEnums::EquipSlots equip_slot, Ref<ItemInstance> item, Ref<ItemInstance> old_item, int bag_slot) {
|
||||
void EntityData::equip_con_success(Entity *entity, int equip_slot, Ref<ItemInstance> item, Ref<ItemInstance> old_item, int bag_slot) {
|
||||
if (_entity_class_data.is_valid())
|
||||
_entity_class_data->equip_con_success(entity, equip_slot, item, old_item, bag_slot);
|
||||
|
||||
if (has_method("_equip_con_success"))
|
||||
call("_equip_con_success", entity, equip_slot, item, old_item, bag_slot);
|
||||
}
|
||||
void EntityData::equip_con_success_bind(Node *entity, ItemEnums::EquipSlots equip_slot, Ref<ItemInstance> item, Ref<ItemInstance> old_item, int bag_slot) {
|
||||
void EntityData::equip_con_success_bind(Node *entity, int equip_slot, Ref<ItemInstance> item, Ref<ItemInstance> old_item, int bag_slot) {
|
||||
#if VERSION_MAJOR < 4
|
||||
ERR_FAIL_COND(!ObjectDB::instance_validate(entity));
|
||||
#else
|
||||
@ -858,14 +858,14 @@ void EntityData::equip_con_success_bind(Node *entity, ItemEnums::EquipSlots equi
|
||||
equip_con_success(e, equip_slot, item, old_item, bag_slot);
|
||||
}
|
||||
|
||||
void EntityData::equip_con_fail(Entity *entity, ItemEnums::EquipSlots equip_slot, Ref<ItemInstance> item, Ref<ItemInstance> old_item, int bag_slot) {
|
||||
void EntityData::equip_con_fail(Entity *entity, int equip_slot, Ref<ItemInstance> item, Ref<ItemInstance> old_item, int bag_slot) {
|
||||
if (_entity_class_data.is_valid())
|
||||
_entity_class_data->equip_con_fail(entity, equip_slot, item, old_item, bag_slot);
|
||||
|
||||
if (has_method("_equip_con_fail"))
|
||||
call("_equip_con_fail", entity, equip_slot, item, old_item, bag_slot);
|
||||
}
|
||||
void EntityData::equip_con_fail_bind(Node *entity, ItemEnums::EquipSlots equip_slot, Ref<ItemInstance> item, Ref<ItemInstance> old_item, int bag_slot) {
|
||||
void EntityData::equip_con_fail_bind(Node *entity, int equip_slot, Ref<ItemInstance> item, Ref<ItemInstance> old_item, int bag_slot) {
|
||||
#if VERSION_MAJOR < 4
|
||||
ERR_FAIL_COND(!ObjectDB::instance_validate(entity));
|
||||
#else
|
||||
|
@ -214,18 +214,18 @@ public:
|
||||
|
||||
//Equipment
|
||||
|
||||
bool equip_should_deny(Entity *entity, ItemEnums::EquipSlots equip_slot, Ref<ItemInstance> item);
|
||||
bool equip_should_deny_bind(Node *entity, ItemEnums::EquipSlots equip_slot, Ref<ItemInstance> item);
|
||||
bool equip_should_deny(Entity *entity, int equip_slot, Ref<ItemInstance> item);
|
||||
bool equip_should_deny_bind(Node *entity, int equip_slot, Ref<ItemInstance> item);
|
||||
|
||||
void equip_son_success(Entity *entity, ItemEnums::EquipSlots equip_slot, Ref<ItemInstance> item, Ref<ItemInstance> old_item, int bag_slot);
|
||||
void equip_son_success_bind(Node *entity, ItemEnums::EquipSlots equip_slot, Ref<ItemInstance> item, Ref<ItemInstance> old_item, int bag_slot);
|
||||
void equip_son_fail(Entity *entity, ItemEnums::EquipSlots equip_slot, Ref<ItemInstance> item, Ref<ItemInstance> old_item, int bag_slot);
|
||||
void equip_son_fail_bind(Node *entity, ItemEnums::EquipSlots equip_slot, Ref<ItemInstance> item, Ref<ItemInstance> old_item, int bag_slot);
|
||||
void equip_son_success(Entity *entity, int equip_slot, Ref<ItemInstance> item, Ref<ItemInstance> old_item, int bag_slot);
|
||||
void equip_son_success_bind(Node *entity, int equip_slot, Ref<ItemInstance> item, Ref<ItemInstance> old_item, int bag_slot);
|
||||
void equip_son_fail(Entity *entity, int equip_slot, Ref<ItemInstance> item, Ref<ItemInstance> old_item, int bag_slot);
|
||||
void equip_son_fail_bind(Node *entity, int equip_slot, Ref<ItemInstance> item, Ref<ItemInstance> old_item, int bag_slot);
|
||||
|
||||
void equip_con_success(Entity *entity, ItemEnums::EquipSlots equip_slot, Ref<ItemInstance> item, Ref<ItemInstance> old_item, int bag_slot);
|
||||
void equip_con_success_bind(Node *entity, ItemEnums::EquipSlots equip_slot, Ref<ItemInstance> item, Ref<ItemInstance> old_item, int bag_slot);
|
||||
void equip_con_fail(Entity *entity, ItemEnums::EquipSlots equip_slot, Ref<ItemInstance> item, Ref<ItemInstance> old_item, int bag_slot);
|
||||
void equip_con_fail_bind(Node *entity, ItemEnums::EquipSlots equip_slot, Ref<ItemInstance> item, Ref<ItemInstance> old_item, int bag_slot);
|
||||
void equip_con_success(Entity *entity, int equip_slot, Ref<ItemInstance> item, Ref<ItemInstance> old_item, int bag_slot);
|
||||
void equip_con_success_bind(Node *entity, int equip_slot, Ref<ItemInstance> item, Ref<ItemInstance> old_item, int bag_slot);
|
||||
void equip_con_fail(Entity *entity, int equip_slot, Ref<ItemInstance> item, Ref<ItemInstance> old_item, int bag_slot);
|
||||
void equip_con_fail_bind(Node *entity, int equip_slot, Ref<ItemInstance> item, Ref<ItemInstance> old_item, int bag_slot);
|
||||
|
||||
EntityData();
|
||||
~EntityData();
|
||||
|
@ -700,11 +700,11 @@ void Entity::_setup() {
|
||||
if (_s_entity_data->get_equipment_data().is_valid()) {
|
||||
Ref<EquipmentData> eqd = _s_entity_data->get_equipment_data();
|
||||
|
||||
for (int i = 0; i < ItemEnums::EQUIP_SLOT_EQUIP_SLOT_MAX; ++i) {
|
||||
for (int i = 0; i < ESS::get_instance()->equip_slot_get_count(); ++i) {
|
||||
Ref<ItemInstance> ii = eqd->get_item(i);
|
||||
|
||||
if (ii.is_valid())
|
||||
_s_equipment[i] = ii;
|
||||
_s_equipment.write[i] = ii;
|
||||
}
|
||||
}
|
||||
|
||||
@ -1124,7 +1124,7 @@ Dictionary Entity::_to_dict() {
|
||||
|
||||
Dictionary equipment;
|
||||
|
||||
for (int i = 0; i < ItemEnums::EQUIP_SLOT_EQUIP_SLOT_MAX; ++i) {
|
||||
for (int i = 0; i < ESS::get_instance()->equip_slot_get_count(); ++i) {
|
||||
Ref<ItemInstance> ii = _s_equipment[i];
|
||||
|
||||
if (ii.is_valid())
|
||||
@ -1311,7 +1311,7 @@ void Entity::_from_dict(const Dictionary &dict) {
|
||||
|
||||
Dictionary equipment = dict.get("equipment", Dictionary());
|
||||
|
||||
for (int i = 0; i < ItemEnums::EQUIP_SLOT_EQUIP_SLOT_MAX; ++i) {
|
||||
for (int i = 0; i < ESS::get_instance()->equip_slot_get_count(); ++i) {
|
||||
if (equipment.has(String::num(i))) {
|
||||
Ref<ItemInstance> ii = _s_equipment[i];
|
||||
|
||||
@ -1321,8 +1321,8 @@ void Entity::_from_dict(const Dictionary &dict) {
|
||||
|
||||
ii->from_dict(dict[String::num(i)]);
|
||||
|
||||
_s_equipment[i] = ii;
|
||||
_c_equipment[i] = ii;
|
||||
_s_equipment.write[i] = ii;
|
||||
_c_equipment.write[i] = ii;
|
||||
}
|
||||
}
|
||||
|
||||
@ -2030,7 +2030,7 @@ void Entity::creceive_stat(int id, int ccurrent) {
|
||||
|
||||
//// Equip Slots ////
|
||||
|
||||
bool Entity::equip_should_deny(ItemEnums::EquipSlots equip_slot, Ref<ItemInstance> item) {
|
||||
bool Entity::equip_should_deny(int equip_slot, Ref<ItemInstance> item) {
|
||||
if (_s_entity_data.is_valid()) {
|
||||
if (_s_entity_data->equip_should_deny(this, equip_slot, item))
|
||||
return true;
|
||||
@ -2050,7 +2050,7 @@ bool Entity::equip_should_deny(ItemEnums::EquipSlots equip_slot, Ref<ItemInstanc
|
||||
return false;
|
||||
}
|
||||
|
||||
void Entity::equip_son_success(ItemEnums::EquipSlots equip_slot, Ref<ItemInstance> item, Ref<ItemInstance> old_item, int bag_slot) {
|
||||
void Entity::equip_son_success(int equip_slot, Ref<ItemInstance> item, Ref<ItemInstance> old_item, int bag_slot) {
|
||||
if (_s_entity_data.is_valid()) {
|
||||
_s_entity_data->equip_son_success(this, equip_slot, item, old_item, bag_slot);
|
||||
}
|
||||
@ -2067,7 +2067,7 @@ void Entity::equip_son_success(ItemEnums::EquipSlots equip_slot, Ref<ItemInstanc
|
||||
emit_signal("equip_son_success", this, equip_slot, item, old_item, bag_slot);
|
||||
}
|
||||
|
||||
void Entity::equip_son_fail(ItemEnums::EquipSlots equip_slot, Ref<ItemInstance> item, Ref<ItemInstance> old_item, int bag_slot) {
|
||||
void Entity::equip_son_fail(int equip_slot, Ref<ItemInstance> item, Ref<ItemInstance> old_item, int bag_slot) {
|
||||
if (_s_entity_data.is_valid()) {
|
||||
_s_entity_data->equip_son_fail(this, equip_slot, item, old_item, bag_slot);
|
||||
}
|
||||
@ -2084,7 +2084,7 @@ void Entity::equip_son_fail(ItemEnums::EquipSlots equip_slot, Ref<ItemInstance>
|
||||
emit_signal("equip_son_fail", this, equip_slot, item, old_item, bag_slot);
|
||||
}
|
||||
|
||||
void Entity::equip_con_success(ItemEnums::EquipSlots equip_slot, Ref<ItemInstance> item, Ref<ItemInstance> old_item, int bag_slot) {
|
||||
void Entity::equip_con_success(int equip_slot, Ref<ItemInstance> item, Ref<ItemInstance> old_item, int bag_slot) {
|
||||
if (_c_entity_data.is_valid()) {
|
||||
_c_entity_data->equip_con_success(this, equip_slot, item, old_item, bag_slot);
|
||||
}
|
||||
@ -2101,7 +2101,7 @@ void Entity::equip_con_success(ItemEnums::EquipSlots equip_slot, Ref<ItemInstanc
|
||||
emit_signal("equip_con_success", this, equip_slot, item, old_item, bag_slot);
|
||||
}
|
||||
|
||||
void Entity::equip_con_fail(ItemEnums::EquipSlots equip_slot, Ref<ItemInstance> item, Ref<ItemInstance> old_item, int bag_slot) {
|
||||
void Entity::equip_con_fail(int equip_slot, Ref<ItemInstance> item, Ref<ItemInstance> old_item, int bag_slot) {
|
||||
if (_c_entity_data.is_valid()) {
|
||||
_c_entity_data->equip_con_fail(this, equip_slot, item, old_item, bag_slot);
|
||||
}
|
||||
@ -2118,14 +2118,14 @@ void Entity::equip_con_fail(ItemEnums::EquipSlots equip_slot, Ref<ItemInstance>
|
||||
emit_signal("equip_con_fail", this, equip_slot, item, old_item, bag_slot);
|
||||
}
|
||||
|
||||
void Entity::equip_crequest(ItemEnums::EquipSlots equip_slot, int bag_slot) {
|
||||
void Entity::equip_crequest(int equip_slot, int bag_slot) {
|
||||
RPCS(equips, equip_slot, bag_slot)
|
||||
}
|
||||
void Entity::equips(ItemEnums::EquipSlots equip_slot, int bag_slot) {
|
||||
void Entity::equips(int equip_slot, int bag_slot) {
|
||||
call("_equips", equip_slot, bag_slot);
|
||||
}
|
||||
void Entity::_equips(ItemEnums::EquipSlots equip_slot, int bag_slot) {
|
||||
ERR_FAIL_INDEX(equip_slot, ItemEnums::EQUIP_SLOT_EQUIP_SLOT_MAX);
|
||||
void Entity::_equips(int equip_slot, int bag_slot) {
|
||||
ERR_FAIL_INDEX(equip_slot, ESS::get_instance()->equip_slot_get_count());
|
||||
ERR_FAIL_COND(!_s_bag.is_valid());
|
||||
|
||||
Ref<ItemInstance> bag_item = _s_bag->get_item(bag_slot);
|
||||
@ -2155,8 +2155,8 @@ void Entity::_equips(ItemEnums::EquipSlots equip_slot, int bag_slot) {
|
||||
|
||||
ORPC(equip_csuccess, equip_slot, bag_slot);
|
||||
}
|
||||
void Entity::equip_csuccess(ItemEnums::EquipSlots equip_slot, int bag_slot) {
|
||||
ERR_FAIL_INDEX(equip_slot, ItemEnums::EQUIP_SLOT_EQUIP_SLOT_MAX);
|
||||
void Entity::equip_csuccess(int equip_slot, int bag_slot) {
|
||||
ERR_FAIL_INDEX(equip_slot, ESS::get_instance()->equip_slot_get_count());
|
||||
ERR_FAIL_COND(!_c_bag.is_valid());
|
||||
|
||||
Ref<ItemInstance> old_bag_item = _c_bag->get_item(bag_slot);
|
||||
@ -2173,8 +2173,8 @@ void Entity::equip_csuccess(ItemEnums::EquipSlots equip_slot, int bag_slot) {
|
||||
|
||||
equip_con_success(equip_slot, old_bag_item, old_equipped_item, bag_slot);
|
||||
}
|
||||
void Entity::equip_cfail(ItemEnums::EquipSlots equip_slot, int bag_slot) {
|
||||
ERR_FAIL_INDEX(equip_slot, ItemEnums::EQUIP_SLOT_EQUIP_SLOT_MAX);
|
||||
void Entity::equip_cfail(int equip_slot, int bag_slot) {
|
||||
ERR_FAIL_INDEX(equip_slot, ESS::get_instance()->equip_slot_get_count());
|
||||
ERR_FAIL_COND(!_c_bag.is_valid());
|
||||
|
||||
Ref<ItemInstance> bag_item = _c_bag->get_item(bag_slot);
|
||||
@ -2184,31 +2184,31 @@ void Entity::equip_cfail(ItemEnums::EquipSlots equip_slot, int bag_slot) {
|
||||
}
|
||||
|
||||
Ref<ItemInstance> Entity::equip_gets_slot(int index) {
|
||||
ERR_FAIL_INDEX_V(index, ItemEnums::EQUIP_SLOT_EQUIP_SLOT_MAX, Ref<ItemInstance>());
|
||||
ERR_FAIL_INDEX_V(index, ESS::get_instance()->equip_slot_get_count(), Ref<ItemInstance>());
|
||||
|
||||
return _s_equipment[index];
|
||||
}
|
||||
void Entity::equip_sets_slot(int index, Ref<ItemInstance> item) {
|
||||
ERR_FAIL_INDEX(index, ItemEnums::EQUIP_SLOT_EQUIP_SLOT_MAX);
|
||||
ERR_FAIL_INDEX(index, ESS::get_instance()->equip_slot_get_count());
|
||||
|
||||
_s_equipment[index] = item;
|
||||
_s_equipment.write[index] = item;
|
||||
}
|
||||
|
||||
Ref<ItemInstance> Entity::equip_getc_slot(int index) {
|
||||
ERR_FAIL_INDEX_V(index, ItemEnums::EQUIP_SLOT_EQUIP_SLOT_MAX, Ref<ItemInstance>());
|
||||
ERR_FAIL_INDEX_V(index, ESS::get_instance()->equip_slot_get_count(), Ref<ItemInstance>());
|
||||
|
||||
return _c_equipment[index];
|
||||
}
|
||||
void Entity::equip_setc_slot(int index, Ref<ItemInstance> item) {
|
||||
ERR_FAIL_INDEX(index, ItemEnums::EQUIP_SLOT_EQUIP_SLOT_MAX);
|
||||
ERR_FAIL_INDEX(index, ESS::get_instance()->equip_slot_get_count());
|
||||
|
||||
_c_equipment[index] = item;
|
||||
_c_equipment.write[index] = item;
|
||||
}
|
||||
|
||||
bool Entity::equip_can_equip_item(ItemEnums::EquipSlots equip_slot, Ref<ItemInstance> item) {
|
||||
bool Entity::equip_can_equip_item(int equip_slot, Ref<ItemInstance> item) {
|
||||
return call("_equip_can_equip_item", equip_slot, item);
|
||||
}
|
||||
bool Entity::_equip_can_equip_item(ItemEnums::EquipSlots equip_slot, Ref<ItemInstance> item) {
|
||||
bool Entity::_equip_can_equip_item(int equip_slot, Ref<ItemInstance> item) {
|
||||
//deequip
|
||||
if (!item.is_valid())
|
||||
return true;
|
||||
@ -5843,6 +5843,9 @@ Entity::Entity() {
|
||||
_s_pet_formation_index = 0;
|
||||
_s_pet_ai_state = EntityEnums::AI_STATE_OFF;
|
||||
|
||||
_s_equipment.resize(ESS::get_instance()->equip_slot_get_count());
|
||||
_c_equipment.resize(ESS::get_instance()->equip_slot_get_count());
|
||||
|
||||
SET_RPC_REMOTE("csend_request_rank_increase");
|
||||
SET_RPC_REMOTE("csend_request_rank_decrease");
|
||||
|
||||
@ -6072,10 +6075,8 @@ Entity::~Entity() {
|
||||
|
||||
_stats.clear();
|
||||
|
||||
for (int i = 0; i < ItemEnums::EQUIP_SLOT_EQUIP_SLOT_MAX; ++i) {
|
||||
_s_equipment[i].unref();
|
||||
_c_equipment[i].unref();
|
||||
}
|
||||
_s_equipment.clear();
|
||||
_c_equipment.clear();
|
||||
|
||||
_action_bar_profile.unref();
|
||||
|
||||
@ -6425,7 +6426,7 @@ bool Entity::_set(const StringName &p_name, const Variant &p_value) {
|
||||
|
||||
Dictionary equipment = dict.get("equipment", Dictionary());
|
||||
|
||||
for (int i = 0; i < ItemEnums::EQUIP_SLOT_EQUIP_SLOT_MAX; ++i) {
|
||||
for (int i = 0; i < ESS::get_instance()->equip_slot_get_count(); ++i) {
|
||||
if (equipment.has(String::num(i))) {
|
||||
Ref<ItemInstance> ii = _s_equipment[i];
|
||||
|
||||
@ -6694,7 +6695,7 @@ bool Entity::_get(const StringName &p_name, Variant &r_ret) const {
|
||||
|
||||
Dictionary equipment;
|
||||
|
||||
for (int i = 0; i < ItemEnums::EQUIP_SLOT_EQUIP_SLOT_MAX; ++i) {
|
||||
for (int i = 0; i < ESS::get_instance()->equip_slot_get_count(); ++i) {
|
||||
Ref<ItemInstance> ii = _s_equipment[i];
|
||||
|
||||
if (ii.is_valid())
|
||||
@ -7394,7 +7395,7 @@ void Entity::_bind_methods() {
|
||||
ClassDB::bind_method(D_METHOD("equip_gets_slot", "index"), &Entity::equip_gets_slot);
|
||||
ClassDB::bind_method(D_METHOD("equip_getc_slot", "index"), &Entity::equip_getc_slot);
|
||||
|
||||
BIND_VMETHOD(MethodInfo(PropertyInfo(Variant::BOOL, "can"), "_equip_can_equip_item", PropertyInfo(Variant::INT, "equip_slot", PROPERTY_HINT_ENUM, ItemEnums::BINDING_STRING_EQUIP_SLOTS), PropertyInfo(Variant::OBJECT, "item", PROPERTY_HINT_RESOURCE_TYPE, "ItemInstance")));
|
||||
BIND_VMETHOD(MethodInfo(PropertyInfo(Variant::BOOL, "can"), "_equip_can_equip_item", PropertyInfo(Variant::INT, "equip_slot"), PropertyInfo(Variant::OBJECT, "item", PROPERTY_HINT_RESOURCE_TYPE, "ItemInstance")));
|
||||
|
||||
ClassDB::bind_method(D_METHOD("equip_can_equip_item", "equip_slot", "item"), &Entity::equip_can_equip_item);
|
||||
ClassDB::bind_method(D_METHOD("_equip_can_equip_item", "equip_slot", "item"), &Entity::_equip_can_equip_item);
|
||||
|
@ -411,20 +411,20 @@ public:
|
||||
|
||||
//// Equip Slots ////
|
||||
|
||||
bool equip_should_deny(ItemEnums::EquipSlots equip_slot, Ref<ItemInstance> item);
|
||||
bool equip_should_deny(int equip_slot, Ref<ItemInstance> item);
|
||||
|
||||
void equip_son_success(ItemEnums::EquipSlots equip_slot, Ref<ItemInstance> item, Ref<ItemInstance> old_item, int bag_slot);
|
||||
void equip_son_fail(ItemEnums::EquipSlots equip_slot, Ref<ItemInstance> item, Ref<ItemInstance> old_item, int bag_slot);
|
||||
void equip_son_success(int equip_slot, Ref<ItemInstance> item, Ref<ItemInstance> old_item, int bag_slot);
|
||||
void equip_son_fail(int equip_slot, Ref<ItemInstance> item, Ref<ItemInstance> old_item, int bag_slot);
|
||||
|
||||
void equip_con_success(ItemEnums::EquipSlots equip_slot, Ref<ItemInstance> item, Ref<ItemInstance> old_item, int bag_slot);
|
||||
void equip_con_fail(ItemEnums::EquipSlots equip_slot, Ref<ItemInstance> item, Ref<ItemInstance> old_item, int bag_slot);
|
||||
void equip_con_success(int equip_slot, Ref<ItemInstance> item, Ref<ItemInstance> old_item, int bag_slot);
|
||||
void equip_con_fail(int equip_slot, Ref<ItemInstance> item, Ref<ItemInstance> old_item, int bag_slot);
|
||||
|
||||
void equip_crequest(ItemEnums::EquipSlots equip_slot, int bag_slot);
|
||||
void equips(ItemEnums::EquipSlots equip_slot, int bag_slot);
|
||||
void _equips(ItemEnums::EquipSlots equip_slot, int bag_slot);
|
||||
void equip_crequest(int equip_slot, int bag_slot);
|
||||
void equips(int equip_slot, int bag_slot);
|
||||
void _equips(int equip_slot, int bag_slot);
|
||||
|
||||
void equip_csuccess(ItemEnums::EquipSlots equip_slot, int bag_slot);
|
||||
void equip_cfail(ItemEnums::EquipSlots equip_slot, int bag_slot);
|
||||
void equip_csuccess(int equip_slot, int bag_slot);
|
||||
void equip_cfail(int equip_slot, int bag_slot);
|
||||
|
||||
Ref<ItemInstance> equip_gets_slot(int index);
|
||||
void equip_sets_slot(int index, Ref<ItemInstance> item);
|
||||
@ -432,8 +432,8 @@ public:
|
||||
Ref<ItemInstance> equip_getc_slot(int index);
|
||||
void equip_setc_slot(int index, Ref<ItemInstance> item);
|
||||
|
||||
bool equip_can_equip_item(ItemEnums::EquipSlots equip_slot, Ref<ItemInstance> item);
|
||||
bool _equip_can_equip_item(ItemEnums::EquipSlots equip_slot, Ref<ItemInstance> item);
|
||||
bool equip_can_equip_item(int equip_slot, Ref<ItemInstance> item);
|
||||
bool _equip_can_equip_item(int equip_slot, Ref<ItemInstance> item);
|
||||
|
||||
void equip_applys_item(Ref<ItemInstance> item);
|
||||
void equip_deapplys_item(Ref<ItemInstance> item);
|
||||
@ -702,11 +702,11 @@ public:
|
||||
|
||||
//// Cooldowns ////
|
||||
|
||||
Vector<Ref<Cooldown>> *cooldowns_gets();
|
||||
Vector<Ref<Cooldown>> *cooldowns_getc();
|
||||
Vector<Ref<Cooldown> > *cooldowns_gets();
|
||||
Vector<Ref<Cooldown> > *cooldowns_getc();
|
||||
|
||||
HashMap<int, Ref<Cooldown>> *cooldown_get_maps();
|
||||
HashMap<int, Ref<Cooldown>> *cooldown_get_mapc();
|
||||
HashMap<int, Ref<Cooldown> > *cooldown_get_maps();
|
||||
HashMap<int, Ref<Cooldown> > *cooldown_get_mapc();
|
||||
|
||||
bool cooldown_hass(int spell_id);
|
||||
void cooldown_adds(int spell_id, float value);
|
||||
@ -724,8 +724,8 @@ public:
|
||||
|
||||
//Category Cooldowns
|
||||
|
||||
Vector<Ref<CategoryCooldown>> category_cooldowns_gets();
|
||||
Vector<Ref<CategoryCooldown>> category_cooldowns_getc();
|
||||
Vector<Ref<CategoryCooldown> > category_cooldowns_gets();
|
||||
Vector<Ref<CategoryCooldown> > category_cooldowns_getc();
|
||||
|
||||
bool category_cooldown_hass(int category_id);
|
||||
void category_cooldown_adds(int category_id, float value);
|
||||
@ -1128,13 +1128,13 @@ private:
|
||||
|
||||
//// Equipment ////
|
||||
|
||||
Ref<ItemInstance> _s_equipment[ItemEnums::EQUIP_SLOT_EQUIP_SLOT_MAX];
|
||||
Ref<ItemInstance> _c_equipment[ItemEnums::EQUIP_SLOT_EQUIP_SLOT_MAX];
|
||||
Vector<Ref<ItemInstance> > _s_equipment;
|
||||
Vector<Ref<ItemInstance> > _c_equipment;
|
||||
|
||||
//// Resources ////
|
||||
|
||||
Vector<Ref<EntityResource>> _s_resources;
|
||||
Vector<Ref<EntityResource>> _c_resources;
|
||||
Vector<Ref<EntityResource> > _s_resources;
|
||||
Vector<Ref<EntityResource> > _c_resources;
|
||||
|
||||
//// GCD ////
|
||||
|
||||
@ -1155,8 +1155,8 @@ private:
|
||||
|
||||
//// AuraComponent ////
|
||||
|
||||
Vector<Ref<AuraData>> _s_auras;
|
||||
Vector<Ref<AuraData>> _c_auras;
|
||||
Vector<Ref<AuraData> > _s_auras;
|
||||
Vector<Ref<AuraData> > _c_auras;
|
||||
|
||||
EntityEnums::EntityType _s_entity_type;
|
||||
EntityEnums::EntityType _c_entity_type;
|
||||
@ -1167,14 +1167,14 @@ private:
|
||||
int _c_entity_flags;
|
||||
|
||||
//// Cooldowns ////
|
||||
Vector<Ref<Cooldown>> _s_cooldowns;
|
||||
Vector<Ref<Cooldown>> _c_cooldowns;
|
||||
Vector<Ref<Cooldown> > _s_cooldowns;
|
||||
Vector<Ref<Cooldown> > _c_cooldowns;
|
||||
|
||||
HashMap<int, Ref<Cooldown>> _s_cooldown_map;
|
||||
HashMap<int, Ref<Cooldown>> _c_cooldown_map;
|
||||
HashMap<int, Ref<Cooldown> > _s_cooldown_map;
|
||||
HashMap<int, Ref<Cooldown> > _c_cooldown_map;
|
||||
|
||||
Vector<Ref<CategoryCooldown>> _s_category_cooldowns;
|
||||
Vector<Ref<CategoryCooldown>> _c_category_cooldowns;
|
||||
Vector<Ref<CategoryCooldown> > _s_category_cooldowns;
|
||||
Vector<Ref<CategoryCooldown> > _c_category_cooldowns;
|
||||
|
||||
int _s_active_category_cooldowns;
|
||||
int _c_active_category_cooldowns;
|
||||
@ -1194,8 +1194,8 @@ private:
|
||||
|
||||
//// Data ////
|
||||
|
||||
Vector<Ref<EntityDataContainer>> _s_data;
|
||||
Vector<Ref<EntityDataContainer>> _c_data;
|
||||
Vector<Ref<EntityDataContainer> > _s_data;
|
||||
Vector<Ref<EntityDataContainer> > _c_data;
|
||||
|
||||
//// Actionbars ////
|
||||
|
||||
@ -1204,21 +1204,21 @@ private:
|
||||
|
||||
//// Crafting System ////
|
||||
|
||||
Vector<Ref<CraftRecipe>> _s_craft_recipes;
|
||||
Vector<Ref<CraftRecipe>> _c_craft_recipes;
|
||||
Vector<Ref<CraftRecipe> > _s_craft_recipes;
|
||||
Vector<Ref<CraftRecipe> > _c_craft_recipes;
|
||||
|
||||
//// Known Spells ////
|
||||
|
||||
int _s_free_spell_points;
|
||||
int _c_free_spell_points;
|
||||
|
||||
Vector<Ref<Spell>> _s_spells;
|
||||
Vector<Ref<Spell>> _c_spells;
|
||||
Vector<Ref<Spell> > _s_spells;
|
||||
Vector<Ref<Spell> > _c_spells;
|
||||
|
||||
//// Skills ////
|
||||
|
||||
Vector<Ref<EntitySkill>> _s_skills;
|
||||
Vector<Ref<EntitySkill>> _c_skills;
|
||||
Vector<Ref<EntitySkill> > _s_skills;
|
||||
Vector<Ref<EntitySkill> > _c_skills;
|
||||
|
||||
//// Stat Allocations ////
|
||||
|
||||
@ -1262,7 +1262,7 @@ private:
|
||||
|
||||
// Callbacks
|
||||
|
||||
Vector<Ref<SpellCastInfo>> _physics_process_scis;
|
||||
Vector<Ref<SpellCastInfo> > _physics_process_scis;
|
||||
};
|
||||
|
||||
#endif
|
||||
|
@ -28,45 +28,9 @@ const String ItemEnums::BINDING_STRING_ITEM_TYPE = "None,Equipment,Potion,Herb,O
|
||||
const String ItemEnums::BINDING_STRING_ITEM_TYPE_FLAGS = "Equipment,Potion,Herb,Ore,Gemstone,Food,Alchemy,Engineering,Enchanting,Tailoring,Recipe,Currency,Bag";
|
||||
const String ItemEnums::BINDING_STRING_ITEM_SUB_TYPE = "None,Sword,Axe,Mace,Dagger,Bow,Crossbow,Gun,Wand,Quest Item";
|
||||
const String ItemEnums::BINDING_STRING_ITEM_SUB_SUB_TYPE = "None,Two Hand,One Hand,Left Hand,Right Hand";
|
||||
const String ItemEnums::BINDING_STRING_EQUIP_SLOTS = "Head,Neck,Shoulders,Chest,Gloves,Belt,Legs,Feet,Ring 1,Ring 2,Trinket 1,Trinket 2,Main Hand,Off Hand,None";
|
||||
const String ItemEnums::BINDING_STRING_ARMOR_TYPE = "None,Cloth,Leather,Mail,Plate";
|
||||
const String ItemEnums::BINDING_STRING_ENTITY_TEXTURE_LAYERS = "None,Skin,Underwear,Shirt,Clothes Base,Clothes 1,Clothes 2,Clothes 3,Clothes 4,Clothes 5,Belt,Tabard,Overlay";
|
||||
|
||||
String ItemEnums::get_equip_slot_string(int slot) {
|
||||
switch (slot) {
|
||||
case 0:
|
||||
return "head";
|
||||
case 1:
|
||||
return "neck";
|
||||
case 2:
|
||||
return "shoulders";
|
||||
case 3:
|
||||
return "chest";
|
||||
case 4:
|
||||
return "gloves";
|
||||
case 5:
|
||||
return "belt";
|
||||
case 6:
|
||||
return "legs";
|
||||
case 7:
|
||||
return "feet";
|
||||
case 8:
|
||||
return "ring_1";
|
||||
case 9:
|
||||
return "ring_2";
|
||||
case 10:
|
||||
return "trinket_1";
|
||||
case 11:
|
||||
return "trinket_2";
|
||||
case 12:
|
||||
return "main_hand";
|
||||
case 13:
|
||||
return "off_hand";
|
||||
}
|
||||
|
||||
return "";
|
||||
}
|
||||
|
||||
String ItemEnums::get_armor_type_string(int type) {
|
||||
switch (type) {
|
||||
case 0:
|
||||
|
46
item_enums.h
46
item_enums.h
@ -36,7 +36,6 @@ public:
|
||||
static const String BINDING_STRING_ITEM_TYPE_FLAGS;
|
||||
static const String BINDING_STRING_ITEM_SUB_TYPE;
|
||||
static const String BINDING_STRING_ITEM_SUB_SUB_TYPE;
|
||||
static const String BINDING_STRING_EQUIP_SLOTS;
|
||||
static const String BINDING_STRING_ARMOR_TYPE;
|
||||
static const String BINDING_STRING_ENTITY_TEXTURE_LAYERS;
|
||||
|
||||
@ -98,29 +97,6 @@ public:
|
||||
ITEM_SUB_SUB_TYPE_RIGHT_HAND
|
||||
};
|
||||
|
||||
enum EquipSlots {
|
||||
EQUIP_SLOT_HEAD = 0,
|
||||
EQUIP_SLOT_NECK = 1,
|
||||
EQUIP_SLOT_SHOULDERS = 2,
|
||||
EQUIP_SLOT_CHEST = 3,
|
||||
EQUIP_SLOT_GLOVES = 4,
|
||||
EQUIP_SLOT_BELT = 5,
|
||||
EQUIP_SLOT_LEGS = 6,
|
||||
EQUIP_SLOT_FEET = 7,
|
||||
|
||||
EQUIP_SLOT_RING_1 = 8,
|
||||
EQUIP_SLOT_RING_2 = 9,
|
||||
|
||||
EQUIP_SLOT_TRINKET_1 = 10,
|
||||
EQUIP_SLOT_TRINKET_2 = 11,
|
||||
|
||||
EQUIP_SLOT_MAIN_HAND = 12,
|
||||
EQUIP_SLOT_OFF_HAND = 13,
|
||||
|
||||
EQUIP_SLOT_EQUIP_SLOT_MAX = 14,
|
||||
EQUIP_SLOT_NONE = 14
|
||||
};
|
||||
|
||||
enum ArmorType {
|
||||
ARMOR_TYPE_NONE = 0,
|
||||
ARMOR_TYPE_CLOTH = 1,
|
||||
@ -201,27 +177,6 @@ protected:
|
||||
BIND_ENUM_CONSTANT(ITEM_SUB_SUB_TYPE_LEFT_HAND);
|
||||
BIND_ENUM_CONSTANT(ITEM_SUB_SUB_TYPE_RIGHT_HAND);
|
||||
|
||||
BIND_ENUM_CONSTANT(EQUIP_SLOT_HEAD);
|
||||
BIND_ENUM_CONSTANT(EQUIP_SLOT_NECK);
|
||||
BIND_ENUM_CONSTANT(EQUIP_SLOT_SHOULDERS);
|
||||
BIND_ENUM_CONSTANT(EQUIP_SLOT_CHEST);
|
||||
BIND_ENUM_CONSTANT(EQUIP_SLOT_GLOVES);
|
||||
BIND_ENUM_CONSTANT(EQUIP_SLOT_BELT);
|
||||
BIND_ENUM_CONSTANT(EQUIP_SLOT_LEGS);
|
||||
BIND_ENUM_CONSTANT(EQUIP_SLOT_FEET);
|
||||
|
||||
BIND_ENUM_CONSTANT(EQUIP_SLOT_RING_1);
|
||||
BIND_ENUM_CONSTANT(EQUIP_SLOT_RING_2);
|
||||
BIND_ENUM_CONSTANT(EQUIP_SLOT_TRINKET_1);
|
||||
BIND_ENUM_CONSTANT(EQUIP_SLOT_TRINKET_2);
|
||||
|
||||
BIND_ENUM_CONSTANT(EQUIP_SLOT_MAIN_HAND);
|
||||
BIND_ENUM_CONSTANT(EQUIP_SLOT_OFF_HAND);
|
||||
|
||||
BIND_ENUM_CONSTANT(EQUIP_SLOT_NONE);
|
||||
|
||||
BIND_ENUM_CONSTANT(EQUIP_SLOT_EQUIP_SLOT_MAX);
|
||||
|
||||
BIND_ENUM_CONSTANT(ARMOR_TYPE_NONE);
|
||||
BIND_ENUM_CONSTANT(ARMOR_TYPE_CLOTH);
|
||||
BIND_ENUM_CONSTANT(ARMOR_TYPE_LEATHER);
|
||||
@ -250,7 +205,6 @@ VARIANT_ENUM_CAST(ItemEnums::ItemRarityFlag);
|
||||
VARIANT_ENUM_CAST(ItemEnums::ItemType);
|
||||
VARIANT_ENUM_CAST(ItemEnums::ItemSubtype);
|
||||
VARIANT_ENUM_CAST(ItemEnums::ItemSubSubtype);
|
||||
VARIANT_ENUM_CAST(ItemEnums::EquipSlots);
|
||||
VARIANT_ENUM_CAST(ItemEnums::ArmorType);
|
||||
VARIANT_ENUM_CAST(ItemEnums::EntityTextureLayers);
|
||||
|
||||
|
@ -33,7 +33,6 @@ SOFTWARE.
|
||||
|
||||
#include "data/entities/xp_data.h"
|
||||
#include "data/items/equipment_data.h"
|
||||
#include "data/items/equipment_data_entry.h"
|
||||
#include "data/items/item_stat_modifier.h"
|
||||
#include "data/items/item_template_stat_modifier.h"
|
||||
#include "data/spells/spell_cooldown_manipulation_data.h"
|
||||
@ -178,7 +177,6 @@ void register_entity_spell_system_types() {
|
||||
ClassDB::register_class<TalentRowData>();
|
||||
|
||||
ClassDB::register_class<EquipmentData>();
|
||||
ClassDB::register_class<EquipmentDataEntry>();
|
||||
|
||||
ClassDB::register_class<EntitySkill>();
|
||||
ClassDB::register_class<EntitySkillData>();
|
||||
|
@ -306,6 +306,114 @@ void ESS::stat_set_main_stat_count(const int index) {
|
||||
_stat_main_stat_count = index;
|
||||
}
|
||||
|
||||
//Equipslots
|
||||
void ESS::equip_slot_set_string(const String &equip_slot_enum_string) {
|
||||
_equip_slot_id_to_name.clear();
|
||||
_equip_slot_name_to_id.clear();
|
||||
|
||||
_equip_slot_id_to_property.clear();
|
||||
_equip_slot_property_to_id.clear();
|
||||
|
||||
int slicec = equip_slot_enum_string.get_slice_count(",");
|
||||
_equip_slot_id_to_name.resize(slicec);
|
||||
_equip_slot_id_to_property.resize(slicec);
|
||||
|
||||
for (int i = 0; i < slicec; ++i) {
|
||||
String slice = equip_slot_enum_string.get_slicec(',', i);
|
||||
StringName s = StringName(slice);
|
||||
|
||||
_equip_slot_id_to_name.set(i, s);
|
||||
_equip_slot_name_to_id.set(s, i);
|
||||
|
||||
String st = slice;
|
||||
st = st.to_lower();
|
||||
st = st.replace(" ", "_");
|
||||
StringName stp = StringName(st);
|
||||
|
||||
_equip_slot_id_to_property.set(i, stp);
|
||||
_equip_slot_property_to_id.set(stp, i);
|
||||
}
|
||||
|
||||
_equip_slot_enum_string = equip_slot_enum_string + ",None";
|
||||
}
|
||||
String ESS::equip_slot_get_string() const {
|
||||
return _equip_slot_enum_string;
|
||||
}
|
||||
|
||||
int ESS::equip_slot_get_id(const StringName &name) const {
|
||||
ERR_FAIL_COND_V(!_equip_slot_name_to_id.has(name), 0);
|
||||
|
||||
return _equip_slot_name_to_id[name];
|
||||
}
|
||||
StringName ESS::equip_slot_get_name(const int id) const {
|
||||
ERR_FAIL_INDEX_V(id, _equip_slot_id_to_name.size(), StringName());
|
||||
|
||||
return _equip_slot_id_to_name[id];
|
||||
}
|
||||
|
||||
int ESS::equip_slot_get_property_id(const StringName &name) const {
|
||||
ERR_FAIL_COND_V(!_equip_slot_property_to_id.has(name), 0);
|
||||
|
||||
return _equip_slot_property_to_id[name];
|
||||
}
|
||||
StringName ESS::equip_slot_get_property_name(const int id) const {
|
||||
ERR_FAIL_INDEX_V(id, _equip_slot_id_to_property.size(), StringName());
|
||||
|
||||
return _equip_slot_id_to_property[id];
|
||||
}
|
||||
bool ESS::equip_slot_is_property(const StringName &name) const {
|
||||
return _equip_slot_property_to_id.has(name);
|
||||
}
|
||||
|
||||
int ESS::equip_slot_get_count() const {
|
||||
return _equip_slot_id_to_name.size();
|
||||
}
|
||||
|
||||
PoolStringArray ESS::equip_slots_get() const {
|
||||
PoolStringArray arr;
|
||||
arr.resize(_equip_slot_id_to_name.size());
|
||||
|
||||
for (int i = 0; i < _equip_slot_id_to_name.size(); ++i) {
|
||||
arr.set(i, _equip_slot_id_to_name[i]);
|
||||
}
|
||||
|
||||
return arr;
|
||||
}
|
||||
|
||||
void ESS::equip_slots_set(const PoolStringArray &array) {
|
||||
_equip_slot_enum_string = "";
|
||||
|
||||
_equip_slot_id_to_name.clear();
|
||||
_equip_slot_name_to_id.clear();
|
||||
|
||||
_equip_slot_id_to_property.clear();
|
||||
_equip_slot_property_to_id.clear();
|
||||
|
||||
_equip_slot_id_to_name.resize(array.size());
|
||||
_equip_slot_id_to_property.resize(array.size());
|
||||
|
||||
if (array.size() > 0)
|
||||
_equip_slot_enum_string += array[0];
|
||||
|
||||
for (int i = 0; i < array.size(); ++i) {
|
||||
StringName s = StringName(array[i]);
|
||||
|
||||
_equip_slot_id_to_name.set(i, s);
|
||||
_equip_slot_name_to_id.set(s, i);
|
||||
|
||||
String st = array[i];
|
||||
st = st.to_lower();
|
||||
st = st.replace(" ", "_");
|
||||
StringName stp = StringName(st);
|
||||
|
||||
_equip_slot_id_to_property.set(i, stp);
|
||||
_equip_slot_property_to_id.set(stp, i);
|
||||
|
||||
_equip_slot_enum_string += ",";
|
||||
_equip_slot_enum_string += array[i];
|
||||
}
|
||||
}
|
||||
|
||||
void ESS::_bind_methods() {
|
||||
ClassDB::bind_method(D_METHOD("get_use_spell_points"), &ESS::get_use_spell_points);
|
||||
ClassDB::bind_method(D_METHOD("set_use_spell_points", "value"), &ESS::set_use_spell_points);
|
||||
@ -397,6 +505,24 @@ void ESS::_bind_methods() {
|
||||
ClassDB::bind_method(D_METHOD("stat_get_main_stat_count"), &ESS::stat_get_main_stat_count);
|
||||
ClassDB::bind_method(D_METHOD("stat_set_main_stat_count", "index"), &ESS::stat_set_main_stat_count);
|
||||
ADD_PROPERTY(PropertyInfo(Variant::INT, "main_stat_count"), "stat_set_main_stat_count", "stat_get_main_stat_count");
|
||||
|
||||
//Equipslots
|
||||
ClassDB::bind_method(D_METHOD("equip_slot_get_string"), &ESS::equip_slot_get_string);
|
||||
ClassDB::bind_method(D_METHOD("equip_slot_set_string", "equip_slot_enum_string"), &ESS::equip_slot_set_string);
|
||||
ADD_PROPERTY(PropertyInfo(Variant::STRING, "equip_slot_string"), "equip_slot_set_string", "equip_slot_get_string");
|
||||
|
||||
ClassDB::bind_method(D_METHOD("equip_slot_get_id", "name"), &ESS::equip_slot_get_id);
|
||||
ClassDB::bind_method(D_METHOD("equip_slot_get_name", "id"), &ESS::equip_slot_get_name);
|
||||
|
||||
ClassDB::bind_method(D_METHOD("equip_slot_get_property_id", "name"), &ESS::equip_slot_get_property_id);
|
||||
ClassDB::bind_method(D_METHOD("equip_slot_get_property_name", "id"), &ESS::equip_slot_get_property_name);
|
||||
ClassDB::bind_method(D_METHOD("equip_slot_is_property", "name"), &ESS::equip_slot_is_property);
|
||||
|
||||
ClassDB::bind_method(D_METHOD("equip_slot_get_count"), &ESS::equip_slot_get_count);
|
||||
|
||||
ClassDB::bind_method(D_METHOD("equip_slots_get"), &ESS::equip_slots_get);
|
||||
ClassDB::bind_method(D_METHOD("equip_slots_set", "array"), &ESS::equip_slots_set);
|
||||
ADD_PROPERTY(PropertyInfo(Variant::POOL_STRING_ARRAY, "equip_slots"), "equip_slots_set", "equip_slots_get");
|
||||
}
|
||||
|
||||
ESS::ESS() {
|
||||
@ -422,6 +548,8 @@ ESS::ESS() {
|
||||
stat_set_string(GLOBAL_DEF("ess/enums/stats", "Agility,Strength,Stamina,Intellect,Spirit,Health,Speed,Global Cooldown,Haste"));
|
||||
_stat_main_stat_count = GLOBAL_DEF("ess/enums/main_stat_count", 5);
|
||||
|
||||
equip_slot_set_string(GLOBAL_DEF("ess/enums/equip_slots", "Head,Neck,Shoulder,Chest,Gloves,Belt,Legs,Feet,Ring_1,Ring_2,Trinket_1,Trinket_2,Main_Hand,Off_Hand"));
|
||||
|
||||
if (!Engine::get_singleton()->is_editor_hint() && _automatic_load) {
|
||||
call_deferred("load_all");
|
||||
}
|
||||
@ -438,4 +566,10 @@ ESS::~ESS() {
|
||||
|
||||
_stat_id_to_property.clear();
|
||||
_stat_property_to_id.clear();
|
||||
|
||||
_equip_slot_id_to_name.clear();
|
||||
_equip_slot_name_to_id.clear();
|
||||
|
||||
_equip_slot_id_to_property.clear();
|
||||
_equip_slot_property_to_id.clear();
|
||||
}
|
||||
|
@ -126,6 +126,22 @@ public:
|
||||
int stat_get_main_stat_count() const;
|
||||
void stat_set_main_stat_count(const int index);
|
||||
|
||||
//Equipslots
|
||||
String equip_slot_get_string() const;
|
||||
void equip_slot_set_string(const String &equip_slot_enum_string);
|
||||
|
||||
int equip_slot_get_id(const StringName &name) const;
|
||||
StringName equip_slot_get_name(const int id) const;
|
||||
|
||||
int equip_slot_get_property_id(const StringName &name) const;
|
||||
StringName equip_slot_get_property_name(const int id) const;
|
||||
bool equip_slot_is_property(const StringName &name) const;
|
||||
|
||||
int equip_slot_get_count() const;
|
||||
|
||||
PoolStringArray equip_slots_get() const;
|
||||
void equip_slots_set(const PoolStringArray &array);
|
||||
|
||||
ESS();
|
||||
~ESS();
|
||||
|
||||
@ -162,6 +178,15 @@ private:
|
||||
|
||||
String _stat_enum_string;
|
||||
int _stat_main_stat_count;
|
||||
|
||||
//Equipslots
|
||||
Vector<StringName> _equip_slot_id_to_name;
|
||||
HashMap<StringName, int> _equip_slot_name_to_id;
|
||||
|
||||
Vector<StringName> _equip_slot_id_to_property;
|
||||
HashMap<StringName, int> _equip_slot_property_to_id;
|
||||
|
||||
String _equip_slot_enum_string;
|
||||
};
|
||||
|
||||
#endif
|
||||
|
Loading…
Reference in New Issue
Block a user