diff options
| -rw-r--r-- | data/maps/daedalus/metadata.txtpb | 1 | ||||
| -rw-r--r-- | data/maps/the_gallery/metadata.txtpb | 1 | ||||
| -rw-r--r-- | data/maps/the_gallery/rooms/Daedalus Extension.txtpb | 1 | ||||
| -rw-r--r-- | data/maps/the_gold/metadata.txtpb | 1 | ||||
| -rw-r--r-- | data/maps/the_tenacious/metadata.txtpb | 1 | ||||
| -rw-r--r-- | proto/data.proto | 9 | ||||
| -rw-r--r-- | proto/human.proto | 6 | ||||
| -rw-r--r-- | tools/datapacker/main.cpp | 9 |
8 files changed, 29 insertions, 0 deletions
| diff --git a/data/maps/daedalus/metadata.txtpb b/data/maps/daedalus/metadata.txtpb index e0f5148..6ad90e1 100644 --- a/data/maps/daedalus/metadata.txtpb +++ b/data/maps/daedalus/metadata.txtpb | |||
| @@ -1,4 +1,5 @@ | |||
| 1 | display_name: "Daedalus" | 1 | display_name: "Daedalus" |
| 2 | daedalus_only_mode: DAED_ONLY_ALLOW | ||
| 2 | # These paintings can't be shuffled because they are behind panels. | 3 | # These paintings can't be shuffled because they are behind panels. |
| 3 | excluded_nodes: "Components/Paintings/Group3/mouse" | 4 | excluded_nodes: "Components/Paintings/Group3/mouse" |
| 4 | excluded_nodes: "Components/Paintings/Group3/bee" | 5 | excluded_nodes: "Components/Paintings/Group3/bee" |
| diff --git a/data/maps/the_gallery/metadata.txtpb b/data/maps/the_gallery/metadata.txtpb index 41ec36e..9d02a11 100644 --- a/data/maps/the_gallery/metadata.txtpb +++ b/data/maps/the_gallery/metadata.txtpb | |||
| @@ -1,4 +1,5 @@ | |||
| 1 | display_name: "The Gallery" | 1 | display_name: "The Gallery" |
| 2 | daedalus_only_mode: DAED_ONLY_PARTIAL | ||
| 2 | # These are the eyes in the foyer, and aren't normal paintings. | 3 | # These are the eyes in the foyer, and aren't normal paintings. |
| 3 | excluded_nodes: "Components/Paintings/Starting/eye" | 4 | excluded_nodes: "Components/Paintings/Starting/eye" |
| 4 | excluded_nodes: "Components/Paintings/Starting/eye2" | 5 | excluded_nodes: "Components/Paintings/Starting/eye2" |
| diff --git a/data/maps/the_gallery/rooms/Daedalus Extension.txtpb b/data/maps/the_gallery/rooms/Daedalus Extension.txtpb index 51d2be5..c3a72c2 100644 --- a/data/maps/the_gallery/rooms/Daedalus Extension.txtpb +++ b/data/maps/the_gallery/rooms/Daedalus Extension.txtpb | |||
| @@ -1,4 +1,5 @@ | |||
| 1 | name: "Daedalus Extension" | 1 | name: "Daedalus Extension" |
| 2 | daedalus_only_allow: true | ||
| 2 | panels { | 3 | panels { |
| 3 | name: "WHERE" | 4 | name: "WHERE" |
| 4 | path: "Panels/entry_1" | 5 | path: "Panels/entry_1" |
| diff --git a/data/maps/the_gold/metadata.txtpb b/data/maps/the_gold/metadata.txtpb index fef3e34..c4a8b3b 100644 --- a/data/maps/the_gold/metadata.txtpb +++ b/data/maps/the_gold/metadata.txtpb | |||
| @@ -1 +1,2 @@ | |||
| 1 | display_name: "The Gold" | 1 | display_name: "The Gold" |
| 2 | daedalus_only_mode: DAED_ONLY_ALLOW | ||
| diff --git a/data/maps/the_tenacious/metadata.txtpb b/data/maps/the_tenacious/metadata.txtpb index d98e8f2..58b3919 100644 --- a/data/maps/the_tenacious/metadata.txtpb +++ b/data/maps/the_tenacious/metadata.txtpb | |||
| @@ -1 +1,2 @@ | |||
| 1 | display_name: "The Tenacious" | 1 | display_name: "The Tenacious" |
| 2 | daedalus_only_mode: DAED_ONLY_ALLOW | ||
| diff --git a/proto/data.proto b/proto/data.proto index e9cc7d7..01f8d9e 100644 --- a/proto/data.proto +++ b/proto/data.proto | |||
| @@ -94,6 +94,12 @@ enum PuzzleSymbol { | |||
| 94 | QUESTION = 19; | 94 | QUESTION = 19; |
| 95 | } | 95 | } |
| 96 | 96 | ||
| 97 | enum DaedalusOnlyMode { | ||
| 98 | DAED_ONLY_DISALLOW = 0; | ||
| 99 | DAED_ONLY_PARTIAL = 1; | ||
| 100 | DAED_ONLY_ALLOW = 2; | ||
| 101 | } | ||
| 102 | |||
| 97 | message Vec3d { | 103 | message Vec3d { |
| 98 | optional double x = 1; | 104 | optional double x = 1; |
| 99 | optional double y = 2; | 105 | optional double y = 2; |
| @@ -159,6 +165,7 @@ message Door { | |||
| 159 | optional bool legacy_location = 21; | 165 | optional bool legacy_location = 21; |
| 160 | 166 | ||
| 161 | optional string location_name = 17; | 167 | optional string location_name = 17; |
| 168 | optional bool daedalus_only_allow = 22; | ||
| 162 | } | 169 | } |
| 163 | 170 | ||
| 164 | message PanelData { | 171 | message PanelData { |
| @@ -259,6 +266,7 @@ message Room { | |||
| 259 | optional string name = 2; | 266 | optional string name = 2; |
| 260 | optional string display_name = 3; | 267 | optional string display_name = 3; |
| 261 | optional string panel_display_name = 13; | 268 | optional string panel_display_name = 13; |
| 269 | optional bool daedalus_only_allow = 14; | ||
| 262 | 270 | ||
| 263 | repeated uint64 panels = 4; | 271 | repeated uint64 panels = 4; |
| 264 | repeated uint64 paintings = 5; | 272 | repeated uint64 paintings = 5; |
| @@ -274,6 +282,7 @@ message Map { | |||
| 274 | optional uint64 id = 1; | 282 | optional uint64 id = 1; |
| 275 | optional string name = 2; | 283 | optional string name = 2; |
| 276 | optional string display_name = 3; | 284 | optional string display_name = 3; |
| 285 | optional DaedalusOnlyMode daedalus_only_mode = 6; | ||
| 277 | optional uint64 worldport_entrance = 4; | 286 | optional uint64 worldport_entrance = 4; |
| 278 | optional MapType type = 5; | 287 | optional MapType type = 5; |
| 279 | } | 288 | } |
| diff --git a/proto/human.proto b/proto/human.proto index c586599..c599341 100644 --- a/proto/human.proto +++ b/proto/human.proto | |||
| @@ -124,6 +124,8 @@ message HumanDoor { | |||
| 124 | // location is created for it in the generator. This helps provide backwards | 124 | // location is created for it in the generator. This helps provide backwards |
| 125 | // compatability with older worlds. | 125 | // compatability with older worlds. |
| 126 | optional bool legacy_location = 18; | 126 | optional bool legacy_location = 18; |
| 127 | |||
| 128 | optional bool daedalus_only_allow = 19; | ||
| 127 | } | 129 | } |
| 128 | 130 | ||
| 129 | message HumanDoors { | 131 | message HumanDoors { |
| @@ -215,6 +217,8 @@ message HumanRoom { | |||
| 215 | // doors generated from panels in the same area. | 217 | // doors generated from panels in the same area. |
| 216 | optional string panel_display_name = 10; | 218 | optional string panel_display_name = 10; |
| 217 | 219 | ||
| 220 | optional bool daedalus_only_allow = 11; | ||
| 221 | |||
| 218 | repeated HumanPanel panels = 3; | 222 | repeated HumanPanel panels = 3; |
| 219 | repeated HumanPainting paintings = 4; | 223 | repeated HumanPainting paintings = 4; |
| 220 | repeated HumanLetter letters = 5; | 224 | repeated HumanLetter letters = 5; |
| @@ -228,6 +232,8 @@ message HumanMap { | |||
| 228 | optional string display_name = 1; | 232 | optional string display_name = 1; |
| 229 | optional MapType type = 4; | 233 | optional MapType type = 4; |
| 230 | 234 | ||
| 235 | optional DaedalusOnlyMode daedalus_only_mode = 6; | ||
| 236 | |||
| 231 | optional PortIdentifier worldport_entrance = 3; | 237 | optional PortIdentifier worldport_entrance = 3; |
| 232 | 238 | ||
| 233 | // These two fields are used by the validator and nothing else. excluded_nodes | 239 | // These two fields are used by the validator and nothing else. excluded_nodes |
| diff --git a/tools/datapacker/main.cpp b/tools/datapacker/main.cpp index 8109bf5..9acc33c 100644 --- a/tools/datapacker/main.cpp +++ b/tools/datapacker/main.cpp | |||
| @@ -89,6 +89,7 @@ class DataPacker { | |||
| 89 | Map& map = *container_.all_objects().mutable_maps(map_id); | 89 | Map& map = *container_.all_objects().mutable_maps(map_id); |
| 90 | 90 | ||
| 91 | map.set_type(metadata.type()); | 91 | map.set_type(metadata.type()); |
| 92 | map.set_daedalus_only_mode(metadata.daedalus_only_mode()); | ||
| 92 | 93 | ||
| 93 | if (metadata.has_display_name()) { | 94 | if (metadata.has_display_name()) { |
| 94 | map.set_display_name(metadata.display_name()); | 95 | map.set_display_name(metadata.display_name()); |
| @@ -121,6 +122,10 @@ class DataPacker { | |||
| 121 | room.set_panel_display_name(h_room.panel_display_name()); | 122 | room.set_panel_display_name(h_room.panel_display_name()); |
| 122 | } | 123 | } |
| 123 | 124 | ||
| 125 | if (h_room.has_daedalus_only_allow()) { | ||
| 126 | room.set_daedalus_only_allow(h_room.daedalus_only_allow()); | ||
| 127 | } | ||
| 128 | |||
| 124 | for (const HumanPanel& h_panel : h_room.panels()) { | 129 | for (const HumanPanel& h_panel : h_room.panels()) { |
| 125 | room.add_panels(ProcessPanel(h_panel, current_map_name, room.name())); | 130 | room.add_panels(ProcessPanel(h_panel, current_map_name, room.name())); |
| 126 | } | 131 | } |
| @@ -440,6 +445,10 @@ class DataPacker { | |||
| 440 | if (h_door.has_legacy_location()) { | 445 | if (h_door.has_legacy_location()) { |
| 441 | door.set_legacy_location(h_door.legacy_location()); | 446 | door.set_legacy_location(h_door.legacy_location()); |
| 442 | } | 447 | } |
| 448 | |||
| 449 | if (h_door.has_daedalus_only_allow()) { | ||
| 450 | door.set_daedalus_only_allow(h_door.daedalus_only_allow()); | ||
| 451 | } | ||
| 443 | } | 452 | } |
| 444 | 453 | ||
| 445 | void ProcessConnectionsFile(std::filesystem::path path, | 454 | void ProcessConnectionsFile(std::filesystem::path path, |
