#include "spell_damage_info.h" #include "../entities/entity.h" #include "../data/spell.h" #include "../data/aura.h" int SpellDamageInfo::get_damage() { return _damage; } void SpellDamageInfo::set_damage(int value) { _damage = value; } bool SpellDamageInfo::get_crit() { return _crit; } void SpellDamageInfo::set_crit(bool value) { _crit = value; } SpellEnums::SpellType SpellDamageInfo::get_spell_type() { return _spell_type; } void SpellDamageInfo::set_spell_type(SpellEnums::SpellType value) { _spell_type = value; } Entity *SpellDamageInfo::get_dealer() { return _dealer; } void SpellDamageInfo::set_dealer(Node *value) { if (!value) { return; } Entity *e = cast_to(value); if (!e) { return; } _dealer = e; } Entity *SpellDamageInfo::get_receiver() { return _receiver; } void SpellDamageInfo::set_receiver(Node *value) { if (!value) { return; } Entity *e = cast_to(value); if (!e) { return; } _receiver = e; } Ref SpellDamageInfo::get_damage_source() { return _damage_source; } void SpellDamageInfo::set_damage_source(Ref value) { _damage_source_type = DAMAGE_SOURCE_UNKNOWN; _damage_source = value; } Ref SpellDamageInfo::get_spell_damage_source() { //cast return NULL; } void SpellDamageInfo::set_spell_damage_source(Ref value) { _damage_source_type = DAMAGE_SOURCE_SPELL; _damage_source = value; } Ref SpellDamageInfo::get_aura_damage_source() { //cast return NULL; } void SpellDamageInfo::set_aura_damage_source(Ref value) { _damage_source_type = DAMAGE_SOURCE_AURA; _damage_source = value; } int SpellDamageInfo::get_damage_source_id() { return _damage_source_id; } void SpellDamageInfo::set_damage_source_id(int value) { _damage_source_id = value; } SpellDamageInfo::DamageSource SpellDamageInfo::get_damage_source_type() { return _damage_source_type; } void SpellDamageInfo::set_damage_source_type(DamageSource value) { _damage_source_type = value; } void SpellDamageInfo::reset() { _original_damage = -1; } SpellDamageInfo::SpellDamageInfo() { _damage = 0; _original_damage = 0; _crit = false; _spell_type = SpellEnums::SPELL_TYPE_NONE; _dealer = NULL; _receiver = NULL; _damage_source_type = DAMAGE_SOURCE_UNKNOWN; //Ref _damage_source = Ref<; _damage_source_id = 0; } SpellDamageInfo::~SpellDamageInfo() { //_dealer = NULL; //_receiver = NULL; //_damage_source = Ref(NULL); } void SpellDamageInfo::_bind_methods() { ClassDB::bind_method(D_METHOD("get_damage"), &SpellDamageInfo::get_damage); ClassDB::bind_method(D_METHOD("set_damage", "value"), &SpellDamageInfo::set_damage); ADD_PROPERTY(PropertyInfo(Variant::INT, "damage"), "set_damage", "get_damage"); ClassDB::bind_method(D_METHOD("get_crit"), &SpellDamageInfo::get_crit); ClassDB::bind_method(D_METHOD("set_crit", "value"), &SpellDamageInfo::set_crit); ADD_PROPERTY(PropertyInfo(Variant::BOOL, "crit"), "set_crit", "get_crit"); ClassDB::bind_method(D_METHOD("get_spell_type"), &SpellDamageInfo::get_spell_type); ClassDB::bind_method(D_METHOD("set_spell_type", "value"), &SpellDamageInfo::set_spell_type); ADD_PROPERTY(PropertyInfo(Variant::INT, "spell_type", PROPERTY_HINT_ENUM, "None, Melee, Magic"), "set_spell_type", "get_spell_type"); ClassDB::bind_method(D_METHOD("get_dealer"), &SpellDamageInfo::get_dealer); ClassDB::bind_method(D_METHOD("set_dealer", "value"), &SpellDamageInfo::set_dealer); ADD_PROPERTY(PropertyInfo(Variant::OBJECT, "dealer", PROPERTY_HINT_RESOURCE_TYPE, "Entity"), "set_dealer", "get_dealer"); ClassDB::bind_method(D_METHOD("get_receiver"), &SpellDamageInfo::get_receiver); ClassDB::bind_method(D_METHOD("set_receiver", "value"), &SpellDamageInfo::set_receiver); ADD_PROPERTY(PropertyInfo(Variant::OBJECT, "receiver", PROPERTY_HINT_RESOURCE_TYPE, "Entity"), "set_receiver", "get_receiver"); ClassDB::bind_method(D_METHOD("get_damage_source"), &SpellDamageInfo::get_damage_source); ClassDB::bind_method(D_METHOD("set_damage_source", "value"), &SpellDamageInfo::set_damage_source); ADD_PROPERTY(PropertyInfo(Variant::OBJECT, "damage_source", PROPERTY_HINT_RESOURCE_TYPE, "Resource"), "set_damage_source", "get_damage_source"); ClassDB::bind_method(D_METHOD("get_damage_source_id"), &SpellDamageInfo::get_damage_source_id); ClassDB::bind_method(D_METHOD("set_damage_source_id", "value"), &SpellDamageInfo::set_damage_source_id); ADD_PROPERTY(PropertyInfo(Variant::INT, "damage_source_id"), "set_damage_source_id", "get_damage_source_id"); ClassDB::bind_method(D_METHOD("get_damage_source_type"), &SpellDamageInfo::get_damage_source_type); ClassDB::bind_method(D_METHOD("set_damage_source_type", "value"), &SpellDamageInfo::set_damage_source_type); ADD_PROPERTY(PropertyInfo(Variant::INT, "damage_source_type", PROPERTY_HINT_ENUM, "Unknown, Spell, Aura"), "set_damage_source_type", "get_damage_source_type"); ClassDB::bind_method(D_METHOD("reset"), &SpellDamageInfo::reset); BIND_ENUM_CONSTANT(DAMAGE_SOURCE_UNKNOWN); BIND_ENUM_CONSTANT(DAMAGE_SOURCE_SPELL); BIND_ENUM_CONSTANT(DAMAGE_SOURCE_AURA); }