From 2c8becc27a38ed7256d481e73b57cfe9a9f28271 Mon Sep 17 00:00:00 2001 From: Relintai Date: Thu, 12 Sep 2019 13:26:52 +0200 Subject: [PATCH] Added xp and level based events. --- data/aura.cpp | 46 ++++- data/aura.h | 8 +- entities/data/entity_data.cpp | 78 ++++++++ entities/data/entity_data.h | 14 +- entities/entity.cpp | 342 ++++++++++++++++++++++------------ entities/entity.h | 177 +++++++++--------- 6 files changed, 459 insertions(+), 206 deletions(-) diff --git a/data/aura.cpp b/data/aura.cpp index 1dbac10..16c4bed 100644 --- a/data/aura.cpp +++ b/data/aura.cpp @@ -667,6 +667,20 @@ void Aura::son_physics_process(Ref data) { call("_son_gcd_finished", data); } +void Aura::son_xp_gained(Ref data, int value) { + ERR_FAIL_COND(!data.is_valid()); + + if (has_method("_son_xp_gained")) + call("_son_xp_gained", data, value); +} + +void Aura::son_level_up(Ref data, int value) { + ERR_FAIL_COND(!data.is_valid()); + + if (has_method("_son_level_up")) + call("_son_level_up", data, value); +} + void Aura::con_cast_failed(Ref data, Ref info) { if (has_method("_con_cast_failed")) call("_con_cast_failed", data, info); @@ -776,6 +790,20 @@ void Aura::con_gcd_finished(Ref data) { call("_con_gcd_finished", data); } +void Aura::con_xp_gained(Ref data, int value) { + ERR_FAIL_COND(!data.is_valid()); + + if (has_method("_con_xp_gained")) + call("_con_xp_gained", data, value); +} + +void Aura::con_level_up(Ref data, int value) { + ERR_FAIL_COND(!data.is_valid()); + + if (has_method("_con_level_up")) + call("_con_level_up", data, value); +} + void Aura::setup_aura_data(Ref data, Ref info) { ERR_FAIL_COND(!data.is_valid() || !info.is_valid()); @@ -1066,6 +1094,11 @@ void Aura::_bind_methods() { ClassDB::bind_method(D_METHOD("son_gcd_started", "data", "gcd"), &Aura::son_gcd_started); ClassDB::bind_method(D_METHOD("son_gcd_finished", "data"), &Aura::son_gcd_finished); + + ClassDB::bind_method(D_METHOD("son_physics_process", "data"), &Aura::son_physics_process); + + ClassDB::bind_method(D_METHOD("son_xp_gained", "data", "value"), &Aura::son_xp_gained); + ClassDB::bind_method(D_METHOD("son_level_up", "data", "value"), &Aura::son_level_up); BIND_VMETHOD(MethodInfo("_son_before_cast", PropertyInfo(Variant::OBJECT, "data", PROPERTY_HINT_RESOURCE_TYPE, "AuraData"), PropertyInfo(Variant::OBJECT, "info", PROPERTY_HINT_RESOURCE_TYPE, "SpellCastInfo"))); BIND_VMETHOD(MethodInfo("_son_before_cast_target", PropertyInfo(Variant::OBJECT, "data", PROPERTY_HINT_RESOURCE_TYPE, "AuraData"), PropertyInfo(Variant::OBJECT, "info", PROPERTY_HINT_RESOURCE_TYPE, "SpellCastInfo"))); @@ -1104,6 +1137,11 @@ void Aura::_bind_methods() { BIND_VMETHOD(MethodInfo("_son_gcd_started", PropertyInfo(Variant::OBJECT, "data", PROPERTY_HINT_RESOURCE_TYPE, "AuraData"), PropertyInfo(Variant::REAL, "gcd"))); BIND_VMETHOD(MethodInfo("_son_gcd_finished", PropertyInfo(Variant::OBJECT, "data", PROPERTY_HINT_RESOURCE_TYPE, "AuraData"))); + BIND_VMETHOD(MethodInfo("_son_physics_process", PropertyInfo(Variant::OBJECT, "data", PROPERTY_HINT_RESOURCE_TYPE, "AuraData"))); + + BIND_VMETHOD(MethodInfo("_son_xp_gained", PropertyInfo(Variant::OBJECT, "data", PROPERTY_HINT_RESOURCE_TYPE, "AuraData"), PropertyInfo(Variant::INT, "value"))); + BIND_VMETHOD(MethodInfo("_son_level_up", PropertyInfo(Variant::OBJECT, "data", PROPERTY_HINT_RESOURCE_TYPE, "AuraData"), PropertyInfo(Variant::INT, "value"))); + //Clientside Event Handlers ClassDB::bind_method(D_METHOD("con_cast_failed", "data", "info"), &Aura::con_cast_failed); ClassDB::bind_method(D_METHOD("con_cast_started", "data", "info"), &Aura::con_cast_started); @@ -1129,6 +1167,9 @@ void Aura::_bind_methods() { ClassDB::bind_method(D_METHOD("con_gcd_started", "data", "info"), &Aura::con_gcd_started); ClassDB::bind_method(D_METHOD("con_gcd_finished", "data"), &Aura::con_gcd_finished); + + ClassDB::bind_method(D_METHOD("con_xp_gained", "data", "value"), &Aura::con_xp_gained); + ClassDB::bind_method(D_METHOD("con_level_up", "data", "value"), &Aura::con_level_up); BIND_VMETHOD(MethodInfo("_con_cast_failed", PropertyInfo(Variant::OBJECT, "data", PROPERTY_HINT_RESOURCE_TYPE, "AuraData"), PropertyInfo(Variant::OBJECT, "info", PROPERTY_HINT_RESOURCE_TYPE, "SpellCastInfo"))); BIND_VMETHOD(MethodInfo("_con_cast_started", PropertyInfo(Variant::OBJECT, "data", PROPERTY_HINT_RESOURCE_TYPE, "AuraData"), PropertyInfo(Variant::OBJECT, "info", PROPERTY_HINT_RESOURCE_TYPE, "SpellCastInfo"))); @@ -1154,7 +1195,10 @@ void Aura::_bind_methods() { BIND_VMETHOD(MethodInfo("_con_gcd_started", PropertyInfo(Variant::OBJECT, "data", PROPERTY_HINT_RESOURCE_TYPE, "AuraData"), PropertyInfo(Variant::REAL, "gcd"))); BIND_VMETHOD(MethodInfo("_con_gcd_finished", PropertyInfo(Variant::OBJECT, "data", PROPERTY_HINT_RESOURCE_TYPE, "AuraData"))); - + + BIND_VMETHOD(MethodInfo("_con_xp_gained", PropertyInfo(Variant::OBJECT, "data", PROPERTY_HINT_RESOURCE_TYPE, "AuraData"), PropertyInfo(Variant::INT, "value"))); + BIND_VMETHOD(MethodInfo("_con_level_up", PropertyInfo(Variant::OBJECT, "data", PROPERTY_HINT_RESOURCE_TYPE, "AuraData"), PropertyInfo(Variant::INT, "value"))); + //Calculations / Queries ClassDB::bind_method(D_METHOD("setup_aura_data", "data", "info"), &Aura::setup_aura_data); diff --git a/data/aura.h b/data/aura.h index 740f354..f50beaf 100644 --- a/data/aura.h +++ b/data/aura.h @@ -256,6 +256,9 @@ public: void son_gcd_finished(Ref data); void son_physics_process(Ref data); + + void son_xp_gained(Ref data, int value); + void son_level_up(Ref data, int value); //Clientside Event Handlers void con_cast_failed(Ref data, Ref info); @@ -282,7 +285,10 @@ public: void con_gcd_started(Ref data, float gcd); void con_gcd_finished(Ref data); - + + void con_xp_gained(Ref data, int value); + void con_level_up(Ref data, int value); + //Calculations / Queries void setup_aura_data(Ref data, Ref info); diff --git a/entities/data/entity_data.cpp b/entities/data/entity_data.cpp index 21c8c9a..06b2289 100644 --- a/entities/data/entity_data.cpp +++ b/entities/data/entity_data.cpp @@ -702,6 +702,40 @@ void EntityData::son_gcd_finished_bind(Node *entity) { son_gcd_finished(e); } + +void EntityData::son_xp_gained(Entity *entity, int value) { + if (has_method("_son_xp_gained")) + call("_son_xp_gained", entity, value); + else if (_inherits.is_valid()) + _inherits->son_xp_gained(entity, value); +} +void EntityData::son_xp_gained_bind(Node *entity, int value) { + ERR_FAIL_COND(!ObjectDB::instance_validate(entity)); + + Entity *e = Object::cast_to(entity); + + ERR_FAIL_COND(e == NULL); + + son_xp_gained(e, value); +} + +void EntityData::son_level_up(Entity *entity, int value) { + if (has_method("_son_level_up")) + call("_son_level_up", entity); + else if (_inherits.is_valid()) + _inherits->son_level_up(entity, value); +} +void EntityData::son_level_up_bind(Node *entity, int value) { + ERR_FAIL_COND(!ObjectDB::instance_validate(entity)); + + Entity *e = Object::cast_to(entity); + + ERR_FAIL_COND(e == NULL); + + son_level_up(e, value); +} + + //Clientside Event Handlers void EntityData::con_cast_failed(Ref info) { ERR_FAIL_COND(!info.is_valid()); @@ -890,6 +924,38 @@ void EntityData::con_gcd_finished_bind(Node *entity) { con_gcd_finished(e); } +void EntityData::con_xp_gained(Entity *entity, int value) { + if (has_method("_con_xp_gained")) + call("_con_xp_gained", entity, value); + else if (_inherits.is_valid()) + _inherits->con_xp_gained(entity, value); +} +void EntityData::con_xp_gained_bind(Node *entity, int value) { + ERR_FAIL_COND(!ObjectDB::instance_validate(entity)); + + Entity *e = Object::cast_to(entity); + + ERR_FAIL_COND(e == NULL); + + con_xp_gained(e, value); +} + +void EntityData::con_level_up(Entity *entity, int value) { + if (has_method("_con_level_up")) + call("_con_level_up", entity); + else if (_inherits.is_valid()) + _inherits->con_level_up(entity, value); +} +void EntityData::con_level_up_bind(Node *entity, int value) { + ERR_FAIL_COND(!ObjectDB::instance_validate(entity)); + + Entity *e = Object::cast_to(entity); + + ERR_FAIL_COND(e == NULL); + + con_level_up(e, value); +} + void EntityData::sai_follow(Entity *entity) { ERR_FAIL_COND(entity == NULL); @@ -1011,6 +1077,9 @@ void EntityData::_bind_methods() { ClassDB::bind_method(D_METHOD("son_gcd_started", "entity", "gcd"), &EntityData::son_gcd_started_bind); ClassDB::bind_method(D_METHOD("son_gcd_finished", "entity"), &EntityData::son_gcd_finished_bind); + ClassDB::bind_method(D_METHOD("son_xp_gained", "entity", "value"), &EntityData::son_xp_gained_bind); + ClassDB::bind_method(D_METHOD("son_level_up", "entity", "value"), &EntityData::son_level_up_bind); + BIND_VMETHOD(MethodInfo("_son_before_cast", PropertyInfo(Variant::OBJECT, "info", PROPERTY_HINT_RESOURCE_TYPE, "SpellCastInfo"))); BIND_VMETHOD(MethodInfo("_son_before_cast_target", PropertyInfo(Variant::OBJECT, "info", PROPERTY_HINT_RESOURCE_TYPE, "SpellCastInfo"))); BIND_VMETHOD(MethodInfo("_son_cast_started", PropertyInfo(Variant::OBJECT, "info", PROPERTY_HINT_RESOURCE_TYPE, "SpellCastInfo"))); @@ -1050,6 +1119,9 @@ void EntityData::_bind_methods() { BIND_VMETHOD(MethodInfo("_son_gcd_started", PropertyInfo(Variant::OBJECT, "entity", PROPERTY_HINT_RESOURCE_TYPE, "Entity"), PropertyInfo(Variant::REAL, "gcd"))); BIND_VMETHOD(MethodInfo("_son_gcd_finished", PropertyInfo(Variant::OBJECT, "entity", PROPERTY_HINT_RESOURCE_TYPE, "Entity"))); + BIND_VMETHOD(MethodInfo("_son_xp_gained", PropertyInfo(Variant::OBJECT, "entity", PROPERTY_HINT_RESOURCE_TYPE, "Entity"), PropertyInfo(Variant::INT, "value"))); + BIND_VMETHOD(MethodInfo("_son_level_up", PropertyInfo(Variant::OBJECT, "entity", PROPERTY_HINT_RESOURCE_TYPE, "Entity"), PropertyInfo(Variant::INT, "value"))); + BIND_VMETHOD(MethodInfo("_setup_resources", PropertyInfo(Variant::OBJECT, "entity", PROPERTY_HINT_RESOURCE_TYPE, "Entity"))); //Clientside Event Handlers @@ -1073,6 +1145,9 @@ void EntityData::_bind_methods() { ClassDB::bind_method(D_METHOD("con_gcd_started", "entity", "gcd"), &EntityData::con_gcd_started_bind); ClassDB::bind_method(D_METHOD("con_gcd_finished", "entity"), &EntityData::con_gcd_finished_bind); + ClassDB::bind_method(D_METHOD("con_xp_gained", "entity", "value"), &EntityData::con_xp_gained_bind); + ClassDB::bind_method(D_METHOD("con_level_up", "entity", "value"), &EntityData::con_level_up_bind); + BIND_VMETHOD(MethodInfo("_con_cast_failed", PropertyInfo(Variant::OBJECT, "info", PROPERTY_HINT_RESOURCE_TYPE, "SpellCastInfo"))); BIND_VMETHOD(MethodInfo("_con_cast_started", PropertyInfo(Variant::OBJECT, "info", PROPERTY_HINT_RESOURCE_TYPE, "SpellCastInfo"))); BIND_VMETHOD(MethodInfo("_con_cast_state_changed", PropertyInfo(Variant::OBJECT, "info", PROPERTY_HINT_RESOURCE_TYPE, "SpellCastInfo"))); @@ -1093,6 +1168,9 @@ void EntityData::_bind_methods() { BIND_VMETHOD(MethodInfo("_con_gcd_started", PropertyInfo(Variant::OBJECT, "entity", PROPERTY_HINT_RESOURCE_TYPE, "Entity"), PropertyInfo(Variant::REAL, "gcd"))); BIND_VMETHOD(MethodInfo("_con_gcd_finished", PropertyInfo(Variant::OBJECT, "entity", PROPERTY_HINT_RESOURCE_TYPE, "Entity"))); + BIND_VMETHOD(MethodInfo("_con_xp_gained", PropertyInfo(Variant::OBJECT, "entity", PROPERTY_HINT_RESOURCE_TYPE, "Entity"), PropertyInfo(Variant::INT, "value"))); + BIND_VMETHOD(MethodInfo("_con_level_up", PropertyInfo(Variant::OBJECT, "entity", PROPERTY_HINT_RESOURCE_TYPE, "Entity"), PropertyInfo(Variant::INT, "value"))); + ClassDB::bind_method(D_METHOD("sai_follow", "entity"), &EntityData::sai_follow_bind); ClassDB::bind_method(D_METHOD("sai_rest", "entity"), &EntityData::sai_rest_bind); ClassDB::bind_method(D_METHOD("sai_regenerate", "entity"), &EntityData::sai_regenerate_bind); diff --git a/entities/data/entity_data.h b/entities/data/entity_data.h index 8e27629..7c54f49 100644 --- a/entities/data/entity_data.h +++ b/entities/data/entity_data.h @@ -200,7 +200,12 @@ public: void son_gcd_finished(Entity *entity); void son_gcd_started_bind(Node *entity, float gcd); void son_gcd_finished_bind(Node *entity); - + + void son_xp_gained(Entity *entity, int value); + void son_xp_gained_bind(Node *entity, int value); + void son_level_up(Entity *entity, int value); + void son_level_up_bind(Node *entity, int value); + //Clientside Event Handlers void con_cast_failed(Ref info); void con_cast_started(Ref info); @@ -229,7 +234,12 @@ public: void con_gcd_finished(Entity *entity); void con_gcd_started_bind(Node *entity, float gcd); void con_gcd_finished_bind(Node *entity); - + + void con_xp_gained(Entity *entity, int value); + void con_xp_gained_bind(Node *entity, int value); + void con_level_up(Entity *entity, int value); + void con_level_up_bind(Node *entity, int value); + // AI // void sai_follow(Entity *entity); void sai_rest(Entity *entity); diff --git a/entities/entity.cpp b/entities/entity.cpp index e2c37b7..8392649 100644 --- a/entities/entity.cpp +++ b/entities/entity.cpp @@ -173,7 +173,6 @@ void Entity::setc_xp(int value) { _c_xp = value; } - int Entity::gets_money() { return _s_money; } @@ -190,7 +189,6 @@ void Entity::setc_money(int value) { _c_money = value; } - Ref Entity::getc_entity_data() { return _c_entity_data; } @@ -208,7 +206,7 @@ Ref Entity::gets_entity_data() { void Entity::sets_entity_data(Ref value) { _s_entity_data = value; - setup(); + setup(); emit_signal("sentity_data_changed", value); @@ -216,27 +214,26 @@ void Entity::sets_entity_data(Ref value) { } void Entity::setup() { - if (has_method("_setup")) { - call("_setup"); - } + if (has_method("_setup")) { + call("_setup"); + } } void Entity::_setup() { - if (_s_entity_data.is_valid()) { + if (_s_entity_data.is_valid()) { _s_entity_data->setup_resources(this); sinitialize_stats(); sets_entity_data_id(_s_entity_data->get_id()); - - - sets_entity_type(_s_entity_data->get_entity_type()); - sets_immunity_flags(_s_entity_data->get_immunity_flags()); - sets_entity_flags(_s_entity_data->get_entity_flags()); + + sets_entity_type(_s_entity_data->get_entity_type()); + sets_immunity_flags(_s_entity_data->get_immunity_flags()); + sets_entity_flags(_s_entity_data->get_entity_flags()); if (_s_entity_controller == EntityEnums::ENITIY_CONTROLLER_NONE) sets_entity_controller(_s_entity_data->get_entity_controller()); - sets_player_name(_s_entity_data->get_entity_name()); - sets_money(_s_entity_data->get_money()); + sets_player_name(_s_entity_data->get_entity_name()); + sets_money(_s_entity_data->get_money()); } if (!Engine::get_singleton()->is_editor_hint()) @@ -263,9 +260,9 @@ Entity::Entity() { _c_xp = 0; _s_send_flag = 0; - - _c_money = 0; - _s_money = 0; + + _c_money = 0; + _s_money = 0; _s_player_name = ""; _c_player_name = ""; @@ -295,13 +292,13 @@ Entity::Entity() { _s_entity_type = EntityEnums::ENITIY_TYPE_NONE; _c_entity_type = EntityEnums::ENITIY_TYPE_NONE; - _s_immunity_flags = 0; - - _s_entity_flags = 0; - _c_entity_flags = 0; - - _s_entity_controller = EntityEnums::ENITIY_CONTROLLER_NONE; - + _s_immunity_flags = 0; + + _s_entity_flags = 0; + _c_entity_flags = 0; + + _s_entity_controller = EntityEnums::ENITIY_CONTROLLER_NONE; + _s_target = NULL; _c_target = NULL; @@ -428,19 +425,19 @@ Entity::Entity() { } Entity::~Entity() { - //Ref _s_entity_data; + //Ref _s_entity_data; //Ref _c_entity_data; - - _s_resources.clear(); + + _s_resources.clear(); _c_resources.clear(); - - //Ref _s_spell_cast_info; + + //Ref _s_spell_cast_info; //Ref _c_spell_cast_info; - - _s_auras.clear(); + + _s_auras.clear(); _c_auras.clear(); - - _s_cooldowns.clear(); + + _s_cooldowns.clear(); _c_cooldowns.clear(); _s_cooldown_map.clear(); @@ -448,8 +445,8 @@ Entity::~Entity() { _s_category_cooldowns.clear(); _c_category_cooldowns.clear(); - - _s_data.clear(); + + _s_data.clear(); _c_data.clear(); } @@ -754,21 +751,21 @@ void Entity::stake_damage(Ref info) { } son_before_damage_hit(info); - - if (info->get_immune()) { - SEND_RPC(rpc("con_damage_dealt", info), con_damage_dealt(info)); - return; - } - + + if (info->get_immune()) { + SEND_RPC(rpc("con_damage_dealt", info), con_damage_dealt(info)); + return; + } + //send it through the passive damage reductions pipeline sapply_passives_damage_receive(info); - + //send it through the onbeforehit handler son_before_damage(info); - + //send it throug the onhit pipeliine son_hit(info); - + son_damage_receive(info); int h = get_health()->gets_current() - info->get_damage(); @@ -824,17 +821,17 @@ void Entity::stake_heal(Ref info) { if (gets_is_dead()) { return; } - + son_before_heal_hit(info); - + if (info->get_immune()) { - SEND_RPC(rpc("con_heal_dealt", info), con_heal_dealt(info)); - return; - } + SEND_RPC(rpc("con_heal_dealt", info), con_heal_dealt(info)); + return; + } //send it through the passive damage reductions pipeline sapply_passives_heal_receive(info); - + //send it through the onbeforehit handler son_before_heal(info); @@ -871,23 +868,50 @@ void Entity::sdeal_heal_to(Ref info) { //Interactions bool Entity::cans_interact() { - if (!_s_entity_data.is_valid()) { - return false; - } - - return _s_entity_data->cans_interact(this); + if (!_s_entity_data.is_valid()) { + return false; + } + + return _s_entity_data->cans_interact(this); } void Entity::sinteract() { - if (!cans_interact()) { - return; - } - - _s_entity_data->sinteract(this); + if (!cans_interact()) { + return; + } + + _s_entity_data->sinteract(this); } void Entity::crequest_interact() { - sinteract(); + sinteract(); +} + +//XP Operations +void Entity::adds_xp(int value) { + _s_xp += value; + + son_xp_gained(value); + + SEND_RPC(rpc("addc_xp", value), addc_xp(value)); +} +void Entity::addc_xp(int value) { + _c_xp += value; + + con_xp_gained(value); +} + +void Entity::s_levelup(int value) { + _s_level += value; + + son_level_up(value); + + SEND_RPC(rpc("c_levelup", value), c_levelup(value)); +} +void Entity::c_levelup(int value) { + _s_level += value; + + con_level_up(value); } void Entity::resurrect() { @@ -1467,6 +1491,36 @@ void Entity::son_physics_process() { } } +void Entity::son_xp_gained(int value) { + if (_s_entity_data.is_valid()) { + _s_entity_data->son_xp_gained(this, value); + } + + if (has_method("_son_xp_gained")) + call("_son_xp_gained", value); + + for (int i = 0; i < _s_auras.size(); ++i) { + Ref ad = _s_auras.get(i); + + ad->get_aura()->son_xp_gained(ad, value); + } +} + +void Entity::son_level_up(int value) { + if (_s_entity_data.is_valid()) { + _s_entity_data->son_level_up(this, _s_level); + } + + if (has_method("_son_level_up")) + call("_son_level_up", _s_level); + + for (int i = 0; i < _s_auras.size(); ++i) { + Ref ad = _s_auras.get(i); + + ad->get_aura()->son_level_up(ad, _s_level); + } +} + void Entity::sadd_aura(Ref aura) { ERR_FAIL_COND(!aura.is_valid()); @@ -2058,6 +2112,36 @@ void Entity::con_dealt_heal(Ref info) { emit_signal("con_dealt_heal", this, info); } +void Entity::con_xp_gained(int value) { + if (_s_entity_data.is_valid()) { + _s_entity_data->con_xp_gained(this, value); + } + + if (has_method("_con_xp_gained")) + call("_con_xp_gained", value); + + for (int i = 0; i < _s_auras.size(); ++i) { + Ref ad = _s_auras.get(i); + + ad->get_aura()->con_xp_gained(ad, value); + } +} + +void Entity::con_level_up(int value) { + if (_s_entity_data.is_valid()) { + _s_entity_data->con_level_up(this, value); + } + + if (has_method("_con_level_up")) + call("_con_level_up", value); + + for (int i = 0; i < _s_auras.size(); ++i) { + Ref ad = _s_auras.get(i); + + ad->get_aura()->con_level_up(ad, value); + } +} + //// Casting System //// void Entity::sstart_casting(Ref info) { @@ -2700,44 +2784,41 @@ void Entity::creceive_rank(int talentID, int rank) { // return NULL; //} - //// DATA //// void Entity::adds_data(Ref data) { _s_data.push_back(data); } void Entity::removes_data(int index) { - ERR_FAIL_INDEX(index, _s_data.size()); - - _s_data.remove(index); + ERR_FAIL_INDEX(index, _s_data.size()); + + _s_data.remove(index); } Ref Entity::gets_data(int index) { ERR_FAIL_INDEX_V(index, _s_data.size(), Ref()); - - return _s_data.get(index); + + return _s_data.get(index); } int Entity::gets_data_count() { return _s_data.size(); } - void Entity::addc_data(Ref data) { _c_data.push_back(data); } void Entity::removec_data(int index) { - ERR_FAIL_INDEX(index, _c_data.size()); - - _c_data.remove(index); + ERR_FAIL_INDEX(index, _c_data.size()); + + _c_data.remove(index); } Ref Entity::getc_data(int index) { - ERR_FAIL_INDEX_V(index, _c_data.size(),Ref()); - - return _c_data.get(index); + ERR_FAIL_INDEX_V(index, _c_data.size(), Ref()); + + return _c_data.get(index); } int Entity::getc_data_count() { return _c_data.size(); } - void Entity::loaded() { //sendstate = true; } @@ -2912,9 +2993,9 @@ void Entity::_notification(int p_what) { case NOTIFICATION_PROCESS: { update(get_process_delta_time()); } break; - case NOTIFICATION_PHYSICS_PROCESS: { - son_physics_process(); - }break; + case NOTIFICATION_PHYSICS_PROCESS: { + son_physics_process(); + } break; case NOTIFICATION_EXIT_TREE: { } break; @@ -2944,7 +3025,7 @@ void Entity::_bind_methods() { ADD_SIGNAL(MethodInfo("sdied", PropertyInfo(Variant::OBJECT, "entity", PROPERTY_HINT_RESOURCE_TYPE, "Entity"))); ADD_SIGNAL(MethodInfo("cdied", PropertyInfo(Variant::OBJECT, "entity", PROPERTY_HINT_RESOURCE_TYPE, "Entity"))); - + //SpellCastSignals ADD_SIGNAL(MethodInfo("scast_started", PropertyInfo(Variant::OBJECT, "spell_cast_info", PROPERTY_HINT_RESOURCE_TYPE, "SpellCastInfo"))); ADD_SIGNAL(MethodInfo("scast_failed", PropertyInfo(Variant::OBJECT, "spell_cast_info", PROPERTY_HINT_RESOURCE_TYPE, "SpellCastInfo"))); @@ -2971,13 +3052,19 @@ void Entity::_bind_methods() { ADD_SIGNAL(MethodInfo("caura_removed_expired", PropertyInfo(Variant::OBJECT, "aura_data", PROPERTY_HINT_RESOURCE_TYPE, "AuraData"))); //ADD_SIGNAL(MethodInfo("caura_refreshed", PropertyInfo(Variant::OBJECT, "aura_data", PROPERTY_HINT_RESOURCE_TYPE, "AuraData"))); - //setup - BIND_VMETHOD(MethodInfo("_setup", PropertyInfo(Variant::OBJECT, "entity_data", PROPERTY_HINT_RESOURCE_TYPE, "EntityData"))); - - ClassDB::bind_method(D_METHOD("setup"), &Entity::setup); - ClassDB::bind_method(D_METHOD("_setup"), &Entity::_setup); - - //binds + ADD_SIGNAL(MethodInfo("son_xp_gained", PropertyInfo(Variant::OBJECT, "entity", PROPERTY_HINT_RESOURCE_TYPE, "Entity"), PropertyInfo(Variant::INT, "value"))); + ADD_SIGNAL(MethodInfo("son_level_up", PropertyInfo(Variant::OBJECT, "entity", PROPERTY_HINT_RESOURCE_TYPE, "Entity"), PropertyInfo(Variant::INT, "value"))); + + ADD_SIGNAL(MethodInfo("con_xp_gained", PropertyInfo(Variant::OBJECT, "entity", PROPERTY_HINT_RESOURCE_TYPE, "Entity"), PropertyInfo(Variant::INT, "value"))); + ADD_SIGNAL(MethodInfo("con_level_up", PropertyInfo(Variant::OBJECT, "entity", PROPERTY_HINT_RESOURCE_TYPE, "Entity"), PropertyInfo(Variant::INT, "value"))); + + //setup + BIND_VMETHOD(MethodInfo("_setup", PropertyInfo(Variant::OBJECT, "entity_data", PROPERTY_HINT_RESOURCE_TYPE, "EntityData"))); + + ClassDB::bind_method(D_METHOD("setup"), &Entity::setup); + ClassDB::bind_method(D_METHOD("_setup"), &Entity::_setup); + + //binds ClassDB::bind_method(D_METHOD("sdie"), &Entity::sdie); ClassDB::bind_method(D_METHOD("cdie"), &Entity::cdie); @@ -2992,7 +3079,7 @@ void Entity::_bind_methods() { BIND_VMETHOD(MethodInfo("_son_cast_finished", PropertyInfo(Variant::OBJECT, "info", PROPERTY_HINT_RESOURCE_TYPE, "SpellCastInfo"))); BIND_VMETHOD(MethodInfo("_son_cast_finished_target", PropertyInfo(Variant::OBJECT, "info", PROPERTY_HINT_RESOURCE_TYPE, "SpellCastInfo"))); - BIND_VMETHOD(MethodInfo("_son_before_damage_hit", PropertyInfo(Variant::OBJECT, "info", PROPERTY_HINT_RESOURCE_TYPE, "SpellDamageInfo"))); + BIND_VMETHOD(MethodInfo("_son_before_damage_hit", PropertyInfo(Variant::OBJECT, "info", PROPERTY_HINT_RESOURCE_TYPE, "SpellDamageInfo"))); BIND_VMETHOD(MethodInfo("_son_hit", PropertyInfo(Variant::OBJECT, "info", PROPERTY_HINT_RESOURCE_TYPE, "SpellDamageInfo"))); BIND_VMETHOD(MethodInfo("_son_before_damage", PropertyInfo(Variant::OBJECT, "info", PROPERTY_HINT_RESOURCE_TYPE, "SpellDamageInfo"))); @@ -3000,7 +3087,7 @@ void Entity::_bind_methods() { BIND_VMETHOD(MethodInfo("_son_dealt_damage", PropertyInfo(Variant::OBJECT, "info", PROPERTY_HINT_RESOURCE_TYPE, "SpellDamageInfo"))); BIND_VMETHOD(MethodInfo("_son_damage_dealt", PropertyInfo(Variant::OBJECT, "info", PROPERTY_HINT_RESOURCE_TYPE, "SpellDamageInfo"))); - BIND_VMETHOD(MethodInfo("_son_before_heal_hit", PropertyInfo(Variant::OBJECT, "info", PROPERTY_HINT_RESOURCE_TYPE, "SpellHealInfo"))); + BIND_VMETHOD(MethodInfo("_son_before_heal_hit", PropertyInfo(Variant::OBJECT, "info", PROPERTY_HINT_RESOURCE_TYPE, "SpellHealInfo"))); BIND_VMETHOD(MethodInfo("_son_before_heal", PropertyInfo(Variant::OBJECT, "info", PROPERTY_HINT_RESOURCE_TYPE, "SpellHealInfo"))); BIND_VMETHOD(MethodInfo("_son_heal_receive", PropertyInfo(Variant::OBJECT, "info", PROPERTY_HINT_RESOURCE_TYPE, "SpellHealInfo"))); BIND_VMETHOD(MethodInfo("_son_dealt_heal", PropertyInfo(Variant::OBJECT, "info", PROPERTY_HINT_RESOURCE_TYPE, "SpellHealInfo"))); @@ -3014,17 +3101,20 @@ void Entity::_bind_methods() { BIND_VMETHOD(MethodInfo("_son_gcd_started", PropertyInfo(Variant::REAL, "gcd"))); BIND_VMETHOD(MethodInfo("_son_gcd_finished")); + BIND_VMETHOD(MethodInfo("_son_xp_gained", PropertyInfo(Variant::INT, "value"))); + BIND_VMETHOD(MethodInfo("_son_level_up", PropertyInfo(Variant::INT, "value"))); + ClassDB::bind_method(D_METHOD("son_before_aura_applied", "data"), &Entity::son_before_aura_applied); ClassDB::bind_method(D_METHOD("son_after_aura_applied", "data"), &Entity::son_after_aura_applied); - ClassDB::bind_method(D_METHOD("son_before_damage_hit", "data"), &Entity::son_before_damage_hit); + ClassDB::bind_method(D_METHOD("son_before_damage_hit", "data"), &Entity::son_before_damage_hit); ClassDB::bind_method(D_METHOD("son_hit", "data"), &Entity::son_hit); ClassDB::bind_method(D_METHOD("son_before_damage", "data"), &Entity::son_before_damage); ClassDB::bind_method(D_METHOD("son_damage_receive", "data"), &Entity::son_damage_receive); ClassDB::bind_method(D_METHOD("son_dealt_damage", "data"), &Entity::son_dealt_damage); ClassDB::bind_method(D_METHOD("son_damage_dealt", "data"), &Entity::son_damage_dealt); - ClassDB::bind_method(D_METHOD("son_before_heal_hit", "data"), &Entity::son_before_heal_hit); + ClassDB::bind_method(D_METHOD("son_before_heal_hit", "data"), &Entity::son_before_heal_hit); ClassDB::bind_method(D_METHOD("son_before_heal", "data"), &Entity::son_before_heal); ClassDB::bind_method(D_METHOD("son_heal_receive", "data"), &Entity::son_heal_receive); ClassDB::bind_method(D_METHOD("son_dealt_heal", "data"), &Entity::son_dealt_heal); @@ -3042,6 +3132,10 @@ void Entity::_bind_methods() { ClassDB::bind_method(D_METHOD("son_gcd_started"), &Entity::son_gcd_started); ClassDB::bind_method(D_METHOD("son_gcd_finished"), &Entity::son_gcd_finished); + ClassDB::bind_method(D_METHOD("son_xp_gained", "value"), &Entity::son_xp_gained); + ClassDB::bind_method(D_METHOD("son_level_up", "value"), &Entity::son_level_up); + + //Clientside EventHandlers BIND_VMETHOD(MethodInfo("_con_cast_failed", PropertyInfo(Variant::OBJECT, "info", PROPERTY_HINT_RESOURCE_TYPE, "SpellCastInfo"))); BIND_VMETHOD(MethodInfo("_con_cast_started", PropertyInfo(Variant::OBJECT, "info", PROPERTY_HINT_RESOURCE_TYPE, "SpellCastInfo"))); @@ -3068,6 +3162,9 @@ void Entity::_bind_methods() { BIND_VMETHOD(MethodInfo("_con_gcd_started", PropertyInfo(Variant::REAL, "gcd"))); BIND_VMETHOD(MethodInfo("_con_gcd_finished")); + BIND_VMETHOD(MethodInfo("_con_xp_gained", PropertyInfo(Variant::INT, "value"))); + BIND_VMETHOD(MethodInfo("_con_level_up", PropertyInfo(Variant::INT, "value"))); + ClassDB::bind_method(D_METHOD("con_cast_failed", "info"), &Entity::con_cast_failed); ClassDB::bind_method(D_METHOD("con_cast_started", "info"), &Entity::con_cast_started); ClassDB::bind_method(D_METHOD("con_cast_state_changed", "info"), &Entity::con_cast_state_changed); @@ -3093,6 +3190,9 @@ void Entity::_bind_methods() { ClassDB::bind_method(D_METHOD("con_gcd_started"), &Entity::con_gcd_started); ClassDB::bind_method(D_METHOD("con_gcd_finished"), &Entity::con_gcd_finished); + ClassDB::bind_method(D_METHOD("con_xp_gained", "value"), &Entity::con_xp_gained); + ClassDB::bind_method(D_METHOD("con_level_up", "value"), &Entity::con_level_up); + //Modifiers/Requesters ClassDB::bind_method(D_METHOD("sapply_passives_damage_receive", "data"), &Entity::sapply_passives_damage_receive); ClassDB::bind_method(D_METHOD("sapply_passives_damage_deal", "data"), &Entity::sapply_passives_damage_deal); @@ -3108,11 +3208,17 @@ void Entity::_bind_methods() { //Heal Operations ClassDB::bind_method(D_METHOD("stake_heal", "data"), &Entity::stake_heal); ClassDB::bind_method(D_METHOD("sdeal_heal_to", "data"), &Entity::sdeal_heal_to); - - //Interactions - ClassDB::bind_method(D_METHOD("cans_interact"), &Entity::cans_interact); - ClassDB::bind_method(D_METHOD("sinteract"), &Entity::sinteract); - ClassDB::bind_method(D_METHOD("crequest_interact"), &Entity::crequest_interact); + + //Interactions + ClassDB::bind_method(D_METHOD("cans_interact"), &Entity::cans_interact); + ClassDB::bind_method(D_METHOD("sinteract"), &Entity::sinteract); + ClassDB::bind_method(D_METHOD("crequest_interact"), &Entity::crequest_interact); + + //XP Operations + ClassDB::bind_method(D_METHOD("adds_xp", "value"), &Entity::adds_xp); + ClassDB::bind_method(D_METHOD("addc_xp", "value"), &Entity::addc_xp); + ClassDB::bind_method(D_METHOD("s_levelup", "value"), &Entity::s_levelup); + ClassDB::bind_method(D_METHOD("c_levelup", "value"), &Entity::c_levelup); //Aura Manipulation ClassDB::bind_method(D_METHOD("sadd_aura", "aura"), &Entity::sadd_aura); @@ -3163,20 +3269,20 @@ void Entity::_bind_methods() { ClassDB::bind_method(D_METHOD("getc_entity_type"), &Entity::getc_entity_type); ClassDB::bind_method(D_METHOD("setc_entity_type", "value"), &Entity::sets_entity_type); ADD_PROPERTY(PropertyInfo(Variant::INT, "centity_type", PROPERTY_HINT_ENUM, EntityEnums::BINDING_STRING_ENTITY_TYPES), "setc_entity_type", "getc_entity_type"); - - ClassDB::bind_method(D_METHOD("gets_immunity_flags"), &Entity::gets_immunity_flags); + + ClassDB::bind_method(D_METHOD("gets_immunity_flags"), &Entity::gets_immunity_flags); ClassDB::bind_method(D_METHOD("sets_immunity_flags", "value"), &Entity::sets_immunity_flags); ADD_PROPERTY(PropertyInfo(Variant::INT, "simmunity_flags", PROPERTY_HINT_FLAGS, EntityEnums::BINDING_STRING_ENTITY_IMMUNITY_FLAGS), "sets_immunity_flags", "gets_immunity_flags"); - - ClassDB::bind_method(D_METHOD("gets_entity_flags"), &Entity::gets_entity_flags); + + ClassDB::bind_method(D_METHOD("gets_entity_flags"), &Entity::gets_entity_flags); ClassDB::bind_method(D_METHOD("sets_entity_flags", "value"), &Entity::sets_entity_flags); ADD_PROPERTY(PropertyInfo(Variant::INT, "sentity_flags", PROPERTY_HINT_FLAGS, EntityEnums::BINDING_STRING_ENTITY_FLAGS), "sets_entity_flags", "gets_entity_flags"); - - ClassDB::bind_method(D_METHOD("getc_entity_flags"), &Entity::getc_entity_flags); + + ClassDB::bind_method(D_METHOD("getc_entity_flags"), &Entity::getc_entity_flags); ClassDB::bind_method(D_METHOD("setc_entity_flags", "value"), &Entity::setc_entity_flags); ADD_PROPERTY(PropertyInfo(Variant::INT, "centity_flags", PROPERTY_HINT_FLAGS, EntityEnums::BINDING_STRING_ENTITY_FLAGS), "setc_entity_flags", "getc_entity_flags"); - - ClassDB::bind_method(D_METHOD("gets_entity_controller"), &Entity::gets_entity_controller); + + ClassDB::bind_method(D_METHOD("gets_entity_controller"), &Entity::gets_entity_controller); ClassDB::bind_method(D_METHOD("sets_entity_controller", "value"), &Entity::sets_entity_controller); ADD_PROPERTY(PropertyInfo(Variant::INT, "sentity_controller", PROPERTY_HINT_ENUM, EntityEnums::BINDING_STRING_ENTITY_CONTOLLER), "sets_entity_controller", "gets_entity_controller"); @@ -3203,12 +3309,12 @@ void Entity::_bind_methods() { ClassDB::bind_method(D_METHOD("getc_xp"), &Entity::getc_xp); ClassDB::bind_method(D_METHOD("setc_xp", "value"), &Entity::setc_xp); ADD_PROPERTY(PropertyInfo(Variant::STRING, "c_xp"), "setc_xp", "getc_xp"); - - ClassDB::bind_method(D_METHOD("gets_money"), &Entity::gets_money); + + ClassDB::bind_method(D_METHOD("gets_money"), &Entity::gets_money); ClassDB::bind_method(D_METHOD("sets_money", "value"), &Entity::sets_money); ADD_PROPERTY(PropertyInfo(Variant::INT, "smoney"), "sets_money", "gets_money"); - - ClassDB::bind_method(D_METHOD("getc_money"), &Entity::getc_money); + + ClassDB::bind_method(D_METHOD("getc_money"), &Entity::getc_money); ClassDB::bind_method(D_METHOD("setc_money", "value"), &Entity::setc_money); ADD_PROPERTY(PropertyInfo(Variant::INT, "cmoney"), "setc_money", "getc_money"); @@ -3274,18 +3380,18 @@ void Entity::_bind_methods() { ClassDB::bind_method(D_METHOD("gets_global_cooldown"), &Entity::gets_global_cooldown); ClassDB::bind_method(D_METHOD("sstart_global_cooldown", "value"), &Entity::sstart_global_cooldown); ClassDB::bind_method(D_METHOD("cstart_global_cooldown", "value"), &Entity::cstart_global_cooldown); - - //Data - ClassDB::bind_method(D_METHOD("adds_data", "data"), &Entity::adds_data); - ClassDB::bind_method(D_METHOD("removes_data", "index"), &Entity::removes_data); - ClassDB::bind_method(D_METHOD("gets_data", "index"), &Entity::gets_data); - ClassDB::bind_method(D_METHOD("gets_data_count"), &Entity::gets_data_count); - ClassDB::bind_method(D_METHOD("addc_data", "data"), &Entity::addc_data); - ClassDB::bind_method(D_METHOD("removec_data", "index"), &Entity::removec_data); - ClassDB::bind_method(D_METHOD("getc_data", "index"), &Entity::getc_data); - ClassDB::bind_method(D_METHOD("getc_data_count"), &Entity::getc_data_count); - + //Data + ClassDB::bind_method(D_METHOD("adds_data", "data"), &Entity::adds_data); + ClassDB::bind_method(D_METHOD("removes_data", "index"), &Entity::removes_data); + ClassDB::bind_method(D_METHOD("gets_data", "index"), &Entity::gets_data); + ClassDB::bind_method(D_METHOD("gets_data_count"), &Entity::gets_data_count); + + ClassDB::bind_method(D_METHOD("addc_data", "data"), &Entity::addc_data); + ClassDB::bind_method(D_METHOD("removec_data", "index"), &Entity::removec_data); + ClassDB::bind_method(D_METHOD("getc_data", "index"), &Entity::getc_data); + ClassDB::bind_method(D_METHOD("getc_data_count"), &Entity::getc_data_count); + //States ADD_SIGNAL(MethodInfo("sstate_changed", PropertyInfo(Variant::INT, "value"))); ADD_SIGNAL(MethodInfo("cstate_changed", PropertyInfo(Variant::INT, "value"))); diff --git a/entities/entity.h b/entities/entity.h index 6c2a1d7..0b3e083 100644 --- a/entities/entity.h +++ b/entities/entity.h @@ -9,16 +9,15 @@ #include "scene/3d/physics_body.h" #endif - -#include "./data/entity_data.h" #include "../data/craft_data_attribute.h" +#include "../data/item_instance.h" #include "../data/spell.h" #include "../data/xp_data.h" +#include "./data/entity_data.h" #include "core/hash_map.h" #include "core/object.h" #include "core/ustring.h" #include "core/vector.h" -#include "../data/item_instance.h" #include "entity_resource.h" @@ -33,8 +32,8 @@ #include "../utility/entity_create_info.h" -#include "../utility/cooldown.h" #include "../utility/category_cooldown.h" +#include "../utility/cooldown.h" #include "../inventory/bag.h" @@ -80,31 +79,30 @@ enum PlayerSendFlags { #define SET_RPC_PUPPETSYNC(p_method_name) rpc_config(p_method_name, MultiplayerAPI::RPC_MODE_PUPPETSYNC); // f.e. SEND_RPC(rpc("method", arg), method(arg)) -#define SEND_RPC(rpc_func, normal_func) \ - if (is_inside_tree() && get_tree()->has_network_peer() && get_tree()->get_network_peer()->get_connection_status() == NetworkedMultiplayerPeer::CONNECTION_CONNECTED) { \ - rpc_func;\ - }\ +#define SEND_RPC(rpc_func, normal_func) \ + if (is_inside_tree() && get_tree()->has_network_peer() && get_tree()->get_network_peer()->get_connection_status() == NetworkedMultiplayerPeer::CONNECTION_CONNECTED) { \ + rpc_func; \ + } \ normal_func; // f.e. SEND_RPC_TO_SERVER(rpc_id(1, "method", arg), method(arg)) -#define SEND_RPC_TO_SERVER(rpc_func, normal_func) \ +#define SEND_RPC_TO_SERVER(rpc_func, normal_func) \ if (is_inside_tree() && get_tree()->has_network_peer() && get_tree()->get_network_peer()->get_connection_status() == NetworkedMultiplayerPeer::CONNECTION_CONNECTED) { \ - if (get_tree()->is_network_server())\ - normal_func;\ - else \ - rpc_func;\ - } else {\ - normal_func;\ + if (get_tree()->is_network_server()) \ + normal_func; \ + else \ + rpc_func; \ + } else { \ + normal_func; \ } // f.e. SEND_RSET(rset("property", "value"), property, value) -#define SEND_RSET(rset_func, variable, value) \ - if (is_inside_tree() && get_tree()->has_network_peer() && get_tree()->get_network_peer()->get_connection_status() == NetworkedMultiplayerPeer::CONNECTION_CONNECTED) { \ - rset_func;\ - }\ - variable = value; +#define SEND_RSET(rset_func, variable, value) \ + if (is_inside_tree() && get_tree()->has_network_peer() && get_tree()->get_network_peer()->get_connection_status() == NetworkedMultiplayerPeer::CONNECTION_CONNECTED) { \ + rset_func; \ + } \ + variable = value; - #ifdef ENTITIES_2D class Entity : public KinematicBody2D { GDCLASS(Entity, KinematicBody2D); @@ -145,17 +143,17 @@ public: EntityEnums::EntityType getc_entity_type(); void setc_entity_type(EntityEnums::EntityType value); - - int gets_immunity_flags(); + + int gets_immunity_flags(); void sets_immunity_flags(int value); - - int gets_entity_flags(); + + int gets_entity_flags(); void sets_entity_flags(int value); int getc_entity_flags(); void setc_entity_flags(int value); - - EntityEnums::EntityController gets_entity_controller(); + + EntityEnums::EntityController gets_entity_controller(); void sets_entity_controller(EntityEnums::EntityController value); String gets_player_name(); @@ -181,8 +179,8 @@ public: int getc_xp(); void setc_xp(int value); - - int gets_money(); + + int gets_money(); void sets_money(int value); int getc_money(); @@ -230,9 +228,9 @@ public: Ref get_stat_enum(Stat::StatId stat_id); void set_stat_enum(Stat::StatId stat_id, Ref entry); - - void sdie(); - void cdie(); + + void sdie(); + void cdie(); void ons_stat_changed(Ref stat); void onc_stat_changed(Ref stat); @@ -276,15 +274,15 @@ public: //EventHandlers void son_before_aura_applied(Ref data); void son_after_aura_applied(Ref data); - + void son_before_damage_hit(Ref info); - void son_hit(Ref info); + void son_hit(Ref info); void son_before_damage(Ref info); void son_damage_receive(Ref info); void son_dealt_damage(Ref info); void son_damage_dealt(Ref info); - void son_before_heal_hit(Ref info); + void son_before_heal_hit(Ref info); void son_before_heal(Ref info); void son_heal_receive(Ref info); void son_dealt_heal(Ref info); @@ -296,52 +294,58 @@ public: void son_cast_finished(Ref info); void son_cast_started(Ref info); void son_cast_failed(Ref info); - - void son_death(); + + void son_death(); void son_cooldown_added(Ref cooldown); void son_cooldown_removed(Ref cooldown); void son_category_cooldown_added(Ref category_cooldown); void son_category_cooldown_removed(Ref category_cooldown); - + void son_gcd_started(); void son_gcd_finished(); void con_gcd_started(); void con_gcd_finished(); - - void son_physics_process(); - + + void son_physics_process(); + + void son_xp_gained(int value); + void son_level_up(int value); + //Clientside EventHandlers void con_cast_failed(Ref info); void con_cast_started(Ref info); void con_cast_state_changed(Ref info); void con_cast_finished(Ref info); void con_spell_cast_success(Ref info); - - void con_death(); - + + void con_death(); + void con_cooldown_added(Ref cooldown); void con_cooldown_removed(Ref cooldown); void con_category_cooldown_added(Ref category_cooldown); void con_category_cooldown_removed(Ref category_cooldown); - + void con_aura_added(Ref data); void con_aura_removed(Ref data); void con_aura_refresh(Ref data); - + void con_damage_dealt(Ref info); void con_dealt_damage(Ref info); void con_heal_dealt(Ref info); void con_dealt_heal(Ref info); + void con_xp_gained(int value); + void con_level_up(int value); + //Modifiers/Requesters void sapply_passives_damage_receive(Ref info); void sapply_passives_damage_deal(Ref info); void sapply_passives_heal_receive(Ref info); void sapply_passives_heal_deal(Ref info); - + //Spell operations void scast_spell(int spell_id); void crequest_spell_cast(int spell_id); @@ -353,12 +357,18 @@ public: //Heal Operations void stake_heal(Ref info); void sdeal_heal_to(Ref info); - - //Interactions - bool cans_interact(); - void sinteract(); + + //Interactions + bool cans_interact(); + void sinteract(); void crequest_interact(); + //XP Operations + void adds_xp(int value); + void addc_xp(int value); + void s_levelup(int value); + void c_levelup(int value); + //Aura Manipulation void sadd_aura(Ref aura); void sremove_aura(Ref aura); @@ -375,22 +385,22 @@ public: void caura_refreshed(Ref aura); void sremove_auras_with_group(int aura_group); - + //NOTE: No reason for shas_aura_by, just query it, and check for null. int sget_aura_count(); Ref sget_aura(int index); Ref sget_aura_by(Entity *caster, int aura_id); Ref sget_aura_by_bind(Node *caster, int aura_id); - + int cget_aura_count(); Ref cget_aura(int index); //Hooks void moved(); - + //Update void update_auras(float delta); - + //Old stuff, remove or update void resurrect(); void creceive_resurrect(); @@ -399,7 +409,7 @@ public: bool getc_is_dead(); //// Casting System //// - + bool sis_casting(); bool cis_casting(); @@ -445,7 +455,7 @@ public: //Category Cooldowns Vector > gets_category_cooldowns(); Vector > getc_category_cooldowns(); - + bool hass_category_cooldown(int category_id); void adds_category_cooldown(int category_id, float value); void removes_category_cooldown(int category_id); @@ -482,26 +492,25 @@ public: void creceive_rank(int talentID, int rank); //PlayerTalent *sget_talent(int id, bool create = false); //PlayerTalent *cget_talent(int id, bool create = false); - - //// Data //// + + //// Data //// void adds_data(Ref data); void removes_data(int index); Ref gets_data(int index); int gets_data_count(); - - void addc_data(Ref data); + + void addc_data(Ref data); void removec_data(int index); Ref getc_data(int index); int getc_data_count(); - void loaded(); - + String random_name(); - - void setup(); - void _setup(); - + + void setup(); + void _setup(); + Entity(); ~Entity(); @@ -537,9 +546,9 @@ private: int _s_xp; int _c_xp; - - int _s_money; - int _c_money; + + int _s_money; + int _c_money; Ref _s_entity_data; Ref _c_entity_data; @@ -611,14 +620,14 @@ private: EntityEnums::EntityType _s_entity_type; EntityEnums::EntityType _c_entity_type; - - int _s_immunity_flags; - - int _s_entity_flags; - int _c_entity_flags; - - EntityEnums::EntityController _s_entity_controller; - + + int _s_immunity_flags; + + int _s_entity_flags; + int _c_entity_flags; + + EntityEnums::EntityController _s_entity_controller; + //// Cooldowns //// Vector > _s_cooldowns; Vector > _c_cooldowns; @@ -628,9 +637,9 @@ private: Vector > _s_category_cooldowns; Vector > _c_category_cooldowns; - - int _s_active_category_cooldowns; - int _c_active_category_cooldowns; + + int _s_active_category_cooldowns; + int _c_active_category_cooldowns; //// targetComponent //// @@ -642,9 +651,9 @@ private: //Vector > _s_talents; //Vector > _c_talents; - - //// Data //// - Vector > _s_data; + + //// Data //// + Vector > _s_data; Vector > _c_data; };