about summary refs log tree commit diff stats
path: root/tools/validator/godot_processor.h
blob: 97bcea6e7ca04f34f54ae064f118659d84c045f0 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#ifndef TOOLS_VALIDATOR_GODOT_PROCESSOR_H_
#define TOOLS_VALIDATOR_GODOT_PROCESSOR_H_

#include <string>

namespace com::fourisland::lingo2_archipelago {

struct CollectedInfo;

void ProcessGodotData(const std::string& repodir, CollectedInfo& info);

}  // namespace com::fourisland::lingo2_archipelago

#endif /* TOOLS_VALIDATOR_GODOT_PROCESSOR_H_ */
ht .il { color: #0000DD; font-weight: bold } /* Literal.Number.Integer.Long */
#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_ */