mirror of
https://github.com/Relintai/entity_spell_system.git
synced 2025-05-09 22:41:39 +02:00
Added EntitySkillData.
This commit is contained in:
parent
6a954f3381
commit
8c11a22209
1
SCsub
1
SCsub
@ -35,6 +35,7 @@ module_env.add_source_files(env.modules_sources,"entities/data/item_container_da
|
||||
module_env.add_source_files(env.modules_sources,"entities/data/item_container_data_entry.cpp")
|
||||
|
||||
module_env.add_source_files(env.modules_sources,"entities/skills/entity_skill.cpp")
|
||||
module_env.add_source_files(env.modules_sources,"entities/skills/entity_skill_data.cpp")
|
||||
|
||||
module_env.add_source_files(env.modules_sources,"entities/data/character_spec.cpp")
|
||||
module_env.add_source_files(env.modules_sources,"entities/data/talent_row_data.cpp")
|
||||
|
@ -3,6 +3,7 @@
|
||||
#include "aura.h"
|
||||
#include "craft_recipe.h"
|
||||
#include "../entities/resources/entity_resource_cost_data.h"
|
||||
#include "../entities/skills/entity_skill_data.h"
|
||||
|
||||
int Spell::get_id() {
|
||||
return _id;
|
||||
@ -510,10 +511,10 @@ void Spell::set_training_required_spell(Ref<Spell> spell) {
|
||||
_training_required_spell = spell;
|
||||
}
|
||||
|
||||
Ref<Aura> Spell::get_training_required_skill() {
|
||||
Ref<EntitySkillData> Spell::get_training_required_skill() {
|
||||
return _training_required_skill;
|
||||
}
|
||||
void Spell::set_training_required_skill(Ref<Aura> skill) {
|
||||
void Spell::set_training_required_skill(Ref<EntitySkillData> skill) {
|
||||
_training_required_skill = skill;
|
||||
}
|
||||
|
||||
@ -1127,7 +1128,7 @@ void Spell::_bind_methods() {
|
||||
|
||||
ClassDB::bind_method(D_METHOD("get_training_required_skill"), &Spell::get_training_required_skill);
|
||||
ClassDB::bind_method(D_METHOD("set_training_required_skill", "curve"), &Spell::set_training_required_skill);
|
||||
ADD_PROPERTY(PropertyInfo(Variant::OBJECT, "training_required_skill", PROPERTY_HINT_RESOURCE_TYPE, "Aura"), "set_training_required_skill", "get_training_required_skill");
|
||||
ADD_PROPERTY(PropertyInfo(Variant::OBJECT, "training_required_skill", PROPERTY_HINT_RESOURCE_TYPE, "EntitySkillData"), "set_training_required_skill", "get_training_required_skill");
|
||||
|
||||
ClassDB::bind_method(D_METHOD("get_training_required_skill_level"), &Spell::get_training_required_skill_level);
|
||||
ClassDB::bind_method(D_METHOD("set_training_required_skill_level", "value"), &Spell::set_training_required_skill_level);
|
||||
|
@ -25,6 +25,7 @@ class SpellCastInfo;
|
||||
class Spell;
|
||||
class CraftRecipe;
|
||||
class EntityResourceCostData;
|
||||
class EntitySkillData;
|
||||
|
||||
enum TargetRelationType {
|
||||
TARGET_SELF = 1 << 0,
|
||||
@ -282,8 +283,8 @@ public:
|
||||
Ref<Spell> get_training_required_spell();
|
||||
void set_training_required_spell(Ref<Spell> spell);
|
||||
|
||||
Ref<Aura> get_training_required_skill();
|
||||
void set_training_required_skill(Ref<Aura> skill);
|
||||
Ref<EntitySkillData> get_training_required_skill();
|
||||
void set_training_required_skill(Ref<EntitySkillData> skill);
|
||||
|
||||
int get_training_required_skill_level();
|
||||
void set_training_required_skill_level(int value);
|
||||
@ -407,7 +408,7 @@ private:
|
||||
|
||||
int _training_cost;
|
||||
Ref<Spell> _training_required_spell;
|
||||
Ref<Aura> _training_required_skill;
|
||||
Ref<EntitySkillData> _training_required_skill;
|
||||
int _training_required_skill_level;
|
||||
};
|
||||
|
||||
|
@ -9,6 +9,7 @@
|
||||
#include "../pipelines/spell_heal_info.h"
|
||||
#include "./data/character_spec.h"
|
||||
#include "./data/talent_row_data.h"
|
||||
#include "./skills/entity_skill.h"
|
||||
|
||||
NodePath Entity::get_character_skeleton_path() {
|
||||
return _character_skeleton_path;
|
||||
|
@ -32,7 +32,6 @@
|
||||
#include "../utility/category_cooldown.h"
|
||||
#include "../utility/cooldown.h"
|
||||
#include "./data/entity_data_container.h"
|
||||
#include "./skills/entity_skill.h"
|
||||
|
||||
#include "../profile_manager/actionbar/action_bar_profile.h"
|
||||
|
||||
@ -52,6 +51,7 @@ class SpellCastInfo;
|
||||
class EntityCreateInfo;
|
||||
class TalentRowData;
|
||||
class CharacterSpec;
|
||||
class EntitySkill;
|
||||
|
||||
enum SpellCastDataSignals {
|
||||
CastFailed,
|
||||
|
@ -1,5 +1,7 @@
|
||||
#include "entity_resource_data.h"
|
||||
|
||||
#include "entity_resource.h"
|
||||
|
||||
int EntityResourceData::get_id() {
|
||||
return _id;
|
||||
}
|
||||
|
@ -4,7 +4,7 @@
|
||||
#include "core/resource.h"
|
||||
#include "scene/main/node.h"
|
||||
|
||||
#include "entity_resource.h"
|
||||
class EntityResource;
|
||||
|
||||
class EntityResourceData : public Resource {
|
||||
GDCLASS(EntityResourceData, Resource);
|
||||
|
@ -1,11 +1,32 @@
|
||||
#include "entity_skill.h"
|
||||
|
||||
#include "../../entity_data_manager.h"
|
||||
|
||||
Ref<EntitySkillData> EntitySkill::get_skill() {
|
||||
return _skill;
|
||||
}
|
||||
void EntitySkill::set_skill(Ref<EntitySkillData> value) {
|
||||
_skill = value;
|
||||
|
||||
if (_skill.is_valid())
|
||||
_skill_id = _skill->get_id();
|
||||
else
|
||||
_skill_id = 0;
|
||||
|
||||
|
||||
emit_signal("skill_changed", Ref<EntitySkill>(this));
|
||||
}
|
||||
|
||||
int EntitySkill::get_skill_id() {
|
||||
return _skill_id;
|
||||
}
|
||||
void EntitySkill::set_skill_id(int value) {
|
||||
_skill_id = value;
|
||||
|
||||
if (EntityDataManager::get_instance() != NULL) {
|
||||
_skill = EntityDataManager::get_instance()->get_entity_skill(_skill_id);
|
||||
}
|
||||
|
||||
emit_signal("skill_changed", Ref<EntitySkill>(this));
|
||||
}
|
||||
|
||||
@ -69,9 +90,17 @@ EntitySkill::EntitySkill() {
|
||||
_disabled = false;
|
||||
}
|
||||
|
||||
EntitySkill::~EntitySkill() {
|
||||
_skill.unref();
|
||||
}
|
||||
|
||||
void EntitySkill::_bind_methods() {
|
||||
ADD_SIGNAL(MethodInfo("skill_changed", PropertyInfo(Variant::OBJECT, "skill", PROPERTY_HINT_RESOURCE_TYPE, "EntitySkill")));
|
||||
|
||||
ClassDB::bind_method(D_METHOD("get_skill"), &EntitySkill::get_skill);
|
||||
ClassDB::bind_method(D_METHOD("set_skill", "value"), &EntitySkill::set_skill);
|
||||
ADD_PROPERTY(PropertyInfo(Variant::OBJECT, "skill", PROPERTY_HINT_RESOURCE_TYPE, "EntitySkillData"), "set_skill", "get_skill");
|
||||
|
||||
ClassDB::bind_method(D_METHOD("get_skill_id"), &EntitySkill::get_skill_id);
|
||||
ClassDB::bind_method(D_METHOD("set_skill_id", "value"), &EntitySkill::set_skill_id);
|
||||
ADD_PROPERTY(PropertyInfo(Variant::INT, "skill_id"), "set_skill_id", "get_skill_id");
|
||||
|
@ -2,11 +2,15 @@
|
||||
#define ENTITY_SKILL_H
|
||||
|
||||
#include "core/reference.h"
|
||||
#include "entity_skill_data.h"
|
||||
|
||||
class EntitySkill : public Reference {
|
||||
GDCLASS(EntitySkill, Reference);
|
||||
|
||||
public:
|
||||
Ref<EntitySkillData> get_skill();
|
||||
void set_skill(Ref<EntitySkillData> value);
|
||||
|
||||
int get_skill_id();
|
||||
void set_skill_id(int value);
|
||||
|
||||
@ -18,7 +22,6 @@ public:
|
||||
|
||||
bool get_disabled();
|
||||
void set_disabled(bool value);
|
||||
|
||||
Dictionary to_dict();
|
||||
void from_dict(const Dictionary &dict);
|
||||
|
||||
@ -26,11 +29,13 @@ public:
|
||||
void _from_dict(const Dictionary &dict);
|
||||
|
||||
EntitySkill();
|
||||
~EntitySkill();
|
||||
|
||||
protected:
|
||||
static void _bind_methods();
|
||||
|
||||
private:
|
||||
Ref<EntitySkillData> _skill;
|
||||
int _skill_id;
|
||||
int _current;
|
||||
int _max;
|
||||
|
59
entities/skills/entity_skill_data.cpp
Normal file
59
entities/skills/entity_skill_data.cpp
Normal file
@ -0,0 +1,59 @@
|
||||
#include "entity_skill_data.h"
|
||||
|
||||
int EntitySkillData::get_id() {
|
||||
return _id;
|
||||
}
|
||||
void EntitySkillData::set_id(int value) {
|
||||
_id = value;
|
||||
}
|
||||
|
||||
int EntitySkillData::get_default_value() {
|
||||
return _default_value;
|
||||
}
|
||||
void EntitySkillData::set_default_value(int value) {
|
||||
_default_value = value;
|
||||
}
|
||||
|
||||
int EntitySkillData::get_max_value() {
|
||||
return _max_value;
|
||||
}
|
||||
void EntitySkillData::set_max_value(int value) {
|
||||
_max_value = value;
|
||||
}
|
||||
|
||||
String EntitySkillData::get_text_description() {
|
||||
return _text_description;
|
||||
}
|
||||
void EntitySkillData::set_text_description(String value) {
|
||||
_text_description = value;
|
||||
}
|
||||
|
||||
EntitySkillData::EntitySkillData() {
|
||||
_id = 0;
|
||||
_default_value = 0;
|
||||
_max_value = 0;
|
||||
}
|
||||
|
||||
EntitySkillData::~EntitySkillData() {
|
||||
}
|
||||
|
||||
void EntitySkillData::_bind_methods() {
|
||||
ClassDB::bind_method(D_METHOD("get_id"), &EntitySkillData::get_id);
|
||||
ClassDB::bind_method(D_METHOD("set_id", "value"), &EntitySkillData::set_id);
|
||||
ADD_PROPERTY(PropertyInfo(Variant::INT, "id"), "set_id", "get_id");
|
||||
|
||||
ClassDB::bind_method(D_METHOD("get_default_value"), &EntitySkillData::get_default_value);
|
||||
ClassDB::bind_method(D_METHOD("set_default_value", "value"), &EntitySkillData::set_default_value);
|
||||
ADD_PROPERTY(PropertyInfo(Variant::INT, "default_value"), "set_default_value", "get_default_value");
|
||||
|
||||
ClassDB::bind_method(D_METHOD("get_max_value"), &EntitySkillData::get_max_value);
|
||||
ClassDB::bind_method(D_METHOD("set_max_value", "value"), &EntitySkillData::set_max_value);
|
||||
ADD_PROPERTY(PropertyInfo(Variant::INT, "max_value"), "set_max_value", "get_max_value");
|
||||
|
||||
ADD_PROPERTY(PropertyInfo(Variant::STRING, "text_name"), "set_name", "get_name");
|
||||
|
||||
ClassDB::bind_method(D_METHOD("get_text_description"), &EntitySkillData::get_text_description);
|
||||
ClassDB::bind_method(D_METHOD("set_text_description", "value"), &EntitySkillData::set_text_description);
|
||||
ADD_PROPERTY(PropertyInfo(Variant::STRING, "text_description", PROPERTY_HINT_MULTILINE_TEXT), "set_text_description", "get_text_description");
|
||||
|
||||
}
|
36
entities/skills/entity_skill_data.h
Normal file
36
entities/skills/entity_skill_data.h
Normal file
@ -0,0 +1,36 @@
|
||||
#ifndef ENTITY_SKILL_DATA_H
|
||||
#define ENTITY_SKILL_DATA_H
|
||||
|
||||
#include "core/resource.h"
|
||||
#include "core/ustring.h"
|
||||
|
||||
class EntitySkillData : public Resource {
|
||||
GDCLASS(EntitySkillData, Resource);
|
||||
|
||||
public:
|
||||
int get_id();
|
||||
void set_id(int value);
|
||||
|
||||
int get_default_value();
|
||||
void set_default_value(int value);
|
||||
|
||||
int get_max_value();
|
||||
void set_max_value(int value);
|
||||
|
||||
String get_text_description();
|
||||
void set_text_description(String value);
|
||||
|
||||
EntitySkillData();
|
||||
~EntitySkillData();
|
||||
|
||||
protected:
|
||||
static void _bind_methods();
|
||||
|
||||
private:
|
||||
int _id;
|
||||
int _default_value;
|
||||
int _max_value;
|
||||
String _text_description;
|
||||
};
|
||||
|
||||
#endif
|
@ -4,6 +4,8 @@
|
||||
#include "./data/aura.h"
|
||||
#include "./data/craft_recipe.h"
|
||||
#include "./data/spell.h"
|
||||
#include "./entities/resources/entity_resource_data.h"
|
||||
#include "./entities/skills/entity_skill_data.h"
|
||||
|
||||
EntityDataManager *EntityDataManager::instance;
|
||||
|
||||
@ -77,6 +79,36 @@ void EntityDataManager::add_entity_resource(Ref<EntityResourceData> cls) {
|
||||
_entity_resource_map.set(cls->get_id(), cls);
|
||||
}
|
||||
|
||||
String EntityDataManager::get_entity_skills_folder() {
|
||||
return _entity_skills_folder;
|
||||
}
|
||||
void EntityDataManager::set_entity_skills_folder(String folder) {
|
||||
_entity_skills_folder = folder;
|
||||
}
|
||||
Vector<Ref<EntitySkillData> > *EntityDataManager::get_entity_skills() {
|
||||
return &_entity_skills;
|
||||
}
|
||||
Ref<EntitySkillData> EntityDataManager::get_entity_skill(int class_id) {
|
||||
if (!_entity_skill_map.has(class_id))
|
||||
return Ref<EntitySkillData>(NULL);
|
||||
|
||||
return _entity_skill_map.get(class_id);
|
||||
}
|
||||
Ref<EntitySkillData> EntityDataManager::get_entity_skill_index(int index) {
|
||||
ERR_FAIL_INDEX_V(index, _entity_skills.size(), Ref<EntitySkillData>(NULL));
|
||||
|
||||
return _entity_skills.get(index);
|
||||
}
|
||||
int EntityDataManager::get_entity_skill_count() {
|
||||
return _entity_skills.size();
|
||||
}
|
||||
void EntityDataManager::add_entity_skill(Ref<EntitySkillData> cls) {
|
||||
ERR_FAIL_COND(!cls.is_valid());
|
||||
|
||||
_entity_skills.push_back(cls);
|
||||
_entity_skill_map.set(cls->get_id(), cls);
|
||||
}
|
||||
|
||||
String EntityDataManager::get_entity_datas_folder() {
|
||||
return _entity_datas_folder;
|
||||
}
|
||||
@ -683,6 +715,16 @@ void EntityDataManager::_bind_methods() {
|
||||
ClassDB::bind_method(D_METHOD("get_entity_resource_index", "index"), &EntityDataManager::get_entity_resource_index);
|
||||
ClassDB::bind_method(D_METHOD("get_entity_resource_count"), &EntityDataManager::get_entity_resource_count);
|
||||
|
||||
//EntitySkills
|
||||
ClassDB::bind_method(D_METHOD("get_entity_skills_folder"), &EntityDataManager::get_entity_skills_folder);
|
||||
ClassDB::bind_method(D_METHOD("set_entity_skills_folder", "folder"), &EntityDataManager::set_entity_skills_folder);
|
||||
ADD_PROPERTY(PropertyInfo(Variant::STRING, "entity_skills_folder"), "set_entity_skills_folder", "get_entity_skills_folder");
|
||||
|
||||
ClassDB::bind_method(D_METHOD("add_entity_skill", "cls"), &EntityDataManager::add_entity_skill);
|
||||
ClassDB::bind_method(D_METHOD("get_entity_skill", "class_id"), &EntityDataManager::get_entity_skill);
|
||||
ClassDB::bind_method(D_METHOD("get_entity_skill_index", "index"), &EntityDataManager::get_entity_skill_index);
|
||||
ClassDB::bind_method(D_METHOD("get_entity_skill_count"), &EntityDataManager::get_entity_skill_count);
|
||||
|
||||
//EntityData
|
||||
ClassDB::bind_method(D_METHOD("get_entity_datas_folder"), &EntityDataManager::get_entity_datas_folder);
|
||||
ClassDB::bind_method(D_METHOD("set_entity_datas_folder", "folder"), &EntityDataManager::set_entity_datas_folder);
|
||||
@ -786,6 +828,9 @@ EntityDataManager::~EntityDataManager() {
|
||||
_entity_resources.clear();
|
||||
_entity_resource_map.clear();
|
||||
|
||||
_entity_skills.clear();
|
||||
_entity_skill_map.clear();
|
||||
|
||||
_entity_datas.clear();
|
||||
_entity_data_map.clear();
|
||||
|
||||
|
@ -23,6 +23,7 @@ class EntityData;
|
||||
class CraftRecipe;
|
||||
class ItemTemplate;
|
||||
class EntityResourceData;
|
||||
class EntitySkillData;
|
||||
|
||||
class EntityDataManager : public Node {
|
||||
GDCLASS(EntityDataManager, Node);
|
||||
@ -45,6 +46,14 @@ public:
|
||||
int get_entity_resource_count();
|
||||
void add_entity_resource(Ref<EntityResourceData> cls);
|
||||
|
||||
String get_entity_skills_folder();
|
||||
void set_entity_skills_folder(String folder);
|
||||
Vector<Ref<EntitySkillData> > *get_entity_skills();
|
||||
Ref<EntitySkillData> get_entity_skill(int class_id);
|
||||
Ref<EntitySkillData> get_entity_skill_index(int index);
|
||||
int get_entity_skill_count();
|
||||
void add_entity_skill(Ref<EntitySkillData> cls);
|
||||
|
||||
String get_entity_datas_folder();
|
||||
void set_entity_datas_folder(String folder);
|
||||
Vector<Ref<EntityData> > *get_entity_datas();
|
||||
@ -137,6 +146,10 @@ private:
|
||||
Vector<Ref<EntityResourceData> > _entity_resources;
|
||||
HashMap<int, Ref<EntityResourceData> > _entity_resource_map;
|
||||
|
||||
String _entity_skills_folder;
|
||||
Vector<Ref<EntitySkillData> > _entity_skills;
|
||||
HashMap<int, Ref<EntitySkillData> > _entity_skill_map;
|
||||
|
||||
String _entity_datas_folder;
|
||||
Vector<Ref<EntityData> > _entity_datas;
|
||||
HashMap<int, Ref<EntityData> > _entity_data_map;
|
||||
|
@ -23,6 +23,7 @@
|
||||
#include "entities/data/entity_data_container.h"
|
||||
|
||||
#include "entities/skills/entity_skill.h"
|
||||
#include "entities/skills/entity_skill_data.h"
|
||||
|
||||
#include "entities/data/talent_row_data.h"
|
||||
#include "entities/data/character_spec.h"
|
||||
@ -157,6 +158,7 @@ void register_entity_spell_system_types() {
|
||||
ClassDB::register_class<EquipmentDataEntry>();
|
||||
|
||||
ClassDB::register_class<EntitySkill>();
|
||||
ClassDB::register_class<EntitySkillData>();
|
||||
|
||||
ClassDB::register_class<EntityDataManager>();
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user