// Generated by the protocol buffer compiler.  DO NOT EDIT!
// source: levelData.proto

#ifndef GOOGLE_PROTOBUF_INCLUDED_levelData_2eproto
#define GOOGLE_PROTOBUF_INCLUDED_levelData_2eproto

#include <limits>
#include <string>

#include <google/protobuf/port_def.inc>
#if PROTOBUF_VERSION < 3015000
#error This file was generated by a newer version of protoc which is
#error incompatible with your Protocol Buffer headers. Please update
#error your headers.
#endif
#if 3015008 < PROTOBUF_MIN_PROTOC_VERSION
#error This file was generated by an older version of protoc which is
#error incompatible with your Protocol Buffer headers. Please
#error regenerate this file with a newer version of protoc.
#endif

#include <google/protobuf/port_undef.inc>
#include <google/protobuf/io/coded_stream.h>
#include <google/protobuf/arena.h>
#include <google/protobuf/arenastring.h>
#include <google/protobuf/generated_message_table_driven.h>
#include <google/protobuf/generated_message_util.h>
#include <google/protobuf/metadata_lite.h>
#include <google/protobuf/message_lite.h>
#include <google/protobuf/repeated_field.h>  // IWYU pragma: export
#include <google/protobuf/extension_set.h>  // IWYU pragma: export
#include <google/protobuf/map.h>  // IWYU pragma: export
#include <google/protobuf/map_entry_lite.h>
#include <google/protobuf/map_field_lite.h>
// @@protoc_insertion_point(includes)
#include <google/protobuf/port_def.inc>
#define PROTOBUF_INTERNAL_EXPORT_levelData_2eproto
PROTOBUF_NAMESPACE_OPEN
namespace internal {
class AnyMetadata;
}  // namespace internal
PROTOBUF_NAMESPACE_CLOSE

// Internal implementation detail -- do not use these members.
struct TableStruct_levelData_2eproto {
  static const ::PROTOBUF_NAMESPACE_ID::internal::ParseTableField entries[]
    PROTOBUF_SECTION_VARIABLE(protodesc_cold);
  static const ::PROTOBUF_NAMESPACE_ID::internal::AuxiliaryParseTableField aux[]
    PROTOBUF_SECTION_VARIABLE(protodesc_cold);
  static const ::PROTOBUF_NAMESPACE_ID::internal::ParseTable schema[7]
    PROTOBUF_SECTION_VARIABLE(protodesc_cold);
  static const ::PROTOBUF_NAMESPACE_ID::internal::FieldMetadata field_metadata[];
  static const ::PROTOBUF_NAMESPACE_ID::internal::SerializationTable serialization_table[];
  static const ::PROTOBUF_NAMESPACE_ID::uint32 offsets[];
};
class LevelData;
struct LevelDataDefaultTypeInternal;
extern LevelDataDefaultTypeInternal _LevelData_default_instance_;
class LevelsIndex;
struct LevelsIndexDefaultTypeInternal;
extern LevelsIndexDefaultTypeInternal _LevelsIndex_default_instance_;
class LevelsIndex_LevelsIndexEntry_DoNotUse;
struct LevelsIndex_LevelsIndexEntry_DoNotUseDefaultTypeInternal;
extern LevelsIndex_LevelsIndexEntry_DoNotUseDefaultTypeInternal _LevelsIndex_LevelsIndexEntry_DoNotUse_default_instance_;
class t_offeset_len;
struct t_offeset_lenDefaultTypeInternal;
extern t_offeset_lenDefaultTypeInternal _t_offeset_len_default_instance_;
class t_stack;
struct t_stackDefaultTypeInternal;
extern t_stackDefaultTypeInternal _t_stack_default_instance_;
class t_tile;
struct t_tileDefaultTypeInternal;
extern t_tileDefaultTypeInternal _t_tile_default_instance_;
class t_tile_data;
struct t_tile_dataDefaultTypeInternal;
extern t_tile_dataDefaultTypeInternal _t_tile_data_default_instance_;
PROTOBUF_NAMESPACE_OPEN
template<> ::LevelData* Arena::CreateMaybeMessage<::LevelData>(Arena*);
template<> ::LevelsIndex* Arena::CreateMaybeMessage<::LevelsIndex>(Arena*);
template<> ::LevelsIndex_LevelsIndexEntry_DoNotUse* Arena::CreateMaybeMessage<::LevelsIndex_LevelsIndexEntry_DoNotUse>(Arena*);
template<> ::t_offeset_len* Arena::CreateMaybeMessage<::t_offeset_len>(Arena*);
template<> ::t_stack* Arena::CreateMaybeMessage<::t_stack>(Arena*);
template<> ::t_tile* Arena::CreateMaybeMessage<::t_tile>(Arena*);
template<> ::t_tile_data* Arena::CreateMaybeMessage<::t_tile_data>(Arena*);
PROTOBUF_NAMESPACE_CLOSE

// ===================================================================

class LevelsIndex_LevelsIndexEntry_DoNotUse : public ::PROTOBUF_NAMESPACE_ID::internal::MapEntryLite<LevelsIndex_LevelsIndexEntry_DoNotUse, 
    std::string, ::t_offeset_len,
    ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::TYPE_STRING,
    ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::TYPE_MESSAGE> {
public:
  typedef ::PROTOBUF_NAMESPACE_ID::internal::MapEntryLite<LevelsIndex_LevelsIndexEntry_DoNotUse, 
    std::string, ::t_offeset_len,
    ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::TYPE_STRING,
    ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::TYPE_MESSAGE> SuperType;
  LevelsIndex_LevelsIndexEntry_DoNotUse();
  explicit constexpr LevelsIndex_LevelsIndexEntry_DoNotUse(
      ::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized);
  explicit LevelsIndex_LevelsIndexEntry_DoNotUse(::PROTOBUF_NAMESPACE_ID::Arena* arena);
  void MergeFrom(const LevelsIndex_LevelsIndexEntry_DoNotUse& other);
  static const LevelsIndex_LevelsIndexEntry_DoNotUse* internal_default_instance() { return reinterpret_cast<const LevelsIndex_LevelsIndexEntry_DoNotUse*>(&_LevelsIndex_LevelsIndexEntry_DoNotUse_default_instance_); }
  static bool ValidateKey(std::string* s) {
    return ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::VerifyUtf8String(s->data(), static_cast<int>(s->size()), ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::PARSE, "LevelsIndex.LevelsIndexEntry.key");
 }
  static bool ValidateValue(void*) { return true; }
};

// -------------------------------------------------------------------

