#ifndef TOOLS_VALIDATOR_STRUCTS_H_ #define TOOLS_VALIDATOR_STRUCTS_H_ #include #include #include #include "proto/human.pb.h" #include "util/identifiers.h" namespace com::fourisland::lingo2_archipelago { struct MalformedIdentifiers { std::vector paintings; std::vector panels; std::vector keyholders; bool HasAny() const { return !paintings.empty() || !panels.empty() || !keyholders.empty(); } }; struct GameNodeInfo { int uses = 0; }; struct MapInfo { std::map game_nodes; }; struct RoomInfo { std::vector definitions; std::vector doors_referenced_by; std::vector panels_referenced_by; std::vector connections_referenced_by; }; struct DoorInfo { std::vector definitions; std::vector connections_referenced_by; std::vector doors_referenced_by; std::vector panels_referenced_by; std::vector paintings_referenced_by; std::vector ports_referenced_by; MalformedIdentifiers malformed_identifiers; }; struct PortInfo { std::vector definitions; std::vector connections_referenced_by; }; struct PaintingInfo { std::vector definitions; std::vector connections_referenced_by; std::vector doors_referenced_by; }; struct ProxyInfo { std::vector definitions; std::vector connections_referenced_by; std::vector doors_referenced_by; }; struct PanelInfo { std::vector definitions; std::vector connections_referenced_by; std::vector doors_referenced_by; std::map proxies; }; struct KeyholderInfo { std::vector definitions; std::vector doors_referenced_by; }; using LetterIdentifier = std::tuple; struct LetterInfo { std::vector defined_in; }; struct CollectedInfo { std::map maps; std::map rooms; std::map doors; std::map ports; std::map paintings; std::map panels; std::map keyholders; std::map letters; }; } // namespace com::fourisland::lingo2_archipelago #endif /* TOOLS_VALIDATOR_STRUCTS_H_ */