1 #ifndef CORE_FILE_MOVEDB_HPP
2 #define CORE_FILE_MOVEDB_HPP
4 #include <BLIB/Resources.hpp>
5 #include <BLIB/Serialization.hpp>
6 #include <BLIB/Util/NonCopyable.hpp>
22 struct MoveDB :
private bl::util::NonCopyable {
36 bool loadDev(std::istream& input);
44 bool loadProd(bl::serial::binary::InputStream& input);
60 bool saveBundle(bl::serial::binary::OutputStream& output,
61 bl::resource::bundle::FileHandlerContext& ctx)
const;
63 std::unordered_map<pplmn::MoveId, std::string>
names;
65 std::unordered_map<pplmn::MoveId, pplmn::Type>
types;
66 std::unordered_map<pplmn::MoveId, std::int32_t>
damages;
67 std::unordered_map<pplmn::MoveId, std::int32_t>
accuracies;
68 std::unordered_map<pplmn::MoveId, std::int32_t>
priorities;
69 std::unordered_map<pplmn::MoveId, std::uint32_t>
pps;
71 std::unordered_map<pplmn::MoveId, bool>
specials;
72 std::unordered_map<pplmn::MoveId, pplmn::MoveEffect>
effects;
86 struct SerializableObject<
core::file::MoveDB> :
public SerializableObjectBase {
90 SerializableField<1, DB, std::unordered_map<Id, std::string>>
names;
91 SerializableField<2, DB, std::unordered_map<Id, std::string>>
descriptions;
92 SerializableField<4, DB, std::unordered_map<Id, core::pplmn::Type>>
types;
93 SerializableField<5, DB, std::unordered_map<Id, std::int32_t>>
damages;
94 SerializableField<6, DB, std::unordered_map<Id, std::int32_t>>
accuracies;
95 SerializableField<7, DB, std::unordered_map<Id, std::int32_t>>
priorities;
96 SerializableField<8, DB, std::unordered_map<Id, std::uint32_t>>
pps;
97 SerializableField<9, DB, std::unordered_map<Id, bool>>
contactors;
98 SerializableField<10, DB, std::unordered_map<Id, bool>>
specials;
99 SerializableField<11, DB, std::unordered_map<Id, core::pplmn::MoveEffect>>
effects;
100 SerializableField<12, DB, std::unordered_map<Id, std::int32_t>>
effectChances;
105 : SerializableObjectBase(
"MoveDB")
106 , names(
"names", *this, &
DB::names, SerializableFieldBase::Required{})
107 , descriptions(
"descriptions", *this, &
DB::descriptions, SerializableFieldBase::Required{})
108 , types(
"types", *this, &
DB::types, SerializableFieldBase::Required{})
109 , damages(
"damages", *this, &
DB::damages, SerializableFieldBase::Required{})
110 , accuracies(
"accs", *this, &
DB::accuracies, SerializableFieldBase::Required{})
111 , priorities(
"prioties", *this, &
DB::priorities, SerializableFieldBase::Required{})
112 , pps(
"pps", *this, &
DB::pps, SerializableFieldBase::Required{})
113 , contactors(
"contactors", *this, &
DB::contactors, SerializableFieldBase::Required{})
114 , specials(
"specials", *this, &
DB::specials, SerializableFieldBase::Required{})
115 , effects(
"effects", *this, &
DB::effects, SerializableFieldBase::Required{})
116 , effectChances(
"effectChances", *this, &
DB::effectChances, SerializableFieldBase::Required{})
117 , effectIntensities(
"effectIntensities", *this, &
DB::effectIntensities,
118 SerializableFieldBase::Required{})
119 , effectSelves(
"effectSelves", *this, &
DB::effectSelves, SerializableFieldBase::Required{}) {}
Core classes and functionality for both the editor and game.
Stores the metadata of all peoplemon moves.
std::unordered_map< pplmn::MoveId, bool > specials
std::unordered_map< pplmn::MoveId, bool > contactors
bool loadProd(bl::serial::binary::InputStream &input)
Loads the database from its json format.
std::unordered_map< pplmn::MoveId, std::int32_t > damages
std::unordered_map< pplmn::MoveId, std::uint32_t > pps
std::unordered_map< pplmn::MoveId, std::int32_t > accuracies
std::unordered_map< pplmn::MoveId, std::string > descriptions
std::unordered_map< pplmn::MoveId, std::int32_t > effectChances
std::unordered_map< pplmn::MoveId, std::int32_t > priorities
std::unordered_map< pplmn::MoveId, pplmn::MoveEffect > effects
bool load()
Loads the moves from the data file.
std::unordered_map< pplmn::MoveId, std::int32_t > effectIntensities
bool loadDev(std::istream &input)
Loads the database from its json format.
bool save() const
Saves the moves to the data file.
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::MoveId, std::string > names
std::unordered_map< pplmn::MoveId, pplmn::Type > types
std::unordered_map< pplmn::MoveId, bool > effectSelves
SerializableField< 6, DB, std::unordered_map< Id, std::int32_t > > accuracies
SerializableField< 2, DB, std::unordered_map< Id, std::string > > descriptions
SerializableField< 1, DB, std::unordered_map< Id, std::string > > names
SerializableField< 12, DB, std::unordered_map< Id, std::int32_t > > effectChances
SerializableField< 5, DB, std::unordered_map< Id, std::int32_t > > damages
SerializableField< 11, DB, std::unordered_map< Id, core::pplmn::MoveEffect > > effects
SerializableField< 8, DB, std::unordered_map< Id, std::uint32_t > > pps
SerializableField< 4, DB, std::unordered_map< Id, core::pplmn::Type > > types
SerializableField< 14, DB, std::unordered_map< Id, bool > > effectSelves
SerializableField< 7, DB, std::unordered_map< Id, std::int32_t > > priorities
SerializableField< 10, DB, std::unordered_map< Id, bool > > specials
SerializableField< 13, DB, std::unordered_map< Id, std::int32_t > > effectIntensities
SerializableField< 9, DB, std::unordered_map< Id, bool > > contactors