about summary refs log tree commit diff stats
path: root/client
diff options
context:
space:
mode:
Diffstat (limited to 'client')
0 files changed, 0 insertions, 0 deletions
#n53'>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
#ifndef TOOLS_UTIL_IDENTIFIERS_H_
#define TOOLS_UTIL_IDENTIFIERS_H_

#include <optional>
#include <string>
#include <utility>

#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<RoomIdentifier> GetCompleteRoomIdentifier(
    RoomIdentifier identifier, std::optional<std::string> map_name);

std::optional<DoorIdentifier> GetCompleteDoorIdentifier(
    DoorIdentifier identifier, std::optional<std::string> map_name);

std::optional<PortIdentifier> GetCompletePortIdentifier(
    PortIdentifier identifier, std::optional<std::string> map_name,
    std::optional<std::string> room_name);

std::optional<PaintingIdentifier> GetCompletePaintingIdentifier(
    PaintingIdentifier identifier, std::optional<std::string> map_name,
    std::optional<std::string> room_name);

std::optional<PanelIdentifier> GetCompletePanelIdentifierWithoutAnswer(
    PanelIdentifier identifier, std::optional<std::string> map_name,
    std::optional<std::string> room_name);

std::optional<KeyholderIdentifier> GetCompleteKeyholderIdentifierWithoutKey(
    KeyholderIdentifier identifier, const std::string& map_name,
    std::optional<std::string> room_name);

}  // namespace com::fourisland::lingo2_archipelago

#endif /* TOOLS_UTIL_IDENTIFIERS_H_ */