#include "identifiers.h"
#include <string>
#include "proto/human.pb.h"
namespace com::fourisland::lingo2_archipelago {
std::optional<RoomIdentifier> GetCompleteRoomIdentifier(
RoomIdentifier identifier, std::optional<std::string> map_name) {
if (!identifier.has_map()) {
if (!map_name) {
return std::nullopt;
}
identifier.set_map(*map_name);
}
return identifier;
}
std::optional<DoorIdentifier> GetCompleteDoorIdentifier(
DoorIdentifier identifier, std::optional<std::string> map_name) {
if (!identifier.has_map()) {
if (!map_name) {
return std::nullopt;
}
identifier.set_map(*map_name);
}
return identifier;
}
std::optional<PortIdentifier> GetCompletePortIdentifier(
PortIdentifier identifier, std::optional<std::string> map_name,
std::optional<std::string> 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<PaintingIdentifier> GetCompletePaintingIdentifier(
PaintingIdentifier identifier, std::optional<std::string> map_name,
std::optional<std::string> 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<PanelIdentifier> GetCompletePanelIdentifierWithoutAnswer(
PanelIdentifier identifier, std::optional<std::string> map_name,
std::optional<std::string> 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<KeyholderIdentifier> GetCompleteKeyholderIdentifierWithoutKey(
KeyholderIdentifier identifier, const std::string& map_name,
std::optional<std::string> 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