#ifndef TOOLS_UTIL_IDENTIFIERS_H_ #define TOOLS_UTIL_IDENTIFIERS_H_ #include #include #include #include "proto/human.pb.h" namespace com::fourisland::lingo2_archipelago { class RoomIdentifierLess { public: bool operator()(const RoomIdentifier& lhs, const RoomIdentifier& rhs) const { return std::tie(lhs.map(), lhs.name()) < std::tie(rhs.map(), rhs.name()); } }; class DoorIdentifierLess { public: bool operator()(const DoorIdentifier& lhs, const DoorIdentifier& rhs) const { return std::tie(lhs.map(), lhs.name()) < std::tie(rhs.map(), rhs.name()); } }; class PortIdentifierLess { public: bool operator()(const PortIdentifier& lhs, const PortIdentifier& rhs) const { return std::tie(lhs.map(), lhs.room(), lhs.name()) < std::tie(rhs.map(), rhs.room(), rhs.name()); } }; class PaintingIdentifierLess { public: bool operator()(const PaintingIdentifier& lhs, const PaintingIdentifier& rhs) const { return std::tie(lhs.map(), lhs.room(), lhs.name()) < std::tie(rhs.map(), rhs.room(), rhs.name()); } }; class PanelIdentifierLess { public: bool operator()(const PanelIdentifier& lhs, const PanelIdentifier& rhs) const { return std::tie(lhs.map(), lhs.room(), lhs.name(), lhs.answer()) < std::tie(rhs.map(), rhs.room(), rhs.name(), rhs.answer()); } }; class KeyholderIdentifierLess { public: bool operator()(const KeyholderIdentifier& lhs, const KeyholderIdentifier& rhs) const { return std::tie(lhs.map(), lhs.room(), lhs.name(), lhs.key()) < std::tie(rhs.map(), rhs.room(), rhs.name(), rhs.key()); } }; std::optional GetCompleteRoomIdentifier( RoomIdentifier identifier, std::optional map_name); std::optional GetCompleteDoorIdentifier( DoorIdentifier identifier, std::optional map_name); std::optional GetCompletePortIdentifier( PortIdentifier identifier, std::optional map_name, std::optional room_name); std::optional GetCompletePaintingIdentifier( PaintingIdentifier identifier, std::optional map_name, std::optional room_name); std::optional GetCompletePanelIdentifierWithoutAnswer( PanelIdentifier identifier, std::optional map_name, std::optional room_name); std::optional GetCompleteKeyholderIdentifierWithoutKey( KeyholderIdentifier identifier, const std::string& map_name, std::optional room_name); } // namespace com::fourisland::lingo2_archipelago #endif /* TOOLS_UTIL_IDENTIFIERS_H_ */ nge
blob: bc1606d85a544aca815e192f13a8a34a68f2199b (plain) (blame)
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
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
name: "Main Area"
keyholders {
  name: "P"
  path: "Components/KeyHolders/keyHolderP"
  key: "p"
}
paintings {
  name: "OWL"
  path: "Components/Paintings/Starting/owl"
  orientation: "east"
}
paintings {
  name: "EXTRAVAGANT"
  path: "Components/Paintings/Starting/unless"
  orientation: "west"
}
paintings {
  name: "MAZE"
  path: "Components/Paintings/Starting/spiral"
  orientation: "north"
}
paintings {
  name: "DARKROOM"
  path: "Components/Paintings/darkroom"
  orientation: "west"
  move: true
  enter_only: true
  required_door { name: "Darkroom Painting" }
}
paintings {
  name: "BUTTERFLY"
  path: "Components/Paintings/butterfly"
  orientation: "west"
  move: true
  enter_only: true
  required_door { name: "Butterfly Painting" }
}
paintings {
  name: "BETWEEN"
  path: "Components/Paintings/between"
  orientation: "east"
  move: true
  enter_only: true
  required_door { name: "Between Painting" }
}
paintings {
  name: "ENTRY"
  path: "Components/Paintings/eyes"
  orientation: "east"
  move: true
  enter_only: true
  required_door { name: "Entry Painting" }
}
paintings {
  name: "WISE"
  path: "Components/Paintings/triangle"
  orientation: "west"
  move: true
  enter_only: true
  required_door { name: "Wise Painting" }
}
paintings {
  name: "TREE"
  path: "Components/Paintings/Clue Maps/tree"
  orientation: "north"
  move: true
  enter_only: true
  required_door { name: "Tree Painting" }
}
paintings {
  name: "UNYIELDING"
  path: "Components/Paintings/Clue Maps/unyielding"
  orientation: "north"
  move: true
  enter_only: true
  required_door { name: "Unyielding Painting" }
}
paintings {
  name: "PARTHENON"
  path: "Components/Paintings/Endings/parthenon"
  orientation: "east"
}
paintings {
  name: "GRAVEYARD"
  path: "Components/Paintings/Endings/grave"
  orientation: "south"
  move: true
  enter_only: true
  required_door { name: "Graveyard Painting" }
}
paintings {
  name: "CC"
  path: "Components/Paintings/Endings/desert"
  orientation: "south"
  move: true
  enter_only: true
  required_door { name: "Control Center Painting" }
}
paintings {
  name: "TOWER"
  path: "Components/Paintings/Endings/red"
  orientation: "north"
  move: true
  enter_only: true
  required_door { name: "Tower Painting" }
}
paintings {
  name: "WONDROUS"
  path: "Components/Paintings/Endings/window"
  orientation: "north"
  move: true
  enter_only: true
  required_door { name: "Wondrous Painting" }
}
paintings {
  name: "RAINBOW"
  path: "Components/Paintings/Endings/rainbow"
  orientation: "east"
  move: true
  enter_only: true
  required_door { name: "Rainbow Painting" }
}
paintings {
  name: "WORDS"
  path: "Components/Paintings/Endings/words"
  orientation: "west"
  move: true
  enter_only: true
  required_door { name: "Words Painting" }
}
paintings {
  name: "COLORFUL"
  path: "Components/Paintings/Endings/colorful"
  orientation: "north"
  move: true
  enter_only: true
  required_door { name: "Colorful Painting" }
}
paintings {
  name: "CASTLE"
  path: "Components/Paintings/Endings/castle"
  orientation: "south"
  move: true
  enter_only: true
  required_door { name: "Castle Painting" }
}
paintings {
  name: "SUNTEMPLE"
  path: "Components/Paintings/Endings/temple"
  orientation: "east"
  move: true
  enter_only: true
  required_door { name: "Sun Temple Painting" }
}
paintings {
  name: "ANCIENT"
  path: "Components/Paintings/Endings/cubes"
  orientation: "west"
  move: true
  enter_only: true
  required_door { name: "Ancient Painting" }
}
ports {
  name: "ENTRY"
  path: "Components/Warps/worldport"
  orientation: "west"
}