diff --git a/SCsub b/SCsub index d44ba3d..52914b1 100644 --- a/SCsub +++ b/SCsub @@ -23,7 +23,6 @@ module_env.add_source_files(env.modules_sources,"data/item_template.cpp") module_env.add_source_files(env.modules_sources,"data/spell_cooldown_manipulation_data.cpp") module_env.add_source_files(env.modules_sources,"entities/data/entity_data.cpp") -module_env.add_source_files(env.modules_sources,"entities/data/mob_data.cpp") module_env.add_source_files(env.modules_sources,"entities/data/player_character_data.cpp") module_env.add_source_files(env.modules_sources,"entities/data/character_spec.cpp") diff --git a/data/data_manager.cpp b/data/data_manager.cpp index d298b51..a7283a1 100644 --- a/data/data_manager.cpp +++ b/data/data_manager.cpp @@ -5,8 +5,6 @@ #include "craft_data_attribute.h" #include "spell.h" #include "talent.h" -#include "../entities/data/mob_data.h" -#include "../entities/data/player_character_data.h" DataManager *DataManager::instance; @@ -238,25 +236,25 @@ String DataManager::get_mob_data_folder() { void DataManager::set_mob_data_folder(String folder) { _mob_data_folder = folder; } -Vector > *DataManager::get_mob_datas() { +Vector > *DataManager::get_mob_datas() { return &_mob_datas; } -void DataManager::add_mob_data(Ref cda) { +void DataManager::add_mob_data(Ref cda) { ERR_FAIL_COND(!cda.is_valid()); _mob_datas.push_back(cda); _mob_data_map.set(cda->get_id(), cda); } -Ref DataManager::get_mob_data(int item_id) { - ERR_FAIL_COND_V(!_mob_data_map.has(item_id), Ref(NULL)); +Ref DataManager::get_mob_data(int item_id) { + ERR_FAIL_COND_V(!_mob_data_map.has(item_id), Ref(NULL)); return _mob_data_map.get(item_id); } -Ref DataManager::get_mob_data_index(int index) { - ERR_FAIL_INDEX_V(index, _mob_datas.size(), Ref(NULL)); +Ref DataManager::get_mob_data_index(int index) { + ERR_FAIL_INDEX_V(index, _mob_datas.size(), Ref(NULL)); return _mob_datas.get(index); } @@ -272,25 +270,25 @@ String DataManager::get_player_character_data_folder() { void DataManager::set_player_character_data_folder(String folder) { _player_character_data_folder = folder; } -Vector > *DataManager::get_player_character_datas() { +Vector > *DataManager::get_player_character_datas() { return &_player_character_datas; } -void DataManager::add_player_character_data(Ref cda) { +void DataManager::add_player_character_data(Ref cda) { ERR_FAIL_COND(!cda.is_valid()); _player_character_datas.push_back(cda); _player_character_data_map.set(cda->get_id(), cda); } -Ref DataManager::get_player_character_data(int item_id) { - ERR_FAIL_COND_V(!_player_character_data_map.has(item_id), Ref(NULL)); +Ref DataManager::get_player_character_data(int item_id) { + ERR_FAIL_COND_V(!_player_character_data_map.has(item_id), Ref(NULL)); return _player_character_data_map.get(item_id); } -Ref DataManager::get_player_character_data_index(int index) { - ERR_FAIL_INDEX_V(index, _player_character_datas.size(), Ref(NULL)); +Ref DataManager::get_player_character_data_index(int index) { + ERR_FAIL_INDEX_V(index, _player_character_datas.size(), Ref(NULL)); return _player_character_datas.get(index); } @@ -562,7 +560,7 @@ void DataManager::load_mob_datas() { _ResourceLoader *rl = _ResourceLoader::get_singleton(); - Ref resl = rl->load_interactive(path, "MobData"); + Ref resl = rl->load_interactive(path, "EntityData"); resl->wait(); @@ -570,7 +568,7 @@ void DataManager::load_mob_datas() { ERR_CONTINUE(!s.is_valid()); - Ref mob_data = s; + Ref mob_data = s; ERR_CONTINUE(!mob_data.is_valid()); @@ -601,7 +599,7 @@ void DataManager::load_player_character_datas() { _ResourceLoader *rl = _ResourceLoader::get_singleton(); - Ref resl = rl->load_interactive(path, "PlayerCharacterData"); + Ref resl = rl->load_interactive(path, "EntityData"); resl->wait(); @@ -609,7 +607,7 @@ void DataManager::load_player_character_datas() { ERR_CONTINUE(!s.is_valid()); - Ref pcd = s; + Ref pcd = s; ERR_CONTINUE(!pcd.is_valid()); @@ -625,7 +623,7 @@ void DataManager::load_player_character_datas() { void DataManager::list_characters() { for (int i = 0; i < _entity_datas.size(); ++i) { - print_error(itos(i) + ": " + _entity_datas.get(i)->get_entity_data_name()); + print_error(itos(i) + ": " + _entity_datas.get(i)->get_entity_name()); } } diff --git a/data/data_manager.h b/data/data_manager.h index 713840a..f66d59e 100644 --- a/data/data_manager.h +++ b/data/data_manager.h @@ -19,8 +19,6 @@ class Talent; class EntityData; class CraftDataAttribute; class ItemTemplate; -class MobData; -class PlayerCharacterData; class DataManager : public Node { GDCLASS(DataManager, Node); @@ -78,18 +76,18 @@ public: String get_mob_data_folder(); void set_mob_data_folder(String folder); - Vector > *get_mob_datas(); - void add_mob_data(Ref aura); - Ref get_mob_data(int item_id); - Ref get_mob_data_index(int index); + Vector > *get_mob_datas(); + void add_mob_data(Ref aura); + Ref get_mob_data(int item_id); + Ref get_mob_data_index(int index); int get_mob_data_count(); String get_player_character_data_folder(); void set_player_character_data_folder(String folder); - Vector > *get_player_character_datas(); - void add_player_character_data(Ref aura); - Ref get_player_character_data(int item_id); - Ref get_player_character_data_index(int index); + Vector > *get_player_character_datas(); + void add_player_character_data(Ref aura); + Ref get_player_character_data(int item_id); + Ref get_player_character_data_index(int index); int get_player_character_data_count(); void load_all(); @@ -147,12 +145,12 @@ private: HashMap > _item_template_map; String _mob_data_folder; - Vector > _mob_datas; - HashMap > _mob_data_map; + Vector > _mob_datas; + HashMap > _mob_data_map; String _player_character_data_folder; - Vector > _player_character_datas; - HashMap > _player_character_data_map; + Vector > _player_character_datas; + HashMap > _player_character_data_map; static DataManager *instance; diff --git a/entities/data/entity_data.cpp b/entities/data/entity_data.cpp index 843739c..5b84b20 100644 --- a/entities/data/entity_data.cpp +++ b/entities/data/entity_data.cpp @@ -21,17 +21,16 @@ void EntityData::set_inherits(Ref value) { _inherits = value; } -String EntityData::get_entity_data_name() { - return _entity_data_name; +String EntityData::get_entity_name() { + return _entity_name; } -void EntityData::set_entity_data_name(String value) { - _entity_data_name = value; +void EntityData::set_entity_name(String value) { + _entity_name = value; } Ref EntityData::get_icon() { return _icon; } - void EntityData::set_icon(Ref value) { _icon = Ref(value); } @@ -39,11 +38,17 @@ void EntityData::set_icon(Ref value) { int EntityData::get_player_resource_type() { return _player_resource_type; } - void EntityData::set_player_resource_type(int value) { _player_resource_type = value; } +Ref EntityData::get_loot_db() const { + return _lootdb; +} +void EntityData::set_loot_db(const Ref lootdb) { + _lootdb = lootdb; +} + Ref EntityData::get_stat_data() { if (!_stat_data.is_valid() && _inherits.is_valid()) { return _inherits->get_stat_data(); @@ -776,6 +781,14 @@ void EntityData::sai_attack_bind(Node *entity) { sai_attack(e); } +String EntityData::generate_name() { + if (has_method("_generate_name")) { + return call("_generate_name"); + } + + return _entity_name; +} + void EntityData::_bind_methods() { //EventHandlers ClassDB::bind_method(D_METHOD("son_before_cast", "info"), &EntityData::son_before_cast); @@ -901,9 +914,9 @@ void EntityData::_bind_methods() { ClassDB::bind_method(D_METHOD("set_id", "value"), &EntityData::set_id); ADD_PROPERTY(PropertyInfo(Variant::INT, "id"), "set_id", "get_id"); - ClassDB::bind_method(D_METHOD("get_entity_data_name"), &EntityData::get_entity_data_name); - ClassDB::bind_method(D_METHOD("set_entity_data_name", "value"), &EntityData::set_entity_data_name); - ADD_PROPERTY(PropertyInfo(Variant::STRING, "entity_data_name"), "set_entity_data_name", "get_entity_data_name"); + ClassDB::bind_method(D_METHOD("get_entity_name"), &EntityData::get_entity_name); + ClassDB::bind_method(D_METHOD("set_entity_name", "value"), &EntityData::set_entity_name); + ADD_PROPERTY(PropertyInfo(Variant::STRING, "entity_name"), "set_entity_name", "get_entity_name"); ClassDB::bind_method(D_METHOD("get_inherits"), &EntityData::get_inherits); ClassDB::bind_method(D_METHOD("set_inherits", "value"), &EntityData::set_inherits); @@ -964,6 +977,14 @@ void EntityData::_bind_methods() { ClassDB::bind_method(D_METHOD("get_ai_actions"), &EntityData::get_ai_actions); ClassDB::bind_method(D_METHOD("set_ai_actions", "auras"), &EntityData::set_ai_actions); ADD_PROPERTY(PropertyInfo(Variant::ARRAY, "ai_actions", PROPERTY_HINT_NONE, "17/17:AIAction", PROPERTY_USAGE_DEFAULT, "AIAction"), "set_ai_actions", "get_ai_actions"); + + // Loot DB + ClassDB::bind_method(D_METHOD("get_loot_db"), &EntityData::get_loot_db); + ClassDB::bind_method(D_METHOD("set_loot_db", "value"), &EntityData::set_loot_db); + ADD_PROPERTY(PropertyInfo(Variant::OBJECT, "loot_db", PROPERTY_HINT_RESOURCE_TYPE, "LootDataBase"), "set_loot_db", "get_loot_db"); + + ClassDB::bind_method(D_METHOD("generate_name"), &EntityData::generate_name); + BIND_VMETHOD(MethodInfo(PropertyInfo(Variant::STRING, "name"), "_generate_name")); } EntityData::EntityData() { diff --git a/entities/data/entity_data.h b/entities/data/entity_data.h index 9839898..17606f1 100644 --- a/entities/data/entity_data.h +++ b/entities/data/entity_data.h @@ -3,6 +3,7 @@ #include "core/resource.h" #include "core/vector.h" +#include "core/ustring.h" #include "scene/resources/texture.h" #include "../../entities/stats/stat_data.h" @@ -15,6 +16,8 @@ #include "../../utility/cooldown.h" #include "../../utility/category_cooldown.h" +#include "../../loot/loot_data_base.h" + class Aura; class Spell; class Entity; @@ -38,8 +41,8 @@ public: int get_id(); void set_id(int value); - String get_entity_data_name(); - void set_entity_data_name(String value); + String get_entity_name(); + void set_entity_name(String value); Ref get_inherits(); void set_inherits(Ref value); @@ -52,7 +55,10 @@ public: int get_player_resource_type(); void set_player_resource_type(int value); - + + Ref get_loot_db() const; + void set_loot_db(const Ref lootdb); + //Specs int get_num_specs(); void set_num_specs(int value); @@ -189,6 +195,8 @@ public: void sai_regenerate_bind(Node *entity); void sai_attack_bind(Node *entity); + String generate_name(); + EntityData(); ~EntityData(); @@ -198,7 +206,7 @@ protected: private: int _id; - String _entity_data_name; + String _entity_name; Ref _inherits; @@ -213,6 +221,8 @@ private: Vector > _auras; Vector > _ai_actions; + Ref _lootdb; + //Vector _mob_party_ids; //Vector _mob_dislike_ids; diff --git a/entities/data/mob_data.cpp b/entities/data/mob_data.cpp deleted file mode 100644 index cde9685..0000000 --- a/entities/data/mob_data.cpp +++ /dev/null @@ -1,65 +0,0 @@ -#include "mob_data.h" - -int MobData::get_id() const { - return _id; -} -void MobData::set_id(const int id) { - _id = id; -} - -Ref MobData::get_loot_db() const { - return _lootdb; -} -void MobData::set_loot_db(const Ref lootdb) { - _lootdb = lootdb; -} - -Ref MobData::get_entity_data() const { - return _entity_data; -} -void MobData::set_entity_data(const Ref entity_data) { - _entity_data = entity_data; -} - -String MobData::get_player_name() { - if (has_method("_generate_name")) { - return call("_generate_name"); - } - - return _static_player_name; -} - -String MobData::get_static_player_name() const { - return _static_player_name; -} -void MobData::set_static_player_name(const String name) { - _static_player_name = name; -} - -MobData::MobData() { - _id = 0; -} -MobData::~MobData() { - _lootdb.unref(); - _entity_data.unref(); -} - -void MobData::_bind_methods() { - BIND_VMETHOD(MethodInfo(PropertyInfo(Variant::STRING, "name"), "_generate_name")); - - ClassDB::bind_method(D_METHOD("get_id"), &MobData::get_id); - ClassDB::bind_method(D_METHOD("set_id", "value"), &MobData::set_id); - ADD_PROPERTY(PropertyInfo(Variant::INT, "id"), "set_id", "get_id"); - - ClassDB::bind_method(D_METHOD("get_loot_db"), &MobData::get_loot_db); - ClassDB::bind_method(D_METHOD("set_loot_db", "value"), &MobData::set_loot_db); - ADD_PROPERTY(PropertyInfo(Variant::OBJECT, "loot_db", PROPERTY_HINT_RESOURCE_TYPE, "LootDataBase"), "set_loot_db", "get_loot_db"); - - ClassDB::bind_method(D_METHOD("get_entity_data"), &MobData::get_entity_data); - ClassDB::bind_method(D_METHOD("set_entity_data", "value"), &MobData::set_entity_data); - ADD_PROPERTY(PropertyInfo(Variant::OBJECT, "entity_data", PROPERTY_HINT_RESOURCE_TYPE, "EntityData"), "set_entity_data", "get_entity_data"); - - ClassDB::bind_method(D_METHOD("get_static_player_name"), &MobData::get_static_player_name); - ClassDB::bind_method(D_METHOD("set_static_player_name", "value"), &MobData::set_static_player_name); - ADD_PROPERTY(PropertyInfo(Variant::STRING, "static_player_name"), "set_static_player_name", "get_static_player_name"); -} diff --git a/entities/data/mob_data.h b/entities/data/mob_data.h deleted file mode 100644 index b9606f4..0000000 --- a/entities/data/mob_data.h +++ /dev/null @@ -1,45 +0,0 @@ -#ifndef MOB_DATA_H -#define MOB_DATA_H - -#include "core/resource.h" -#include "core/ustring.h" - -#include "entity_data.h" -#include "../../loot/loot_data_base.h" - -//Add it to the data manager too. - -class MobData : public Resource { - GDCLASS(MobData, Resource); - -public: - int get_id() const; - void set_id(const int id); - - Ref get_loot_db() const; - void set_loot_db(const Ref lootdb); - - Ref get_entity_data() const; - void set_entity_data(const Ref entity_data); - - String get_player_name(); - - String get_static_player_name() const; - void set_static_player_name(const String name); - - MobData(); - ~MobData(); - -protected: - static void _bind_methods(); - -private: - int _id; - Ref _lootdb; - Ref _entity_data; - String _static_player_name; - //Skeleton -> basic gear -}; - - -#endif diff --git a/entities/data/player_character_data.cpp b/entities/data/player_character_data.cpp index ec93cf4..4a1777b 100644 --- a/entities/data/player_character_data.cpp +++ b/entities/data/player_character_data.cpp @@ -1,54 +1,11 @@ #include "player_character_data.h" -int PlayerCharacterData::get_id() const { - return _id; -} -void PlayerCharacterData::set_id(const int id) { - _id = id; -} - -Ref PlayerCharacterData::get_entity_data() const { - return _entity_data; -} -void PlayerCharacterData::set_entity_data(const Ref entity_data) { - _entity_data = entity_data; -} - -String PlayerCharacterData::get_player_name() { - if (has_method("_generate_name")) { - return call("_generate_name"); - } - - return _static_player_name; -} - -String PlayerCharacterData::get_static_player_name() const { - return _static_player_name; -} -void PlayerCharacterData::set_static_player_name(const String name) { - _static_player_name = name; -} - PlayerCharacterData::PlayerCharacterData() { - _id = 0; } PlayerCharacterData::~PlayerCharacterData() { - _entity_data.unref(); } void PlayerCharacterData::_bind_methods() { - BIND_VMETHOD(MethodInfo(PropertyInfo(Variant::STRING, "name"), "_generate_name")); - - ClassDB::bind_method(D_METHOD("get_id"), &PlayerCharacterData::get_id); - ClassDB::bind_method(D_METHOD("set_id", "value"), &PlayerCharacterData::set_id); - ADD_PROPERTY(PropertyInfo(Variant::INT, "id"), "set_id", "get_id"); - - ClassDB::bind_method(D_METHOD("get_entity_data"), &PlayerCharacterData::get_entity_data); - ClassDB::bind_method(D_METHOD("set_entity_data", "value"), &PlayerCharacterData::set_entity_data); - ADD_PROPERTY(PropertyInfo(Variant::OBJECT, "entity_data", PROPERTY_HINT_RESOURCE_TYPE, "EntityData"), "set_entity_data", "get_entity_data"); - - ClassDB::bind_method(D_METHOD("get_static_player_name"), &PlayerCharacterData::get_static_player_name); - ClassDB::bind_method(D_METHOD("set_static_player_name", "value"), &PlayerCharacterData::set_static_player_name); - ADD_PROPERTY(PropertyInfo(Variant::STRING, "static_player_name"), "set_static_player_name", "get_static_player_name"); + } diff --git a/entities/data/player_character_data.h b/entities/data/player_character_data.h index 6370a4e..7717559 100644 --- a/entities/data/player_character_data.h +++ b/entities/data/player_character_data.h @@ -5,29 +5,12 @@ #include "core/ustring.h" #include "entity_data.h" -#include "../../loot/loot_data_base.h" -//same as mob data -//name generator, or name -> probably an overrideable get_name -//class specific strings? like what this class does? lik character creating info? or put that into cc? -//Skeleton -> basic gear -//Add it to the data manager too. - -class PlayerCharacterData : public Resource { - GDCLASS(PlayerCharacterData, Resource); +class PlayerCharacterData : public EntityData { + GDCLASS(PlayerCharacterData, EntityData); public: - int get_id() const; - void set_id(const int id); - - Ref get_entity_data() const; - void set_entity_data(const Ref entity_data); - - String get_player_name(); - - String get_static_player_name() const; - void set_static_player_name(const String name); - + PlayerCharacterData(); ~PlayerCharacterData(); @@ -35,10 +18,6 @@ protected: static void _bind_methods(); private: - int _id; - Ref _entity_data; - String _static_player_name; - //Skeleton -> basic gear }; diff --git a/register_types.cpp b/register_types.cpp index ec4fd39..c0318e3 100644 --- a/register_types.cpp +++ b/register_types.cpp @@ -13,7 +13,6 @@ #include "data/spell_cooldown_manipulation_data.h" #include "entities/data/entity_data.h" -#include "entities/data/mob_data.h" #include "entities/data/player_character_data.h" #include "entities/data/talent_row_data.h" @@ -108,7 +107,6 @@ void register_entity_spell_system_types() { ClassDB::register_class(); ClassDB::register_class(); - ClassDB::register_class(); ClassDB::register_class(); ClassDB::register_class();