diff --git a/SCsub b/SCsub index a840fef..4e37681 100644 --- a/SCsub +++ b/SCsub @@ -43,6 +43,14 @@ module_env.add_source_files(env.modules_sources,"entities/stats/stat.cpp") module_env.add_source_files(env.modules_sources,"entities/stats/stat_modifier.cpp") module_env.add_source_files(env.modules_sources,"entities/stats/stat_data.cpp") +module_env.add_source_files(env.modules_sources,"spells/spell_projectile.cpp") +module_env.add_source_files(env.modules_sources,"spells/world_spell_effect.cpp") + +module_env.add_source_files(env.modules_sources,"data/spell_effect_visual.cpp") +module_env.add_source_files(env.modules_sources,"data/spell_effect_visual_simple.cpp") +module_env.add_source_files(env.modules_sources,"data/spell_projectile_data.cpp") +module_env.add_source_files(env.modules_sources,"data/world_effect_data.cpp") + module_env.add_source_files(env.modules_sources,"entities/player_talent.cpp") module_env.add_source_files(env.modules_sources,"inventory/bag.cpp") module_env.add_source_files(env.modules_sources,"inventory/inventory.cpp") diff --git a/data/aura.cpp b/data/aura.cpp index 479ef33..6a48e89 100644 --- a/data/aura.cpp +++ b/data/aura.cpp @@ -70,6 +70,27 @@ void Aura::set_aura_description(String description) { _aura_description = description; } +Ref Aura::get_visual_spell_effects() { + return _visual_spell_effects; +} +void Aura::set_visual_spell_effects(Ref value) { + _visual_spell_effects = value; +} + +Ref Aura::get_spell_projectile_data() { + return _spell_projectile_data; +} +void Aura::set_spell_projectile_data(Ref value) { + _spell_projectile_data = value; +} + +Ref Aura::get_world_effect_data() { + return _world_effect_data; +} +void Aura::set_world_effect_data(Ref value) { + _world_effect_data = value; +} + int Aura::get_ability_scale_data_id() { return ability_scale_data_id; } @@ -117,26 +138,6 @@ void Aura::OnAuraAbilityScalingDataLoaded(AbilityScalingDataLoaderHelper *h) { } */ -//Visual Effect - -bool Aura::has_effect_visual() { - return _effect_visual.is_valid(); -} - -EntityEnums::CharacterSkeletonPoints Aura::get_effect_visual_point() { - return _effect_visual_point; -} -void Aura::set_effect_visual_point(EntityEnums::CharacterSkeletonPoints point) { - _effect_visual_point = point; -} - -Ref Aura::get_effect_visual() { - return _effect_visual; -} -void Aura::set_effect_visual(Ref value) { - _effect_visual = value; -} - //Damage bool Aura::is_damage_enabled() { return _damage_enabled; @@ -1136,18 +1137,6 @@ void Aura::_bind_methods() { ClassDB::bind_method(D_METHOD("_setup_aura_data", "data", "info"), &Aura::_setup_aura_data); - //Visual Effect - ADD_GROUP("Visual Effect", "effect"); - ClassDB::bind_method(D_METHOD("has_effect_visual"), &Aura::has_effect_visual); - - ClassDB::bind_method(D_METHOD("get_effect_visual_point"), &Aura::get_effect_visual_point); - ClassDB::bind_method(D_METHOD("set_effect_visual_point", "value"), &Aura::set_effect_visual_point); - ADD_PROPERTY(PropertyInfo(Variant::INT, "effect_visual_point", PROPERTY_HINT_ENUM, EntityEnums::BINDING_STRING_CHARCATER_SKELETON_POINTS), "set_effect_visual_point", "get_effect_visual_point"); - - ClassDB::bind_method(D_METHOD("get_effect_visual"), &Aura::get_effect_visual); - ClassDB::bind_method(D_METHOD("set_effect_visual", "value"), &Aura::set_effect_visual); - ADD_PROPERTY(PropertyInfo(Variant::OBJECT, "effect_visual", PROPERTY_HINT_RESOURCE_TYPE, "PackedScene"), "set_effect_visual", "get_effect_visual"); - //damage ClassDB::bind_method(D_METHOD("sapply_passives_damage_receive", "data"), &Aura::sapply_passives_damage_receive); ClassDB::bind_method(D_METHOD("sapply_passives_damage_deal", "data"), &Aura::sapply_passives_damage_deal); @@ -1226,6 +1215,18 @@ void Aura::_bind_methods() { ClassDB::bind_method(D_METHOD("set_aura_description", "value"), &Aura::set_aura_description); ADD_PROPERTY(PropertyInfo(Variant::STRING, "text_aura_description", PROPERTY_HINT_MULTILINE_TEXT), "set_aura_description", "get_aura_description"); + ClassDB::bind_method(D_METHOD("get_visual_spell_effects"), &Aura::get_visual_spell_effects); + ClassDB::bind_method(D_METHOD("set_visual_spell_effects", "value"), &Aura::set_visual_spell_effects); + ADD_PROPERTY(PropertyInfo(Variant::OBJECT, "visual_spell_effects", PROPERTY_HINT_RESOURCE_TYPE, "SpellEffectVisual"), "set_visual_spell_effects", "get_visual_spell_effects"); + + ClassDB::bind_method(D_METHOD("get_spell_projectile_data"), &Aura::get_spell_projectile_data); + ClassDB::bind_method(D_METHOD("set_spell_projectile_data", "value"), &Aura::set_spell_projectile_data); + ADD_PROPERTY(PropertyInfo(Variant::OBJECT, "spell_projectile_data", PROPERTY_HINT_RESOURCE_TYPE, "SpellProjectileData"), "set_spell_projectile_data", "get_spell_projectile_data"); + + ClassDB::bind_method(D_METHOD("get_world_effect_data"), &Aura::get_world_effect_data); + ClassDB::bind_method(D_METHOD("set_world_effect_data", "value"), &Aura::set_world_effect_data); + ADD_PROPERTY(PropertyInfo(Variant::OBJECT, "world_effect_data", PROPERTY_HINT_RESOURCE_TYPE, "WorldEffectData"), "set_world_effect_data", "get_world_effect_data"); + ADD_GROUP("Damage", "damage"); //Damage ClassDB::bind_method(D_METHOD("is_damage_enabled"), &Aura::is_damage_enabled); diff --git a/data/aura.h b/data/aura.h index 3031656..58395fd 100644 --- a/data/aura.h +++ b/data/aura.h @@ -23,6 +23,10 @@ #include "../utility/cooldown.h" #include "../utility/category_cooldown.h" +#include "spell_effect_visual.h" +#include "spell_projectile_data.h" +#include "world_effect_data.h" + class AuraApplyInfo; class AuraScript; class Entity; @@ -62,6 +66,15 @@ public: String get_aura_description(); void set_aura_description(String description); + Ref get_visual_spell_effects(); + void set_visual_spell_effects(Ref value); + + Ref get_spell_projectile_data(); + void set_spell_projectile_data(Ref value); + + Ref get_world_effect_data(); + void set_world_effect_data(Ref value); + int get_ability_scale_data_id(); void set_ability_scale_data_id(int value); @@ -79,15 +92,6 @@ public: // static void FromJSON(Aura* ada, JsonReader* r); // static void ToJSON(Aura* ada, JsonWriter* w); - //VisualEffect - bool has_effect_visual(); - - EntityEnums::CharacterSkeletonPoints get_effect_visual_point(); - void set_effect_visual_point(EntityEnums::CharacterSkeletonPoints point); - - Ref get_effect_visual(); - void set_effect_visual(Ref value); - //Damage bool is_damage_enabled(); void set_damage_enabled(bool value); @@ -384,8 +388,9 @@ private: String _aura_description; int ability_scale_data_id; - EntityEnums::CharacterSkeletonPoints _effect_visual_point; - Ref _effect_visual; + Ref _visual_spell_effects; + Ref _spell_projectile_data; + Ref _world_effect_data; bool _damage_enabled; int _damage_type; diff --git a/data/spell.cpp b/data/spell.cpp index 0fad71f..7c75ec2 100644 --- a/data/spell.cpp +++ b/data/spell.cpp @@ -208,6 +208,27 @@ void Spell::set_spell_description(String value) { _spell_description = value; } +Ref Spell::get_visual_spell_effects() { + return _visual_spell_effects; +} +void Spell::set_visual_spell_effects(Ref value) { + _visual_spell_effects = value; +} + +Ref Spell::get_spell_projectile_data() { + return _spell_projectile_data; +} +void Spell::set_spell_projectile_data(Ref value) { + _spell_projectile_data = value; +} + +Ref Spell::get_world_effect_data() { + return _world_effect_data; +} +void Spell::set_world_effect_data(Ref value) { + _world_effect_data = value; +} + float Spell::get_damage_scale_for_level(int level) { //return getDamageLevelScaling()->Evaluate((float)(level)); return 1; @@ -377,51 +398,6 @@ void Spell::set_aoe_half_extents(Vector3 value) { _aoe_half_extents = value; } -bool Spell::has_effect_visual() { - return _effect_visual.is_valid(); -} - -EntityEnums::CharacterSkeletonPoints Spell::get_effect_visual_point() { - return _effect_visual_point; -} -void Spell::set_effect_visual_point(EntityEnums::CharacterSkeletonPoints point) { - _effect_visual_point = point; -} - -Ref Spell::get_effect_visual() { - return _effect_visual; -} -void Spell::set_effect_visual(Ref value) { - _effect_visual = value; -} - -bool Spell::has_spell_cast_finish_effect() { - return _spell_cast_finish_effect.is_valid(); -} - -EntityEnums::CharacterSkeletonPoints Spell::get_spell_cast_finish_effect_point() { - return _spell_cast_finish_effect_point; -} -void Spell::set_spell_cast_finish_effect_point(EntityEnums::CharacterSkeletonPoints point) { - _spell_cast_finish_effect_point = point; -} - -Ref Spell::get_spell_cast_finish_effect() { - return _spell_cast_finish_effect; -} -void Spell::set_spell_cast_finish_effect(Ref value) { - _spell_cast_finish_effect = value; -} - -bool Spell::has_spell_cast_effect() { - return _spell_cast_effect.is_valid(); -} -Ref Spell::get_spell_cast_effect() { - return _spell_cast_effect; -} -void Spell::set_spell_cast_effect(Ref value) { - _spell_cast_effect = value; -} Ref Spell::get_projectile() { return _projectile; @@ -914,6 +890,18 @@ void Spell::_bind_methods() { ClassDB::bind_method(D_METHOD("set_needs_target", "value"), &Spell::set_needs_target); ADD_PROPERTY(PropertyInfo(Variant::BOOL, "needs_target"), "set_needs_target", "get_needs_target"); + ClassDB::bind_method(D_METHOD("get_visual_spell_effects"), &Spell::get_visual_spell_effects); + ClassDB::bind_method(D_METHOD("set_visual_spell_effects", "value"), &Spell::set_visual_spell_effects); + ADD_PROPERTY(PropertyInfo(Variant::OBJECT, "visual_spell_effects", PROPERTY_HINT_RESOURCE_TYPE, "SpellEffectVisual"), "set_visual_spell_effects", "get_visual_spell_effects"); + + ClassDB::bind_method(D_METHOD("get_spell_projectile_data"), &Spell::get_spell_projectile_data); + ClassDB::bind_method(D_METHOD("set_spell_projectile_data", "value"), &Spell::set_spell_projectile_data); + ADD_PROPERTY(PropertyInfo(Variant::OBJECT, "spell_projectile_data", PROPERTY_HINT_RESOURCE_TYPE, "SpellProjectileData"), "set_spell_projectile_data", "get_spell_projectile_data"); + + ClassDB::bind_method(D_METHOD("get_world_effect_data"), &Spell::get_world_effect_data); + ClassDB::bind_method(D_METHOD("set_world_effect_data", "value"), &Spell::set_world_effect_data); + ADD_PROPERTY(PropertyInfo(Variant::OBJECT, "world_effect_data", PROPERTY_HINT_RESOURCE_TYPE, "WorldEffectData"), "set_world_effect_data", "get_world_effect_data"); + ClassDB::bind_method(D_METHOD("get_damage_scale_for_level"), &Spell::get_damage_scale_for_level); ClassDB::bind_method(D_METHOD("get_heal_scale_for_level"), &Spell::get_heal_scale_for_level); ClassDB::bind_method(D_METHOD("get_absorb_scale_for_level"), &Spell::get_absorb_scale_for_level); @@ -1077,33 +1065,6 @@ void Spell::_bind_methods() { ClassDB::bind_method(D_METHOD("set_aoe_half_extents", "value"), &Spell::set_aoe_half_extents); ADD_PROPERTY(PropertyInfo(Variant::VECTOR3, "aoe_half_extents"), "set_aoe_half_extents", "get_aoe_half_extents"); - ADD_GROUP("Effect", "effect"); - ClassDB::bind_method(D_METHOD("has_effect_visual"), &Spell::has_effect_visual); - - ClassDB::bind_method(D_METHOD("get_effect_visual_point"), &Spell::get_effect_visual_point); - ClassDB::bind_method(D_METHOD("set_effect_visual_point", "value"), &Spell::set_effect_visual_point); - ADD_PROPERTY(PropertyInfo(Variant::INT, "effect_visual_point", PROPERTY_HINT_ENUM, EntityEnums::BINDING_STRING_CHARCATER_SKELETON_POINTS), "set_effect_visual_point", "get_effect_visual_point"); - - - ClassDB::bind_method(D_METHOD("get_effect_visual"), &Spell::get_effect_visual); - ClassDB::bind_method(D_METHOD("set_effect_visual", "value"), &Spell::set_effect_visual); - ADD_PROPERTY(PropertyInfo(Variant::OBJECT, "effect_visual", PROPERTY_HINT_RESOURCE_TYPE, "PackedScene"), "set_effect_visual", "get_effect_visual"); - - ClassDB::bind_method(D_METHOD("has_spell_cast_finish_effect"), &Spell::has_spell_cast_finish_effect); - - ClassDB::bind_method(D_METHOD("get_spell_cast_finish_effect_point"), &Spell::get_spell_cast_finish_effect_point); - ClassDB::bind_method(D_METHOD("set_spell_cast_finish_effect_point", "value"), &Spell::set_spell_cast_finish_effect_point); - ADD_PROPERTY(PropertyInfo(Variant::INT, "spell_cast_finish_effect_point", PROPERTY_HINT_ENUM, EntityEnums::BINDING_STRING_CHARCATER_SKELETON_POINTS), "set_spell_cast_finish_effect_point", "get_spell_cast_finish_effect_point"); - - ClassDB::bind_method(D_METHOD("get_spell_cast_finish_effect"), &Spell::get_spell_cast_finish_effect); - ClassDB::bind_method(D_METHOD("set_spell_cast_finish_effect", "value"), &Spell::set_spell_cast_finish_effect); - ADD_PROPERTY(PropertyInfo(Variant::OBJECT, "effect_spell_cast_finish_effect", PROPERTY_HINT_RESOURCE_TYPE, "PackedScene"), "set_spell_cast_finish_effect", "get_spell_cast_finish_effect"); - - ClassDB::bind_method(D_METHOD("has_spell_cast_effect"), &Spell::has_spell_cast_effect); - ClassDB::bind_method(D_METHOD("get_spell_cast_effect"), &Spell::get_spell_cast_effect); - ClassDB::bind_method(D_METHOD("set_spell_cast_effect", "value"), &Spell::set_spell_cast_effect); - ADD_PROPERTY(PropertyInfo(Variant::OBJECT, "effect_spell_cast_effect_id", PROPERTY_HINT_RESOURCE_TYPE, "PackedScene"), "set_spell_cast_effect", "get_spell_cast_effect"); - ADD_GROUP("Projectile", "projectile"); ClassDB::bind_method(D_METHOD("has_projectile"), &Spell::has_projectile); ClassDB::bind_method(D_METHOD("get_projectile"), &Spell::get_projectile); diff --git a/data/spell.h b/data/spell.h index 8a25a69..fcb5b0a 100644 --- a/data/spell.h +++ b/data/spell.h @@ -3,7 +3,6 @@ #include "core/resource.h" #include "scene/resources/curve.h" -#include "scene/resources/packed_scene.h" #include "scene/resources/texture.h" #include "../entity_enums.h" @@ -16,6 +15,10 @@ #include "../pipelines/spell_damage_info.h" #include "../infos/aura_infos.h" +#include "spell_effect_visual.h" +#include "spell_projectile_data.h" +#include "world_effect_data.h" + class Entity; class Aura; class SpellCastInfo; @@ -157,6 +160,15 @@ public: String get_spell_description(); void set_spell_description(String value); + Ref get_visual_spell_effects(); + void set_visual_spell_effects(Ref value); + + Ref get_spell_projectile_data(); + void set_spell_projectile_data(Ref value); + + Ref get_world_effect_data(); + void set_world_effect_data(Ref value); + float get_damage_scale_for_level(int level); float get_heal_scale_for_level(int level); float get_absorb_scale_for_level(int level); @@ -227,26 +239,6 @@ public: Vector3 get_aoe_half_extents(); void set_aoe_half_extents(Vector3 value); - bool has_effect_visual(); - - EntityEnums::CharacterSkeletonPoints get_effect_visual_point(); - void set_effect_visual_point(EntityEnums::CharacterSkeletonPoints point); - - Ref get_effect_visual(); - void set_effect_visual(Ref value); - - bool has_spell_cast_finish_effect(); - - EntityEnums::CharacterSkeletonPoints get_spell_cast_finish_effect_point(); - void set_spell_cast_finish_effect_point(EntityEnums::CharacterSkeletonPoints point); - - Ref get_spell_cast_finish_effect(); - void set_spell_cast_finish_effect(Ref value); - - bool has_spell_cast_effect(); - Ref get_spell_cast_effect(); - void set_spell_cast_effect(Ref value); - Ref get_projectile(); void set_projectile(Ref value); @@ -403,6 +395,10 @@ private: String _spell_name; String _spell_description; + Ref _visual_spell_effects; + Ref _spell_projectile_data; + Ref _world_effect_data; + bool _has_range; float _range; @@ -432,14 +428,6 @@ private: SpellAOEColliderType _aoe_colliderType; Vector3 _aoe_half_extents; - EntityEnums::CharacterSkeletonPoints _effect_visual_point; - Ref _effect_visual; - - EntityEnums::CharacterSkeletonPoints _spell_cast_finish_effect_point; - Ref _spell_cast_finish_effect; - - Ref _spell_cast_effect; - Ref _projectile; float _projectile_speed; float _projectile_time; diff --git a/data/spell_effect_visual.cpp b/data/spell_effect_visual.cpp new file mode 100644 index 0000000..b9e5a05 --- /dev/null +++ b/data/spell_effect_visual.cpp @@ -0,0 +1,10 @@ +#include "spell_effect_visual.h" + +SpellEffectVisual::SpellEffectVisual() { +} + +SpellEffectVisual::~SpellEffectVisual() { +} + +void SpellEffectVisual::_bind_methods() { +} diff --git a/data/spell_effect_visual.h b/data/spell_effect_visual.h new file mode 100644 index 0000000..fb86a33 --- /dev/null +++ b/data/spell_effect_visual.h @@ -0,0 +1,19 @@ +#ifndef SPELL_EFFECT_VISUAL_H +#define SPELL_EFFECT_VISUAL_H + +#include "core/resource.h" + +class SpellEffectVisual : public Resource { + GDCLASS(SpellEffectVisual, Resource); + +public: + SpellEffectVisual(); + ~SpellEffectVisual(); + +protected: + static void _bind_methods(); + +//private: +}; + +#endif diff --git a/data/spell_effect_visual_simple.cpp b/data/spell_effect_visual_simple.cpp new file mode 100644 index 0000000..f66c7cf --- /dev/null +++ b/data/spell_effect_visual_simple.cpp @@ -0,0 +1,117 @@ +#include "spell_effect_visual_simple.h" + + +bool SpellEffectVisualSimple::has_spell_effect_visual() { + return _effect_visual.is_valid(); +} + +EntityEnums::CharacterSkeletonPoints SpellEffectVisualSimple::get_spell_effect_visual_point() { + return _effect_visual_point; +} +void SpellEffectVisualSimple::set_spell_effect_visual_point(EntityEnums::CharacterSkeletonPoints point) { + _effect_visual_point = point; +} + +Ref SpellEffectVisualSimple::get_spell_effect_visual() { + return _effect_visual; +} +void SpellEffectVisualSimple::set_spell_effect_visual(Ref value) { + _effect_visual = value; +} + +bool SpellEffectVisualSimple::has_spell_cast_finish_effect() { + return _spell_cast_finish_effect.is_valid(); +} + +EntityEnums::CharacterSkeletonPoints SpellEffectVisualSimple::get_spell_cast_finish_effect_point() { + return _spell_cast_finish_effect_point; +} +void SpellEffectVisualSimple::set_spell_cast_finish_effect_point(EntityEnums::CharacterSkeletonPoints point) { + _spell_cast_finish_effect_point = point; +} + +Ref SpellEffectVisualSimple::get_spell_cast_finish_effect() { + return _spell_cast_finish_effect; +} +void SpellEffectVisualSimple::set_spell_cast_finish_effect(Ref value) { + _spell_cast_finish_effect = value; +} + +bool SpellEffectVisualSimple::has_spell_cast_effect() { + return _spell_cast_effect.is_valid(); +} +Ref SpellEffectVisualSimple::get_spell_cast_effect() { + return _spell_cast_effect; +} +void SpellEffectVisualSimple::set_spell_cast_effect(Ref value) { + _spell_cast_effect = value; +} + + +//Visual Effect + +bool SpellEffectVisualSimple::has_aura_effect_visual() { + return _effect_visual.is_valid(); +} + +EntityEnums::CharacterSkeletonPoints SpellEffectVisualSimple::get_aura_effect_visual_point() { + return _aura_effect_visual_point; +} +void SpellEffectVisualSimple::set_aura_effect_visual_point(EntityEnums::CharacterSkeletonPoints point) { + _aura_effect_visual_point = point; +} + +Ref SpellEffectVisualSimple::get_aura_effect_visual() { + return _aura_effect_visual; +} +void SpellEffectVisualSimple::set_aura_effect_visual(Ref value) { + _aura_effect_visual = value; +} + + +SpellEffectVisualSimple::SpellEffectVisualSimple() { +} + +SpellEffectVisualSimple::~SpellEffectVisualSimple() { +} + +void SpellEffectVisualSimple::_bind_methods() { + + ADD_GROUP("Effect", "spell_effect"); + ClassDB::bind_method(D_METHOD("has_spell_effect_visual"), &SpellEffectVisualSimple::has_spell_effect_visual); + + ClassDB::bind_method(D_METHOD("get_spell_effect_visual_point"), &SpellEffectVisualSimple::get_spell_effect_visual_point); + ClassDB::bind_method(D_METHOD("set_spell_effect_visual_point", "value"), &SpellEffectVisualSimple::set_spell_effect_visual_point); + ADD_PROPERTY(PropertyInfo(Variant::INT, "spell_effect_visual_point", PROPERTY_HINT_ENUM, EntityEnums::BINDING_STRING_CHARCATER_SKELETON_POINTS), "set_spell_effect_visual_point", "get_spell_effect_visual_point"); + + ClassDB::bind_method(D_METHOD("get_spell_effect_visual"), &SpellEffectVisualSimple::get_spell_effect_visual); + ClassDB::bind_method(D_METHOD("set_spell_effect_visual", "value"), &SpellEffectVisualSimple::set_spell_effect_visual); + ADD_PROPERTY(PropertyInfo(Variant::OBJECT, "spell_effect_visual", PROPERTY_HINT_RESOURCE_TYPE, "PackedScene"), "set_spell_effect_visual", "get_spell_effect_visual"); + + ClassDB::bind_method(D_METHOD("has_spell_spell_cast_finish_effect"), &SpellEffectVisualSimple::has_spell_cast_finish_effect); + + ClassDB::bind_method(D_METHOD("get_spell_cast_finish_effect_point"), &SpellEffectVisualSimple::get_spell_cast_finish_effect_point); + ClassDB::bind_method(D_METHOD("set_spell_cast_finish_effect_point", "value"), &SpellEffectVisualSimple::set_spell_cast_finish_effect_point); + ADD_PROPERTY(PropertyInfo(Variant::INT, "spell_cast_finish_effect_point", PROPERTY_HINT_ENUM, EntityEnums::BINDING_STRING_CHARCATER_SKELETON_POINTS), "set_spell_cast_finish_effect_point", "get_spell_cast_finish_effect_point"); + + ClassDB::bind_method(D_METHOD("get_spell_cast_finish_effect"), &SpellEffectVisualSimple::get_spell_cast_finish_effect); + ClassDB::bind_method(D_METHOD("set_spell_cast_finish_effect", "value"), &SpellEffectVisualSimple::set_spell_cast_finish_effect); + ADD_PROPERTY(PropertyInfo(Variant::OBJECT, "effect_spell_cast_finish_effect", PROPERTY_HINT_RESOURCE_TYPE, "PackedScene"), "set_spell_cast_finish_effect", "get_spell_cast_finish_effect"); + + ClassDB::bind_method(D_METHOD("has_spell_cast_effect"), &SpellEffectVisualSimple::has_spell_cast_effect); + ClassDB::bind_method(D_METHOD("get_spell_cast_effect"), &SpellEffectVisualSimple::get_spell_cast_effect); + ClassDB::bind_method(D_METHOD("set_spell_cast_effect", "value"), &SpellEffectVisualSimple::set_spell_cast_effect); + ADD_PROPERTY(PropertyInfo(Variant::OBJECT, "effect_spell_cast_effect_id", PROPERTY_HINT_RESOURCE_TYPE, "PackedScene"), "set_spell_cast_effect", "get_spell_cast_effect"); + + //Visual Effect + ADD_GROUP("Aura Effect", "aura_effect"); + ClassDB::bind_method(D_METHOD("has_aura_effect_visual"), &SpellEffectVisualSimple::has_aura_effect_visual); + + ClassDB::bind_method(D_METHOD("get_aura_effect_visual_point"), &SpellEffectVisualSimple::get_aura_effect_visual_point); + ClassDB::bind_method(D_METHOD("set_aura_effect_visual_point", "value"), &SpellEffectVisualSimple::set_aura_effect_visual_point); + ADD_PROPERTY(PropertyInfo(Variant::INT, "aura_effect_visual_point", PROPERTY_HINT_ENUM, EntityEnums::BINDING_STRING_CHARCATER_SKELETON_POINTS), "set_aura_effect_visual_point", "get_aura_effect_visual_point"); + + ClassDB::bind_method(D_METHOD("get_aura_effect_visual"), &SpellEffectVisualSimple::get_aura_effect_visual); + ClassDB::bind_method(D_METHOD("set_aura_effect_visual", "value"), &SpellEffectVisualSimple::set_aura_effect_visual); + ADD_PROPERTY(PropertyInfo(Variant::OBJECT, "aura_effect_visual", PROPERTY_HINT_RESOURCE_TYPE, "PackedScene"), "set_aura_effect_visual", "get_aura_effect_visual"); +} diff --git a/data/spell_effect_visual_simple.h b/data/spell_effect_visual_simple.h new file mode 100644 index 0000000..64ab2c9 --- /dev/null +++ b/data/spell_effect_visual_simple.h @@ -0,0 +1,62 @@ +#ifndef SPELL_EFFECT_VISUAL_SIMPLE_H +#define SPELL_EFFECT_VISUAL_SIMPLE_H + +#include "spell_effect_visual.h" + +#include "scene/resources/packed_scene.h" + +#include "../entity_enums.h" + +class SpellEffectVisualSimple : public SpellEffectVisual { + GDCLASS(SpellEffectVisualSimple, SpellEffectVisual); + +public: + bool has_spell_effect_visual(); + + EntityEnums::CharacterSkeletonPoints get_spell_effect_visual_point(); + void set_spell_effect_visual_point(EntityEnums::CharacterSkeletonPoints point); + + Ref get_spell_effect_visual(); + void set_spell_effect_visual(Ref value); + + bool has_spell_cast_finish_effect(); + + EntityEnums::CharacterSkeletonPoints get_spell_cast_finish_effect_point(); + void set_spell_cast_finish_effect_point(EntityEnums::CharacterSkeletonPoints point); + + Ref get_spell_cast_finish_effect(); + void set_spell_cast_finish_effect(Ref value); + + bool has_spell_cast_effect(); + Ref get_spell_cast_effect(); + void set_spell_cast_effect(Ref value); + + //VisualEffect + bool has_aura_effect_visual(); + + EntityEnums::CharacterSkeletonPoints get_aura_effect_visual_point(); + void set_aura_effect_visual_point(EntityEnums::CharacterSkeletonPoints point); + + Ref get_aura_effect_visual(); + void set_aura_effect_visual(Ref value); + + SpellEffectVisualSimple(); + ~SpellEffectVisualSimple(); + +protected: + static void _bind_methods(); + +private: + EntityEnums::CharacterSkeletonPoints _effect_visual_point; + Ref _effect_visual; + + EntityEnums::CharacterSkeletonPoints _spell_cast_finish_effect_point; + Ref _spell_cast_finish_effect; + + Ref _spell_cast_effect; + + EntityEnums::CharacterSkeletonPoints _aura_effect_visual_point; + Ref _aura_effect_visual; +}; + +#endif diff --git a/data/spell_projectile_data.cpp b/data/spell_projectile_data.cpp new file mode 100644 index 0000000..6a72db8 --- /dev/null +++ b/data/spell_projectile_data.cpp @@ -0,0 +1,10 @@ +#include "spell_projectile_data.h" + +SpellProjectileData::SpellProjectileData() { +} + +SpellProjectileData::~SpellProjectileData() { +} + +void SpellProjectileData::_bind_methods() { +} diff --git a/data/spell_projectile_data.h b/data/spell_projectile_data.h new file mode 100644 index 0000000..62fce20 --- /dev/null +++ b/data/spell_projectile_data.h @@ -0,0 +1,19 @@ +#ifndef SPELL_PROJECTILE_DATA_H +#define SPELL_PROJECTILE_DATA_H + +#include "core/resource.h" + +class SpellProjectileData : public Resource { + GDCLASS(SpellProjectileData, Resource); + +public: + SpellProjectileData(); + ~SpellProjectileData(); + +protected: + static void _bind_methods(); + +//private: +}; + +#endif diff --git a/data/world_effect_data.cpp b/data/world_effect_data.cpp new file mode 100644 index 0000000..75205cd --- /dev/null +++ b/data/world_effect_data.cpp @@ -0,0 +1,10 @@ +#include "world_effect_data.h" + +WorldEffectData::WorldEffectData() { +} + +WorldEffectData::~WorldEffectData() { +} + +void WorldEffectData::_bind_methods() { +} diff --git a/data/world_effect_data.h b/data/world_effect_data.h new file mode 100644 index 0000000..2790742 --- /dev/null +++ b/data/world_effect_data.h @@ -0,0 +1,19 @@ +#ifndef WORLD_EFFECT_DATA_H +#define WORLD_EFFECT_DATA_H + +#include "core/resource.h" + +class WorldEffectData : public Resource { + GDCLASS(WorldEffectData, Resource); + +public: + WorldEffectData(); + ~WorldEffectData(); + +protected: + static void _bind_methods(); + +//private: +}; + +#endif diff --git a/register_types.cpp b/register_types.cpp index 421ad54..bc604c9 100644 --- a/register_types.cpp +++ b/register_types.cpp @@ -76,6 +76,14 @@ #include "data/mob_data.h" #include "data/player_character_data.h" +#include "data/spell_effect_visual.h" +#include "data/spell_effect_visual_simple.h" +#include "data/spell_projectile_data.h" +#include "data/world_effect_data.h" + +#include "spells/spell_projectile.h" +#include "spells/world_spell_effect.h" + #ifdef TOOLS_ENABLED #include "editor/editor_plugin.h" @@ -170,6 +178,14 @@ void register_entity_spell_system_types() { ClassDB::register_class(); ClassDB::register_class(); + ClassDB::register_class(); + ClassDB::register_class(); + ClassDB::register_class(); + ClassDB::register_class(); + + ClassDB::register_class(); + ClassDB::register_class(); + //meshes ClassDB::register_class(); diff --git a/spells/spell_projectile.cpp b/spells/spell_projectile.cpp new file mode 100644 index 0000000..d63107a --- /dev/null +++ b/spells/spell_projectile.cpp @@ -0,0 +1,11 @@ +#include "spell_projectile.h" + + +SpellProjectile::SpellProjectile() { +} + +SpellProjectile::~SpellProjectile() { +} + +void SpellProjectile::_bind_methods() { +} diff --git a/spells/spell_projectile.h b/spells/spell_projectile.h new file mode 100644 index 0000000..566e853 --- /dev/null +++ b/spells/spell_projectile.h @@ -0,0 +1,28 @@ +#ifndef SPELL_PROJECTILE_H +#define SPELL_PROJECTILE_H + +#ifdef ENTITIES_2D +#include "scene/2d/node_2d.h" +#else +#include "scene/3d/spatial.h" +#endif + + +#ifdef ENTITIES_2D +class SpellProjectile : public Node2D { + GDCLASS(SpellProjectile, Node2D); +#else +class SpellProjectile : public Spatial { + GDCLASS(SpellProjectile, Spatial); +#endif + +public: + SpellProjectile(); + ~SpellProjectile(); + +protected: + static void _bind_methods(); +//private: +}; + +#endif diff --git a/spells/world_spell_effect.cpp b/spells/world_spell_effect.cpp new file mode 100644 index 0000000..55db031 --- /dev/null +++ b/spells/world_spell_effect.cpp @@ -0,0 +1,10 @@ +#include "world_spell_effect.h" + +WorldSpellEffect::WorldSpellEffect() { +} + +WorldSpellEffect::~WorldSpellEffect() { +} + +void WorldSpellEffect::_bind_methods() { +} diff --git a/spells/world_spell_effect.h b/spells/world_spell_effect.h new file mode 100644 index 0000000..04523a4 --- /dev/null +++ b/spells/world_spell_effect.h @@ -0,0 +1,19 @@ +#ifndef WORLD_SPELL_EFFECT_H +#define WORLD_SPELL_EFFECT_H + +#include "../entities/entity.h" + +class WorldSpellEffect : public Entity { + GDCLASS(WorldSpellEffect, Entity); + +public: + WorldSpellEffect(); + ~WorldSpellEffect(); + +protected: + static void _bind_methods(); + + //private: +}; + +#endif