1 #ifndef CORE_FILES_PEOPLEMONDB_HPP
2 #define CORE_FILES_PEOPLEMONDB_HPP
4 #include <BLIB/Resources.hpp>
5 #include <BLIB/Serialization/Binary.hpp>
6 #include <BLIB/Util/NonCopyable.hpp>
7 #include <unordered_map>
8 #include <unordered_set>
45 bool loadDev(std::istream& input);
53 bool loadProd(bl::serial::binary::InputStream& input);
62 bool saveBundle(bl::serial::binary::OutputStream& output,
63 bl::resource::bundle::FileHandlerContext& ctx)
const;
65 std::unordered_map<pplmn::Id, std::string>
names;
67 std::unordered_map<pplmn::Id, pplmn::Type>
types;
68 std::unordered_map<pplmn::Id, pplmn::SpecialAbility>
abilities;
69 std::unordered_map<pplmn::Id, pplmn::Stats>
stats;
70 std::unordered_map<pplmn::Id, std::unordered_set<pplmn::MoveId>>
validMoves;
71 std::unordered_map<pplmn::Id, std::unordered_map<unsigned int, pplmn::MoveId>>
learnedMoves;
74 std::unordered_map<pplmn::Id, pplmn::Stats>
evAwards;
75 std::unordered_map<pplmn::Id, unsigned int>
xpGroups;
76 std::unordered_map<pplmn::Id, int>
xpMults;
88 struct SerializableObject<
core::file::PeoplemonDB> :
public SerializableObjectBase {
92 SerializableField<1, DB, std::unordered_map<Id, std::string>>
names;
93 SerializableField<2, DB, std::unordered_map<Id, std::string>>
descriptions;
94 SerializableField<3, DB, std::unordered_map<Id, core::pplmn::Type>>
types;
95 SerializableField<4, DB, std::unordered_map<Id, core::pplmn::SpecialAbility>>
abilities;
96 SerializableField<5, DB, std::unordered_map<Id, core::pplmn::Stats>>
stats;
97 SerializableField<6, DB, std::unordered_map<Id, std::unordered_set<core::pplmn::MoveId>>>
99 SerializableField<7,
DB,
100 std::unordered_map<Id, std::unordered_map<unsigned int, core::pplmn::MoveId>>>
102 SerializableField<8, DB, std::unordered_map<Id, unsigned int>>
evolveLevels;
103 SerializableField<9, DB, std::unordered_map<Id, Id>>
evolveIds;
104 SerializableField<10, DB, std::unordered_map<Id, core::pplmn::Stats>>
evAwards;
105 SerializableField<11, DB, std::unordered_map<Id, unsigned int>>
xpGroups;
106 SerializableField<12, DB, std::unordered_map<Id, int>>
xpMults;
107 SerializableField<13, DB, std::unordered_map<Id, int>>
catchRates;
110 : SerializableObjectBase(
"PeoplemonDB")
111 , names(
"names", *this, &
DB::names, SerializableFieldBase::Required{})
112 , descriptions(
"descs", *this, &
DB::descriptions, SerializableFieldBase::Required{})
113 , types(
"types", *this, &
DB::types, SerializableFieldBase::Required{})
114 , abilities(
"abilities", *this, &
DB::abilities, SerializableFieldBase::Required{})
115 , stats(
"stats", *this, &
DB::stats, SerializableFieldBase::Required{})
116 , validMoves(
"validMoves", *this, &
DB::validMoves, SerializableFieldBase::Required{})
117 , learnedMoves(
"learnMoves", *this, &
DB::learnedMoves, SerializableFieldBase::Required{})
118 , evolveLevels(
"evolveLevels", *this, &
DB::evolveLevels, SerializableFieldBase::Required{})
119 , evolveIds(
"evolveIds", *this, &
DB::evolveIds, SerializableFieldBase::Required{})
120 , evAwards(
"evAwards", *this, &
DB::evAwards, SerializableFieldBase::Required{})
121 , xpGroups(
"xpGroups", *this, &
DB::xpGroups, SerializableFieldBase::Required{})
122 , xpMults(
"xpMults", *this, &
DB::xpMults, SerializableFieldBase::Required{})
123 , catchRates(
"catchRates", *this, &
DB::catchRates, SerializableFieldBase::Required{}) {}
Core classes and functionality for both the editor and game.
Data structure that holds the underlaying data for all the peoplemon.
bool load()
Loads the database data from the save file.
std::unordered_map< pplmn::Id, int > catchRates
std::unordered_map< pplmn::Id, pplmn::Id > evolveIds
bool save() const
Saves the database data to the save file.
std::unordered_map< pplmn::Id, pplmn::SpecialAbility > abilities
std::unordered_map< pplmn::Id, int > xpMults
std::unordered_map< pplmn::Id, pplmn::Type > types
std::unordered_map< pplmn::Id, std::unordered_set< pplmn::MoveId > > validMoves
std::unordered_map< pplmn::Id, unsigned int > xpGroups
std::unordered_map< pplmn::Id, pplmn::Stats > stats
bool loadProd(bl::serial::binary::InputStream &input)
Loads the database from its json format.
std::unordered_map< pplmn::Id, unsigned int > evolveLevels
std::unordered_map< pplmn::Id, pplmn::Stats > evAwards
std::unordered_map< pplmn::Id, std::string > descriptions
std::unordered_map< pplmn::Id, std::unordered_map< unsigned int, pplmn::MoveId > > learnedMoves
bool saveBundle(bl::serial::binary::OutputStream &output, bl::resource::bundle::FileHandlerContext &ctx) const
Saves the data from this object to the given bundle and registers depency files if any.
std::unordered_map< pplmn::Id, std::string > names
bool loadDev(std::istream &input)
Loads the database from its json format.
SerializableField< 4, DB, std::unordered_map< Id, core::pplmn::SpecialAbility > > abilities
SerializableField< 9, DB, std::unordered_map< Id, Id > > evolveIds
SerializableField< 2, DB, std::unordered_map< Id, std::string > > descriptions
SerializableField< 1, DB, std::unordered_map< Id, std::string > > names
SerializableField< 6, DB, std::unordered_map< Id, std::unordered_set< core::pplmn::MoveId > > > validMoves
SerializableField< 8, DB, std::unordered_map< Id, unsigned int > > evolveLevels
SerializableField< 13, DB, std::unordered_map< Id, int > > catchRates
SerializableField< 5, DB, std::unordered_map< Id, core::pplmn::Stats > > stats
SerializableField< 11, DB, std::unordered_map< Id, unsigned int > > xpGroups
SerializableField< 7, DB, std::unordered_map< Id, std::unordered_map< unsigned int, core::pplmn::MoveId > > > learnedMoves
SerializableField< 12, DB, std::unordered_map< Id, int > > xpMults
SerializableField< 3, DB, std::unordered_map< Id, core::pplmn::Type > > types
SerializableField< 10, DB, std::unordered_map< Id, core::pplmn::Stats > > evAwards