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;
}
Ref<MeshDataResource> ItemVisualEntry::get_mesh() {
return _mesh;
Ref<MeshDataResource> ItemVisualEntry::get_mesh(int index) {
return _mesh[index];
}
void ItemVisualEntry::set_mesh(Ref<MeshDataResource> mesh) {
_mesh = mesh;
void ItemVisualEntry::set_mesh(int index, Ref<MeshDataResource> mesh) {
_mesh[index] = mesh;
}
Ref<Texture> ItemVisualEntry::get_texture() {
return _texture;
Ref<Texture> ItemVisualEntry::get_texture(int index) {
return _texture[index];
}
void ItemVisualEntry::set_texture(Ref<Texture> texture) {
_texture = texture;
void ItemVisualEntry::set_texture(int index, Ref<Texture> texture) {
_texture[index] = texture;
}
Color ItemVisualEntry::get_color() {
@ -35,16 +35,25 @@ void ItemVisualEntry::set_effect(Ref<PackedScene> 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;
_color = Color(1, 1, 1, 1);
}
ItemVisualEntry::~ItemVisualEntry() {
_mesh.unref();
_texture.unref();
for (int i = 0; i < EntityEnums::GENDER_COUNT; ++i) {
_mesh[i].unref();
_texture[i].unref();
}
_effect.unref();
}
@ -53,13 +62,15 @@ void ItemVisualEntry::_bind_methods() {
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");
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_mesh", "index"), &ItemVisualEntry::get_mesh);
ClassDB::bind_method(D_METHOD("set_mesh", "index", "value"), &ItemVisualEntry::set_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("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_texture", "index"), &ItemVisualEntry::get_texture);
ClassDB::bind_method(D_METHOD("set_texture", "index", "value"), &ItemVisualEntry::set_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("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("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();
void set_override_layer(ItemEnums::EntityTextureLayers layer);
Ref<MeshDataResource> get_mesh();
void set_mesh(Ref<MeshDataResource> mesh);
Ref<MeshDataResource> get_mesh(int index);
void set_mesh(int index, Ref<MeshDataResource> mesh);
Ref<Texture> get_texture();
void set_texture(Ref<Texture> texture);
Ref<Texture> get_texture(int index);
void set_texture(int index, Ref<Texture> texture);
Color get_color();
void set_color(Color color);
@ -32,6 +32,9 @@ public:
Ref<PackedScene> get_effect();
void set_effect(Ref<PackedScene> effect);
Vector3 get_effect_offset(int index);
void set_effect_offset(int index, Vector3 offset);
ItemVisualEntry();
~ItemVisualEntry();
@ -40,12 +43,14 @@ protected:
private:
ItemEnums::EntityTextureLayers _override_layer;
Ref<MeshDataResource> _mesh;
Ref<Texture> _texture;
Ref<MeshDataResource> _mesh[EntityEnums::GENDER_COUNT];
Ref<Texture> _texture[EntityEnums::GENDER_COUNT];
Color _color;
Ref<PackedScene> _effect;
Vector3 _effect_offset[EntityEnums::GENDER_COUNT];
};
#endif

View File

@ -113,20 +113,24 @@ void Entity::setc_entity_name(String value) {
emit_signal("cname_changed", this);
}
int Entity::gets_gender() {
EntityEnums::EntityGender Entity::gets_gender() {
return _s_gender;
}
void Entity::sets_gender(int value) {
void Entity::sets_gender(EntityEnums::EntityGender value) {
_s_gender = value;
VRPC(setc_gender, value);
}
int Entity::getc_gender() {
EntityEnums::EntityGender Entity::getc_gender() {
return _c_gender;
}
void Entity::setc_gender(int value) {
void Entity::setc_gender(EntityEnums::EntityGender value) {
_c_gender = value;
if (ObjectDB::instance_validate(_character_skeleton)) {
_character_skeleton->set_gender(_c_gender);
}
}
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_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_xp(dict.get("xp", 0));
sets_money(dict.get("money", 0));
@ -4373,8 +4377,8 @@ Entity::Entity() {
_s_type = 0;
_c_type = 0;
_s_gender = 0;
_c_gender = 0;
_s_gender = EntityEnums::GENDER_MALE;
_c_gender = EntityEnums::GENDER_MALE;
_s_level = 1;
_c_level = 1;
@ -4442,21 +4446,6 @@ Entity::Entity() {
_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_decrease");
@ -4688,6 +4677,8 @@ void Entity::_notification(int p_what) {
if (node != NULL) {
_character_skeleton = Object::cast_to<CharacterSkeleton>(node);
_character_skeleton->set_gender(_c_gender);
} else {
_character_skeleton = NULL;
}

View File

@ -207,11 +207,11 @@ public:
String getc_entity_name();
void setc_entity_name(String value);
int gets_gender();
void sets_gender(int value);
EntityEnums::EntityGender gets_gender();
void sets_gender(EntityEnums::EntityGender value);
int getc_gender();
void setc_gender(int value);
EntityEnums::EntityGender getc_gender();
void setc_gender(EntityEnums::EntityGender value);
int gets_level();
void sets_level(int value);
@ -803,8 +803,8 @@ private:
int _s_type;
int _c_type;
int _s_gender;
int _c_gender;
EntityEnums::EntityGender _s_gender;
EntityEnums::EntityGender _c_gender;
int _s_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_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_GENDER = "Male,Female";
const int EntityEnums::PLAYER_RESOURCE_TYPES_RAGE = 0;
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_NONE);
BIND_ENUM_CONSTANT(GENDER_MALE);
BIND_ENUM_CONSTANT(GENDER_FEMALE);
BIND_CONSTANT(GENDER_COUNT);
BIND_CONSTANT(MAX_LEVEL);
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_INTERACTION_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_MANA;
@ -221,7 +222,13 @@ public:
ENTITY_CLASS_PLAYSTYLE_TYPE_NONE,
};
enum EntityGender {
GENDER_MALE = 0,
GENDER_FEMALE = 1,
};
enum {
GENDER_COUNT = 2,
MAX_LEVEL = 50,
BASE_XP = 50,
};
@ -242,5 +249,6 @@ VARIANT_ENUM_CAST(EntityEnums::AIStates);
VARIANT_ENUM_CAST(EntityEnums::EntityImmunityFlags);
VARIANT_ENUM_CAST(EntityEnums::EntityInteractionType);
VARIANT_ENUM_CAST(EntityEnums::EntityClassPlaystyleType);
VARIANT_ENUM_CAST(EntityEnums::EntityGender);
#endif

View File

@ -15,13 +15,25 @@ int CharacterSkeleton::get_item_visual_count() {
void CharacterSkeleton::clear_item_visuals() {
}
EntityEnums::EntityGender CharacterSkeleton::get_gender() {
return _gender;
}
void CharacterSkeleton::set_gender(EntityEnums::EntityGender value) {
_gender = value;
}
CharacterSkeleton::CharacterSkeleton() {
_gender = EntityEnums::GENDER_MALE;
}
CharacterSkeleton::~CharacterSkeleton() {
}
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("remove_item_visual", "vis"), &CharacterSkeleton::remove_item_visual);
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 void clear_item_visuals();
EntityEnums::EntityGender get_gender();
void set_gender(EntityEnums::EntityGender value);
CharacterSkeleton();
~CharacterSkeleton();
protected:
static void _bind_methods();
//private:
private:
EntityEnums::EntityGender _gender;
};