-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy patharchive.h
More file actions
121 lines (93 loc) · 3.01 KB
/
archive.h
File metadata and controls
121 lines (93 loc) · 3.01 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
#ifndef archive_h
#define archive_h
#include "map.h"
#include <string>
/********************************************************************/
class ArchiveConverter {
public:
static std::string version();
static bool load(GameBoard* board, const std::string& filename);
static void save(GameBoard* board, const std::string& filename);
};
class DataConverter {
public:
DataConverter() {}
virtual ~DataConverter() {}
virtual void load(const std::string& str) = 0;
virtual void save(std::ofstream& file) = 0;
};
class MapDataConverter : public DataConverter {
public:
MapDataConverter(MapData* data) : data_(data) {}
virtual ~MapDataConverter() {}
virtual void load(const std::string& str) override;
virtual void save(std::ofstream& file) override;
protected:
std::string typeTileToString(Tile::Type type) const;
Tile::Type stringTileToType(const std::string& str) const;
std::string btypeTileToString(Tile::BType type) const;
Tile::BType stringTileToBType(const std::string& str) const;
std::string ftypeTileToString(Tile::FType type) const;
Tile::FType stringTileToFType(const std::string& str) const;
private:
MapData* data_;
int x_ = 0;
int y_ = 0;
int tile_id_;
Tile::Type tile_type_ = Tile::BLOCK;
int occurrences_;
std::vector< std::pair<std::string,int> > items_;
Tile::BType tile_btype_ = Tile::NONE;
Tile::FType tile_ftype_ = Tile::METAL;
bool inTile_ = false;
};
class CharacterConverter : public DataConverter {
public:
CharacterConverter(PeopleGroup* group) : group_(group) {}
virtual ~CharacterConverter() {}
virtual void load(const std::string& str) override;
virtual void save(std::ofstream& file) override;
private:
PeopleGroup* group_;
std::string name;
Direction dir = {0,0};
Position pos = {0,0};
int activity_percentage = 0;
int image_id = 0;
bool inPeople = false;
std::vector<BasicItem> carried_items;
};
#define NameValue std::pair<std::string,std::string>
#define Node std::pair<NameValue,std::vector<Attr>>
class ObjectConverter : public DataConverter {
public:
ObjectConverter(MapData* data) : data_(data) {}
virtual ~ObjectConverter() {}
virtual void load(const std::string& str) override;
virtual void save(std::ofstream& file) override;
protected:
void save_nodes(std::ofstream& file, Object* object);
private:
MapData* data_;
std::string name;
Position pos = {0,0};
bool inObject = false;
std::vector<Node> nodes;
};
class JobsConverter : public DataConverter {
public:
JobsConverter(JobMgr* jobs_mgr) : jobs_mgr_(jobs_mgr) {}
~JobsConverter() = default;
virtual void load(const std::string& str) override;
virtual void save(std::ofstream& file) override;
private:
JobMgr* jobs_mgr_;
std::string name;
std::string type;
int build_time;
Position pos = {0,0};
int nb = 1;
bool inJob = false;
};
/********************************************************************/
#endif // archive_h