about summary refs log tree commit diff stats
path: root/proto/data.proto
diff options
context:
space:
mode:
Diffstat (limited to 'proto/data.proto')
-rw-r--r--proto/data.proto3
1 files changed, 3 insertions, 0 deletions
diff --git a/proto/data.proto b/proto/data.proto index 84d14ef..24b98fe 100644 --- a/proto/data.proto +++ b/proto/data.proto
@@ -41,6 +41,9 @@ enum DoorGroupType {
41 // connections are not shuffled, but are not items at all when control center 41 // connections are not shuffled, but are not items at all when control center
42 // colors are not shuffled. 42 // colors are not shuffled.
43 COLOR_CONNECTOR = 2; 43 COLOR_CONNECTOR = 2;
44
45 // Groups with this type become an item if cyan door behavior is set to item.
46 CYAN_DOORS = 3;
44} 47}
45 48
46enum AxisDirection { 49enum AxisDirection {
font-weight: bold } /* Name.Function */ .highlight .nl { color: #336699; font-style: italic } /* Name.Label */ .highlight .nn { color: #bb0066; font-weight: bold } /* Name.Namespace */ .highlight .py { color: #336699; font-weight: bold } /* Name.Property */ .highlight .nt { color: #bb0066; font-weight: bold } /* Name.Tag */ .highlight .nv { color: #336699 } /* Name.Variable */ .highlight .ow { color: #008800 } /* Operator.Word */ .highlight .w { color: #bbbbbb } /* Text.Whitespace */ .highlight .mb { color: #0000DD; font-weight: bold } /* Literal.Number.Bin */ .highlight .mf { color: #0000DD; font-weight: bold } /* Literal.Number.Float */ .highlight .mh { color: #0000DD; font-weight: bold } /* Literal.Number.Hex */ .highlight .mi { color: #0000DD; font-weight: bold } /* Literal.Number.Integer */ .highlight .mo { color: #0000DD; font-weight: bold } /* Literal.Number.Oct */ .highlight .sa { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Affix */ .highlight .sb { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Backtick */ .highlight .sc { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Char */ .highlight .dl { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Delimiter */ .highlight .sd { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Doc */ .highlight .s2 { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Double */ .highlight .se { color: #0044dd; background-color: #fff0f0 } /* Literal.String.Escape */ .highlight .sh { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Heredoc */ .highlight .si { color: #3333bb; background-color: #fff0f0 } /* Literal.String.Interpol */ .highlight .sx { color: #22bb22; background-color: #f0fff0 } /* Literal.String.Other */ .highlight .sr { color: #008800; background-color: #fff0ff } /* Literal.String.Regex */ .highlight .s1 { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Single */ .highlight .ss { color: #aa6600; background-color: #fff0f0 } /* Literal.String.Symbol */ .highlight .bp { color: #003388 } /* Name.Builtin.Pseudo */ .highlight .fm { color: #0066bb; font-weight: bold } /* Name.Function.Magic */ .highlight .vc { color: #336699 } /* Name.Variable.Class */ .highlight .vg { color: #dd7700 } /* Name.Variable.Global */ .highlight .vi { color: #3333bb } /* Name.Variable.Instance */ .highlight .vm { color: #336699 } /* Name.Variable.Magic */ .highlight .il { color: #0000DD; font-weight: bold } /* Literal.Number.Integer.Long */
#ifndef TOOLS_VALIDATOR_STRUCTS_H_
#define TOOLS_VALIDATOR_STRUCTS_H_

#include <map>
#include <string>
#include <vector>

#include "proto/human.pb.h"
#include "util/identifiers.h"

namespace com::fourisland::lingo2_archipelago {

struct MalformedIdentifiers {
  std::vector<PaintingIdentifier> paintings;
  std::vector<PanelIdentifier> panels;
  std::vector<KeyholderIdentifier> keyholders;

  bool HasAny() const {
    return !paintings.empty() || !panels.empty() || !keyholders.empty();
  }
};

struct RoomInfo {
  std::vector<HumanRoom> definitions;

  std::vector<DoorIdentifier> doors_referenced_by;
  std::vector<PanelIdentifier> panels_referenced_by;
  std::vector<HumanConnection> connections_referenced_by;
};

struct DoorInfo {
  std::vector<HumanDoor> definitions;

  std::vector<HumanConnection> connections_referenced_by;
  std::vector<DoorIdentifier> doors_referenced_by;
  std::vector<PanelIdentifier> panels_referenced_by;
  std::vector<PaintingIdentifier> paintings_referenced_by;
  std::vector<PortIdentifier> ports_referenced_by;

  MalformedIdentifiers malformed_identifiers;
};

struct PortInfo {
  std::vector<HumanPort> definitions;

  std::vector<HumanConnection> connections_referenced_by;
};

struct PaintingInfo {
  std::vector<HumanPainting> definitions;

  std::vector<HumanConnection> connections_referenced_by;
  std::vector<DoorIdentifier> doors_referenced_by;
};

struct ProxyInfo {
  std::vector<Proxy> definitions;

  std::vector<HumanConnection> connections_referenced_by;
  std::vector<DoorIdentifier> doors_referenced_by;
};

struct PanelInfo {
  std::vector<HumanPanel> definitions;

  std::vector<HumanConnection> connections_referenced_by;
  std::vector<DoorIdentifier> doors_referenced_by;

  std::map<std::string, ProxyInfo> proxies;
};

struct KeyholderInfo {
  std::vector<HumanKeyholder> definitions;

  std::vector<DoorIdentifier> doors_referenced_by;
};

using LetterIdentifier = std::tuple<char, bool>;

struct LetterInfo {
  std::vector<RoomIdentifier> defined_in;
};

struct CollectedInfo {
  std::map<RoomIdentifier, RoomInfo, RoomIdentifierLess> rooms;
  std::map<DoorIdentifier, DoorInfo, DoorIdentifierLess> doors;
  std::map<PortIdentifier, PortInfo, PortIdentifierLess> ports;
  std::map<PaintingIdentifier, PaintingInfo, PaintingIdentifierLess> paintings;
  std::map<PanelIdentifier, PanelInfo, PanelIdentifierLess> panels;
  std::map<KeyholderIdentifier, KeyholderInfo, KeyholderIdentifierLess>
      keyholders;
  std::map<LetterIdentifier, LetterInfo> letters;
};

}  // namespace com::fourisland::lingo2_archipelago

#endif /* TOOLS_VALIDATOR_STRUCTS_H_ */