class LevelsIndex PROTOBUF_FINAL :
    public ::PROTOBUF_NAMESPACE_ID::MessageLite /* @@protoc_insertion_point(class_definition:LevelsIndex) */ {
 public:
  inline LevelsIndex() : LevelsIndex(nullptr) {}
  virtual ~LevelsIndex();
  explicit constexpr LevelsIndex(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized);

  LevelsIndex(const LevelsIndex& from);
  LevelsIndex(LevelsIndex&& from) noexcept
    : LevelsIndex() {
    *this = ::std::move(from);
  }

  inline LevelsIndex& operator=(const LevelsIndex& from) {
    CopyFrom(from);
    return *this;
  }
  inline LevelsIndex& operator=(LevelsIndex&& from) noexcept {
    if (GetArena() == from.GetArena()) {
      if (this != &from) InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

  static const LevelsIndex& default_instance() {
    return *internal_default_instance();
  }
  static inline const LevelsIndex* internal_default_instance() {
    return reinterpret_cast<const LevelsIndex*>(
               &_LevelsIndex_default_instance_);
  }
  static constexpr int kIndexInFileMessages =
    1;

  friend void swap(LevelsIndex& a, LevelsIndex& b) {
    a.Swap(&b);
  }
  inline void Swap(LevelsIndex* other) {
    if (other == this) return;
    if (GetArena() == other->GetArena()) {
      InternalSwap(other);
    } else {
      ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other);
    }
  }
  void UnsafeArenaSwap(LevelsIndex* other) {
    if (other == this) return;
    GOOGLE_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

  // implements Message ----------------------------------------------

  inline LevelsIndex* New() const final {
    return CreateMaybeMessage<LevelsIndex>(nullptr);
  }

  LevelsIndex* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final {
    return CreateMaybeMessage<LevelsIndex>(arena);
  }
  void CheckTypeAndMergeFrom(const ::PROTOBUF_NAMESPACE_ID::MessageLite& from)
    final;
  void CopyFrom(const LevelsIndex& from);
  void MergeFrom(const LevelsIndex& from);
  PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final;
  bool IsInitialized() const final;

  size_t ByteSizeLong() const final;
  const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final;
  ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize(
      ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final;
  void DiscardUnknownFields();
  int GetCachedSize() const final { return _cached_size_.Get(); }

  private:
  inline void SharedCtor();
  inline void SharedDtor();
  void SetCachedSize(int size) const;
  void InternalSwap(LevelsIndex* other);
  friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata;
  static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() {
    return "LevelsIndex";
  }
  protected:
  explicit LevelsIndex(::PROTOBUF_NAMESPACE_ID::Arena* arena);
  private:
  static void ArenaDtor(void* object);
  inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena);
  public:

  std::string GetTypeName() const final;

  // nested types ----------------------------------------------------


  // accessors -------------------------------------------------------

  enum : int {
    kLevelsIndexFieldNumber = 1,
  };
  // map<string, .t_offeset_len> LevelsIndex = 1;
  int levelsindex_size() const;
  private:
  int _internal_levelsindex_size() const;
  public:
  void clear_levelsindex();
  private:
  const ::PROTOBUF_NAMESPACE_ID::Map< std::string, ::t_offeset_len >&
      _internal_levelsindex() const;
  ::PROTOBUF_NAMESPACE_ID::Map< std::string, ::t_offeset_len >*
      _internal_mutable_levelsindex();
  public:
  const ::PROTOBUF_NAMESPACE_ID::Map< std::string, ::t_offeset_len >&
      levelsindex() const;
  ::PROTOBUF_NAMESPACE_ID::Map< std::string, ::t_offeset_len >*
      mutable_levelsindex();

  // @@protoc_insertion_point(class_scope:LevelsIndex)
 private:
  class _Internal;

  template <typename T> friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper;
  typedef void InternalArenaConstructable_;
  typedef void DestructorSkippable_;
  ::PROTOBUF_NAMESPACE_ID::internal::MapFieldLite<
      LevelsIndex_LevelsIndexEntry_DoNotUse,
      std::string, ::t_offeset_len,
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::TYPE_STRING,
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::TYPE_MESSAGE> levelsindex_;
  mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_;
  friend struct ::TableStruct_levelData_2eproto;
};
// -------------------------------------------------------------------

class t_offeset_len PROTOBUF_FINAL :
    public ::PROTOBUF_NAMESPACE_ID::MessageLite /* @@protoc_insertion_point(class_definition:t_offeset_len) */ {
 public:
  inline t_offeset_len() : t_offeset_len(nullptr) {}
  virtual ~t_offeset_len();
  explicit constexpr t_offeset_len(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized);

  t_offeset_len(const t_offeset_len& from);
  t_offeset_len(t_offeset_len&& from) noexcept
    : t_offeset_len() {
    *this = ::std::move(from);
  }

  inline t_offeset_len& operator=(const t_offeset_len& from) {
    CopyFrom(from);
    return *this;
  }
  inline t_offeset_len& operator=(t_offeset_len&& from) noexcept {
    if (GetArena() == from.GetArena()) {
      if (this != &from) InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

  static const t_offeset_len& default_instance() {
    return *internal_default_instance();
  }
  static inline const t_offeset_len* internal_default_instance() {
    return reinterpret_cast<const t_offeset_len*>(
               &_t_offeset_len_default_instance_);
  }
  static constexpr int kIndexInFileMessages =
    2;

  friend void swap(t_offeset_len& a, t_offeset_len& b) {
    a.Swap(&b);
  }
  inline void Swap(t_offeset_len* other) {
    if (other == this) return;
    if (GetArena() == other->GetArena()) {
      InternalSwap(other);
    } else {
      ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other);
    }
  }
  void UnsafeArenaSwap(t_offeset_len* other) {
    if (other == this) return;
    GOOGLE_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

  // implements Message ----------------------------------------------

  inline t_offeset_len* New() const final {
    return CreateMaybeMessage<t_offeset_len>(nullptr);
  }

  t_offeset_len* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final {
    return CreateMaybeMessage<t_offeset_len>(arena);
  }
  void CheckTypeAndMergeFrom(const ::PROTOBUF_NAMESPACE_ID::MessageLite& from)
    final;
  void CopyFrom(const t_offeset_len& from);
  void MergeFrom(const t_offeset_len& from);
  PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final;
  bool IsInitialized() const final;

  size_t ByteSizeLong() const final;
  const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final;
  ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize(
      ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final;
  void DiscardUnknownFields();
  int GetCachedSize() const final { return _cached_size_.Get(); }

  private:
  inline void SharedCtor();
  inline void SharedDtor();
  void SetCachedSize(int size) const;
  void InternalSwap(t_offeset_len* other);
  friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata;
  static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() {
    return "t_offeset_len";
  }
  protected:
  explicit t_offeset_len(::PROTOBUF_NAMESPACE_ID::Arena* arena);
  private:
  static void ArenaDtor(void* object);
  inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena);
  public:

  std::string GetTypeName() const final;

  // nested types ----------------------------------------------------

  // accessors -------------------------------------------------------

  enum : int {
    kOffsetFieldNumber = 1,
    kLenFieldNumber = 2,
  };
  // int32 offset = 1;
  void clear_offset();
  ::PROTOBUF_NAMESPACE_ID::int32 offset() const;
  void set_offset(::PROTOBUF_NAMESPACE_ID::int32 value);
  private:
  ::PROTOBUF_NAMESPACE_ID::int32 _internal_offset() const;
  void _internal_set_offset(::PROTOBUF_NAMESPACE_ID::int32 value);
  public:

  // int32 len = 2;
  void clear_len();
  ::PROTOBUF_NAMESPACE_ID::int32 len() const;
  void set_len(::PROTOBUF_NAMESPACE_ID::int32 value);
  private:
  ::PROTOBUF_NAMESPACE_ID::int32 _internal_len() const;
  void _internal_set_len(::PROTOBUF_NAMESPACE_ID::int32 value);
  public:

  // @@protoc_insertion_point(class_scope:t_offeset_len)
 private:
  class _Internal;

  template <typename T> friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper;
  typedef void InternalArenaConstructable_;
  typedef void DestructorSkippable_;
  ::PROTOBUF_NAMESPACE_ID::int32 offset_;
  ::PROTOBUF_NAMESPACE_ID::int32 len_;
  mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_;
  friend struct ::TableStruct_levelData_2eproto;
};
// -------------------------------------------------------------------

class LevelData PROTOBUF_FINAL :
    public ::PROTOBUF_NAMESPACE_ID::MessageLite /* @@protoc_insertion_point(class_definition:LevelData) */ {
 public:
  inline LevelData() : LevelData(nullptr) {}
  virtual ~LevelData();
  explicit constexpr LevelData(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized);

  LevelData(const LevelData& from);
  LevelData(LevelData&& from) noexcept
    : LevelData() {
    *this = ::std::move(from);
  }

  inline LevelData& operator=(const LevelData& from) {
    CopyFrom(from);
    return *this;
  }
  inline LevelData& operator=(LevelData&& from) noexcept {
    if (GetArena() == from.GetArena()) {
      if (this != &from) InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

  static const LevelData& default_instance() {
    return *internal_default_instance();
  }
  static inline const LevelData* internal_default_instance() {
    return reinterpret_cast<const LevelData*>(
               &_LevelData_default_instance_);
  }
  static constexpr int kIndexInFileMessages =
    3;

  friend void swap(LevelData& a, LevelData& b) {
    a.Swap(&b);
  }
  inline void Swap(LevelData* other) {
    if (other == this) return;
    if (GetArena() == other->GetArena()) {
      InternalSwap(other);
    } else {
      ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other);
    }
  }
  void UnsafeArenaSwap(LevelData* other) {
    if (other == this) return;
    GOOGLE_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

  // implements Message ----------------------------------------------

  inline LevelData* New() const final {
    return CreateMaybeMessage<LevelData>(nullptr);
  }

  LevelData* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final {
    return CreateMaybeMessage<LevelData>(arena);
  }
  void CheckTypeAndMergeFrom(const ::PROTOBUF_NAMESPACE_ID::MessageLite& from)
    final;
  void CopyFrom(const LevelData& from);
  void MergeFrom(const LevelData& from);
  PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final;
  bool IsInitialized() const final;

  size_t ByteSizeLong() const final;
  const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final;
  ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize(
      ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final;
  void DiscardUnknownFields();
  int GetCachedSize() const final { return _cached_size_.Get(); }

  private:
  inline void SharedCtor();
  inline void SharedDtor();
  void SetCachedSize(int size) const;
  void InternalSwap(LevelData* other);
  friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata;
  static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() {
    return "LevelData";
  }
  protected:
  explicit LevelData(::PROTOBUF_NAMESPACE_ID::Arena* arena);
  private:
  static void ArenaDtor(void* object);
  inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena);
  public:

  std::string GetTypeName() const final;

  // nested types ----------------------------------------------------

  // accessors -------------------------------------------------------

  enum : int {
    kTilesFieldNumber = 1,
    kStacksFieldNumber = 2,
    kTileWidthFieldNumber = 3,
    kTileHeightFieldNumber = 4,
  };
  // repeated .t_tile tiles = 1;
  int tiles_size() const;
  private:
  int _internal_tiles_size() const;
  public:
  void clear_tiles();
  ::t_tile* mutable_tiles(int index);
  ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::t_tile >*
      mutable_tiles();
  private:
  const ::t_tile& _internal_tiles(int index) const;
  ::t_tile* _internal_add_tiles();
  public:
  const ::t_tile& tiles(int index) const;
  ::t_tile* add_tiles();
  const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::t_tile >&
      tiles() const;

  // repeated .t_stack stacks = 2;
  int stacks_size() const;
  private:
  int _internal_stacks_size() const;
  public:
  void clear_stacks();
  ::t_stack* mutable_stacks(int index);
  ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::t_stack >*
      mutable_stacks();
  private:
  const ::t_stack& _internal_stacks(int index) const;
  ::t_stack* _internal_add_stacks();
  public:
  const ::t_stack& stacks(int index) const;
  ::t_stack* add_stacks();
  const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::t_stack >&
      stacks() const;

  // int32 tileWidth = 3;
  bool has_tilewidth() const;
  private:
  bool _internal_has_tilewidth() const;
  public:
  void clear_tilewidth();
  ::PROTOBUF_NAMESPACE_ID::int32 tilewidth() const;
  void set_tilewidth(::PROTOBUF_NAMESPACE_ID::int32 value);
  private:
  ::PROTOBUF_NAMESPACE_ID::int32 _internal_tilewidth() const;
  void _internal_set_tilewidth(::PROTOBUF_NAMESPACE_ID::int32 value);
  public:

  // int32 tileHeight = 4;
  bool has_tileheight() const;
  private:
  bool _internal_has_tileheight() const;
  public:
  void clear_tileheight();
  ::PROTOBUF_NAMESPACE_ID::int32 tileheight() const;
  void set_tileheight(::PROTOBUF_NAMESPACE_ID::int32 value);
  private:
  ::PROTOBUF_NAMESPACE_ID::int32 _internal_tileheight() const;
  void _internal_set_tileheight(::PROTOBUF_NAMESPACE_ID::int32 value);
  public:

  // @@protoc_insertion_point(class_scope:LevelData)
 private:
  class _Internal;

  template <typename T> friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper;
  typedef void InternalArenaConstructable_;
  typedef void DestructorSkippable_;
  ::PROTOBUF_NAMESPACE_ID::internal::HasBits<1> _has_bits_;
  mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_;
  ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::t_tile > tiles_;
  ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::t_stack > stacks_;
  ::PROTOBUF_NAMESPACE_ID::int32 tilewidth_;
  ::PROTOBUF_NAMESPACE_ID::int32 tileheight_;
  friend struct ::TableStruct_levelData_2eproto;
};
// -------------------------------------------------------------------

class t_tile PROTOBUF_FINAL :
    public ::PROTOBUF_NAMESPACE_ID::MessageLite /* @@protoc_insertion_point(class_definition:t_tile) */ {
 public:
  inline t_tile() : t_tile(nullptr) {}
  virtual ~t_tile();
  explicit constexpr t_tile(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized);

  t_tile(const t_tile& from);
  t_tile(t_tile&& from) noexcept
    : t_tile() {
    *this = ::std::move(from);
  }

  inline t_tile& operator=(const t_tile& from) {
    CopyFrom(from);
    return *this;
  }
  inline t_tile& operator=(t_tile&& from) noexcept {
    if (GetArena() == from.GetArena()) {
      if (this != &from) InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

  static const t_tile& default_instance() {
    return *internal_default_instance();
  }
  static inline const t_tile* internal_default_instance() {
    return reinterpret_cast<const t_tile*>(
               &_t_tile_default_instance_);
  }
  static constexpr int kIndexInFileMessages =
    4;

  friend void swap(t_tile& a, t_tile& b) {
    a.Swap(&b);
  }
  inline void Swap(t_tile* other) {
    if (other == this) return;
    if (GetArena() == other->GetArena()) {
      InternalSwap(other);
    } else {
      ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other);
    }
  }
  void UnsafeArenaSwap(t_tile* other) {
    if (other == this) return;
    GOOGLE_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

  // implements Message ----------------------------------------------

  inline t_tile* New() const final {
    return CreateMaybeMessage<t_tile>(nullptr);
  }

  t_tile* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final {
    return CreateMaybeMessage<t_tile>(arena);
  }
  void CheckTypeAndMergeFrom(const ::PROTOBUF_NAMESPACE_ID::MessageLite& from)
    final;
  void CopyFrom(const t_tile& from);
  void MergeFrom(const t_tile& from);
  PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final;
  bool IsInitialized() const final;

  size_t ByteSizeLong() const final;
  const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final;
  ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize(
      ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final;
  void DiscardUnknownFields();
  int GetCachedSize() const final { return _cached_size_.Get(); }

  private:
  inline void SharedCtor();
  inline void SharedDtor();
  void SetCachedSize(int size) const;
  void InternalSwap(t_tile* other);
  friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata;
  static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() {
    return "t_tile";
  }
  protected:
  explicit t_tile(::PROTOBUF_NAMESPACE_ID::Arena* arena);
  private:
  static void ArenaDtor(void* object);
  inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena);
  public:

  std::string GetTypeName() const final;

  // nested types ----------------------------------------------------

  // accessors -------------------------------------------------------

  enum : int {
    kTileDataFieldNumber = 4,
    kXFieldNumber = 1,
    kYFieldNumber = 2,
    kZFieldNumber = 3,
  };
  // .t_tile_data tileData = 4;
  bool has_tiledata() const;
  private:
  bool _internal_has_tiledata() const;
  public:
  void clear_tiledata();
  const ::t_tile_data& tiledata() const;
  ::t_tile_data* release_tiledata();
  ::t_tile_data* mutable_tiledata();
  void set_allocated_tiledata(::t_tile_data* tiledata);
  private:
  const ::t_tile_data& _internal_tiledata() const;
  ::t_tile_data* _internal_mutable_tiledata();
  public:
  void unsafe_arena_set_allocated_tiledata(
      ::t_tile_data* tiledata);
  ::t_tile_data* unsafe_arena_release_tiledata();

  // int32 x = 1;
  bool has_x() const;
  private:
  bool _internal_has_x() const;
  public:
  void clear_x();
  ::PROTOBUF_NAMESPACE_ID::int32 x() const;
  void set_x(::PROTOBUF_NAMESPACE_ID::int32 value);
  private:
  ::PROTOBUF_NAMESPACE_ID::int32 _internal_x() const;
  void _internal_set_x(::PROTOBUF_NAMESPACE_ID::int32 value);
  public:

  // int32 y = 2;
  bool has_y() const;
  private:
  bool _internal_has_y() const;
  public:
  void clear_y();
  ::PROTOBUF_NAMESPACE_ID::int32 y() const;
  void set_y(::PROTOBUF_NAMESPACE_ID::int32 value);
  private:
  ::PROTOBUF_NAMESPACE_ID::int32 _internal_y() const;
  void _internal_set_y(::PROTOBUF_NAMESPACE_ID::int32 value);
  public:

  // int32 z = 3;
  bool has_z() const;
  private:
  bool _internal_has_z() const;
  public:
  void clear_z();
  ::PROTOBUF_NAMESPACE_ID::int32 z() const;
  void set_z(::PROTOBUF_NAMESPACE_ID::int32 value);
  private:
  ::PROTOBUF_NAMESPACE_ID::int32 _internal_z() const;
  void _internal_set_z(::PROTOBUF_NAMESPACE_ID::int32 value);
  public:

  // @@protoc_insertion_point(class_scope:t_tile)
 private:
  class _Internal;

  template <typename T> friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper;
  typedef void InternalArenaConstructable_;
  typedef void DestructorSkippable_;
  ::PROTOBUF_NAMESPACE_ID::internal::HasBits<1> _has_bits_;
  mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_;
  ::t_tile_data* tiledata_;
  ::PROTOBUF_NAMESPACE_ID::int32 x_;
  ::PROTOBUF_NAMESPACE_ID::int32 y_;
  ::PROTOBUF_NAMESPACE_ID::int32 z_;
  friend struct ::TableStruct_levelData_2eproto;
};
// -------------------------------------------------------------------

class t_tile_data PROTOBUF_FINAL :
    public ::PROTOBUF_NAMESPACE_ID::MessageLite /* @@protoc_insertion_point(class_definition:t_tile_data) */ {
 public:
  inline t_tile_data() : t_tile_data(nullptr) {}
  virtual ~t_tile_data();
  explicit constexpr t_tile_data(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized);

  t_tile_data(const t_tile_data& from);
  t_tile_data(t_tile_data&& from) noexcept
    : t_tile_data() {
    *this = ::std::move(from);
  }

  inline t_tile_data& operator=(const t_tile_data& from) {
    CopyFrom(from);
    return *this;
  }
  inline t_tile_data& operator=(t_tile_data&& from) noexcept {
    if (GetArena() == from.GetArena()) {
      if (this != &from) InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

  static const t_tile_data& default_instance() {
    return *internal_default_instance();
  }
  static inline const t_tile_data* internal_default_instance() {
    return reinterpret_cast<const t_tile_data*>(
               &_t_tile_data_default_instance_);
  }
  static constexpr int kIndexInFileMessages =
    5;

  friend void swap(t_tile_data& a, t_tile_data& b) {
    a.Swap(&b);
  }
  inline void Swap(t_tile_data* other) {
    if (other == this) return;
    if (GetArena() == other->GetArena()) {
      InternalSwap(other);
    } else {
      ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other);
    }
  }
  void UnsafeArenaSwap(t_tile_data* other) {
    if (other == this) return;
    GOOGLE_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

  // implements Message ----------------------------------------------

  inline t_tile_data* New() const final {
    return CreateMaybeMessage<t_tile_data>(nullptr);
  }

  t_tile_data* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final {
    return CreateMaybeMessage<t_tile_data>(arena);
  }
  void CheckTypeAndMergeFrom(const ::PROTOBUF_NAMESPACE_ID::MessageLite& from)
    final;
  void CopyFrom(const t_tile_data& from);
  void MergeFrom(const t_tile_data& from);
  PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final;
  bool IsInitialized() const final;

  size_t ByteSizeLong() const final;
  const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final;
  ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize(
      ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final;
  void DiscardUnknownFields();
  int GetCachedSize() const final { return _cached_size_.Get(); }

  private:
  inline void SharedCtor();
  inline void SharedDtor();
  void SetCachedSize(int size) const;
  void InternalSwap(t_tile_data* other);
  friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata;
  static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() {
    return "t_tile_data";
  }
  protected:
  explicit t_tile_data(::PROTOBUF_NAMESPACE_ID::Arena* arena);
  private:
  static void ArenaDtor(void* object);
  inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena);
  public:

  std::string GetTypeName() const final;

  // nested types ----------------------------------------------------

  // accessors -------------------------------------------------------

  enum : int {
    kTypeFieldNumber = 1,
    kSubtypeFieldNumber = 2,
    kIdFieldNumber = 3,
    kZvFieldNumber = 4,
    kWeightFieldNumber = 5,
  };
  // int32 type = 1;
  bool has_type() const;
  private:
  bool _internal_has_type() const;
  public:
  void clear_type();
  ::PROTOBUF_NAMESPACE_ID::int32 type() const;
  void set_type(::PROTOBUF_NAMESPACE_ID::int32 value);
  private:
  ::PROTOBUF_NAMESPACE_ID::int32 _internal_type() const;
  void _internal_set_type(::PROTOBUF_NAMESPACE_ID::int32 value);
  public:

  // int32 subtype = 2;
  bool has_subtype() const;
  private:
  bool _internal_has_subtype() const;
  public:
  void clear_subtype();
  ::PROTOBUF_NAMESPACE_ID::int32 subtype() const;
  void set_subtype(::PROTOBUF_NAMESPACE_ID::int32 value);
  private:
  ::PROTOBUF_NAMESPACE_ID::int32 _internal_subtype() const;
  void _internal_set_subtype(::PROTOBUF_NAMESPACE_ID::int32 value);
  public:

  // int32 id = 3;
  bool has_id() const;
  private:
  bool _internal_has_id() const;
  public:
  void clear_id();
  ::PROTOBUF_NAMESPACE_ID::int32 id() const;
  void set_id(::PROTOBUF_NAMESPACE_ID::int32 value);
  private:
  ::PROTOBUF_NAMESPACE_ID::int32 _internal_id() const;
  void _internal_set_id(::PROTOBUF_NAMESPACE_ID::int32 value);
  public:

  // int32 zv = 4;
  bool has_zv() const;
  private:
  bool _internal_has_zv() const;
  public:
  void clear_zv();
  ::PROTOBUF_NAMESPACE_ID::int32 zv() const;
  void set_zv(::PROTOBUF_NAMESPACE_ID::int32 value);
  private:
  ::PROTOBUF_NAMESPACE_ID::int32 _internal_zv() const;
  void _internal_set_zv(::PROTOBUF_NAMESPACE_ID::int32 value);
  public:

  // int32 weight = 5;
  bool has_weight() const;
  private:
  bool _internal_has_weight() const;
  public:
  void clear_weight();
  ::PROTOBUF_NAMESPACE_ID::int32 weight() const;
  void set_weight(::PROTOBUF_NAMESPACE_ID::int32 value);
  private:
  ::PROTOBUF_NAMESPACE_ID::int32 _internal_weight() const;
  void _internal_set_weight(::PROTOBUF_NAMESPACE_ID::int32 value);
  public:

  // @@protoc_insertion_point(class_scope:t_tile_data)
 private:
  class _Internal;

  template <typename T> friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper;
  typedef void InternalArenaConstructable_;
  typedef void DestructorSkippable_;
  ::PROTOBUF_NAMESPACE_ID::internal::HasBits<1> _has_bits_;
  mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_;
  ::PROTOBUF_NAMESPACE_ID::int32 type_;
  ::PROTOBUF_NAMESPACE_ID::int32 subtype_;
  ::PROTOBUF_NAMESPACE_ID::int32 id_;
  ::PROTOBUF_NAMESPACE_ID::int32 zv_;
  ::PROTOBUF_NAMESPACE_ID::int32 weight_;
  friend struct ::TableStruct_levelData_2eproto;
};
// -------------------------------------------------------------------

class t_stack PROTOBUF_FINAL :
    public ::PROTOBUF_NAMESPACE_ID::MessageLite /* @@protoc_insertion_point(class_definition:t_stack) */ {
 public:
  inline t_stack() : t_stack(nullptr) {}
  virtual ~t_stack();
  explicit constexpr t_stack(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized);

  t_stack(const t_stack& from);
  t_stack(t_stack&& from) noexcept
    : t_stack() {
    *this = ::std::move(from);
  }

  inline t_stack& operator=(const t_stack& from) {
    CopyFrom(from);
    return *this;
  }
  inline t_stack& operator=(t_stack&& from) noexcept {
    if (GetArena() == from.GetArena()) {
      if (this != &from) InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

  static const t_stack& default_instance() {
    return *internal_default_instance();
  }
  static inline const t_stack* internal_default_instance() {
    return reinterpret_cast<const t_stack*>(
               &_t_stack_default_instance_);
  }
  static constexpr int kIndexInFileMessages =
    6;

  friend void swap(t_stack& a, t_stack& b) {
    a.Swap(&b);
  }
  inline void Swap(t_stack* other) {
    if (other == this) return;
    if (GetArena() == other->GetArena()) {
      InternalSwap(other);
    } else {
      ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other);
    }
  }
  void UnsafeArenaSwap(t_stack* other) {
    if (other == this) return;
    GOOGLE_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

  // implements Message ----------------------------------------------

  inline t_stack* New() const final {
    return CreateMaybeMessage<t_stack>(nullptr);
  }

  t_stack* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final {
    return CreateMaybeMessage<t_stack>(arena);
  }
  void CheckTypeAndMergeFrom(const ::PROTOBUF_NAMESPACE_ID::MessageLite& from)
    final;
  void CopyFrom(const t_stack& from);
  void MergeFrom(const t_stack& from);
  PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final;
  bool IsInitialized() const final;

  size_t ByteSizeLong() const final;
  const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final;
  ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize(
      ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final;
  void DiscardUnknownFields();
  int GetCachedSize() const final { return _cached_size_.Get(); }

  private:
  inline void SharedCtor();
  inline void SharedDtor();
  void SetCachedSize(int size) const;
  void InternalSwap(t_stack* other);
  friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata;
  static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() {
    return "t_stack";
  }
  protected:
  explicit t_stack(::PROTOBUF_NAMESPACE_ID::Arena* arena);
  private:
  static void ArenaDtor(void* object);
  inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena);
  public:

  std::string GetTypeName() const final;

  // nested types ----------------------------------------------------

  // accessors -------------------------------------------------------

  enum : int {
    kTileDatasFieldNumber = 1,
    kXFieldNumber = 2,
    kYFieldNumber = 3,
    kDirectionFieldNumber = 4,
    kDepthFieldNumber = 5,
  };
  // repeated .t_tile_data tileDatas = 1;
  int tiledatas_size() const;
  private:
  int _internal_tiledatas_size() const;
  public:
  void clear_tiledatas();
  ::t_tile_data* mutable_tiledatas(int index);
  ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::t_tile_data >*
      mutable_tiledatas();
  private:
  const ::t_tile_data& _internal_tiledatas(int index) const;
  ::t_tile_data* _internal_add_tiledatas();
  public:
  const ::t_tile_data& tiledatas(int index) const;
  ::t_tile_data* add_tiledatas();
  const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::t_tile_data >&
      tiledatas() const;

  // int32 x = 2;
  bool has_x() const;
  private:
  bool _internal_has_x() const;
  public:
  void clear_x();
  ::PROTOBUF_NAMESPACE_ID::int32 x() const;
  void set_x(::PROTOBUF_NAMESPACE_ID::int32 value);
  private:
  ::PROTOBUF_NAMESPACE_ID::int32 _internal_x() const;
  void _internal_set_x(::PROTOBUF_NAMESPACE_ID::int32 value);
  public:

  // int32 y = 3;
  bool has_y() const;
  private:
  bool _internal_has_y() const;
  public:
  void clear_y();
  ::PROTOBUF_NAMESPACE_ID::int32 y() const;
  void set_y(::PROTOBUF_NAMESPACE_ID::int32 value);
  private:
  ::PROTOBUF_NAMESPACE_ID::int32 _internal_y() const;
  void _internal_set_y(::PROTOBUF_NAMESPACE_ID::int32 value);
  public:

  // int32 direction = 4;
  bool has_direction() const;
  private:
  bool _internal_has_direction() const;
  public:
  void clear_direction();
  ::PROTOBUF_NAMESPACE_ID::int32 direction() const;
  void set_direction(::PROTOBUF_NAMESPACE_ID::int32 value);
  private:
  ::PROTOBUF_NAMESPACE_ID::int32 _internal_direction() const;
  void _internal_set_direction(::PROTOBUF_NAMESPACE_ID::int32 value);
  public:

  // int32 depth = 5;
  bool has_depth() const;
  private:
  bool _internal_has_depth() const;
  public:
  void clear_depth();
  ::PROTOBUF_NAMESPACE_ID::int32 depth() const;
  void set_depth(::PROTOBUF_NAMESPACE_ID::int32 value);
  private:
  ::PROTOBUF_NAMESPACE_ID::int32 _internal_depth() const;
  void _internal_set_depth(::PROTOBUF_NAMESPACE_ID::int32 value);
  public:

  // @@protoc_insertion_point(class_scope:t_stack)
 private:
  class _Internal;

  template <typename T> friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper;
  typedef void InternalArenaConstructable_;
  typedef void DestructorSkippable_;
  ::PROTOBUF_NAMESPACE_ID::internal::HasBits<1> _has_bits_;
  mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_;
  ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::t_tile_data > tiledatas_;
  ::PROTOBUF_NAMESPACE_ID::int32 x_;
  ::PROTOBUF_NAMESPACE_ID::int32 y_;
  ::PROTOBUF_NAMESPACE_ID::int32 direction_;
  ::PROTOBUF_NAMESPACE_ID::int32 depth_;
  friend struct ::TableStruct_levelData_2eproto;
};
// ===================================================================


// ===================================================================

#ifdef __GNUC__
  #pragma GCC diagnostic push
  #pragma GCC diagnostic ignored "-Wstrict-aliasing"
#endif  // __GNUC__
// -------------------------------------------------------------------

// LevelsIndex

// map<string, .t_offeset_len> LevelsIndex = 1;
inline int LevelsIndex::_internal_levelsindex_size() const {
  return levelsindex_.size();
}
inline int LevelsIndex::levelsindex_size() const {
  return _internal_levelsindex_size();
}
inline void LevelsIndex::clear_levelsindex() {
  levelsindex_.Clear();
}
inline const ::PROTOBUF_NAMESPACE_ID::Map< std::string, ::t_offeset_len >&
LevelsIndex::_internal_levelsindex() const {
  return levelsindex_.GetMap();
}
inline const ::PROTOBUF_NAMESPACE_ID::Map< std::string, ::t_offeset_len >&
LevelsIndex::levelsindex() const {
  // @@protoc_insertion_point(field_map:LevelsIndex.LevelsIndex)
  return _internal_levelsindex();
}
inline ::PROTOBUF_NAMESPACE_ID::Map< std::string, ::t_offeset_len >*
LevelsIndex::_internal_mutable_levelsindex() {
  return levelsindex_.MutableMap();
}
inline ::PROTOBUF_NAMESPACE_ID::Map< std::string, ::t_offeset_len >*
LevelsIndex::mutable_levelsindex() {
  // @@protoc_insertion_point(field_mutable_map:LevelsIndex.LevelsIndex)
  return _internal_mutable_levelsindex();
}

// -------------------------------------------------------------------

// t_offeset_len

// int32 offset = 1;
inline void t_offeset_len::clear_offset() {
  offset_ = 0;
}
inline ::PROTOBUF_NAMESPACE_ID::int32 t_offeset_len::_internal_offset() const {
  return offset_;
}
inline ::PROTOBUF_NAMESPACE_ID::int32 t_offeset_len::offset() const {
  // @@protoc_insertion_point(field_get:t_offeset_len.offset)
  return _internal_offset();
}
inline void t_offeset_len::_internal_set_offset(::PROTOBUF_NAMESPACE_ID::int32 value) {
  
  offset_ = value;
}
inline void t_offeset_len::set_offset(::PROTOBUF_NAMESPACE_ID::int32 value) {
  _internal_set_offset(value);
  // @@protoc_insertion_point(field_set:t_offeset_len.offset)
}

// int32 len = 2;
inline void t_offeset_len::clear_len() {
  len_ = 0;
}
inline ::PROTOBUF_NAMESPACE_ID::int32 t_offeset_len::_internal_len() const {
  return len_;
}
inline ::PROTOBUF_NAMESPACE_ID::int32 t_offeset_len::len() const {
  // @@protoc_insertion_point(field_get:t_offeset_len.len)
  return _internal_len();
}
inline void t_offeset_len::_internal_set_len(::PROTOBUF_NAMESPACE_ID::int32 value) {
  
  len_ = value;
}
inline void t_offeset_len::set_len(::PROTOBUF_NAMESPACE_ID::int32 value) {
  _internal_set_len(value);
  // @@protoc_insertion_point(field_set:t_offeset_len.len)
}

// -------------------------------------------------------------------

// LevelData

// repeated .t_tile tiles = 1;
inline int LevelData::_internal_tiles_size() const {
  return tiles_.size();
}
inline int LevelData::tiles_size() const {
  return _internal_tiles_size();
}
inline void LevelData::clear_tiles() {
  tiles_.Clear();
}
inline ::t_tile* LevelData::mutable_tiles(int index) {
  // @@protoc_insertion_point(field_mutable:LevelData.tiles)
  return tiles_.Mutable(index);
}
inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::t_tile >*
LevelData::mutable_tiles() {
  // @@protoc_insertion_point(field_mutable_list:LevelData.tiles)
  return &tiles_;
}
inline const ::t_tile& LevelData::_internal_tiles(int index) const {
  return tiles_.Get(index);
}
inline const ::t_tile& LevelData::tiles(int index) const {
  // @@protoc_insertion_point(field_get:LevelData.tiles)
  return _internal_tiles(index);
}
inline ::t_tile* LevelData::_internal_add_tiles() {
  return tiles_.Add();
}
inline ::t_tile* LevelData::add_tiles() {
  // @@protoc_insertion_point(field_add:LevelData.tiles)
  return _internal_add_tiles();
}
inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::t_tile >&
LevelData::tiles() const {
  // @@protoc_insertion_point(field_list:LevelData.tiles)
  return tiles_;
}

// repeated .t_stack stacks = 2;
inline int LevelData::_internal_stacks_size() const {
  return stacks_.size();
}
inline int LevelData::stacks_size() const {
  return _internal_stacks_size();
}
inline void LevelData::clear_stacks() {
  stacks_.Clear();
}
inline ::t_stack* LevelData::mutable_stacks(int index) {
  // @@protoc_insertion_point(field_mutable:LevelData.stacks)
  return stacks_.Mutable(index);
}
inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::t_stack >*
LevelData::mutable_stacks() {
  // @@protoc_insertion_point(field_mutable_list:LevelData.stacks)
  return &stacks_;
}
inline const ::t_stack& LevelData::_internal_stacks(int index) const {
  return stacks_.Get(index);
}
inline const ::t_stack& LevelData::stacks(int index) const {
  // @@protoc_insertion_point(field_get:LevelData.stacks)
  return _internal_stacks(index);
}
inline ::t_stack* LevelData::_internal_add_stacks() {
  return stacks_.Add();
}
inline ::t_stack* LevelData::add_stacks() {
  // @@protoc_insertion_point(field_add:LevelData.stacks)
  return _internal_add_stacks();
}
inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::t_stack >&
LevelData::stacks() const {
  // @@protoc_insertion_point(field_list:LevelData.stacks)
  return stacks_;
}

// int32 tileWidth = 3;
inline bool LevelData::_internal_has_tilewidth() const {
  bool value = (_has_bits_[0] & 0x00000001u) != 0;
  return value;
}
inline bool LevelData::has_tilewidth() const {
  return _internal_has_tilewidth();
}
inline void LevelData::clear_tilewidth() {
  tilewidth_ = 0;
  _has_bits_[0] &= ~0x00000001u;
}
inline ::PROTOBUF_NAMESPACE_ID::int32 LevelData::_internal_tilewidth() const {
  return tilewidth_;
}
inline ::PROTOBUF_NAMESPACE_ID::int32 LevelData::tilewidth() const {
  // @@protoc_insertion_point(field_get:LevelData.tileWidth)
  return _internal_tilewidth();
}
inline void LevelData::_internal_set_tilewidth(::PROTOBUF_NAMESPACE_ID::int32 value) {
  _has_bits_[0] |= 0x00000001u;
  tilewidth_ = value;
}
inline void LevelData::set_tilewidth(::PROTOBUF_NAMESPACE_ID::int32 value) {
  _internal_set_tilewidth(value);
  // @@protoc_insertion_point(field_set:LevelData.tileWidth)
}

// int32 tileHeight = 4;
inline bool LevelData::_internal_has_tileheight() const {
  bool value = (_has_bits_[0] & 0x00000002u) != 0;
  return value;
}
inline bool LevelData::has_tileheight() const {
  return _internal_has_tileheight();
}
inline void LevelData::clear_tileheight() {
  tileheight_ = 0;
  _has_bits_[0] &= ~0x00000002u;
}
inline ::PROTOBUF_NAMESPACE_ID::int32 LevelData::_internal_tileheight() const {
  return tileheight_;
}
inline ::PROTOBUF_NAMESPACE_ID::int32 LevelData::tileheight() const {
  // @@protoc_insertion_point(field_get:LevelData.tileHeight)
  return _internal_tileheight();
}
inline void LevelData::_internal_set_tileheight(::PROTOBUF_NAMESPACE_ID::int32 value) {
  _has_bits_[0] |= 0x00000002u;
  tileheight_ = value;
}
inline void LevelData::set_tileheight(::PROTOBUF_NAMESPACE_ID::int32 value) {
  _internal_set_tileheight(value);
  // @@protoc_insertion_point(field_set:LevelData.tileHeight)
}

// -------------------------------------------------------------------

// t_tile

// int32 x = 1;
inline bool t_tile::_internal_has_x() const {
  bool value = (_has_bits_[0] & 0x00000002u) != 0;
  return value;
}
inline bool t_tile::has_x() const {
  return _internal_has_x();
}
inline void t_tile::clear_x() {
  x_ = 0;
  _has_bits_[0] &= ~0x00000002u;
}
inline ::PROTOBUF_NAMESPACE_ID::int32 t_tile::_internal_x() const {
  return x_;
}
inline ::PROTOBUF_NAMESPACE_ID::int32 t_tile::x() const {
  // @@protoc_insertion_point(field_get:t_tile.x)
  return _internal_x();
}
inline void t_tile::_internal_set_x(::PROTOBUF_NAMESPACE_ID::int32 value) {
  _has_bits_[0] |= 0x00000002u;
  x_ = value;
}
inline void t_tile::set_x(::PROTOBUF_NAMESPACE_ID::int32 value) {
  _internal_set_x(value);
  // @@protoc_insertion_point(field_set:t_tile.x)
}

// int32 y = 2;
inline bool t_tile::_internal_has_y() const {
  bool value = (_has_bits_[0] & 0x00000004u) != 0;
  return value;
}
inline bool t_tile::has_y() const {
  return _internal_has_y();
}
inline void t_tile::clear_y() {
  y_ = 0;
  _has_bits_[0] &= ~0x00000004u;
}
inline ::PROTOBUF_NAMESPACE_ID::int32 t_tile::_internal_y() const {
  return y_;
}
inline ::PROTOBUF_NAMESPACE_ID::int32 t_tile::y() const {
  // @@protoc_insertion_point(field_get:t_tile.y)
  return _internal_y();
}
inline void t_tile::_internal_set_y(::PROTOBUF_NAMESPACE_ID::int32 value) {
  _has_bits_[0] |= 0x00000004u;
  y_ = value;
}
inline void t_tile::set_y(::PROTOBUF_NAMESPACE_ID::int32 value) {
  _internal_set_y(value);
  // @@protoc_insertion_point(field_set:t_tile.y)
}

// int32 z = 3;
inline bool t_tile::_internal_has_z() const {
  bool value = (_has_bits_[0] & 0x00000008u) != 0;
  return value;
}
inline bool t_tile::has_z() const {
  return _internal_has_z();
}
inline void t_tile::clear_z() {
  z_ = 0;
  _has_bits_[0] &= ~0x00000008u;
}
inline ::PROTOBUF_NAMESPACE_ID::int32 t_tile::_internal_z() const {
  return z_;
}
inline ::PROTOBUF_NAMESPACE_ID::int32 t_tile::z() const {
  // @@protoc_insertion_point(field_get:t_tile.z)
  return _internal_z();
}
inline void t_tile::_internal_set_z(::PROTOBUF_NAMESPACE_ID::int32 value) {
  _has_bits_[0] |= 0x00000008u;
  z_ = value;
}
inline void t_tile::set_z(::PROTOBUF_NAMESPACE_ID::int32 value) {
  _internal_set_z(value);
  // @@protoc_insertion_point(field_set:t_tile.z)
}

// .t_tile_data tileData = 4;
inline bool t_tile::_internal_has_tiledata() const {
  bool value = (_has_bits_[0] & 0x00000001u) != 0;
  PROTOBUF_ASSUME(!value || tiledata_ != nullptr);
  return value;
}
inline bool t_tile::has_tiledata() const {
  return _internal_has_tiledata();
}
inline void t_tile::clear_tiledata() {
  if (GetArena() == nullptr && tiledata_ != nullptr) {
    delete tiledata_;
  }
  tiledata_ = nullptr;
  _has_bits_[0] &= ~0x00000001u;
}
inline const ::t_tile_data& t_tile::_internal_tiledata() const {
  const ::t_tile_data* p = tiledata_;
  return p != nullptr ? *p : reinterpret_cast<const ::t_tile_data&>(
      ::_t_tile_data_default_instance_);
}
inline const ::t_tile_data& t_tile::tiledata() const {
  // @@protoc_insertion_point(field_get:t_tile.tileData)
  return _internal_tiledata();
}
inline void t_tile::unsafe_arena_set_allocated_tiledata(
    ::t_tile_data* tiledata) {
  if (GetArena() == nullptr) {
    delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(tiledata_);
  }
  tiledata_ = tiledata;
  if (tiledata) {
    _has_bits_[0] |= 0x00000001u;
  } else {
    _has_bits_[0] &= ~0x00000001u;
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:t_tile.tileData)
}
inline ::t_tile_data* t_tile::release_tiledata() {
  _has_bits_[0] &= ~0x00000001u;
  ::t_tile_data* temp = tiledata_;
  tiledata_ = nullptr;
  if (GetArena() != nullptr) {
    temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp);
  }
  return temp;
}
inline ::t_tile_data* t_tile::unsafe_arena_release_tiledata() {
  // @@protoc_insertion_point(field_release:t_tile.tileData)
  _has_bits_[0] &= ~0x00000001u;
  ::t_tile_data* temp = tiledata_;
  tiledata_ = nullptr;
  return temp;
}
inline ::t_tile_data* t_tile::_internal_mutable_tiledata() {
  _has_bits_[0] |= 0x00000001u;
  if (tiledata_ == nullptr) {
    auto* p = CreateMaybeMessage<::t_tile_data>(GetArena());
    tiledata_ = p;
  }
  return tiledata_;
}
inline ::t_tile_data* t_tile::mutable_tiledata() {
  // @@protoc_insertion_point(field_mutable:t_tile.tileData)
  return _internal_mutable_tiledata();
}
inline void t_tile::set_allocated_tiledata(::t_tile_data* tiledata) {
  ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena();
  if (message_arena == nullptr) {
    delete tiledata_;
  }
  if (tiledata) {
    ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena =
      ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(tiledata);
    if (message_arena != submessage_arena) {
      tiledata = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage(
          message_arena, tiledata, submessage_arena);
    }
    _has_bits_[0] |= 0x00000001u;
  } else {
    _has_bits_[0] &= ~0x00000001u;
  }
  tiledata_ = tiledata;
  // @@protoc_insertion_point(field_set_allocated:t_tile.tileData)
}

// -------------------------------------------------------------------

// t_tile_data

// int32 type = 1;
inline bool t_tile_data::_internal_has_type() const {
  bool value = (_has_bits_[0] & 0x00000001u) != 0;
  return value;
}
inline bool t_tile_data::has_type() const {
  return _internal_has_type();
}
inline void t_tile_data::clear_type() {
  type_ = 0;
  _has_bits_[0] &= ~0x00000001u;
}
inline ::PROTOBUF_NAMESPACE_ID::int32 t_tile_data::_internal_type() const {
  return type_;
}
inline ::PROTOBUF_NAMESPACE_ID::int32 t_tile_data::type() const {
  // @@protoc_insertion_point(field_get:t_tile_data.type)
  return _internal_type();
}
inline void t_tile_data::_internal_set_type(::PROTOBUF_NAMESPACE_ID::int32 value) {
  _has_bits_[0] |= 0x00000001u;
  type_ = value;
}
inline void t_tile_data::set_type(::PROTOBUF_NAMESPACE_ID::int32 value) {
  _internal_set_type(value);
  // @@protoc_insertion_point(field_set:t_tile_data.type)
}

// int32 subtype = 2;
inline bool t_tile_data::_internal_has_subtype() const {
  bool value = (_has_bits_[0] & 0x00000002u) != 0;
  return value;
}
inline bool t_tile_data::has_subtype() const {
  return _internal_has_subtype();
}
inline void t_tile_data::clear_subtype() {
  subtype_ = 0;
  _has_bits_[0] &= ~0x00000002u;
}
inline ::PROTOBUF_NAMESPACE_ID::int32 t_tile_data::_internal_subtype() const {
  return subtype_;
}
inline ::PROTOBUF_NAMESPACE_ID::int32 t_tile_data::subtype() const {
  // @@protoc_insertion_point(field_get:t_tile_data.subtype)
  return _internal_subtype();
}
inline void t_tile_data::_internal_set_subtype(::PROTOBUF_NAMESPACE_ID::int32 value) {
  _has_bits_[0] |= 0x00000002u;
  subtype_ = value;
}
inline void t_tile_data::set_subtype(::PROTOBUF_NAMESPACE_ID::int32 value) {
  _internal_set_subtype(value);
  // @@protoc_insertion_point(field_set:t_tile_data.subtype)
}

// int32 id = 3;
inline bool t_tile_data::_internal_has_id() const {
  bool value = (_has_bits_[0] & 0x00000004u) != 0;
  return value;
}
inline bool t_tile_data::has_id() const {
  return _internal_has_id();
}
inline void t_tile_data::clear_id() {
  id_ = 0;
  _has_bits_[0] &= ~0x00000004u;
}
inline ::PROTOBUF_NAMESPACE_ID::int32 t_tile_data::_internal_id() const {
  return id_;
}
inline ::PROTOBUF_NAMESPACE_ID::int32 t_tile_data::id() const {
  // @@protoc_insertion_point(field_get:t_tile_data.id)
  return _internal_id();
}
inline void t_tile_data::_internal_set_id(::PROTOBUF_NAMESPACE_ID::int32 value) {
  _has_bits_[0] |= 0x00000004u;
  id_ = value;
}
inline void t_tile_data::set_id(::PROTOBUF_NAMESPACE_ID::int32 value) {
  _internal_set_id(value);
  // @@protoc_insertion_point(field_set:t_tile_data.id)
}

// int32 zv = 4;
inline bool t_tile_data::_internal_has_zv() const {
  bool value = (_has_bits_[0] & 0x00000008u) != 0;
  return value;
}
inline bool t_tile_data::has_zv() const {
  return _internal_has_zv();
}
inline void t_tile_data::clear_zv() {
  zv_ = 0;
  _has_bits_[0] &= ~0x00000008u;
}
inline ::PROTOBUF_NAMESPACE_ID::int32 t_tile_data::_internal_zv() const {
  return zv_;
}
inline ::PROTOBUF_NAMESPACE_ID::int32 t_tile_data::zv() const {
  // @@protoc_insertion_point(field_get:t_tile_data.zv)
  return _internal_zv();
}
inline void t_tile_data::_internal_set_zv(::PROTOBUF_NAMESPACE_ID::int32 value) {
  _has_bits_[0] |= 0x00000008u;
  zv_ = value;
}
inline void t_tile_data::set_zv(::PROTOBUF_NAMESPACE_ID::int32 value) {
  _internal_set_zv(value);
  // @@protoc_insertion_point(field_set:t_tile_data.zv)
}

// int32 weight = 5;
inline bool t_tile_data::_internal_has_weight() const {
  bool value = (_has_bits_[0] & 0x00000010u) != 0;
  return value;
}
inline bool t_tile_data::has_weight() const {
  return _internal_has_weight();
}
inline void t_tile_data::clear_weight() {
  weight_ = 0;
  _has_bits_[0] &= ~0x00000010u;
}
inline ::PROTOBUF_NAMESPACE_ID::int32 t_tile_data::_internal_weight() const {
  return weight_;
}
inline ::PROTOBUF_NAMESPACE_ID::int32 t_tile_data::weight() const {
  // @@protoc_insertion_point(field_get:t_tile_data.weight)
  return _internal_weight();
}
inline void t_tile_data::_internal_set_weight(::PROTOBUF_NAMESPACE_ID::int32 value) {
  _has_bits_[0] |= 0x00000010u;
  weight_ = value;
}
inline void t_tile_data::set_weight(::PROTOBUF_NAMESPACE_ID::int32 value) {
  _internal_set_weight(value);
  // @@protoc_insertion_point(field_set:t_tile_data.weight)
}

// -------------------------------------------------------------------

// t_stack

// repeated .t_tile_data tileDatas = 1;
inline int t_stack::_internal_tiledatas_size() const {
  return tiledatas_.size();
}
inline int t_stack::tiledatas_size() const {
  return _internal_tiledatas_size();
}
inline void t_stack::clear_tiledatas() {
  tiledatas_.Clear();
}
inline ::t_tile_data* t_stack::mutable_tiledatas(int index) {
  // @@protoc_insertion_point(field_mutable:t_stack.tileDatas)
  return tiledatas_.Mutable(index);
}
inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::t_tile_data >*
t_stack::mutable_tiledatas() {
  // @@protoc_insertion_point(field_mutable_list:t_stack.tileDatas)
  return &tiledatas_;
}
inline const ::t_tile_data& t_stack::_internal_tiledatas(int index) const {
  return tiledatas_.Get(index);
}
inline const ::t_tile_data& t_stack::tiledatas(int index) const {
  // @@protoc_insertion_point(field_get:t_stack.tileDatas)
  return _internal_tiledatas(index);
}
inline ::t_tile_data* t_stack::_internal_add_tiledatas() {
  return tiledatas_.Add();
}
inline ::t_tile_data* t_stack::add_tiledatas() {
  // @@protoc_insertion_point(field_add:t_stack.tileDatas)
  return _internal_add_tiledatas();
}
inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::t_tile_data >&
t_stack::tiledatas() const {
  // @@protoc_insertion_point(field_list:t_stack.tileDatas)
  return tiledatas_;
}

// int32 x = 2;
inline bool t_stack::_internal_has_x() const {
  bool value = (_has_bits_[0] & 0x00000001u) != 0;
  return value;
}
inline bool t_stack::has_x() const {
  return _internal_has_x();
}
inline void t_stack::clear_x() {
  x_ = 0;
  _has_bits_[0] &= ~0x00000001u;
}
inline ::PROTOBUF_NAMESPACE_ID::int32 t_stack::_internal_x() const {
  return x_;
}
inline ::PROTOBUF_NAMESPACE_ID::int32 t_stack::x() const {
  // @@protoc_insertion_point(field_get:t_stack.x)
  return _internal_x();
}
inline void t_stack::_internal_set_x(::PROTOBUF_NAMESPACE_ID::int32 value) {
  _has_bits_[0] |= 0x00000001u;
  x_ = value;
}
inline void t_stack::set_x(::PROTOBUF_NAMESPACE_ID::int32 value) {
  _internal_set_x(value);
  // @@protoc_insertion_point(field_set:t_stack.x)
}

// int32 y = 3;
inline bool t_stack::_internal_has_y() const {
  bool value = (_has_bits_[0] & 0x00000002u) != 0;
  return value;
}
inline bool t_stack::has_y() const {
  return _internal_has_y();
}
inline void t_stack::clear_y() {
  y_ = 0;
  _has_bits_[0] &= ~0x00000002u;
}
inline ::PROTOBUF_NAMESPACE_ID::int32 t_stack::_internal_y() const {
  return y_;
}
inline ::PROTOBUF_NAMESPACE_ID::int32 t_stack::y() const {
  // @@protoc_insertion_point(field_get:t_stack.y)
  return _internal_y();
}
inline void t_stack::_internal_set_y(::PROTOBUF_NAMESPACE_ID::int32 value) {
  _has_bits_[0] |= 0x00000002u;
  y_ = value;
}
inline void t_stack::set_y(::PROTOBUF_NAMESPACE_ID::int32 value) {
  _internal_set_y(value);
  // @@protoc_insertion_point(field_set:t_stack.y)
}

// int32 direction = 4;
inline bool t_stack::_internal_has_direction() const {
  bool value = (_has_bits_[0] & 0x00000004u) != 0;
  return value;
}
inline bool t_stack::has_direction() const {
  return _internal_has_direction();
}
inline void t_stack::clear_direction() {
  direction_ = 0;
  _has_bits_[0] &= ~0x00000004u;
}
inline ::PROTOBUF_NAMESPACE_ID::int32 t_stack::_internal_direction() const {
  return direction_;
}
inline ::PROTOBUF_NAMESPACE_ID::int32 t_stack::direction() const {
  // @@protoc_insertion_point(field_get:t_stack.direction)
  return _internal_direction();
}
inline void t_stack::_internal_set_direction(::PROTOBUF_NAMESPACE_ID::int32 value) {
  _has_bits_[0] |= 0x00000004u;
  direction_ = value;
}
inline void t_stack::set_direction(::PROTOBUF_NAMESPACE_ID::int32 value) {
  _internal_set_direction(value);
  // @@protoc_insertion_point(field_set:t_stack.direction)
}

// int32 depth = 5;
inline bool t_stack::_internal_has_depth() const {
  bool value = (_has_bits_[0] & 0x00000008u) != 0;
  return value;
}
inline bool t_stack::has_depth() const {
  return _internal_has_depth();
}
inline void t_stack::clear_depth() {
  depth_ = 0;
  _has_bits_[0] &= ~0x00000008u;
}
inline ::PROTOBUF_NAMESPACE_ID::int32 t_stack::_internal_depth() const {
  return depth_;
}
inline ::PROTOBUF_NAMESPACE_ID::int32 t_stack::depth() const {
  // @@protoc_insertion_point(field_get:t_stack.depth)
  return _internal_depth();
}
inline void t_stack::_internal_set_depth(::PROTOBUF_NAMESPACE_ID::int32 value) {
  _has_bits_[0] |= 0x00000008u;
  depth_ = value;
}
inline void t_stack::set_depth(::PROTOBUF_NAMESPACE_ID::int32 value) {
  _internal_set_depth(value);
  // @@protoc_insertion_point(field_set:t_stack.depth)
}

#ifdef __GNUC__
  #pragma GCC diagnostic pop
#endif  // __GNUC__
// -------------------------------------------------------------------

// -------------------------------------------------------------------

// -------------------------------------------------------------------

// -------------------------------------------------------------------

// -------------------------------------------------------------------

// -------------------------------------------------------------------


// @@protoc_insertion_point(namespace_scope)


// @@protoc_insertion_point(global_scope)

#include <google/protobuf/port_undef.inc>
#endif  // GOOGLE_PROTOBUF_INCLUDED_GOOGLE_PROTOBUF_INCLUDED_levelData_2eproto
