mirror of
https://github.com/Relintai/entity_spell_system.git
synced 2025-02-20 17:14:44 +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_container.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 "craft_data_attribute.h"
|
||||
#include "spell.h"
|
||||
#include "mob_data.h"
|
||||
#include "player_character_data.h"
|
||||
|
||||
DataManager *DataManager::instance;
|
||||
|
||||
@ -173,18 +175,18 @@ Vector<Ref<ItemTemplate> > *DataManager::get_item_templates() {
|
||||
void DataManager::add_item_template(Ref<ItemTemplate> cda) {
|
||||
ERR_FAIL_COND(!cda.is_valid());
|
||||
|
||||
_craft_datas.push_back(cda);
|
||||
_craft_data_map.set(cda->get_id(), cda);
|
||||
_item_templates.push_back(cda);
|
||||
_item_template_map.set(cda->get_id(), cda);
|
||||
}
|
||||
|
||||
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);
|
||||
}
|
||||
|
||||
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);
|
||||
}
|
||||
@ -193,12 +195,83 @@ int DataManager::get_item_template_count() {
|
||||
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() {
|
||||
load_spells();
|
||||
load_auras();
|
||||
load_characters();
|
||||
load_craft_datas();
|
||||
load_item_templates();
|
||||
load_mob_datas();
|
||||
load_player_character_datas();
|
||||
}
|
||||
|
||||
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() {
|
||||
for (int i = 0; i < _character_classes.size(); ++i) {
|
||||
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() {
|
||||
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);
|
||||
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
|
||||
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);
|
||||
@ -485,13 +643,45 @@ void DataManager::_bind_methods() {
|
||||
ClassDB::bind_method(D_METHOD("get_item_template", "item_template_id"), &DataManager::get_item_template);
|
||||
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);
|
||||
|
||||
//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
|
||||
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_characters"), &DataManager::list_characters);
|
||||
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_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() {
|
||||
@ -505,10 +695,22 @@ DataManager::~DataManager() {
|
||||
|
||||
_character_classes.clear();
|
||||
_character_class_map.clear();
|
||||
|
||||
_spells.clear();
|
||||
_spell_map.clear();
|
||||
|
||||
_auras.clear();
|
||||
_aura_map.clear();
|
||||
|
||||
_craft_datas.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 CraftDataAttribute;
|
||||
class ItemTemplate;
|
||||
class MobData;
|
||||
class PlayerCharacterData;
|
||||
|
||||
class DataManager : public Node {
|
||||
GDCLASS(DataManager, Node);
|
||||
@ -64,6 +66,22 @@ public:
|
||||
Ref<ItemTemplate> get_item_template(int item_id);
|
||||
Ref<ItemTemplate> get_item_template_index(int index);
|
||||
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_spells();
|
||||
@ -71,12 +89,16 @@ public:
|
||||
void load_characters();
|
||||
void load_craft_datas();
|
||||
void load_item_templates();
|
||||
|
||||
void load_mob_datas();
|
||||
void load_player_character_datas();
|
||||
|
||||
void list_characters();
|
||||
void list_spells();
|
||||
void list_auras();
|
||||
void list_craft_data();
|
||||
void list_item_templates();
|
||||
void list_mob_datas();
|
||||
void list_player_character_datas();
|
||||
|
||||
bool get_automatic_load() { return _automatic_load; }
|
||||
void set_automatic_load(bool load) { _automatic_load = load; }
|
||||
@ -108,6 +130,14 @@ private:
|
||||
String _item_template_folder;
|
||||
Vector<Ref<ItemTemplate> > _item_templates;
|
||||
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;
|
||||
|
||||
|
@ -1 +1,65 @@
|
||||
#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.
|
||||
|
||||
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_container.h"
|
||||
|
||||
#include "data/mob_data.h"
|
||||
#include "data/player_character_data.h"
|
||||
|
||||
#ifdef TOOLS_ENABLED
|
||||
#include "editor/editor_plugin.h"
|
||||
|
||||
@ -147,6 +150,9 @@ void register_entity_spell_system_types() {
|
||||
ClassDB::register_class<LootDataBase>();
|
||||
ClassDB::register_class<LootDataItem>();
|
||||
ClassDB::register_class<LootDataContainter>();
|
||||
|
||||
ClassDB::register_class<MobData>();
|
||||
ClassDB::register_class<PlayerCharacterData>();
|
||||
|
||||
//meshes
|
||||
ClassDB::register_class<MeshDataResource>();
|
||||
|
Loading…
Reference in New Issue
Block a user