Added gender enum, and added it to ItemVisualEntry.

This commit is contained in:
Relintai 2019-11-03 22:39:19 +01:00
parent 91851d4ef9
commit d2c29095bb
8 changed files with 95 additions and 53 deletions

View File

@ -7,18 +7,18 @@ void ItemVisualEntry::set_override_layer(ItemEnums::EntityTextureLayers layer) {
_override_layer = layer; _override_layer = layer;
} }
Ref<MeshDataResource> ItemVisualEntry::get_mesh() { Ref<MeshDataResource> ItemVisualEntry::get_mesh(int index) {
return _mesh; return _mesh[index];
} }
void ItemVisualEntry::set_mesh(Ref<MeshDataResource> mesh) { void ItemVisualEntry::set_mesh(int index, Ref<MeshDataResource> mesh) {
_mesh = mesh; _mesh[index] = mesh;
} }
Ref<Texture> ItemVisualEntry::get_texture() { Ref<Texture> ItemVisualEntry::get_texture(int index) {
return _texture; return _texture[index];
} }
void ItemVisualEntry::set_texture(Ref<Texture> texture) { void ItemVisualEntry::set_texture(int index, Ref<Texture> texture) {
_texture = texture; _texture[index] = texture;
} }
Color ItemVisualEntry::get_color() { Color ItemVisualEntry::get_color() {
@ -35,16 +35,25 @@ void ItemVisualEntry::set_effect(Ref<PackedScene> effect) {
_effect = effect; _effect = effect;
} }
ItemVisualEntry::ItemVisualEntry() { Vector3 ItemVisualEntry::get_effect_offset(int index) {
return _effect_offset[index];
}
void ItemVisualEntry::set_effect_offset(int index, Vector3 offset) {
_effect_offset[index] = offset;
}
ItemVisualEntry::ItemVisualEntry() {
_override_layer = ItemEnums::ENTITY_TEXTURE_LAYER_NONE; _override_layer = ItemEnums::ENTITY_TEXTURE_LAYER_NONE;
_color = Color(1, 1, 1, 1); _color = Color(1, 1, 1, 1);
} }
ItemVisualEntry::~ItemVisualEntry() { ItemVisualEntry::~ItemVisualEntry() {
_mesh.unref(); for (int i = 0; i < EntityEnums::GENDER_COUNT; ++i) {
_texture.unref(); _mesh[i].unref();
_texture[i].unref();
}
_effect.unref(); _effect.unref();
} }
@ -53,13 +62,15 @@ void ItemVisualEntry::_bind_methods() {
ClassDB::bind_method(D_METHOD("set_override_layer", "value"), &ItemVisualEntry::set_override_layer); ClassDB::bind_method(D_METHOD("set_override_layer", "value"), &ItemVisualEntry::set_override_layer);
ADD_PROPERTY(PropertyInfo(Variant::INT, "override_layer", PROPERTY_HINT_ENUM, ItemEnums::BINDING_STRING_ENTITY_TEXTURE_LAYERS), "set_override_layer", "get_override_layer"); ADD_PROPERTY(PropertyInfo(Variant::INT, "override_layer", PROPERTY_HINT_ENUM, ItemEnums::BINDING_STRING_ENTITY_TEXTURE_LAYERS), "set_override_layer", "get_override_layer");
ClassDB::bind_method(D_METHOD("get_mesh"), &ItemVisualEntry::get_mesh); ClassDB::bind_method(D_METHOD("get_mesh", "index"), &ItemVisualEntry::get_mesh);
ClassDB::bind_method(D_METHOD("set_mesh", "value"), &ItemVisualEntry::set_mesh); ClassDB::bind_method(D_METHOD("set_mesh", "index", "value"), &ItemVisualEntry::set_mesh);
ADD_PROPERTY(PropertyInfo(Variant::OBJECT, "mesh", PROPERTY_HINT_RESOURCE_TYPE, "MeshDataResource"), "set_mesh", "get_mesh"); ADD_PROPERTYI(PropertyInfo(Variant::OBJECT, "mesh_male", PROPERTY_HINT_RESOURCE_TYPE, "MeshDataResource"), "set_mesh", "get_mesh", EntityEnums::GENDER_MALE);
ADD_PROPERTYI(PropertyInfo(Variant::OBJECT, "mesh_female", PROPERTY_HINT_RESOURCE_TYPE, "MeshDataResource"), "set_mesh", "get_mesh", EntityEnums::GENDER_FEMALE);
ClassDB::bind_method(D_METHOD("get_texture"), &ItemVisualEntry::get_texture); ClassDB::bind_method(D_METHOD("get_texture", "index"), &ItemVisualEntry::get_texture);
ClassDB::bind_method(D_METHOD("set_texture", "value"), &ItemVisualEntry::set_texture); ClassDB::bind_method(D_METHOD("set_texture", "index", "value"), &ItemVisualEntry::set_texture);
ADD_PROPERTY(PropertyInfo(Variant::OBJECT, "texture", PROPERTY_HINT_RESOURCE_TYPE, "Texture"), "set_texture", "get_texture"); ADD_PROPERTYI(PropertyInfo(Variant::OBJECT, "texture_male", PROPERTY_HINT_RESOURCE_TYPE, "Texture"), "set_texture", "get_texture", EntityEnums::GENDER_MALE);
ADD_PROPERTYI(PropertyInfo(Variant::OBJECT, "texture_female", PROPERTY_HINT_RESOURCE_TYPE, "Texture"), "set_texture", "get_texture", EntityEnums::GENDER_FEMALE);
ClassDB::bind_method(D_METHOD("get_color"), &ItemVisualEntry::get_color); ClassDB::bind_method(D_METHOD("get_color"), &ItemVisualEntry::get_color);
ClassDB::bind_method(D_METHOD("set_color", "value"), &ItemVisualEntry::set_color); ClassDB::bind_method(D_METHOD("set_color", "value"), &ItemVisualEntry::set_color);
@ -67,5 +78,11 @@ void ItemVisualEntry::_bind_methods() {
ClassDB::bind_method(D_METHOD("get_effect"), &ItemVisualEntry::get_effect); ClassDB::bind_method(D_METHOD("get_effect"), &ItemVisualEntry::get_effect);
ClassDB::bind_method(D_METHOD("set_effect", "value"), &ItemVisualEntry::set_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"); ADD_PROPERTY(PropertyInfo(Variant::OBJECT, "effect_male", PROPERTY_HINT_RESOURCE_TYPE, "PackedScene"), "set_effect", "get_effect");
ClassDB::bind_method(D_METHOD("get_effect_offset", "index"), &ItemVisualEntry::get_effect_offset);
ClassDB::bind_method(D_METHOD("set_effect_offset", "index", "value"), &ItemVisualEntry::set_effect_offset);
ADD_PROPERTYI(PropertyInfo(Variant::VECTOR3, "effect_offset_male"), "set_effect_offset", "get_effect_offset", EntityEnums::GENDER_MALE);
ADD_PROPERTYI(PropertyInfo(Variant::VECTOR3, "effect_offset_female"), "set_effect_offset", "get_effect_offset", EntityEnums::GENDER_FEMALE);
} }
;

View File

@ -20,11 +20,11 @@ public:
ItemEnums::EntityTextureLayers get_override_layer(); ItemEnums::EntityTextureLayers get_override_layer();
void set_override_layer(ItemEnums::EntityTextureLayers layer); void set_override_layer(ItemEnums::EntityTextureLayers layer);
Ref<MeshDataResource> get_mesh(); Ref<MeshDataResource> get_mesh(int index);
void set_mesh(Ref<MeshDataResource> mesh); void set_mesh(int index, Ref<MeshDataResource> mesh);
Ref<Texture> get_texture(); Ref<Texture> get_texture(int index);
void set_texture(Ref<Texture> texture); void set_texture(int index, Ref<Texture> texture);
Color get_color(); Color get_color();
void set_color(Color color); void set_color(Color color);
@ -32,6 +32,9 @@ public:
Ref<PackedScene> get_effect(); Ref<PackedScene> get_effect();
void set_effect(Ref<PackedScene> effect); void set_effect(Ref<PackedScene> effect);
Vector3 get_effect_offset(int index);
void set_effect_offset(int index, Vector3 offset);
ItemVisualEntry(); ItemVisualEntry();
~ItemVisualEntry(); ~ItemVisualEntry();
@ -40,12 +43,14 @@ protected:
private: private:
ItemEnums::EntityTextureLayers _override_layer; ItemEnums::EntityTextureLayers _override_layer;
Ref<MeshDataResource> _mesh;
Ref<Texture> _texture; Ref<MeshDataResource> _mesh[EntityEnums::GENDER_COUNT];
Ref<Texture> _texture[EntityEnums::GENDER_COUNT];
Color _color; Color _color;
Ref<PackedScene> _effect; Ref<PackedScene> _effect;
Vector3 _effect_offset[EntityEnums::GENDER_COUNT];
}; };
#endif #endif

