#include "identifiers.h" #include #include "proto/human.pb.h" namespace com::fourisland::lingo2_archipelago { std::optional GetCompleteRoomIdentifier( RoomIdentifier identifier, std::optional map_name) { if (!identifier.has_map()) { if (!map_name) { return std::nullopt; } identifier.set_map(*map_name); } return identifier; } std::optional GetCompleteDoorIdentifier( DoorIdentifier identifier, std::optional map_name) { if (!identifier.has_map()) { if (!map_name) { return std::nullopt; } identifier.set_map(*map_name); } return identifier; } std::optional GetCompletePortIdentifier( PortIdentifier identifier, std::optional map_name, std::optional room_name) { if (!identifier.has_map()) { if (!map_name) { return std::nullopt; } identifier.set_map(*map_name); } if (!identifier.has_room()) { if (!room_name) { return std::nullopt; } identifier.set_room(*room_name); } return identifier; } std::optional GetCompletePaintingIdentifier( PaintingIdentifier identifier, std::optional map_name, std::optional room_name) { if (!identifier.has_map()) { if (!map_name) { return std::nullopt; } identifier.set_map(*map_name); } if (!identifier.has_room()) { if (!room_name) { return std::nullopt; } identifier.set_room(*room_name); } return identifier; } std::optional GetCompletePanelIdentifierWithoutAnswer( PanelIdentifier identifier, std::optional map_name, std::optional room_name) { if (!identifier.has_map()) { if (!map_name) { return std::nullopt; } identifier.set_map(*map_name); } if (!identifier.has_room()) { if (!room_name) { return std::nullopt; } identifier.set_room(*room_name); } identifier.clear_answer(); return identifier; } std::optional GetCompleteKeyholderIdentifierWithoutKey( KeyholderIdentifier identifier, const std::string& map_name, std::optional room_name) { if (!identifier.has_map()) { identifier.set_map(map_name); } if (!identifier.has_room()) { if (!room_name) { return std::nullopt; } identifier.set_room(*room_name); } identifier.clear_key(); return identifier; } } // namespace com::fourisland::lingo2_archipelago