Removed MobData, and merged it into EntityData. Also cleaned up PlayerCharacterData.

This commit is contained in:
Relintai 2019-09-09 22:12:04 +02:00
parent e1c83586a7
commit 8cc7017351
10 changed files with 77 additions and 227 deletions

1
SCsub
View File

@ -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")

View File

@ -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<Ref<MobData> > *DataManager::get_mob_datas() {
Vector<Ref<EntityData> > *DataManager::get_mob_datas() {
return &_mob_datas;
}
void DataManager::add_mob_data(Ref<MobData> cda) {
void DataManager::add_mob_data(Ref<EntityData> cda) {
ERR_FAIL_COND(!cda.is_valid());
_mob_datas.push_back(cda);
_mob_data_map.set(cda->get_id(), cda);
}
Ref<MobData> DataManager::get_mob_data(int item_id) {
ERR_FAIL_COND_V(!_mob_data_map.has(item_id), Ref<MobData>(NULL));
Ref<EntityData> DataManager::get_mob_data(int item_id) {
ERR_FAIL_COND_V(!_mob_data_map.has(item_id), Ref<EntityData>(NULL));
return _mob_data_map.get(item_id);
}
Ref<MobData> DataManager::get_mob_data_index(int index) {
ERR_FAIL_INDEX_V(index, _mob_datas.size(), Ref<MobData>(NULL));
Ref<EntityData> DataManager::get_mob_data_index(int index) {
ERR_FAIL_INDEX_V(index, _mob_datas.size(), Ref<EntityData>(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<Ref<PlayerCharacterData> > *DataManager::get_player_character_datas() {
Vector<Ref<EntityData> > *DataManager::get_player_character_datas() {
return &_player_character_datas;
}
void DataManager::add_player_character_data(Ref<PlayerCharacterData> cda) {
void DataManager::add_player_character_data(Ref<EntityData> cda) {
ERR_FAIL_COND(!cda.is_valid());
_player_character_datas.push_back(cda);
_player_character_data_map.set(cda->get_id(), cda);
}
Ref<PlayerCharacterData> DataManager::get_player_character_data(int item_id) {
ERR_FAIL_COND_V(!_player_character_data_map.has(item_id), Ref<PlayerCharacterData>(NULL));
Ref<EntityData> DataManager::get_player_character_data(int item_id) {
ERR_FAIL_COND_V(!_player_character_data_map.has(item_id), Ref<EntityData>(NULL));
return _player_character_data_map.get(item_id);
}
Ref<PlayerCharacterData> DataManager::get_player_character_data_index(int index) {
ERR_FAIL_INDEX_V(index, _player_character_datas.size(), Ref<PlayerCharacterData>(NULL));
Ref<EntityData> DataManager::get_player_character_data_index(int index) {
ERR_FAIL_INDEX_V(index, _player_character_datas.size(), Ref<EntityData>(NULL));
return _player_character_datas.get(index);
}
@ -562,7 +560,7 @@ void DataManager::load_mob_datas() {
_ResourceLoader *rl = _ResourceLoader::get_singleton();
Ref<ResourceInteractiveLoader> resl = rl->load_interactive(path, "MobData");
Ref<ResourceInteractiveLoader> resl = rl->load_interactive(path, "EntityData");
resl->wait();
@ -570,7 +568,7 @@ void DataManager::load_mob_datas() {
ERR_CONTINUE(!s.is_valid());
Ref<MobData> mob_data = s;
Ref<EntityData> 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<ResourceInteractiveLoader> resl = rl->load_interactive(path, "PlayerCharacterData");
Ref<ResourceInteractiveLoader> resl = rl->load_interactive(path, "EntityData");
resl->wait();
@ -609,7 +607,7 @@ void DataManager::load_player_character_datas() {
ERR_CONTINUE(!s.is_valid());
Ref<PlayerCharacterData> pcd = s;
Ref<EntityData> 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());
}
}

View File

@ -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<Ref<MobData> > *get_mob_datas();
void add_mob_data(Ref<MobData> aura);
Ref<MobData> get_mob_data(int item_id);
Ref<MobData> get_mob_data_index(int index);
Vector<Ref<EntityData> > *get_mob_datas();
void add_mob_data(Ref<EntityData> aura);
Ref<EntityData> get_mob_data(int item_id);
Ref<EntityData> 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<Ref<PlayerCharacterData> > *get_player_character_datas();
void add_player_character_data(Ref<PlayerCharacterData> aura);
Ref<PlayerCharacterData> get_player_character_data(int item_id);
Ref<PlayerCharacterData> get_player_character_data_index(int index);
Vector<Ref<EntityData> > *get_player_character_datas();
void add_player_character_data(Ref<EntityData> aura);
Ref<EntityData> get_player_character_data(int item_id);
Ref<EntityData> get_player_character_data_index(int index);
int get_player_character_data_count();
void load_all();
@ -147,12 +145,12 @@ private:
HashMap<int, Ref<ItemTemplate> > _item_template_map;
String _mob_data_folder;
Vector<Ref<MobData> > _mob_datas;
HashMap<int, Ref<MobData> > _mob_data_map;
Vector<Ref<EntityData> > _mob_datas;
HashMap<int, Ref<EntityData> > _mob_data_map;
String _player_character_data_folder;
Vector<Ref<PlayerCharacterData> > _player_character_datas;
HashMap<int, Ref<PlayerCharacterData> > _player_character_data_map;
Vector<Ref<EntityData> > _player_character_datas;
HashMap<int, Ref<EntityData> > _player_character_data_map;
static DataManager *instance;

View File

@ -21,17 +21,16 @@ void EntityData::set_inherits(Ref<EntityData> 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<Texture> EntityData::get_icon() {
return _icon;
}
void EntityData::set_icon(Ref<Texture> value) {
_icon = Ref<Texture>(value);
}
@ -39,11 +38,17 @@ void EntityData::set_icon(Ref<Texture> value) {
int EntityData::get_player_resource_type() {
return _player_resource_type;
}
void EntityData::set_player_resource_type(int value) {
_player_resource_type = value;
}
Ref<LootDataBase> EntityData::get_loot_db() const {
return _lootdb;
}
void EntityData::set_loot_db(const Ref<LootDataBase> lootdb) {
_lootdb = lootdb;
}
Ref<StatData> 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() {

View File

@ -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<EntityData> get_inherits();
void set_inherits(Ref<EntityData> value);
@ -52,7 +55,10 @@ public:
int get_player_resource_type();
void set_player_resource_type(int value);
Ref<LootDataBase> get_loot_db() const;
void set_loot_db(const Ref<LootDataBase> 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<EntityData> _inherits;
@ -213,6 +221,8 @@ private:
Vector<Ref<Aura> > _auras;
Vector<Ref<AIAction> > _ai_actions;
Ref<LootDataBase> _lootdb;
//Vector<int> _mob_party_ids;
//Vector<int> _mob_dislike_ids;

View File

@ -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<LootDataBase> MobData::get_loot_db() const {
return _lootdb;
}
void MobData::set_loot_db(const Ref<LootDataBase> lootdb) {
_lootdb = lootdb;
}
Ref<EntityData> MobData::get_entity_data() const {
return _entity_data;
}
void MobData::set_entity_data(const Ref<EntityData> 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");
}

View File

@ -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<LootDataBase> get_loot_db() const;
void set_loot_db(const Ref<LootDataBase> lootdb);
Ref<EntityData> get_entity_data() const;
void set_entity_data(const Ref<EntityData> 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<LootDataBase> _lootdb;
Ref<EntityData> _entity_data;
String _static_player_name;
//Skeleton -> basic gear
};
#endif

View File

@ -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<EntityData> PlayerCharacterData::get_entity_data() const {
return _entity_data;
}
void PlayerCharacterData::set_entity_data(const Ref<EntityData> 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");
}

View File

@ -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<EntityData> get_entity_data() const;
void set_entity_data(const Ref<EntityData> 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<EntityData> _entity_data;
String _static_player_name;
//Skeleton -> basic gear
};

View File

@ -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<AuraStatAttribute>();
ClassDB::register_class<EntityData>();
ClassDB::register_class<MobData>();
ClassDB::register_class<PlayerCharacterData>();
ClassDB::register_class<XPData>();