Peoplemon  0.1.0
Peoplemon 3 game source documentation
Trainer.hpp
Go to the documentation of this file.
1 #ifndef CORE_FILES_TRAINER_HPP
2 #define CORE_FILES_TRAINER_HPP
3 
4 #include <BLIB/Resources.hpp>
5 #include <BLIB/Serialization.hpp>
7 #include <Core/Items/Id.hpp>
9 
10 namespace core
11 {
12 namespace file
13 {
20 struct Trainer {
21 public:
26  Trainer();
27 
34  bool save(const std::string& file) const;
35 
43  bool saveBundle(bl::serial::binary::OutputStream& output,
44  bl::resource::bundle::FileHandlerContext& ctx) const;
45 
53  bool load(const std::string& file, bl::tmap::Direction spawnDir = bl::tmap::Direction::Down);
54 
61  bool loadDev(std::istream& input);
62 
69  bool loadProd(bl::serial::binary::InputStream& input);
70 
71  std::string name;
72  std::string animation;
73  std::string prebattleConversation;
75  std::string lostBattleLine;
76  std::uint8_t visionRange;
78  std::vector<pplmn::OwnedPeoplemon> peoplemon;
79  std::vector<item::Id> items;
80  std::uint8_t payout;
81  // TODO - determine how to store battle music/background
82 
83  std::string sourceFile;
84 };
85 
86 } // namespace file
87 } // namespace core
88 
89 namespace bl
90 {
91 namespace serial
92 {
93 template<>
94 struct SerializableObject<core::file::Trainer> : public SerializableObjectBase {
97 
98  SerializableField<1, T, std::string> name;
99  SerializableField<2, T, std::string> anim;
100  SerializableField<3, T, std::string> preBattle;
101  SerializableField<4, T, std::string> postBattle;
102  SerializableField<5, T, std::string> loseBattleLine;
103  SerializableField<6, T, std::uint8_t> range;
104  SerializableField<7, T, core::file::Behavior> behavior;
105  SerializableField<8, T, std::vector<Ppl>> peoplemon;
106  SerializableField<9, T, std::vector<core::item::Id>> items;
107  SerializableField<10, T, std::uint8_t> payout;
108 
110  : SerializableObjectBase("Trainer")
111  , name("name", *this, &T::name, SerializableFieldBase::Required{})
112  , anim("anim", *this, &T::animation, SerializableFieldBase::Required{})
113  , preBattle("preBattle", *this, &T::prebattleConversation, SerializableFieldBase::Required{})
114  , postBattle("postBattle", *this, &T::postBattleConversation, SerializableFieldBase::Required{})
115  , loseBattleLine("loseLine", *this, &T::lostBattleLine, SerializableFieldBase::Required{})
116  , range("range", *this, &T::visionRange, SerializableFieldBase::Required{})
117  , behavior("behavior", *this, &T::behavior, SerializableFieldBase::Required{})
118  , peoplemon("peoplemon", *this, &T::peoplemon, SerializableFieldBase::Required{})
119  , items("items", *this, &T::items, SerializableFieldBase::Required{})
120  , payout("payout", *this, &T::payout, SerializableFieldBase::Optional{}) {
121  payout.setDefault(40);
122  }
123 };
124 
125 } // namespace serial
126 } // namespace bl
127 
128 #endif
Core classes and functionality for both the editor and game.
Set of behaviors for NPCs and trainers.
Definition: Behavior.hpp:19
Static data for trainers in the world.
Definition: Trainer.hpp:20
std::string lostBattleLine
Definition: Trainer.hpp:75
std::vector< pplmn::OwnedPeoplemon > peoplemon
Definition: Trainer.hpp:78
std::uint8_t visionRange
Definition: Trainer.hpp:76
bool loadDev(std::istream &input)
Loads the trainer from the json stream.
Definition: Trainer.cpp:56
std::uint8_t payout
Definition: Trainer.hpp:80
std::string postBattleConversation
Definition: Trainer.hpp:74
std::string animation
Definition: Trainer.hpp:72
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.
Definition: Trainer.cpp:19
std::vector< item::Id > items
Definition: Trainer.hpp:79
bool save(const std::string &file) const
Saves the trainer data to the given file.
Definition: Trainer.cpp:14
std::string name
Definition: Trainer.hpp:71
bool loadProd(bl::serial::binary::InputStream &input)
Loads the trainer from it's binary format.
Definition: Trainer.cpp:52
bool load(const std::string &file, bl::tmap::Direction spawnDir=bl::tmap::Direction::Down)
Loads the trainer data from the given file.
Definition: Trainer.cpp:43
std::string sourceFile
Definition: Trainer.hpp:83
Behavior behavior
Definition: Trainer.hpp:77
Trainer()
Gives sane defaults.
Definition: Trainer.cpp:11
std::string prebattleConversation
Definition: Trainer.hpp:73
SerializableField< 9, T, std::vector< core::item::Id > > items
Definition: Trainer.hpp:106
SerializableField< 6, T, std::uint8_t > range
Definition: Trainer.hpp:103
SerializableField< 10, T, std::uint8_t > payout
Definition: Trainer.hpp:107
SerializableField< 1, T, std::string > name
Definition: Trainer.hpp:98
SerializableField< 3, T, std::string > preBattle
Definition: Trainer.hpp:100
SerializableField< 8, T, std::vector< Ppl > > peoplemon
Definition: Trainer.hpp:105
SerializableField< 4, T, std::string > postBattle
Definition: Trainer.hpp:101
SerializableField< 7, T, core::file::Behavior > behavior
Definition: Trainer.hpp:104
SerializableField< 2, T, std::string > anim
Definition: Trainer.hpp:99
SerializableField< 5, T, std::string > loseBattleLine
Definition: Trainer.hpp:102
Represents an instance of a peoplemon. Can be a wild peoplemon, trainer, or player peoplemon....