mirror of
https://github.com/Relintai/entity_spell_system.git
synced 2025-04-19 21:33:15 +02:00
Started implementing switchable equipment.
This commit is contained in:
parent
30332f7e7d
commit
dba901cc9e
@ -1,7 +1,5 @@
|
||||
#include "character_skeleton_visual_entry.h"
|
||||
|
||||
const String CharacterSkeletonVisualEntry::BINDING_STRING_BONE_ATTACHMENT_TYPES = "None, Mesh, Effect, Equipment, Override";
|
||||
|
||||
int CharacterSkeletonVisualEntry::get_id() {
|
||||
return _id;
|
||||
}
|
||||
@ -10,14 +8,6 @@ void CharacterSkeletonVisualEntry::set_id(int id) {
|
||||
_id = id;
|
||||
}
|
||||
|
||||
CharacterSkeletonVisualEntry::CharacterSkeletonVisualEntryType CharacterSkeletonVisualEntry::get_attachment_type() {
|
||||
return _attachment_type;
|
||||
}
|
||||
|
||||
void CharacterSkeletonVisualEntry::set_attachment_type(CharacterSkeletonVisualEntry::CharacterSkeletonVisualEntryType attachment_type) {
|
||||
_attachment_type = attachment_type;
|
||||
}
|
||||
|
||||
EntityEnums::CharacterSkeletonPoints CharacterSkeletonVisualEntry::get_target_bone() {
|
||||
return _target_bone;
|
||||
}
|
||||
@ -43,18 +33,13 @@ void CharacterSkeletonVisualEntry::set_mesh(Ref<MeshDataResource> mesh) {
|
||||
CharacterSkeletonVisualEntry::CharacterSkeletonVisualEntry() {
|
||||
_id = 0;
|
||||
_target_bone = EntityEnums::SKELETON_POINT_ROOT;
|
||||
_attachment_type = BONE_ATTACHMENT_TYPE_NONE;
|
||||
}
|
||||
|
||||
void CharacterSkeletonVisualEntry::_bind_methods() {
|
||||
ClassDB::bind_method(D_METHOD("get_id"), &CharacterSkeletonVisualEntry::get_id);
|
||||
ClassDB::bind_method(D_METHOD("set_id", "path"), &CharacterSkeletonVisualEntry::set_id);
|
||||
ADD_PROPERTY(PropertyInfo(Variant::INT, "id"), "set_id", "get_id");
|
||||
|
||||
ClassDB::bind_method(D_METHOD("get_attachment_type"), &CharacterSkeletonVisualEntry::get_attachment_type);
|
||||
ClassDB::bind_method(D_METHOD("set_attachment_type", "target_bone"), &CharacterSkeletonVisualEntry::set_attachment_type);
|
||||
ADD_PROPERTY(PropertyInfo(Variant::INT, "attachment_type", PROPERTY_HINT_ENUM, CharacterSkeletonVisualEntry::BINDING_STRING_BONE_ATTACHMENT_TYPES), "set_attachment_type", "get_attachment_type");
|
||||
|
||||
|
||||
ClassDB::bind_method(D_METHOD("get_target_bone"), &CharacterSkeletonVisualEntry::get_target_bone);
|
||||
ClassDB::bind_method(D_METHOD("set_target_bone", "target_bone"), &CharacterSkeletonVisualEntry::set_target_bone);
|
||||
ADD_PROPERTY(PropertyInfo(Variant::INT, "target_bone", PROPERTY_HINT_ENUM, EntityEnums::BINDING_STRING_CHARCATER_SKELETON_POINTS), "set_target_bone", "get_target_bone");
|
||||
@ -66,11 +51,5 @@ void CharacterSkeletonVisualEntry::_bind_methods() {
|
||||
ClassDB::bind_method(D_METHOD("get_mesh"), &CharacterSkeletonVisualEntry::get_mesh);
|
||||
ClassDB::bind_method(D_METHOD("set_mesh", "mesh"), &CharacterSkeletonVisualEntry::set_mesh);
|
||||
ADD_PROPERTY(PropertyInfo(Variant::OBJECT, "mesh", PROPERTY_HINT_RESOURCE_TYPE, "MeshDataResource"), "set_mesh", "get_mesh");
|
||||
|
||||
BIND_ENUM_CONSTANT(BONE_ATTACHMENT_TYPE_NONE);
|
||||
BIND_ENUM_CONSTANT(BONE_ATTACHMENT_TYPE_MESH);
|
||||
BIND_ENUM_CONSTANT(BONE_ATTACHMENT_TYPE_EFFECT);
|
||||
BIND_ENUM_CONSTANT(BONE_ATTACHMENT_TYPE_EQUIPMENT);
|
||||
BIND_ENUM_CONSTANT(BONE_ATTACHMENT_TYPE_OVERRIDE);
|
||||
}
|
||||
|
||||
|
@ -9,33 +9,14 @@
|
||||
#include "../entity_enums.h"
|
||||
|
||||
#include "../meshes/mesh_data_resource.h"
|
||||
#include "../skeleton/entity_texture_layer.h"
|
||||
|
||||
class CharacterSkeletonVisualEntry : public Resource {
|
||||
GDCLASS(CharacterSkeletonVisualEntry, Resource);
|
||||
|
||||
public:
|
||||
static const String BINDING_STRING_BONE_ATTACHMENT_TYPES;
|
||||
|
||||
enum {
|
||||
MAX_TEXTURE_LAYERS = 5
|
||||
};
|
||||
|
||||
//not needed, delete
|
||||
enum CharacterSkeletonVisualEntryType {
|
||||
BONE_ATTACHMENT_TYPE_NONE = 0,
|
||||
BONE_ATTACHMENT_TYPE_MESH = 1,
|
||||
BONE_ATTACHMENT_TYPE_EFFECT = 2,
|
||||
BONE_ATTACHMENT_TYPE_EQUIPMENT = 3,
|
||||
BONE_ATTACHMENT_TYPE_OVERRIDE = 4
|
||||
};
|
||||
|
||||
int get_id();
|
||||
void set_id(int id);
|
||||
|
||||
CharacterSkeletonVisualEntryType get_attachment_type();
|
||||
void set_attachment_type(CharacterSkeletonVisualEntryType attachment_type);
|
||||
|
||||
EntityEnums::CharacterSkeletonPoints get_target_bone();
|
||||
void set_target_bone(EntityEnums::CharacterSkeletonPoints bone);
|
||||
|
||||
@ -52,14 +33,9 @@ protected:
|
||||
|
||||
private:
|
||||
int _id;
|
||||
CharacterSkeletonVisualEntryType _attachment_type;
|
||||
EntityEnums::CharacterSkeletonPoints _target_bone;
|
||||
Ref<PackedScene> _effect;
|
||||
Ref<MeshDataResource> _mesh;
|
||||
//apply these from to to bottom, with color index 0, if index not present. store color index in item instance. Use the same index for all of them at once.
|
||||
Ref<EntityTextureLayer> _texture_layers[MAX_TEXTURE_LAYERS];
|
||||
};
|
||||
|
||||
VARIANT_ENUM_CAST(CharacterSkeletonVisualEntry::CharacterSkeletonVisualEntryType);
|
||||
|
||||
#endif
|
||||
|
@ -1,11 +1,14 @@
|
||||
#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_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>());
|
||||
|
||||
return _entries[index];
|
||||
}
|
||||
void EquipmentData::set_slot(int index, Ref<EquipmentDataEntry> entry) {
|
||||
void EquipmentData::set_slot(int index, Ref<ItemTemplate> entry) {
|
||||
ERR_FAIL_INDEX(index, ItemEnums::EQUIP_SLOT_EQUIP_SLOT_MAX);
|
||||
|
||||
_entries[index] = entry;
|
||||
@ -14,12 +17,12 @@ void EquipmentData::set_slot(int index, Ref<EquipmentDataEntry> entry) {
|
||||
Ref<ItemInstance> EquipmentData::get_item(int index) {
|
||||
ERR_FAIL_INDEX_V(index, ItemEnums::EQUIP_SLOT_EQUIP_SLOT_MAX, 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() {
|
||||
@ -36,6 +39,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, "EquipmentDataEntry"), "set_slot", "get_slot", i);
|
||||
ADD_PROPERTYI(PropertyInfo(Variant::OBJECT, "slot_" + ItemEnums::get_equip_slot_string(i), PROPERTY_HINT_RESOURCE_TYPE, "ItemTemplate"), "set_slot", "get_slot", i);
|
||||
}
|
||||
}
|
||||
|
@ -6,12 +6,15 @@
|
||||
#include "../item_enums.h"
|
||||
#include "equipment_data_entry.h"
|
||||
|
||||
class ItemTemplate;
|
||||
class ItemInstance;
|
||||
|
||||
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);
|
||||
|
||||
@ -22,7 +25,7 @@ protected:
|
||||
static void _bind_methods();
|
||||
|
||||
private:
|
||||
Ref<EquipmentDataEntry> _entries[ItemEnums::EQUIP_SLOT_EQUIP_SLOT_MAX];
|
||||
Ref<ItemTemplate> _entries[ItemEnums::EQUIP_SLOT_EQUIP_SLOT_MAX];
|
||||
};
|
||||
|
||||
#endif
|
||||
|
@ -1,23 +0,0 @@
|
||||
#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,25 +0,0 @@
|
||||
#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
|
@ -1,10 +1,74 @@
|
||||
#include "item_visual.h"
|
||||
|
||||
ItemEnums::EntityTextureLayers ItemVisual::get_layer() {
|
||||
return _layer;
|
||||
}
|
||||
void ItemVisual::set_layer(ItemEnums::EntityTextureLayers layer) {
|
||||
_layer = layer;
|
||||
}
|
||||
|
||||
Ref<ItemVisualEntry> ItemVisual::get_visual(int index) {
|
||||
ERR_FAIL_INDEX_V(index, EntityEnums::SKELETON_POINTS_MAX, Ref<ItemVisualEntry>());
|
||||
|
||||
return _entries[index];
|
||||
}
|
||||
void ItemVisual::set_visual(int index, Ref<ItemVisualEntry> entry) {
|
||||
ERR_FAIL_INDEX(index, EntityEnums::SKELETON_POINTS_MAX);
|
||||
|
||||
_entries[index] = entry;
|
||||
}
|
||||
|
||||
ItemVisual::ItemVisual() {
|
||||
_layer = ItemEnums::ENTITY_TEXTURE_LAYER_NONE;
|
||||
}
|
||||
|
||||
ItemVisual::~ItemVisual() {
|
||||
for (int i = 0; i < EntityEnums::SKELETON_POINTS_MAX; ++i) {
|
||||
_entries[i].unref();
|
||||
}
|
||||
}
|
||||
|
||||
void ItemVisual::_bind_methods() {
|
||||
ClassDB::bind_method(D_METHOD("get_layer"), &ItemVisual::get_layer);
|
||||
ClassDB::bind_method(D_METHOD("set_layer", "layer"), &ItemVisual::set_layer);
|
||||
ADD_PROPERTY(PropertyInfo(Variant::INT, "layer", PROPERTY_HINT_ENUM, ItemEnums::BINDING_STRING_ENTITY_TEXTURE_LAYERS), "set_layer", "get_layer");
|
||||
|
||||
ClassDB::bind_method(D_METHOD("get_visual", "index"), &ItemVisual::get_visual);
|
||||
ClassDB::bind_method(D_METHOD("set_visual", "index", "entry"), &ItemVisual::set_visual);
|
||||
|
||||
ADD_GROUP("Visuals", "visual_");
|
||||
ADD_PROPERTYI(PropertyInfo(Variant::OBJECT, "visual_root", PROPERTY_HINT_RESOURCE_TYPE, "ItemVisualEntry"), "set_visual", "get_visual", EntityEnums::SKELETON_POINT_ROOT);
|
||||
ADD_PROPERTYI(PropertyInfo(Variant::OBJECT, "visual_pelvis", PROPERTY_HINT_RESOURCE_TYPE, "ItemVisualEntry"), "set_visual", "get_visual", EntityEnums::SKELETON_POINT_PELVIS);
|
||||
ADD_PROPERTYI(PropertyInfo(Variant::OBJECT, "visual_spine", PROPERTY_HINT_RESOURCE_TYPE, "ItemVisualEntry"), "set_visual", "get_visual", EntityEnums::SKELETON_POINT_SPINE);
|
||||
ADD_PROPERTYI(PropertyInfo(Variant::OBJECT, "visual_spine_1", PROPERTY_HINT_RESOURCE_TYPE, "ItemVisualEntry"), "set_visual", "get_visual", EntityEnums::SKELETON_POINT_SPINE_1);
|
||||
ADD_PROPERTYI(PropertyInfo(Variant::OBJECT, "visual_spine_2", PROPERTY_HINT_RESOURCE_TYPE, "ItemVisualEntry"), "set_visual", "get_visual", EntityEnums::SKELETON_POINT_SPINE_2);
|
||||
ADD_PROPERTYI(PropertyInfo(Variant::OBJECT, "visual_neck", PROPERTY_HINT_RESOURCE_TYPE, "ItemVisualEntry"), "set_visual", "get_visual", EntityEnums::SKELETON_POINT_NECK);
|
||||
ADD_PROPERTYI(PropertyInfo(Variant::OBJECT, "visual_head", PROPERTY_HINT_RESOURCE_TYPE, "ItemVisualEntry"), "set_visual", "get_visual", EntityEnums::SKELETON_POINT_HEAD);
|
||||
|
||||
ADD_PROPERTYI(PropertyInfo(Variant::OBJECT, "visual_left_clavicle", PROPERTY_HINT_RESOURCE_TYPE, "ItemVisualEntry"), "set_visual", "get_visual", EntityEnums::SKELETON_POINT_LEFT_CLAVICLE);
|
||||
ADD_PROPERTYI(PropertyInfo(Variant::OBJECT, "visual_left_upper_arm", PROPERTY_HINT_RESOURCE_TYPE, "ItemVisualEntry"), "set_visual", "get_visual", EntityEnums::SKELETON_POINT_LEFT_UPPER_ARM);
|
||||
ADD_PROPERTYI(PropertyInfo(Variant::OBJECT, "visual_left_forearm", PROPERTY_HINT_RESOURCE_TYPE, "ItemVisualEntry"), "set_visual", "get_visual", EntityEnums::SKELETON_POINT_LEFT_FOREARM);
|
||||
ADD_PROPERTYI(PropertyInfo(Variant::OBJECT, "visual_left_hand", PROPERTY_HINT_RESOURCE_TYPE, "ItemVisualEntry"), "set_visual", "get_visual", EntityEnums::SKELETON_POINT_LEFT_HAND);
|
||||
ADD_PROPERTYI(PropertyInfo(Variant::OBJECT, "visual_left_thumb_base", PROPERTY_HINT_RESOURCE_TYPE, "ItemVisualEntry"), "set_visual", "get_visual", EntityEnums::SKELETON_POINT_LEFT_THUMB_BASE);
|
||||
ADD_PROPERTYI(PropertyInfo(Variant::OBJECT, "visual_left_thumb_end", PROPERTY_HINT_RESOURCE_TYPE, "ItemVisualEntry"), "set_visual", "get_visual", EntityEnums::SKELETON_POINT_LEFT_THUMB_END);
|
||||
ADD_PROPERTYI(PropertyInfo(Variant::OBJECT, "visual_left_fingers_base", PROPERTY_HINT_RESOURCE_TYPE, "ItemVisualEntry"), "set_visual", "get_visual", EntityEnums::SKELETON_POINT_LEFT_FINGERS_BASE);
|
||||
ADD_PROPERTYI(PropertyInfo(Variant::OBJECT, "visual_left_fingers_end", PROPERTY_HINT_RESOURCE_TYPE, "ItemVisualEntry"), "set_visual", "get_visual", EntityEnums::SKELETON_POINT_LEFT_FINGERS_END);
|
||||
|
||||
ADD_PROPERTYI(PropertyInfo(Variant::OBJECT, "visual_right_clavicle", PROPERTY_HINT_RESOURCE_TYPE, "ItemVisualEntry"), "set_visual", "get_visual", EntityEnums::SKELETON_POINT_RIGHT_CLAVICLE);
|
||||
ADD_PROPERTYI(PropertyInfo(Variant::OBJECT, "visual_right_upper_arm", PROPERTY_HINT_RESOURCE_TYPE, "ItemVisualEntry"), "set_visual", "get_visual", EntityEnums::SKELETON_POINT_RIGHT_UPPER_ARM);
|
||||
ADD_PROPERTYI(PropertyInfo(Variant::OBJECT, "visual_right_forearm", PROPERTY_HINT_RESOURCE_TYPE, "ItemVisualEntry"), "set_visual", "get_visual", EntityEnums::SKELETON_POINT_RIGHT_FOREARM);
|
||||
ADD_PROPERTYI(PropertyInfo(Variant::OBJECT, "visual_right_hand", PROPERTY_HINT_RESOURCE_TYPE, "ItemVisualEntry"), "set_visual", "get_visual", EntityEnums::SKELETON_POINT_RIGHT_HAND);
|
||||
ADD_PROPERTYI(PropertyInfo(Variant::OBJECT, "visual_right_thumb_base", PROPERTY_HINT_RESOURCE_TYPE, "ItemVisualEntry"), "set_visual", "get_visual", EntityEnums::SKELETON_POINT_RIGHT_THUMB_BASE);
|
||||
ADD_PROPERTYI(PropertyInfo(Variant::OBJECT, "visual_right_thumb_end", PROPERTY_HINT_RESOURCE_TYPE, "ItemVisualEntry"), "set_visual", "get_visual", EntityEnums::SKELETON_POINT_RIGHT_THUMB_END);
|
||||
ADD_PROPERTYI(PropertyInfo(Variant::OBJECT, "visual_right_fingers_base", PROPERTY_HINT_RESOURCE_TYPE, "ItemVisualEntry"), "set_visual", "get_visual", EntityEnums::SKELETON_POINT_RIGHT_FINGERS_BASE);
|
||||
ADD_PROPERTYI(PropertyInfo(Variant::OBJECT, "visual_right_fingers_end", PROPERTY_HINT_RESOURCE_TYPE, "ItemVisualEntry"), "set_visual", "get_visual", EntityEnums::SKELETON_POINT_RIGHT_FINGERS_END);
|
||||
|
||||
ADD_PROPERTYI(PropertyInfo(Variant::OBJECT, "visual_left_thigh", PROPERTY_HINT_RESOURCE_TYPE, "ItemVisualEntry"), "set_visual", "get_visual", EntityEnums::SKELETON_POINT_LEFT_THIGH);
|
||||
ADD_PROPERTYI(PropertyInfo(Variant::OBJECT, "visual_left_calf", PROPERTY_HINT_RESOURCE_TYPE, "ItemVisualEntry"), "set_visual", "get_visual", EntityEnums::SKELETON_POINT_LEFT_CALF);
|
||||
ADD_PROPERTYI(PropertyInfo(Variant::OBJECT, "visual_left_foot", PROPERTY_HINT_RESOURCE_TYPE, "ItemVisualEntry"), "set_visual", "get_visual", EntityEnums::SKELETON_POINT_LEFT_FOOT);
|
||||
|
||||
ADD_PROPERTYI(PropertyInfo(Variant::OBJECT, "visual_right_thigh", PROPERTY_HINT_RESOURCE_TYPE, "ItemVisualEntry"), "set_visual", "get_visual", EntityEnums::SKELETON_POINT_RIGHT_THIGH);
|
||||
ADD_PROPERTYI(PropertyInfo(Variant::OBJECT, "visual_right_calf", PROPERTY_HINT_RESOURCE_TYPE, "ItemVisualEntry"), "set_visual", "get_visual", EntityEnums::SKELETON_POINT_RIGHT_CALF);
|
||||
ADD_PROPERTYI(PropertyInfo(Variant::OBJECT, "visual_right_foot", PROPERTY_HINT_RESOURCE_TYPE, "ItemVisualEntry"), "set_visual", "get_visual", EntityEnums::SKELETON_POINT_RIGHT_FOOT);
|
||||
|
||||
}
|
||||
|
@ -3,17 +3,28 @@
|
||||
|
||||
#include "core/resource.h"
|
||||
|
||||
#include "../item_enums.h"
|
||||
#include "item_visual_entry.h"
|
||||
|
||||
class ItemVisual : public Resource {
|
||||
GDCLASS(ItemVisual, Resource);
|
||||
|
||||
public:
|
||||
ItemEnums::EntityTextureLayers get_layer();
|
||||
void set_layer(ItemEnums::EntityTextureLayers layer);
|
||||
|
||||
Ref<ItemVisualEntry> get_visual(int index);
|
||||
void set_visual(int index, Ref<ItemVisualEntry> entry);
|
||||
|
||||
ItemVisual();
|
||||
~ItemVisual();
|
||||
|
||||
protected:
|
||||
static void _bind_methods();
|
||||
|
||||
//private:
|
||||
private:
|
||||
ItemEnums::EntityTextureLayers _layer;
|
||||
Ref<ItemVisualEntry> _entries[EntityEnums::SKELETON_POINTS_MAX];
|
||||
};
|
||||
|
||||
#endif
|
||||
|
@ -1,11 +1,95 @@
|
||||
#include "item_visual_entry.h"
|
||||
|
||||
int ItemVisualEntry::get_id() {
|
||||
return _id;
|
||||
}
|
||||
void ItemVisualEntry::set_id(int id) {
|
||||
_id = id;
|
||||
}
|
||||
|
||||
EntityEnums::CharacterSkeletonPoints ItemVisualEntry::get_target_bone() {
|
||||
return _target_bone;
|
||||
}
|
||||
void ItemVisualEntry::set_target_bone(EntityEnums::CharacterSkeletonPoints bone) {
|
||||
_target_bone = bone;
|
||||
}
|
||||
|
||||
ItemEnums::EntityTextureLayers ItemVisualEntry::get_layer() {
|
||||
return _layer;
|
||||
}
|
||||
void ItemVisualEntry::set_layer(ItemEnums::EntityTextureLayers layer) {
|
||||
_layer = layer;
|
||||
}
|
||||
|
||||
Ref<MeshDataResource> ItemVisualEntry::get_mesh() {
|
||||
return _mesh;
|
||||
}
|
||||
void ItemVisualEntry::set_mesh(Ref<MeshDataResource> mesh) {
|
||||
_mesh = mesh;
|
||||
}
|
||||
|
||||
Ref<Texture> ItemVisualEntry::get_texture() {
|
||||
return _texture;
|
||||
}
|
||||
void ItemVisualEntry::set_texture(Ref<Texture> texture) {
|
||||
_texture = texture;
|
||||
}
|
||||
|
||||
Color ItemVisualEntry::get_color() {
|
||||
return _color;
|
||||
}
|
||||
void ItemVisualEntry::set_color(Color color) {
|
||||
_color = color;
|
||||
}
|
||||
|
||||
Ref<PackedScene> ItemVisualEntry::get_effect() {
|
||||
return _effect;
|
||||
}
|
||||
void ItemVisualEntry::set_effect(Ref<PackedScene> effect) {
|
||||
_effect = effect;
|
||||
}
|
||||
|
||||
ItemVisualEntry::ItemVisualEntry() {
|
||||
_id = 0;
|
||||
|
||||
_target_bone = EntityEnums::SKELETON_POINT_HEAD;
|
||||
_layer = ItemEnums::ENTITY_TEXTURE_LAYER_NONE;
|
||||
|
||||
_color = Color(1, 1, 1, 1);
|
||||
}
|
||||
|
||||
ItemVisualEntry::~ItemVisualEntry() {
|
||||
_mesh.unref();
|
||||
_texture.unref();
|
||||
_effect.unref();
|
||||
}
|
||||
|
||||
void ItemVisualEntry::_bind_methods() {
|
||||
ClassDB::bind_method(D_METHOD("get_id"), &ItemVisualEntry::get_id);
|
||||
ClassDB::bind_method(D_METHOD("set_id", "value"), &ItemVisualEntry::set_id);
|
||||
ADD_PROPERTY(PropertyInfo(Variant::INT, "id"), "set_id", "get_id");
|
||||
|
||||
ClassDB::bind_method(D_METHOD("get_target_bone"), &ItemVisualEntry::get_target_bone);
|
||||
ClassDB::bind_method(D_METHOD("set_target_bone", "bone"), &ItemVisualEntry::set_target_bone);
|
||||
ADD_PROPERTY(PropertyInfo(Variant::INT, "target_bone", PROPERTY_HINT_ENUM, EntityEnums::BINDING_STRING_CHARCATER_SKELETON_POINTS), "set_target_bone", "get_target_bone");
|
||||
|
||||
ClassDB::bind_method(D_METHOD("get_layer"), &ItemVisualEntry::get_layer);
|
||||
ClassDB::bind_method(D_METHOD("set_layer", "value"), &ItemVisualEntry::set_layer);
|
||||
ADD_PROPERTY(PropertyInfo(Variant::INT, "layer", PROPERTY_HINT_ENUM, ItemEnums::BINDING_STRING_ENTITY_TEXTURE_LAYERS), "set_layer", "get_layer");
|
||||
|
||||
ClassDB::bind_method(D_METHOD("get_mesh"), &ItemVisualEntry::get_mesh);
|
||||
ClassDB::bind_method(D_METHOD("set_mesh", "value"), &ItemVisualEntry::set_mesh);
|
||||
ADD_PROPERTY(PropertyInfo(Variant::OBJECT, "mesh", PROPERTY_HINT_RESOURCE_TYPE, "MeshDataResource"), "set_mesh", "get_mesh");
|
||||
|
||||
ClassDB::bind_method(D_METHOD("get_texture"), &ItemVisualEntry::get_texture);
|
||||
ClassDB::bind_method(D_METHOD("set_texture", "value"), &ItemVisualEntry::set_texture);
|
||||
ADD_PROPERTY(PropertyInfo(Variant::OBJECT, "texture", PROPERTY_HINT_RESOURCE_TYPE, "Texture"), "set_texture", "get_texture");
|
||||
|
||||
ClassDB::bind_method(D_METHOD("get_color"), &ItemVisualEntry::get_color);
|
||||
ClassDB::bind_method(D_METHOD("set_color", "value"), &ItemVisualEntry::set_color);
|
||||
ADD_PROPERTY(PropertyInfo(Variant::INT, "color"), "set_color", "get_color");
|
||||
|
||||
ClassDB::bind_method(D_METHOD("get_effect"), &ItemVisualEntry::get_effect);
|
||||
ClassDB::bind_method(D_METHOD("set_effect", "value"), &ItemVisualEntry::set_effect);
|
||||
ADD_PROPERTY(PropertyInfo(Variant::OBJECT, "effect", PROPERTY_HINT_RESOURCE_TYPE, "PackedScene"), "set_effect", "get_effect");
|
||||
}
|
||||
|
@ -2,18 +2,59 @@
|
||||
#define ITEM_VISUAL_ENTRY_H
|
||||
|
||||
#include "core/resource.h"
|
||||
#include "core/ustring.h"
|
||||
#include "core/color.h"
|
||||
#include "scene/resources/texture.h"
|
||||
|
||||
#include "../entity_enums.h"
|
||||
#include "../item_enums.h"
|
||||
|
||||
#include "scene/resources/packed_scene.h"
|
||||
#include "scene/resources/mesh.h"
|
||||
#include "../meshes/mesh_data_resource.h"
|
||||
|
||||
class ItemVisualEntry : public Resource {
|
||||
GDCLASS(ItemVisualEntry, Resource);
|
||||
|
||||
public:
|
||||
int get_id();
|
||||
void set_id(int id);
|
||||
|
||||
EntityEnums::CharacterSkeletonPoints get_target_bone();
|
||||
void set_target_bone(EntityEnums::CharacterSkeletonPoints bone);
|
||||
|
||||
ItemEnums::EntityTextureLayers get_layer();
|
||||
void set_layer(ItemEnums::EntityTextureLayers layer);
|
||||
|
||||
Ref<MeshDataResource> get_mesh();
|
||||
void set_mesh(Ref<MeshDataResource> mesh);
|
||||
|
||||
Ref<Texture> get_texture();
|
||||
void set_texture(Ref<Texture> texture);
|
||||
|
||||
Color get_color();
|
||||
void set_color(Color color);
|
||||
|
||||
Ref<PackedScene> get_effect();
|
||||
void set_effect(Ref<PackedScene> effect);
|
||||
|
||||
ItemVisualEntry();
|
||||
~ItemVisualEntry();
|
||||
|
||||
protected:
|
||||
static void _bind_methods();
|
||||
|
||||
//private:
|
||||
private:
|
||||
int _id;
|
||||
|
||||
EntityEnums::CharacterSkeletonPoints _target_bone;
|
||||
ItemEnums::EntityTextureLayers _layer;
|
||||
Ref<MeshDataResource> _mesh;
|
||||
|
||||
Ref<Texture> _texture;
|
||||
Color _color;
|
||||
|
||||
Ref<PackedScene> _effect;
|
||||
};
|
||||
|
||||
#endif
|
||||
|
@ -1,6 +1,5 @@
|
||||
#include "item_enums.h"
|
||||
|
||||
|
||||
const String ItemEnums::BINDING_STRING_RARITY = "None,Common,Uncommon,Superior,Heroic,Mythic,Artifact";
|
||||
const String ItemEnums::BINDING_STRING_RARITY_FLAG = "Common,Uncommon,Superior,Heroic,Mythic,Artifact";
|
||||
const String ItemEnums::BINDING_STRING_ITEM_TYPE = "None,Equipment,Weapon,Potion,Herb,Ore,Gemstone,Food,Alchemy,Engineering,Enchanting,Tailoring,Recipe,Currency,Bag";
|
||||
@ -9,6 +8,7 @@ const String ItemEnums::BINDING_STRING_ITEM_SUB_TYPE = "None,Sword,Axe,Mace,Dagg
|
||||
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) {
|
||||
|
34
item_enums.h
34
item_enums.h
@ -16,6 +16,7 @@ public:
|
||||
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;
|
||||
|
||||
enum ItemRarity {
|
||||
ITEM_RARITY_NONE = 0,
|
||||
@ -108,6 +109,23 @@ public:
|
||||
ARMOR_TYPE_MAX = 5,
|
||||
};
|
||||
|
||||
enum EntityTextureLayers {
|
||||
ENTITY_TEXTURE_LAYER_NONE = 0,
|
||||
ENTITY_TEXTURE_LAYER_SKIN = 1,
|
||||
ENTITY_TEXTURE_LAYER_UNDERWEAR = 2,
|
||||
ENTITY_TEXTURE_LAYER_SHIRT = 3,
|
||||
ENTITY_TEXTURE_LAYER_CLOTHES_BASE = 4,
|
||||
ENTITY_TEXTURE_LAYER_CLOTHES_1 = 5,
|
||||
ENTITY_TEXTURE_LAYER_CLOTHES_2 = 6,
|
||||
ENTITY_TEXTURE_LAYER_CLOTHES_3 = 7,
|
||||
ENTITY_TEXTURE_LAYER_CLOTHES_4 = 8,
|
||||
ENTITY_TEXTURE_LAYER_CLOTHES_5 = 9,
|
||||
ENTITY_TEXTURE_LAYER_BELT = 10,
|
||||
ENTITY_TEXTURE_LAYER_TABARD = 11,
|
||||
ENTITY_TEXTURE_LAYER_OVERLAY = 12
|
||||
};
|
||||
|
||||
|
||||
static String get_equip_slot_string(int slot);
|
||||
static String get_armor_type_string(int type);
|
||||
|
||||
@ -191,6 +209,20 @@ protected:
|
||||
BIND_ENUM_CONSTANT(ARMOR_TYPE_MAIL);
|
||||
BIND_ENUM_CONSTANT(ARMOR_TYPE_PLATE);
|
||||
BIND_ENUM_CONSTANT(ARMOR_TYPE_MAX);
|
||||
|
||||
BIND_ENUM_CONSTANT(ENTITY_TEXTURE_LAYER_NONE);
|
||||
BIND_ENUM_CONSTANT(ENTITY_TEXTURE_LAYER_SKIN);
|
||||
BIND_ENUM_CONSTANT(ENTITY_TEXTURE_LAYER_UNDERWEAR);
|
||||
BIND_ENUM_CONSTANT(ENTITY_TEXTURE_LAYER_SHIRT);
|
||||
BIND_ENUM_CONSTANT(ENTITY_TEXTURE_LAYER_CLOTHES_BASE);
|
||||
BIND_ENUM_CONSTANT(ENTITY_TEXTURE_LAYER_CLOTHES_1);
|
||||
BIND_ENUM_CONSTANT(ENTITY_TEXTURE_LAYER_CLOTHES_2);
|
||||
BIND_ENUM_CONSTANT(ENTITY_TEXTURE_LAYER_CLOTHES_3);
|
||||
BIND_ENUM_CONSTANT(ENTITY_TEXTURE_LAYER_CLOTHES_4);
|
||||
BIND_ENUM_CONSTANT(ENTITY_TEXTURE_LAYER_CLOTHES_5);
|
||||
BIND_ENUM_CONSTANT(ENTITY_TEXTURE_LAYER_BELT);
|
||||
BIND_ENUM_CONSTANT(ENTITY_TEXTURE_LAYER_TABARD);
|
||||
BIND_ENUM_CONSTANT(ENTITY_TEXTURE_LAYER_OVERLAY);
|
||||
}
|
||||
};
|
||||
|
||||
@ -201,6 +233,6 @@ 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);
|
||||
|
||||
#endif
|
||||
|
@ -52,6 +52,8 @@ private:
|
||||
|
||||
Node *_bone_nodes[EntityEnums::SKELETON_POINTS_MAX];
|
||||
|
||||
Vector<Ref<ItemVisual> > _item_visuals;
|
||||
|
||||
Ref<CharacterSkeletonVisualEntry> _visuals[EntityEnums::SKELETON_POINTS_MAX];
|
||||
};
|
||||
|
||||
|
@ -1,45 +0,0 @@
|
||||
#ifndef ENTITY_TEXTURE_LAYER_H
|
||||
#define ENTITY_TEXTURE_LAYER_H
|
||||
|
||||
#include "core/resource.h"
|
||||
#include "core/ustring.h"
|
||||
|
||||
class EntityTextureLayer : public Resource {
|
||||
GDCLASS(EntityTextureLayer, Resource);
|
||||
|
||||
public:
|
||||
enum {
|
||||
MAX_COLORS = 6
|
||||
};
|
||||
|
||||
enum EntityTextureLayerLayers {
|
||||
ENTITY_TEXTURE_LAYER_NONE = 0,
|
||||
ENTITY_TEXTURE_LAYER_SKIN = 1,
|
||||
ENTITY_TEXTURE_LAYER_UNDERWEAR = 2,
|
||||
ENTITY_TEXTURE_LAYER_SHIRT = 3,
|
||||
ENTITY_TEXTURE_LAYER_CLOTHES_BASE = 4,
|
||||
ENTITY_TEXTURE_LAYER_BELT = 5,
|
||||
ENTITY_TEXTURE_LAYER_TABARD = 6,
|
||||
ENTITY_TEXTURE_LAYER_OVERLAY = 7
|
||||
};
|
||||
|
||||
enum EntityTextureLayerRectId {
|
||||
ENTITY_TEXTURE_LAYER_RECT_ID_FULL = 0,
|
||||
ENTITY_TEXTURE_LAYER_RECT_ID_HEAD = 1,
|
||||
ENTITY_TEXTURE_LAYER_RECT_ID_FOOT = 2,
|
||||
//etc
|
||||
};
|
||||
|
||||
Ref<Texture> get_texture();
|
||||
void set_texture(Ref<Texture> texture);
|
||||
|
||||
protected:
|
||||
static void _bind_methods();
|
||||
|
||||
private:
|
||||
Ref<Texture> _texture;
|
||||
int _layer;
|
||||
Color _colors[MAX_COLORS];
|
||||
};
|
||||
|
||||
#endif
|
Loading…
Reference in New Issue
Block a user