about summary refs log tree commit diff stats
path: root/game_data.h
diff options
context:
space:
mode:
Diffstat (limited to 'game_data.h')
-rw-r--r--game_data.h135
1 files changed, 0 insertions, 135 deletions
diff --git a/game_data.h b/game_data.h deleted file mode 100644 index 0cc7a7b..0000000 --- a/game_data.h +++ /dev/null
@@ -1,135 +0,0 @@
1#ifndef GAME_DATA_H_9C42AC51
2#define GAME_DATA_H_9C42AC51
3
4#include <map>
5#include <optional>
6#include <string>
7#include <vector>
8
9enum class LingoColor {
10 kNone,
11 kBlack,
12 kRed,
13 kBlue,
14 kYellow,
15 kGreen,
16 kOrange,
17 kPurple,
18 kBrown,
19 kGray
20};
21
22struct Panel {
23 int id;
24 int room;
25 std::string name;
26 std::vector<LingoColor> colors;
27 std::vector<int> required_rooms;
28 std::vector<int> required_doors;
29 bool check = false;
30 bool exclude_reduce = false;
31 bool achievement = false;
32};
33
34struct ProgressiveRequirement {
35 std::string item_name;
36 int quantity = 0;
37};
38
39struct Door {
40 int room;
41 std::string name;
42 std::string location_name;
43 std::string item_name;
44 std::string group_name;
45 bool skip_location = false;
46 bool skip_item = false;
47 std::vector<int> panels;
48 bool exclude_reduce = true;
49 std::vector<ProgressiveRequirement> progressives;
50};
51
52struct Exit {
53 int destination_room;
54 std::optional<int> door;
55 bool painting = false;
56};
57
58struct PaintingExit {
59 std::string id;
60 std::optional<int> door;
61};
62
63struct Room {
64 std::string name;
65 std::vector<Exit> exits;
66 std::vector<PaintingExit> paintings;
67};
68
69struct Location {
70 std::string name;
71 std::string ap_location_name;
72 int room;
73 std::vector<int> panels;
74};
75
76struct MapArea {
77 int id;
78 std::string name;
79 std::vector<Location> locations;
80 int map_x;
81 int map_y;
82};
83
84class GameData {
85 public:
86 GameData();
87
88 const std::vector<MapArea>& GetMapAreas() const { return map_areas_; }
89
90 const MapArea& GetMapArea(int id) const { return map_areas_.at(id); }
91
92 int GetRoomByName(const std::string& name) const {
93 return room_by_id_.at(name);
94 }
95
96 const Room& GetRoom(int room_id) const { return rooms_.at(room_id); }
97
98 const std::vector<Door>& GetDoors() const { return doors_; }
99
100 const Door& GetDoor(int door_id) const { return doors_.at(door_id); }
101
102 const Panel& GetPanel(int panel_id) const { return panels_.at(panel_id); }
103
104 int GetRoomForPainting(const std::string& painting_id) const {
105 return room_by_painting_.at(painting_id);
106 }
107
108 const std::vector<int>& GetAchievementPanels() const {
109 return achievement_panels_;
110 }
111
112 private:
113 int AddOrGetRoom(std::string room);
114 int AddOrGetDoor(std::string room, std::string door);
115 int AddOrGetPanel(std::string room, std::string panel);
116 int AddOrGetArea(std::string area);
117
118 std::vector<Room> rooms_;
119 std::vector<Door> doors_;
120 std::vector<Panel> panels_;
121 std::vector<MapArea> map_areas_;
122
123 std::map<std::string, int> room_by_id_;
124 std::map<std::string, int> door_by_id_;
125 std::map<std::string, int> panel_by_id_;
126 std::map<std::string, int> area_by_id_;
127
128 std::map<std::string, int> room_by_painting_;
129
130 std::vector<int> achievement_panels_;
131};
132
133const GameData& GetGameData();
134
135#endif /* end of include guard: GAME_DATA_H_9C42AC51 */