#ifndef DATA_MANAGER_H #define DATA_MANAGER_H #include "core/array.h" #include "core/hash_map.h" #include "core/io/json.h" #include "core/variant.h" #include "core/vector.h" #include "core/resource.h" #include "core/ustring.h" #include "scene/main/node.h" #include "core/bind/core_bind.h" class Aura; class Spell; class CharacterClass; class CraftDataAttribute; typedef HashMap > CharacterClassHashMap; typedef HashMap > SpellHashMap; typedef HashMap > AuraHashMap; typedef HashMap > CraftDataHashMap; //typedef HashMap > SpellScriptHashMap; class DataManager : public Node { GDCLASS(DataManager, Node); public: static DataManager *get_instance(); String get_character_classes_folder() { return _character_classes_folder; } void set_character_classes_folder(String folder) { _character_classes_folder = folder; } Vector > *get_character_classes() { return _character_classes; } Ref get_character_class(int class_id); Ref get_character_class_index(int index); int get_character_class_count(); void add_character_class(Ref cls); String get_spells_folder() { return _spells_folder; } void set_spells_folder(String folder) { _spells_folder = folder; } Vector > *get_spells() { return _spells; } Ref get_spell(int spell_id); Ref get_spell_index(int index); int get_spell_count(); void add_spell(Ref spell); String get_auras_folder() { return _auras_folder; } void set_auras_folder(String folder) { _auras_folder = folder; } Vector > *get_auras() { return _auras; } Ref get_aura(int aura_id); Ref get_aura_index(int index); int get_aura_count(); void add_aura(Ref aura); String get_craft_data_folder() { return _craft_data_folder; } void set_craft_data_folder(String folder) { _craft_data_folder = folder; } Vector > *get_craft_datas() { return _craft_datas; } Ref get_craft_data(int craft_id); Ref get_craft_data_index(int index); int get_craft_data_count(); //bool is_craft_data_exists(); void add_craft_data(Ref aura); void load_all(); //void load_spell_scripts(); void load_spells(); void load_auras(); void load_characters(); void load_craft_datas(); void list_characters(); void list_spells(); void list_auras(); void list_craft_data(); bool get_automatic_load() { return _automatic_load; } void set_automatic_load(bool load) { _automatic_load = load; } DataManager(); ~DataManager(); protected: static void _bind_methods(); void _notification(int p_what); private: String _character_classes_folder; Vector > *_character_classes; CharacterClassHashMap *_character_class_map; String _spells_folder; Vector > *_spells; SpellHashMap *_spell_map; String _auras_folder; Vector > *_auras; AuraHashMap *_aura_map; String _craft_data_folder; Vector > *_craft_datas; CraftDataHashMap *_craft_data_map; /* Vector > *_spell_scripts; SpellScriptHashMap *_spell_script_map;*/ static DataManager *instance; bool _automatic_load; }; #endif