View File

@ -113,20 +113,24 @@ void Entity::setc_entity_name(String value) {
emit_signal("cname_changed", this); emit_signal("cname_changed", this);
} }
int Entity::gets_gender() { EntityEnums::EntityGender Entity::gets_gender() {
return _s_gender; return _s_gender;
} }
void Entity::sets_gender(int value) { void Entity::sets_gender(EntityEnums::EntityGender value) {
_s_gender = value; _s_gender = value;
VRPC(setc_gender, value); VRPC(setc_gender, value);
} }
int Entity::getc_gender() { EntityEnums::EntityGender Entity::getc_gender() {
return _c_gender; return _c_gender;
} }
void Entity::setc_gender(int value) { void Entity::setc_gender(EntityEnums::EntityGender value) {
_c_gender = value; _c_gender = value;
if (ObjectDB::instance_validate(_character_skeleton)) {
_character_skeleton->set_gender(_c_gender);
}
} }
int Entity::gets_level() { int Entity::gets_level() {
@ -549,7 +553,7 @@ void Entity::_from_dict(const Dictionary &dict) {
sets_entity_type((EntityEnums::EntityType)((int)dict.get("type", 0))); sets_entity_type((EntityEnums::EntityType)((int)dict.get("type", 0)));
sets_gender(dict.get("gender", 0)); sets_gender(static_cast<EntityEnums::EntityGender>(static_cast<int>(dict.get("gender", 0))));
sets_level(dict.get("level", 0)); sets_level(dict.get("level", 0));
sets_xp(dict.get("xp", 0)); sets_xp(dict.get("xp", 0));
sets_money(dict.get("money", 0)); sets_money(dict.get("money", 0));
@ -4373,8 +4377,8 @@ Entity::Entity() {
_s_type = 0; _s_type = 0;
_c_type = 0; _c_type = 0;
_s_gender = 0; _s_gender = EntityEnums::GENDER_MALE;
_c_gender = 0; _c_gender = EntityEnums::GENDER_MALE;
_s_level = 1; _s_level = 1;
_c_level = 1; _c_level = 1;
@ -4442,21 +4446,6 @@ Entity::Entity() {
_formation_index = 0; _formation_index = 0;
/*
get_stat_enum(Stat::STAT_ID_HEALTH)->set_base(10000);
get_stat_enum(Stat::STAT_ID_MANA)->set_base(100);
get_stat_enum(Stat::STAT_ID_RAGE)->set_base(100);
get_stat_enum(Stat::STAT_ID_ENERGY)->set_base(100);
get_stat_enum(Stat::STAT_ID_SPEED)->set_base(4.2);
get_stat_enum(Stat::STAT_ID_GLOBAL_COOLDOWN)->set_base(1.5);
get_stat_enum(Stat::STAT_ID_MELEE_CRIT)->set_base(5);
get_stat_enum(Stat::STAT_ID_MELEE_CRIT_BONUS)->set_base(50);
get_stat_enum(Stat::STAT_ID_SPELL_CRIT)->set_base(5);
get_stat_enum(Stat::STAT_ID_SPELL_CRIT_BONUS)->set_base(50);
get_stat_enum(Stat::STAT_ID_BLOCK)->set_base(10);
get_stat_enum(Stat::STAT_ID_PARRY)->set_base(15);
get_stat_enum(Stat::STAT_ID_MELEE_DAMAGE_REDUCTION)->set_base(15);*/
SET_RPC_REMOTE("csend_request_rank_increase"); SET_RPC_REMOTE("csend_request_rank_increase");
SET_RPC_REMOTE("csend_request_rank_decrease"); SET_RPC_REMOTE("csend_request_rank_decrease");
@ -4688,6 +4677,8 @@ void Entity::_notification(int p_what) {
if (node != NULL) { if (node != NULL) {
_character_skeleton = Object::cast_to<CharacterSkeleton>(node); _character_skeleton = Object::cast_to<CharacterSkeleton>(node);
_character_skeleton->set_gender(_c_gender);
} else { } else {
_character_skeleton = NULL; _character_skeleton = NULL;
} }

View File

@ -207,11 +207,11 @@ public:
String getc_entity_name(); String getc_entity_name();
void setc_entity_name(String value); void setc_entity_name(String value);
int gets_gender(); EntityEnums::EntityGender gets_gender();
void sets_gender(int value); void sets_gender(EntityEnums::EntityGender value);
int getc_gender(); EntityEnums::EntityGender getc_gender();
void setc_gender(int value); void setc_gender(EntityEnums::EntityGender value);
int gets_level(); int gets_level();
void sets_level(int value); void sets_level(int value);
@ -803,8 +803,8 @@ private:
int _s_type; int _s_type;
int _c_type; int _c_type;
int _s_gender; EntityEnums::EntityGender _s_gender;
int _c_gender; EntityEnums::EntityGender _c_gender;
int _s_level; int _s_level;
int _c_level; int _c_level;

View File

@ -11,6 +11,7 @@ const String EntityEnums::BINDING_STRING_AI_STATES = "Off,Rest,Patrol,Follow Pat
const String EntityEnums::BINDING_STRING_ENTITY_IMMUNITY_FLAGS = "Stun,Root,Freeze,Silence,Disorient,Fear,Burning,Cold,Pacify,Magic,Poison,Physical,Curse,Bleed,Melee,Holy,Shadow,Nature,Fire,Frost,Lightning,Chaos,Slow,Crit,AOE,Damage,Fall Damage,Projectile,Debuff,Attacks"; const String EntityEnums::BINDING_STRING_ENTITY_IMMUNITY_FLAGS = "Stun,Root,Freeze,Silence,Disorient,Fear,Burning,Cold,Pacify,Magic,Poison,Physical,Curse,Bleed,Melee,Holy,Shadow,Nature,Fire,Frost,Lightning,Chaos,Slow,Crit,AOE,Damage,Fall Damage,Projectile,Debuff,Attacks";
const String EntityEnums::BINDING_STRING_ENTITY_INTERACTION_TYPE = "Normal,Speak,Loot,Use,None"; const String EntityEnums::BINDING_STRING_ENTITY_INTERACTION_TYPE = "Normal,Speak,Loot,Use,None";
const String EntityEnums::BINDING_STRING_ENTITY_PLAYSTYLE_TYPE = "Melee,Spell,Hybrid,None"; const String EntityEnums::BINDING_STRING_ENTITY_PLAYSTYLE_TYPE = "Melee,Spell,Hybrid,None";
const String EntityEnums::BINDING_STRING_ENTITY_GENDER = "Male,Female";
const int EntityEnums::PLAYER_RESOURCE_TYPES_RAGE = 0; const int EntityEnums::PLAYER_RESOURCE_TYPES_RAGE = 0;
const int EntityEnums::PLAYER_RESOURCE_TYPES_MANA = 1; const int EntityEnums::PLAYER_RESOURCE_TYPES_MANA = 1;
@ -171,6 +172,10 @@ void EntityEnums::_bind_methods() {
BIND_ENUM_CONSTANT(ENTITY_CLASS_PLAYSTYLE_TYPE_HYBRID); BIND_ENUM_CONSTANT(ENTITY_CLASS_PLAYSTYLE_TYPE_HYBRID);
BIND_ENUM_CONSTANT(ENTITY_CLASS_PLAYSTYLE_TYPE_NONE); BIND_ENUM_CONSTANT(ENTITY_CLASS_PLAYSTYLE_TYPE_NONE);
BIND_ENUM_CONSTANT(GENDER_MALE);
BIND_ENUM_CONSTANT(GENDER_FEMALE);
BIND_CONSTANT(GENDER_COUNT);
BIND_CONSTANT(MAX_LEVEL); BIND_CONSTANT(MAX_LEVEL);
BIND_CONSTANT(BASE_XP); BIND_CONSTANT(BASE_XP);
} }

View File

@ -19,6 +19,7 @@ public:
static const String BINDING_STRING_ENTITY_IMMUNITY_FLAGS; static const String BINDING_STRING_ENTITY_IMMUNITY_FLAGS;
static const String BINDING_STRING_ENTITY_INTERACTION_TYPE; static const String BINDING_STRING_ENTITY_INTERACTION_TYPE;
static const String BINDING_STRING_ENTITY_PLAYSTYLE_TYPE; static const String BINDING_STRING_ENTITY_PLAYSTYLE_TYPE;
static const String BINDING_STRING_ENTITY_GENDER;
static const int PLAYER_RESOURCE_TYPES_RAGE; static const int PLAYER_RESOURCE_TYPES_RAGE;
static const int PLAYER_RESOURCE_TYPES_MANA; static const int PLAYER_RESOURCE_TYPES_MANA;
@ -221,7 +222,13 @@ public:
ENTITY_CLASS_PLAYSTYLE_TYPE_NONE, ENTITY_CLASS_PLAYSTYLE_TYPE_NONE,
}; };
enum EntityGender {
GENDER_MALE = 0,
GENDER_FEMALE = 1,
};
enum { enum {
GENDER_COUNT = 2,
MAX_LEVEL = 50, MAX_LEVEL = 50,
BASE_XP = 50, BASE_XP = 50,
}; };
@ -242,5 +249,6 @@ VARIANT_ENUM_CAST(EntityEnums::AIStates);
VARIANT_ENUM_CAST(EntityEnums::EntityImmunityFlags); VARIANT_ENUM_CAST(EntityEnums::EntityImmunityFlags);
VARIANT_ENUM_CAST(EntityEnums::EntityInteractionType); VARIANT_ENUM_CAST(EntityEnums::EntityInteractionType);
VARIANT_ENUM_CAST(EntityEnums::EntityClassPlaystyleType); VARIANT_ENUM_CAST(EntityEnums::EntityClassPlaystyleType);
VARIANT_ENUM_CAST(EntityEnums::EntityGender);
#endif #endif

View File

@ -15,13 +15,25 @@ int CharacterSkeleton::get_item_visual_count() {
void CharacterSkeleton::clear_item_visuals() { void CharacterSkeleton::clear_item_visuals() {
} }
EntityEnums::EntityGender CharacterSkeleton::get_gender() {
return _gender;
}
void CharacterSkeleton::set_gender(EntityEnums::EntityGender value) {
_gender = value;
}
CharacterSkeleton::CharacterSkeleton() { CharacterSkeleton::CharacterSkeleton() {
_gender = EntityEnums::GENDER_MALE;
} }
CharacterSkeleton::~CharacterSkeleton() { CharacterSkeleton::~CharacterSkeleton() {
} }
void CharacterSkeleton::_bind_methods() { void CharacterSkeleton::_bind_methods() {
ClassDB::bind_method(D_METHOD("get_gender"), &CharacterSkeleton::get_gender);
ClassDB::bind_method(D_METHOD("set_gender", "value"), &CharacterSkeleton::set_gender);
ADD_PROPERTY(PropertyInfo(Variant::INT, "gender", PROPERTY_HINT_ENUM, EntityEnums::BINDING_STRING_ENTITY_GENDER), "set_gender", "get_gender");
ClassDB::bind_method(D_METHOD("add_item_visual", "vis"), &CharacterSkeleton::add_item_visual); ClassDB::bind_method(D_METHOD("add_item_visual", "vis"), &CharacterSkeleton::add_item_visual);
ClassDB::bind_method(D_METHOD("remove_item_visual", "vis"), &CharacterSkeleton::remove_item_visual); ClassDB::bind_method(D_METHOD("remove_item_visual", "vis"), &CharacterSkeleton::remove_item_visual);
ClassDB::bind_method(D_METHOD("remove_item_visual_index", "index"), &CharacterSkeleton::remove_item_visual_index); ClassDB::bind_method(D_METHOD("remove_item_visual_index", "index"), &CharacterSkeleton::remove_item_visual_index);

View File

@ -31,13 +31,17 @@ public:
virtual int get_item_visual_count(); virtual int get_item_visual_count();
virtual void clear_item_visuals(); virtual void clear_item_visuals();
EntityEnums::EntityGender get_gender();
void set_gender(EntityEnums::EntityGender value);
CharacterSkeleton(); CharacterSkeleton();
~CharacterSkeleton(); ~CharacterSkeleton();
protected: protected:
static void _bind_methods(); static void _bind_methods();
//private: private:
EntityEnums::EntityGender _gender;
}; };