mirror of
https://github.com/Relintai/entity_spell_system.git
synced 2025-02-22 17:18:12 +01:00
-Implemented MobData, and playerCharacterData.
-Also added them to the data manager.
This commit is contained in:
parent
baec5b1091
commit
1ae265a171
4
SCsub
4
SCsub
@ -71,3 +71,7 @@ env.add_source_files(env.modules_sources,"skeleton/entity_equipset.cpp")
|
|||||||
env.add_source_files(env.modules_sources,"loot/loot_data_base.cpp")
|
env.add_source_files(env.modules_sources,"loot/loot_data_base.cpp")
|
||||||
env.add_source_files(env.modules_sources,"loot/loot_data_container.cpp")
|
env.add_source_files(env.modules_sources,"loot/loot_data_container.cpp")
|
||||||
env.add_source_files(env.modules_sources,"loot/loot_data_item.cpp")
|
env.add_source_files(env.modules_sources,"loot/loot_data_item.cpp")
|
||||||
|
|
||||||
|
env.add_source_files(env.modules_sources,"data/mob_data.cpp")
|
||||||
|
env.add_source_files(env.modules_sources,"data/player_character_data.cpp")
|
||||||
|
|
||||||
|
@ -4,6 +4,8 @@
|
|||||||
#include "character_class.h"
|
#include "character_class.h"
|
||||||
#include "craft_data_attribute.h"
|
#include "craft_data_attribute.h"
|
||||||
#include "spell.h"
|
#include "spell.h"
|
||||||
|
#include "mob_data.h"
|
||||||
|
#include "player_character_data.h"
|
||||||
|
|
||||||
DataManager *DataManager::instance;
|
DataManager *DataManager::instance;
|
||||||
|
|
||||||
@ -173,18 +175,18 @@ Vector<Ref<ItemTemplate> > *DataManager::get_item_templates() {
|
|||||||
void DataManager::add_item_template(Ref<ItemTemplate> cda) {
|
void DataManager::add_item_template(Ref<ItemTemplate> cda) {
|
||||||
ERR_FAIL_COND(!cda.is_valid());
|
ERR_FAIL_COND(!cda.is_valid());
|
||||||
|
|
||||||
_craft_datas.push_back(cda);
|
_item_templates.push_back(cda);
|
||||||
_craft_data_map.set(cda->get_id(), cda);
|
_item_template_map.set(cda->get_id(), cda);
|
||||||
}
|
}
|
||||||
|
|
||||||
Ref<ItemTemplate> DataManager::get_item_template(int item_id) {
|
Ref<ItemTemplate> DataManager::get_item_template(int item_id) {
|
||||||
ERR_FAIL_COND_V(!_craft_data_map.has(item_id), Ref<ItemTemplate>(NULL));
|
ERR_FAIL_COND_V(!_item_template_map.has(item_id), Ref<ItemTemplate>(NULL));
|
||||||
|
|
||||||
return _item_template_map.get(item_id);
|
return _item_template_map.get(item_id);
|
||||||
}
|
}
|
||||||
|
|
||||||
Ref<ItemTemplate> DataManager::get_item_template_index(int index) {
|
Ref<ItemTemplate> DataManager::get_item_template_index(int index) {
|
||||||
ERR_FAIL_INDEX_V(index, _craft_datas.size(), Ref<ItemTemplate>(NULL));
|
ERR_FAIL_INDEX_V(index, _item_templates.size(), Ref<ItemTemplate>(NULL));
|
||||||
|
|
||||||
return _item_templates.get(index);
|
return _item_templates.get(index);
|
||||||
}
|
}
|
||||||
@ -193,12 +195,83 @@ int DataManager::get_item_template_count() {
|
|||||||
return _item_templates.size();
|
return _item_templates.size();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
String DataManager::get_mob_data_folder() {
|
||||||
|
return _mob_data_folder;
|
||||||
|
}
|
||||||
|
void DataManager::set_mob_data_folder(String folder) {
|
||||||
|
_mob_data_folder = folder;
|
||||||
|
}
|
||||||
|
Vector<Ref<MobData> > *DataManager::get_mob_datas() {
|
||||||
|
return &_mob_datas;
|
||||||
|
}
|
||||||
|
|
||||||
|
void DataManager::add_mob_data(Ref<MobData> 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));
|
||||||
|
|
||||||
|
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));
|
||||||
|
|
||||||
|
return _mob_datas.get(index);
|
||||||
|
}
|
||||||
|
|
||||||
|
int DataManager::get_mob_data_count() {
|
||||||
|
return _mob_datas.size();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
String DataManager::get_player_character_data_folder() {
|
||||||
|
return _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() {
|
||||||
|
return &_player_character_datas;
|
||||||
|
}
|
||||||
|
|
||||||
|
void DataManager::add_player_character_data(Ref<PlayerCharacterData> 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));
|
||||||
|
|
||||||
|
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));
|
||||||
|
|
||||||
|
return _player_character_datas.get(index);
|
||||||
|
}
|
||||||
|
|
||||||
|
int DataManager::get_player_character_data_count() {
|
||||||
|
return _player_character_datas.size();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
void DataManager::load_all() {
|
void DataManager::load_all() {
|
||||||
load_spells();
|
load_spells();
|
||||||
load_auras();
|
load_auras();
|
||||||
load_characters();
|
load_characters();
|
||||||
load_craft_datas();
|
load_craft_datas();
|
||||||
load_item_templates();
|
load_item_templates();
|
||||||
|
load_mob_datas();
|
||||||
|
load_player_character_datas();
|
||||||
}
|
}
|
||||||
|
|
||||||
void DataManager::load_spells() {
|
void DataManager::load_spells() {
|
||||||
@ -396,6 +469,84 @@ void DataManager::load_item_templates() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void DataManager::load_mob_datas() {
|
||||||
|
_Directory dir;
|
||||||
|
|
||||||
|
ERR_FAIL_COND(_mob_data_folder.ends_with("/"));
|
||||||
|
|
||||||
|
if (dir.open(_mob_data_folder) == OK) {
|
||||||
|
|
||||||
|
dir.list_dir_begin();
|
||||||
|
|
||||||
|
String filename = dir.get_next();
|
||||||
|
|
||||||
|
while (filename != "") {
|
||||||
|
if (!dir.current_is_dir()) {
|
||||||
|
String path = _mob_data_folder + "/" + filename;
|
||||||
|
|
||||||
|
_ResourceLoader *rl = _ResourceLoader::get_singleton();
|
||||||
|
|
||||||
|
Ref<ResourceInteractiveLoader> resl = rl->load_interactive(path, "MobData");
|
||||||
|
|
||||||
|
resl->wait();
|
||||||
|
|
||||||
|
Ref<Resource> s = resl->get_resource();
|
||||||
|
|
||||||
|
ERR_CONTINUE(!s.is_valid());
|
||||||
|
|
||||||
|
Ref<MobData> mob_data = s;
|
||||||
|
|
||||||
|
ERR_CONTINUE(!mob_data.is_valid());
|
||||||
|
|
||||||
|
add_mob_data(mob_data);
|
||||||
|
}
|
||||||
|
|
||||||
|
filename = dir.get_next();
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
print_error("An error occurred when trying to access the path.");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void DataManager::load_player_character_datas() {
|
||||||
|
_Directory dir;
|
||||||
|
|
||||||
|
ERR_FAIL_COND(_player_character_data_folder.ends_with("/"));
|
||||||
|
|
||||||
|
if (dir.open(_player_character_data_folder) == OK) {
|
||||||
|
|
||||||
|
dir.list_dir_begin();
|
||||||
|
|
||||||
|
String filename = dir.get_next();
|
||||||
|
|
||||||
|
while (filename != "") {
|
||||||
|
if (!dir.current_is_dir()) {
|
||||||
|
String path = _player_character_data_folder + "/" + filename;
|
||||||
|
|
||||||
|
_ResourceLoader *rl = _ResourceLoader::get_singleton();
|
||||||
|
|
||||||
|
Ref<ResourceInteractiveLoader> resl = rl->load_interactive(path, "PlayerCharacterData");
|
||||||
|
|
||||||
|
resl->wait();
|
||||||
|
|
||||||
|
Ref<Resource> s = resl->get_resource();
|
||||||
|
|
||||||
|
ERR_CONTINUE(!s.is_valid());
|
||||||
|
|
||||||
|
Ref<PlayerCharacterData> pcd = s;
|
||||||
|
|
||||||
|
ERR_CONTINUE(!pcd.is_valid());
|
||||||
|
|
||||||
|
add_player_character_data(pcd);
|
||||||
|
}
|
||||||
|
|
||||||
|
filename = dir.get_next();
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
print_error("An error occurred when trying to access the path.");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void DataManager::list_characters() {
|
void DataManager::list_characters() {
|
||||||
for (int i = 0; i < _character_classes.size(); ++i) {
|
for (int i = 0; i < _character_classes.size(); ++i) {
|
||||||
print_error(itos(i) + ": " + _character_classes.get(i)->get_character_class_name());
|
print_error(itos(i) + ": " + _character_classes.get(i)->get_character_class_name());
|
||||||
@ -426,16 +577,23 @@ void DataManager::list_item_templates() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void DataManager::list_mob_datas() {
|
||||||
|
for (int i = 0; i < _mob_datas.size(); ++i) {
|
||||||
|
print_error(itos(i) + ": " + _mob_datas.get(i)->get_name());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void DataManager::list_player_character_datas() {
|
||||||
|
for (int i = 0; i < _player_character_datas.size(); ++i) {
|
||||||
|
print_error(itos(i) + ": " + _player_character_datas.get(i)->get_name());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void DataManager::_bind_methods() {
|
void DataManager::_bind_methods() {
|
||||||
ClassDB::bind_method(D_METHOD("get_automatic_load"), &DataManager::get_automatic_load);
|
ClassDB::bind_method(D_METHOD("get_automatic_load"), &DataManager::get_automatic_load);
|
||||||
ClassDB::bind_method(D_METHOD("set_automatic_load", "load"), &DataManager::set_automatic_load);
|
ClassDB::bind_method(D_METHOD("set_automatic_load", "load"), &DataManager::set_automatic_load);
|
||||||
ADD_PROPERTY(PropertyInfo(Variant::BOOL, "automatic_load"), "set_automatic_load", "get_automatic_load");
|
ADD_PROPERTY(PropertyInfo(Variant::BOOL, "automatic_load"), "set_automatic_load", "get_automatic_load");
|
||||||
|
|
||||||
ClassDB::bind_method(D_METHOD("load_all"), &DataManager::load_all);
|
|
||||||
ClassDB::bind_method(D_METHOD("load_spells"), &DataManager::load_spells);
|
|
||||||
ClassDB::bind_method(D_METHOD("load_characters"), &DataManager::load_characters);
|
|
||||||
ClassDB::bind_method(D_METHOD("load_craft_datas"), &DataManager::load_craft_datas);
|
|
||||||
|
|
||||||
//CharacterClass
|
//CharacterClass
|
||||||
ClassDB::bind_method(D_METHOD("get_character_classes_folder"), &DataManager::get_character_classes_folder);
|
ClassDB::bind_method(D_METHOD("get_character_classes_folder"), &DataManager::get_character_classes_folder);
|
||||||
ClassDB::bind_method(D_METHOD("set_character_classes_folder", "folder"), &DataManager::set_character_classes_folder);
|
ClassDB::bind_method(D_METHOD("set_character_classes_folder", "folder"), &DataManager::set_character_classes_folder);
|
||||||
@ -486,12 +644,44 @@ void DataManager::_bind_methods() {
|
|||||||
ClassDB::bind_method(D_METHOD("get_item_template_index", "index"), &DataManager::get_item_template_index);
|
ClassDB::bind_method(D_METHOD("get_item_template_index", "index"), &DataManager::get_item_template_index);
|
||||||
ClassDB::bind_method(D_METHOD("get_item_template_count"), &DataManager::get_item_template_count);
|
ClassDB::bind_method(D_METHOD("get_item_template_count"), &DataManager::get_item_template_count);
|
||||||
|
|
||||||
|
//Mob Data
|
||||||
|
ClassDB::bind_method(D_METHOD("get_mob_data_folder"), &DataManager::get_mob_data_folder);
|
||||||
|
ClassDB::bind_method(D_METHOD("set_mob_data_folder", "folder"), &DataManager::set_mob_data_folder);
|
||||||
|
ADD_PROPERTY(PropertyInfo(Variant::STRING, "mob_data_folder"), "set_mob_data_folder", "get_mob_data_folder");
|
||||||
|
|
||||||
|
ClassDB::bind_method(D_METHOD("add_mob_data", "mob_data"), &DataManager::add_mob_data);
|
||||||
|
ClassDB::bind_method(D_METHOD("get_mob_data", "mob_data_id"), &DataManager::get_mob_data);
|
||||||
|
ClassDB::bind_method(D_METHOD("get_mob_data_index", "index"), &DataManager::get_mob_data_index);
|
||||||
|
ClassDB::bind_method(D_METHOD("get_mob_data_count"), &DataManager::get_mob_data_count);
|
||||||
|
|
||||||
|
//Player Character Data
|
||||||
|
ClassDB::bind_method(D_METHOD("get_player_character_data_folder"), &DataManager::get_player_character_data_folder);
|
||||||
|
ClassDB::bind_method(D_METHOD("set_player_character_data_folder", "folder"), &DataManager::set_player_character_data_folder);
|
||||||
|
ADD_PROPERTY(PropertyInfo(Variant::STRING, "player_character_data_folder"), "set_player_character_data_folder", "get_player_character_data_folder");
|
||||||
|
|
||||||
|
ClassDB::bind_method(D_METHOD("add_player_character_data", "pcd"), &DataManager::add_player_character_data);
|
||||||
|
ClassDB::bind_method(D_METHOD("get_player_character_data", "pcd_id"), &DataManager::get_player_character_data);
|
||||||
|
ClassDB::bind_method(D_METHOD("get_player_character_data_index", "index"), &DataManager::get_player_character_data_index);
|
||||||
|
ClassDB::bind_method(D_METHOD("get_player_character_data_count"), &DataManager::get_player_character_data_count);
|
||||||
|
|
||||||
|
//load
|
||||||
|
ClassDB::bind_method(D_METHOD("load_all"), &DataManager::load_all);
|
||||||
|
ClassDB::bind_method(D_METHOD("load_spells"), &DataManager::load_spells);
|
||||||
|
ClassDB::bind_method(D_METHOD("load_auras"), &DataManager::load_auras);
|
||||||
|
ClassDB::bind_method(D_METHOD("load_characters"), &DataManager::load_characters);
|
||||||
|
ClassDB::bind_method(D_METHOD("load_craft_datas"), &DataManager::load_craft_datas);
|
||||||
|
ClassDB::bind_method(D_METHOD("load_item_templates"), &DataManager::load_item_templates);
|
||||||
|
ClassDB::bind_method(D_METHOD("load_mob_datas"), &DataManager::load_mob_datas);
|
||||||
|
ClassDB::bind_method(D_METHOD("load_player_character_datas"), &DataManager::load_player_character_datas);
|
||||||
|
|
||||||
//tests
|
//tests
|
||||||
|
ClassDB::bind_method(D_METHOD("list_characters"), &DataManager::list_characters);
|
||||||
ClassDB::bind_method(D_METHOD("list_spells"), &DataManager::list_spells);
|
ClassDB::bind_method(D_METHOD("list_spells"), &DataManager::list_spells);
|
||||||
ClassDB::bind_method(D_METHOD("list_characters"), &DataManager::list_characters);
|
|
||||||
ClassDB::bind_method(D_METHOD("list_auras"), &DataManager::list_auras);
|
ClassDB::bind_method(D_METHOD("list_auras"), &DataManager::list_auras);
|
||||||
ClassDB::bind_method(D_METHOD("list_craft_data"), &DataManager::list_craft_data);
|
ClassDB::bind_method(D_METHOD("list_craft_data"), &DataManager::list_craft_data);
|
||||||
ClassDB::bind_method(D_METHOD("list_item_templates"), &DataManager::list_item_templates);
|
ClassDB::bind_method(D_METHOD("list_item_templates"), &DataManager::list_item_templates);
|
||||||
|
ClassDB::bind_method(D_METHOD("list_mob_datas"), &DataManager::list_mob_datas);
|
||||||
|
ClassDB::bind_method(D_METHOD("list_player_character_datas"), &DataManager::list_player_character_datas);
|
||||||
}
|
}
|
||||||
|
|
||||||
DataManager::DataManager() {
|
DataManager::DataManager() {
|
||||||
@ -505,10 +695,22 @@ DataManager::~DataManager() {
|
|||||||
|
|
||||||
_character_classes.clear();
|
_character_classes.clear();
|
||||||
_character_class_map.clear();
|
_character_class_map.clear();
|
||||||
|
|
||||||
_spells.clear();
|
_spells.clear();
|
||||||
_spell_map.clear();
|
_spell_map.clear();
|
||||||
|
|
||||||
_auras.clear();
|
_auras.clear();
|
||||||
_aura_map.clear();
|
_aura_map.clear();
|
||||||
|
|
||||||
_craft_datas.clear();
|
_craft_datas.clear();
|
||||||
_craft_data_map.clear();
|
_craft_data_map.clear();
|
||||||
|
|
||||||
|
_item_templates.clear();
|
||||||
|
_item_template_map.clear();
|
||||||
|
|
||||||
|
_mob_datas.clear();
|
||||||
|
_mob_data_map.clear();
|
||||||
|
|
||||||
|
_player_character_datas.clear();
|
||||||
|
_player_character_data_map.clear();
|
||||||
}
|
}
|
||||||
|
@ -18,6 +18,8 @@ class Spell;
|
|||||||
class CharacterClass;
|
class CharacterClass;
|
||||||
class CraftDataAttribute;
|
class CraftDataAttribute;
|
||||||
class ItemTemplate;
|
class ItemTemplate;
|
||||||
|
class MobData;
|
||||||
|
class PlayerCharacterData;
|
||||||
|
|
||||||
class DataManager : public Node {
|
class DataManager : public Node {
|
||||||
GDCLASS(DataManager, Node);
|
GDCLASS(DataManager, Node);
|
||||||
@ -65,18 +67,38 @@ public:
|
|||||||
Ref<ItemTemplate> get_item_template_index(int index);
|
Ref<ItemTemplate> get_item_template_index(int index);
|
||||||
int get_item_template_count();
|
int get_item_template_count();
|
||||||
|
|
||||||
|
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);
|
||||||
|
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);
|
||||||
|
int get_player_character_data_count();
|
||||||
|
|
||||||
void load_all();
|
void load_all();
|
||||||
void load_spells();
|
void load_spells();
|
||||||
void load_auras();
|
void load_auras();
|
||||||
void load_characters();
|
void load_characters();
|
||||||
void load_craft_datas();
|
void load_craft_datas();
|
||||||
void load_item_templates();
|
void load_item_templates();
|
||||||
|
void load_mob_datas();
|
||||||
|
void load_player_character_datas();
|
||||||
|
|
||||||
void list_characters();
|
void list_characters();
|
||||||
void list_spells();
|
void list_spells();
|
||||||
void list_auras();
|
void list_auras();
|
||||||
void list_craft_data();
|
void list_craft_data();
|
||||||
void list_item_templates();
|
void list_item_templates();
|
||||||
|
void list_mob_datas();
|
||||||
|
void list_player_character_datas();
|
||||||
|
|
||||||
bool get_automatic_load() { return _automatic_load; }
|
bool get_automatic_load() { return _automatic_load; }
|
||||||
void set_automatic_load(bool load) { _automatic_load = load; }
|
void set_automatic_load(bool load) { _automatic_load = load; }
|
||||||
@ -109,6 +131,14 @@ private:
|
|||||||
Vector<Ref<ItemTemplate> > _item_templates;
|
Vector<Ref<ItemTemplate> > _item_templates;
|
||||||
HashMap<int, Ref<ItemTemplate> > _item_template_map;
|
HashMap<int, Ref<ItemTemplate> > _item_template_map;
|
||||||
|
|
||||||
|
String _mob_data_folder;
|
||||||
|
Vector<Ref<MobData> > _mob_datas;
|
||||||
|
HashMap<int, Ref<MobData> > _mob_data_map;
|
||||||
|
|
||||||
|
String _player_character_data_folder;
|
||||||
|
Vector<Ref<PlayerCharacterData> > _player_character_datas;
|
||||||
|
HashMap<int, Ref<PlayerCharacterData> > _player_character_data_map;
|
||||||
|
|
||||||
static DataManager *instance;
|
static DataManager *instance;
|
||||||
|
|
||||||
bool _automatic_load;
|
bool _automatic_load;
|
||||||
|
@ -1 +1,65 @@
|
|||||||
#include "mob_data.h"
|
#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<CharacterClass> MobData::get_character_class() const {
|
||||||
|
return _character_class;
|
||||||
|
}
|
||||||
|
void MobData::set_character_class(const Ref<CharacterClass> character_class) {
|
||||||
|
_character_class = character_class;
|
||||||
|
}
|
||||||
|
|
||||||
|
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();
|
||||||
|
_character_class.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_character_class"), &MobData::get_character_class);
|
||||||
|
ClassDB::bind_method(D_METHOD("set_character_class", "value"), &MobData::set_character_class);
|
||||||
|
ADD_PROPERTY(PropertyInfo(Variant::OBJECT, "character_class", PROPERTY_HINT_RESOURCE_TYPE, "CharacterClass"), "set_character_class", "get_character_class");
|
||||||
|
|
||||||
|
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");
|
||||||
|
}
|
||||||
|
@ -1,7 +1,45 @@
|
|||||||
|
#ifndef MOB_DATA_H
|
||||||
|
#define MOB_DATA_H
|
||||||
|
|
||||||
|
#include "core/resource.h"
|
||||||
|
#include "core/ustring.h"
|
||||||
|
|
||||||
|
#include "../data/character_class.h"
|
||||||
|
#include "../loot/loot_data_base.h"
|
||||||
|
|
||||||
//LootDataBase
|
|
||||||
//CharacterClass
|
|
||||||
//id
|
|
||||||
//name generator, or name -> probably an overrideable get_name
|
|
||||||
//Skeleton -> basic gear
|
|
||||||
//Add it to the data manager too.
|
//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<CharacterClass> get_character_class() const;
|
||||||
|
void set_character_class(const Ref<CharacterClass> character_class);
|
||||||
|
|
||||||
|
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<CharacterClass> _character_class;
|
||||||
|
String _static_player_name;
|
||||||
|
//Skeleton -> basic gear
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
#endif
|
||||||
|
@ -1,8 +0,0 @@
|
|||||||
|
|
||||||
//same as mob data
|
|
||||||
//CharacterClass
|
|
||||||
//id
|
|
||||||
//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.
|
|
54
data/player_character_data.cpp
Normal file
54
data/player_character_data.cpp
Normal file
@ -0,0 +1,54 @@
|
|||||||
|
#include "player_character_data.h"
|
||||||
|
|
||||||
|
|
||||||
|
int PlayerCharacterData::get_id() const {
|
||||||
|
return _id;
|
||||||
|
}
|
||||||
|
void PlayerCharacterData::set_id(const int id) {
|
||||||
|
_id = id;
|
||||||
|
}
|
||||||
|
|
||||||
|
Ref<CharacterClass> PlayerCharacterData::get_character_class() const {
|
||||||
|
return _character_class;
|
||||||
|
}
|
||||||
|
void PlayerCharacterData::set_character_class(const Ref<CharacterClass> character_class) {
|
||||||
|
_character_class = character_class;
|
||||||
|
}
|
||||||
|
|
||||||
|
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() {
|
||||||
|
_character_class.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_character_class"), &PlayerCharacterData::get_character_class);
|
||||||
|
ClassDB::bind_method(D_METHOD("set_character_class", "value"), &PlayerCharacterData::set_character_class);
|
||||||
|
ADD_PROPERTY(PropertyInfo(Variant::OBJECT, "character_class", PROPERTY_HINT_RESOURCE_TYPE, "CharacterClass"), "set_character_class", "get_character_class");
|
||||||
|
|
||||||
|
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");
|
||||||
|
}
|
45
data/player_character_data.h
Normal file
45
data/player_character_data.h
Normal file
@ -0,0 +1,45 @@
|
|||||||
|
#ifndef PLAYER_CHARACTER_DATA_H
|
||||||
|
#define PLAYER_CHARACTER_DATA_H
|
||||||
|
|
||||||
|
#include "core/resource.h"
|
||||||
|
#include "core/ustring.h"
|
||||||
|
|
||||||
|
#include "../data/character_class.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);
|
||||||
|
|
||||||
|
public:
|
||||||
|
int get_id() const;
|
||||||
|
void set_id(const int id);
|
||||||
|
|
||||||
|
Ref<CharacterClass> get_character_class() const;
|
||||||
|
void set_character_class(const Ref<CharacterClass> character_class);
|
||||||
|
|
||||||
|
String get_player_name();
|
||||||
|
|
||||||
|
String get_static_player_name() const;
|
||||||
|
void set_static_player_name(const String name);
|
||||||
|
|
||||||
|
PlayerCharacterData();
|
||||||
|
~PlayerCharacterData();
|
||||||
|
|
||||||
|
protected:
|
||||||
|
static void _bind_methods();
|
||||||
|
|
||||||
|
private:
|
||||||
|
int _id;
|
||||||
|
Ref<CharacterClass> _character_class;
|
||||||
|
String _static_player_name;
|
||||||
|
//Skeleton -> basic gear
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
#endif
|
@ -65,6 +65,9 @@
|
|||||||
#include "loot/loot_data_item.h"
|
#include "loot/loot_data_item.h"
|
||||||
#include "loot/loot_data_container.h"
|
#include "loot/loot_data_container.h"
|
||||||
|
|
||||||
|
#include "data/mob_data.h"
|
||||||
|
#include "data/player_character_data.h"
|
||||||
|
|
||||||
#ifdef TOOLS_ENABLED
|
#ifdef TOOLS_ENABLED
|
||||||
#include "editor/editor_plugin.h"
|
#include "editor/editor_plugin.h"
|
||||||
|
|
||||||
@ -148,6 +151,9 @@ void register_entity_spell_system_types() {
|
|||||||
ClassDB::register_class<LootDataItem>();
|
ClassDB::register_class<LootDataItem>();
|
||||||
ClassDB::register_class<LootDataContainter>();
|
ClassDB::register_class<LootDataContainter>();
|
||||||
|
|
||||||
|
ClassDB::register_class<MobData>();
|
||||||
|
ClassDB::register_class<PlayerCharacterData>();
|
||||||
|
|
||||||
//meshes
|
//meshes
|
||||||
ClassDB::register_class<MeshDataResource>();
|
ClassDB::register_class<MeshDataResource>();
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user