mirror of
https://github.com/Relintai/entity_spell_system.git
synced 2025-05-11 22:42:10 +02:00
Networking for EntitySkills.
This commit is contained in:
parent
8c11a22209
commit
e72650419d
@ -3881,6 +3881,19 @@ void Entity::removec_spell_rpc(int id) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
//Skills
|
//Skills
|
||||||
|
bool Entity::hass_skill_id(int id) {
|
||||||
|
for (int i = 0; i < _s_skills.size(); ++i) {
|
||||||
|
Ref<EntitySkill> skill = _s_skills.get(i);
|
||||||
|
|
||||||
|
ERR_CONTINUE(!skill.is_valid());
|
||||||
|
|
||||||
|
if (skill->get_skill_id() == id) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
bool Entity::hass_skill(Ref<EntitySkill> skill) {
|
bool Entity::hass_skill(Ref<EntitySkill> skill) {
|
||||||
for (int i = 0; i < _s_skills.size(); ++i) {
|
for (int i = 0; i < _s_skills.size(); ++i) {
|
||||||
if (_s_skills.get(i) == skill) {
|
if (_s_skills.get(i) == skill) {
|
||||||
@ -3894,11 +3907,14 @@ void Entity::adds_skill(Ref<EntitySkill> skill) {
|
|||||||
if (hass_skill(skill))
|
if (hass_skill(skill))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
skill->connect("current_changed", this, "sskill_current_changed");
|
||||||
|
skill->connect("max_changed", this, "sskill_max_changed");
|
||||||
|
|
||||||
_s_skills.push_back(skill);
|
_s_skills.push_back(skill);
|
||||||
|
|
||||||
emit_signal("sskill_added", this, skill);
|
emit_signal("sskill_added", this, skill);
|
||||||
|
|
||||||
ORPC(addc_skill, skill);
|
ORPC(addc_skill_id, skill->get_skill_id(), skill->get_current(), skill->get_max());
|
||||||
}
|
}
|
||||||
void Entity::removes_skill(Ref<EntitySkill> skill) {
|
void Entity::removes_skill(Ref<EntitySkill> skill) {
|
||||||
for (int i = 0; i < _s_skills.size(); ++i) {
|
for (int i = 0; i < _s_skills.size(); ++i) {
|
||||||
@ -3910,7 +3926,7 @@ void Entity::removes_skill(Ref<EntitySkill> skill) {
|
|||||||
|
|
||||||
emit_signal("sskill_removed", this, skill);
|
emit_signal("sskill_removed", this, skill);
|
||||||
|
|
||||||
ORPC(removec_skill, skill);
|
ORPC(removec_skill_id, skill->get_skill_id());
|
||||||
}
|
}
|
||||||
Ref<EntitySkill> Entity::gets_skill(int index) {
|
Ref<EntitySkill> Entity::gets_skill(int index) {
|
||||||
ERR_FAIL_INDEX_V(index, _s_skills.size(), Ref<EntitySkill>());
|
ERR_FAIL_INDEX_V(index, _s_skills.size(), Ref<EntitySkill>());
|
||||||
@ -3921,6 +3937,19 @@ int Entity::gets_skill_count() {
|
|||||||
return _s_skills.size();
|
return _s_skills.size();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool Entity::hasc_skill_id(int id) {
|
||||||
|
for (int i = 0; i < _c_skills.size(); ++i) {
|
||||||
|
Ref<EntitySkill> skill = _c_skills.get(i);
|
||||||
|
|
||||||
|
ERR_CONTINUE(!skill.is_valid());
|
||||||
|
|
||||||
|
if (skill->get_skill_id() == id) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
bool Entity::hasc_skill(Ref<EntitySkill> skill) {
|
bool Entity::hasc_skill(Ref<EntitySkill> skill) {
|
||||||
for (int i = 0; i < _c_skills.size(); ++i) {
|
for (int i = 0; i < _c_skills.size(); ++i) {
|
||||||
if (_c_skills.get(i) == skill) {
|
if (_c_skills.get(i) == skill) {
|
||||||
@ -3957,6 +3986,75 @@ int Entity::getc_skill_count() {
|
|||||||
return _c_skills.size();
|
return _c_skills.size();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void Entity::sskill_current_changed(Ref<EntitySkill> skill) {
|
||||||
|
//todo events
|
||||||
|
|
||||||
|
ORPC(changec_skill, skill->get_skill_id(), skill->get_current());
|
||||||
|
}
|
||||||
|
void Entity::sskill_max_changed(Ref<EntitySkill> skill) {
|
||||||
|
//todo events
|
||||||
|
|
||||||
|
ORPC(changec_skill_max, skill->get_skill_id(), skill->get_max());
|
||||||
|
}
|
||||||
|
|
||||||
|
void Entity::addc_skill_id(int skill_id, int value, int max_value) {
|
||||||
|
ERR_FAIL_COND(hasc_skill_id(skill_id));
|
||||||
|
|
||||||
|
Ref<EntitySkill> skill;
|
||||||
|
skill.instance();
|
||||||
|
|
||||||
|
skill->set_skill_id(skill_id);
|
||||||
|
skill->set_current(value);
|
||||||
|
skill->set_max(max_value);
|
||||||
|
|
||||||
|
addc_skill(skill);
|
||||||
|
}
|
||||||
|
void Entity::removec_skill_id(int skill_id) {
|
||||||
|
for (int i = 0; i < _c_skills.size(); ++i) {
|
||||||
|
Ref<EntitySkill> skill = _c_skills.get(i);
|
||||||
|
|
||||||
|
ERR_CONTINUE(!skill.is_valid());
|
||||||
|
|
||||||
|
if (skill->get_skill_id() == skill_id) {
|
||||||
|
_c_skills.remove(i);
|
||||||
|
|
||||||
|
emit_signal("cskill_removed", this, skill);
|
||||||
|
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
void Entity::changec_skill(int skill_id, int value) {
|
||||||
|
for (int i = 0; i < _c_skills.size(); ++i) {
|
||||||
|
Ref<EntitySkill> skill = _c_skills.get(i);
|
||||||
|
|
||||||
|
ERR_CONTINUE(!skill.is_valid());
|
||||||
|
|
||||||
|
if (skill->get_skill_id() == skill_id) {
|
||||||
|
skill->set_current(value);
|
||||||
|
|
||||||
|
emit_signal("cskill_changed", this, skill);
|
||||||
|
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
void Entity::changec_skill_max(int skill_id, int value) {
|
||||||
|
for (int i = 0; i < _c_skills.size(); ++i) {
|
||||||
|
Ref<EntitySkill> skill = _c_skills.get(i);
|
||||||
|
|
||||||
|
ERR_CONTINUE(!skill.is_valid());
|
||||||
|
|
||||||
|
if (skill->get_skill_id() == skill_id) {
|
||||||
|
skill->set_max(value);
|
||||||
|
|
||||||
|
emit_signal("cskill_changed", this, skill);
|
||||||
|
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
//// Casting System ////
|
//// Casting System ////
|
||||||
|
|
||||||
bool Entity::sis_casting() {
|
bool Entity::sis_casting() {
|
||||||
@ -5174,8 +5272,10 @@ Entity::Entity() {
|
|||||||
|
|
||||||
//Skills
|
//Skills
|
||||||
|
|
||||||
SET_RPC_REMOTE("addc_skill");
|
SET_RPC_REMOTE("addc_skill_id");
|
||||||
SET_RPC_REMOTE("removec_skill");
|
SET_RPC_REMOTE("removec_skill_id");
|
||||||
|
SET_RPC_REMOTE("changec_skill");
|
||||||
|
SET_RPC_REMOTE("changec_skill_max");
|
||||||
|
|
||||||
//// Target ////
|
//// Target ////
|
||||||
|
|
||||||
@ -5380,6 +5480,7 @@ void Entity::_bind_methods() {
|
|||||||
|
|
||||||
ADD_SIGNAL(MethodInfo("cskill_added", PropertyInfo(Variant::OBJECT, "entity", PROPERTY_HINT_RESOURCE_TYPE, "Entity"), PropertyInfo(Variant::OBJECT, "skill", PROPERTY_HINT_RESOURCE_TYPE, "EntitySkill")));
|
ADD_SIGNAL(MethodInfo("cskill_added", PropertyInfo(Variant::OBJECT, "entity", PROPERTY_HINT_RESOURCE_TYPE, "Entity"), PropertyInfo(Variant::OBJECT, "skill", PROPERTY_HINT_RESOURCE_TYPE, "EntitySkill")));
|
||||||
ADD_SIGNAL(MethodInfo("cskill_removed", PropertyInfo(Variant::OBJECT, "entity", PROPERTY_HINT_RESOURCE_TYPE, "Entity"), PropertyInfo(Variant::OBJECT, "skill", PROPERTY_HINT_RESOURCE_TYPE, "EntitySkill")));
|
ADD_SIGNAL(MethodInfo("cskill_removed", PropertyInfo(Variant::OBJECT, "entity", PROPERTY_HINT_RESOURCE_TYPE, "Entity"), PropertyInfo(Variant::OBJECT, "skill", PROPERTY_HINT_RESOURCE_TYPE, "EntitySkill")));
|
||||||
|
ADD_SIGNAL(MethodInfo("cskill_changed", PropertyInfo(Variant::OBJECT, "entity", PROPERTY_HINT_RESOURCE_TYPE, "Entity"), PropertyInfo(Variant::OBJECT, "skill", PROPERTY_HINT_RESOURCE_TYPE, "EntitySkill")));
|
||||||
|
|
||||||
//setup
|
//setup
|
||||||
BIND_VMETHOD(MethodInfo("_setup"));
|
BIND_VMETHOD(MethodInfo("_setup"));
|
||||||
@ -6071,18 +6172,25 @@ void Entity::_bind_methods() {
|
|||||||
ClassDB::bind_method(D_METHOD("getc_craft_recipe_count"), &Entity::getc_craft_recipe_count);
|
ClassDB::bind_method(D_METHOD("getc_craft_recipe_count"), &Entity::getc_craft_recipe_count);
|
||||||
|
|
||||||
//Skills
|
//Skills
|
||||||
|
ClassDB::bind_method(D_METHOD("hass_skill_id", "id"), &Entity::hass_skill_id);
|
||||||
ClassDB::bind_method(D_METHOD("hass_skill", "skill"), &Entity::hass_skill);
|
ClassDB::bind_method(D_METHOD("hass_skill", "skill"), &Entity::hass_skill);
|
||||||
ClassDB::bind_method(D_METHOD("adds_skill", "skill"), &Entity::adds_skill);
|
ClassDB::bind_method(D_METHOD("adds_skill", "skill"), &Entity::adds_skill);
|
||||||
ClassDB::bind_method(D_METHOD("removes_skill", "skill"), &Entity::removes_skill);
|
ClassDB::bind_method(D_METHOD("removes_skill", "skill"), &Entity::removes_skill);
|
||||||
ClassDB::bind_method(D_METHOD("gets_skill", "skill"), &Entity::gets_skill);
|
ClassDB::bind_method(D_METHOD("gets_skill", "skill"), &Entity::gets_skill);
|
||||||
ClassDB::bind_method(D_METHOD("gets_skill_count"), &Entity::gets_skill_count);
|
ClassDB::bind_method(D_METHOD("gets_skill_count"), &Entity::gets_skill_count);
|
||||||
|
|
||||||
|
ClassDB::bind_method(D_METHOD("hasc_skill_id", "id"), &Entity::hasc_skill_id);
|
||||||
ClassDB::bind_method(D_METHOD("hasc_skill", "skill"), &Entity::hasc_skill);
|
ClassDB::bind_method(D_METHOD("hasc_skill", "skill"), &Entity::hasc_skill);
|
||||||
ClassDB::bind_method(D_METHOD("addc_skill", "skill"), &Entity::addc_skill);
|
ClassDB::bind_method(D_METHOD("addc_skill", "skill"), &Entity::addc_skill);
|
||||||
ClassDB::bind_method(D_METHOD("removec_skill", "skill"), &Entity::removec_skill);
|
ClassDB::bind_method(D_METHOD("removec_skill", "skill"), &Entity::removec_skill);
|
||||||
ClassDB::bind_method(D_METHOD("getc_skill", "skill"), &Entity::getc_skill);
|
ClassDB::bind_method(D_METHOD("getc_skill", "skill"), &Entity::getc_skill);
|
||||||
ClassDB::bind_method(D_METHOD("getc_skill_count"), &Entity::getc_skill_count);
|
ClassDB::bind_method(D_METHOD("getc_skill_count"), &Entity::getc_skill_count);
|
||||||
|
|
||||||
|
ClassDB::bind_method(D_METHOD("addc_skill_id", "skill_id", "value", "max_value"), &Entity::addc_skill_id);
|
||||||
|
ClassDB::bind_method(D_METHOD("removec_skill_id", "skill_id"), &Entity::removec_skill_id);
|
||||||
|
ClassDB::bind_method(D_METHOD("changec_skill", "skill_id", "value"), &Entity::changec_skill);
|
||||||
|
ClassDB::bind_method(D_METHOD("changec_skill_max", "skill_id", "value"), &Entity::changec_skill_max);
|
||||||
|
|
||||||
//skeleton
|
//skeleton
|
||||||
ClassDB::bind_method(D_METHOD("get_character_skeleton"), &Entity::get_character_skeleton);
|
ClassDB::bind_method(D_METHOD("get_character_skeleton"), &Entity::get_character_skeleton);
|
||||||
|
|
||||||
|
@ -674,18 +674,28 @@ public:
|
|||||||
|
|
||||||
//Skills
|
//Skills
|
||||||
|
|
||||||
|
bool hass_skill_id(int id);
|
||||||
bool hass_skill(Ref<EntitySkill> skill);
|
bool hass_skill(Ref<EntitySkill> skill);
|
||||||
void adds_skill(Ref<EntitySkill> skill);
|
void adds_skill(Ref<EntitySkill> skill);
|
||||||
void removes_skill(Ref<EntitySkill> skill);
|
void removes_skill(Ref<EntitySkill> skill);
|
||||||
Ref<EntitySkill> gets_skill(int skill);
|
Ref<EntitySkill> gets_skill(int skill);
|
||||||
int gets_skill_count();
|
int gets_skill_count();
|
||||||
|
|
||||||
|
bool hasc_skill_id(int id);
|
||||||
bool hasc_skill(Ref<EntitySkill> skill);
|
bool hasc_skill(Ref<EntitySkill> skill);
|
||||||
void addc_skill(Ref<EntitySkill> skill);
|
void addc_skill(Ref<EntitySkill> skill);
|
||||||
void removec_skill(Ref<EntitySkill> skill);
|
void removec_skill(Ref<EntitySkill> skill);
|
||||||
Ref<EntitySkill> getc_skill(int index);
|
Ref<EntitySkill> getc_skill(int index);
|
||||||
int getc_skill_count();
|
int getc_skill_count();
|
||||||
|
|
||||||
|
void sskill_current_changed(Ref<EntitySkill> skill);
|
||||||
|
void sskill_max_changed(Ref<EntitySkill> skill);
|
||||||
|
|
||||||
|
void addc_skill_id(int skill_id, int value, int max_value);
|
||||||
|
void removec_skill_id(int skill_id);
|
||||||
|
void changec_skill(int skill_id, int value);
|
||||||
|
void changec_skill_max(int skill_id, int value);
|
||||||
|
|
||||||
//// Target ////
|
//// Target ////
|
||||||
|
|
||||||
void crequest_target_change(NodePath path);
|
void crequest_target_change(NodePath path);
|
||||||
|
@ -22,6 +22,7 @@ public:
|
|||||||
|
|
||||||
bool get_disabled();
|
bool get_disabled();
|
||||||
void set_disabled(bool value);
|
void set_disabled(bool value);
|
||||||
|
|
||||||
Dictionary to_dict();
|
Dictionary to_dict();
|
||||||
void from_dict(const Dictionary &dict);
|
void from_dict(const Dictionary &dict);
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user