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

package pb.xiugou.x1.protobuf.battle;

public final class Battle {
  private Battle() {}
  public static void registerAllExtensions(
      com.google.protobuf.ExtensionRegistryLite registry) {
  }

  public static void registerAllExtensions(
      com.google.protobuf.ExtensionRegistry registry) {
    registerAllExtensions(
        (com.google.protobuf.ExtensionRegistryLite) registry);
  }
  /**
   * Protobuf enum {@code pb.PbSpriteType}
   */
  public enum PbSpriteType
      implements com.google.protobuf.ProtocolMessageEnum {
    /**
     * <code>UNKNOWN_SPRITE_TYPE = 0;</code>
     */
    UNKNOWN_SPRITE_TYPE(0),
    /**
     * <code>HERO = 1;</code>
     */
    HERO(1),
    /**
     * <code>MONSTER = 2;</code>
     */
    MONSTER(2),
    UNRECOGNIZED(-1),
    ;

    /**
     * <code>UNKNOWN_SPRITE_TYPE = 0;</code>
     */
    public static final int UNKNOWN_SPRITE_TYPE_VALUE = 0;
    /**
     * <code>HERO = 1;</code>
     */
    public static final int HERO_VALUE = 1;
    /**
     * <code>MONSTER = 2;</code>
     */
    public static final int MONSTER_VALUE = 2;


    public final int getNumber() {
      if (this == UNRECOGNIZED) {
        throw new java.lang.IllegalArgumentException(
            "Can't get the number of an unknown enum value.");
      }
      return value;
    }

    /**
     * @param value The numeric wire value of the corresponding enum entry.
     * @return The enum associated with the given numeric wire value.
     * @deprecated Use {@link #forNumber(int)} instead.
     */
    @java.lang.Deprecated
    public static PbSpriteType valueOf(int value) {
      return forNumber(value);
    }

    /**
     * @param value The numeric wire value of the corresponding enum entry.
     * @return The enum associated with the given numeric wire value.
     */
    public static PbSpriteType forNumber(int value) {
      switch (value) {
        case 0: return UNKNOWN_SPRITE_TYPE;
        case 1: return HERO;
        case 2: return MONSTER;
        default: return null;
      }
    }

    public static com.google.protobuf.Internal.EnumLiteMap<PbSpriteType>
        internalGetValueMap() {
      return internalValueMap;
    }
    private static final com.google.protobuf.Internal.EnumLiteMap<
        PbSpriteType> internalValueMap =
          new com.google.protobuf.Internal.EnumLiteMap<PbSpriteType>() {
            public PbSpriteType findValueByNumber(int number) {
              return PbSpriteType.forNumber(number);
            }
          };

    public final com.google.protobuf.Descriptors.EnumValueDescriptor
        getValueDescriptor() {
      return getDescriptor().getValues().get(ordinal());
    }
    public final com.google.protobuf.Descriptors.EnumDescriptor
        getDescriptorForType() {
      return getDescriptor();
    }
    public static final com.google.protobuf.Descriptors.EnumDescriptor
        getDescriptor() {
      return pb.xiugou.x1.protobuf.battle.Battle.getDescriptor().getEnumTypes().get(0);
    }

    private static final PbSpriteType[] VALUES = values();

    public static PbSpriteType valueOf(
        com.google.protobuf.Descriptors.EnumValueDescriptor desc) {
      if (desc.getType() != getDescriptor()) {
        throw new java.lang.IllegalArgumentException(
          "EnumValueDescriptor is not for this type.");
      }
      if (desc.getIndex() == -1) {
        return UNRECOGNIZED;
      }
      return VALUES[desc.getIndex()];
    }

    private final int value;

    private PbSpriteType(int value) {
      this.value = value;
    }

    // @@protoc_insertion_point(enum_scope:pb.PbSpriteType)
  }

  /**
   * <pre>
   *战斗状态
   * </pre>
   *
   * Protobuf enum {@code pb.PbBattleEndStatus}
   */
  public enum PbBattleEndStatus
      implements com.google.protobuf.ProtocolMessageEnum {
    /**
     * <code>NO_STATUS = 0;</code>
     */
    NO_STATUS(0),
    /**
     * <pre>
     *正在战斗，还有单位存活
     * </pre>
     *
     * <code>BATTLING = 1;</code>
     */
    BATTLING(1),
    /**
     * <pre>
     *等待复活，需弹出复活界面
     * </pre>
     *
     * <code>WAIT_REVIVE = 2;</code>
     */
    WAIT_REVIVE(2),
    /**
     * <pre>
     *攻方全员死亡，但是在露营中
     * </pre>
     *
     * <code>ATK_ALL_DEAD_CAMPING = 3;</code>
     */
    ATK_ALL_DEAD_CAMPING(3),
    /**
     * <pre>
     *守方全员死亡，需要进去下一层
     * </pre>
     *
     * <code>DEF_ALL_DEAD_NEXT = 4;</code>
     */
    DEF_ALL_DEAD_NEXT(4),
    /**
     * <pre>
     *胜利
     * </pre>
     *
     * <code>WIN = 5;</code>
     */
    WIN(5),
    /**
     * <pre>
     *失败
     * </pre>
     *
     * <code>FAIL = 6;</code>
     */
    FAIL(6),
    UNRECOGNIZED(-1),
    ;

    /**
     * <code>NO_STATUS = 0;</code>
     */
    public static final int NO_STATUS_VALUE = 0;
    /**
     * <pre>
     *正在战斗，还有单位存活
     * </pre>
     *
     * <code>BATTLING = 1;</code>
     */
    public static final int BATTLING_VALUE = 1;
    /**
     * <pre>
     *等待复活，需弹出复活界面
     * </pre>
     *
     * <code>WAIT_REVIVE = 2;</code>
     */
    public static final int WAIT_REVIVE_VALUE = 2;
    /**
     * <pre>
     *攻方全员死亡，但是在露营中
     * </pre>
     *
     * <code>ATK_ALL_DEAD_CAMPING = 3;</code>
     */
    public static final int ATK_ALL_DEAD_CAMPING_VALUE = 3;
    /**
     * <pre>
     *守方全员死亡，需要进去下一层
     * </pre>
     *
     * <code>DEF_ALL_DEAD_NEXT = 4;</code>
     */
    public static final int DEF_ALL_DEAD_NEXT_VALUE = 4;
    /**
     * <pre>
     *胜利
     * </pre>
     *
     * <code>WIN = 5;</code>
     */
    public static final int WIN_VALUE = 5;
    /**
     * <pre>
     *失败
     * </pre>
     *
     * <code>FAIL = 6;</code>
     */
    public static final int FAIL_VALUE = 6;


    public final int getNumber() {
      if (this == UNRECOGNIZED) {
        throw new java.lang.IllegalArgumentException(
            "Can't get the number of an unknown enum value.");
      }
      return value;
    }

    /**
     * @param value The numeric wire value of the corresponding enum entry.
     * @return The enum associated with the given numeric wire value.
     * @deprecated Use {@link #forNumber(int)} instead.
     */
    @java.lang.Deprecated
    public static PbBattleEndStatus valueOf(int value) {
      return forNumber(value);
    }

    /**
     * @param value The numeric wire value of the corresponding enum entry.
     * @return The enum associated with the given numeric wire value.
     */
    public static PbBattleEndStatus forNumber(int value) {
      switch (value) {
        case 0: return NO_STATUS;
        case 1: return BATTLING;
        case 2: return WAIT_REVIVE;
        case 3: return ATK_ALL_DEAD_CAMPING;
        case 4: return DEF_ALL_DEAD_NEXT;
        case 5: return WIN;
        case 6: return FAIL;
        default: return null;
      }
    }

    public static com.google.protobuf.Internal.EnumLiteMap<PbBattleEndStatus>
        internalGetValueMap() {
      return internalValueMap;
    }
    private static final com.google.protobuf.Internal.EnumLiteMap<
        PbBattleEndStatus> internalValueMap =
          new com.google.protobuf.Internal.EnumLiteMap<PbBattleEndStatus>() {
            public PbBattleEndStatus findValueByNumber(int number) {
              return PbBattleEndStatus.forNumber(number);
            }
          };

    public final com.google.protobuf.Descriptors.EnumValueDescriptor
        getValueDescriptor() {
      return getDescriptor().getValues().get(ordinal());
    }
    public final com.google.protobuf.Descriptors.EnumDescriptor
        getDescriptorForType() {
      return getDescriptor();
    }
    public static final com.google.protobuf.Descriptors.EnumDescriptor
        getDescriptor() {
      return pb.xiugou.x1.protobuf.battle.Battle.getDescriptor().getEnumTypes().get(1);
    }

    private static final PbBattleEndStatus[] VALUES = values();

    public static PbBattleEndStatus valueOf(
        com.google.protobuf.Descriptors.EnumValueDescriptor desc) {
      if (desc.getType() != getDescriptor()) {
        throw new java.lang.IllegalArgumentException(
          "EnumValueDescriptor is not for this type.");
      }
      if (desc.getIndex() == -1) {
        return UNRECOGNIZED;
      }
      return VALUES[desc.getIndex()];
    }

    private final int value;

    private PbBattleEndStatus(int value) {
      this.value = value;
    }

    // @@protoc_insertion_point(enum_scope:pb.PbBattleEndStatus)
  }

  public interface EnterBattleRequestOrBuilder extends
      // @@protoc_insertion_point(interface_extends:pb.EnterBattleRequest)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     *战斗类型
     * </pre>
     *
     * <code>int32 battle_type = 1;</code>
     * @return The battleType.
     */
    int getBattleType();

    /**
     * <pre>
     *地图ID，有不同的配置指向
     * </pre>
     *
     * <code>int32 map_id = 2;</code>
     * @return The mapId.
     */
    int getMapId();

    /**
     * <pre>
     *对长英雄标识
     * </pre>
     *
     * <code>int32 main_hero = 3;</code>
     * @return The mainHero.
     */
    int getMainHero();

    /**
     * <pre>
     *战斗参数
     * </pre>
     *
     * <code>bytes battle_params = 4;</code>
     * @return The battleParams.
     */
    com.google.protobuf.ByteString getBattleParams();

    /**
     * <pre>
     *出战英雄站位列表，位置从1开始
     * </pre>
     *
     * <code>repeated .pb.PbFormationPos pos_list = 5;</code>
     */
    java.util.List<pb.xiugou.x1.protobuf.formation.Formation.PbFormationPos> 
        getPosListList();
    /**
     * <pre>
     *出战英雄站位列表，位置从1开始
     * </pre>
     *
     * <code>repeated .pb.PbFormationPos pos_list = 5;</code>
     */
    pb.xiugou.x1.protobuf.formation.Formation.PbFormationPos getPosList(int index);
    /**
     * <pre>
     *出战英雄站位列表，位置从1开始
     * </pre>
     *
     * <code>repeated .pb.PbFormationPos pos_list = 5;</code>
     */
    int getPosListCount();
    /**
     * <pre>
     *出战英雄站位列表，位置从1开始
     * </pre>
     *
     * <code>repeated .pb.PbFormationPos pos_list = 5;</code>
     */
    java.util.List<? extends pb.xiugou.x1.protobuf.formation.Formation.PbFormationPosOrBuilder> 
        getPosListOrBuilderList();
    /**
     * <pre>
     *出战英雄站位列表，位置从1开始
     * </pre>
     *
     * <code>repeated .pb.PbFormationPos pos_list = 5;</code>
     */
    pb.xiugou.x1.protobuf.formation.Formation.PbFormationPosOrBuilder getPosListOrBuilder(
        int index);

    /**
     * <pre>
     *前端传啥返回啥
     * </pre>
     *
     * <code>int32 type = 6;</code>
     * @return The type.
     */
    int getType();
  }
  /**
   * <pre>
   *进入战斗
   * </pre>
   *
   * Protobuf type {@code pb.EnterBattleRequest}
   */
  public  static final class EnterBattleRequest extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:pb.EnterBattleRequest)
      EnterBattleRequestOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use EnterBattleRequest.newBuilder() to construct.
    private EnterBattleRequest(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private EnterBattleRequest() {
      battleParams_ = com.google.protobuf.ByteString.EMPTY;
      posList_ = java.util.Collections.emptyList();
    }

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new EnterBattleRequest();
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private EnterBattleRequest(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      if (extensionRegistry == null) {
        throw new java.lang.NullPointerException();
      }
      int mutable_bitField0_ = 0;
      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder();
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            case 8: {

              battleType_ = input.readInt32();
              break;
            }
            case 16: {

              mapId_ = input.readInt32();
              break;
            }
            case 24: {

              mainHero_ = input.readInt32();
              break;
            }
            case 34: {

              battleParams_ = input.readBytes();
              break;
            }
            case 42: {
              if (!((mutable_bitField0_ & 0x00000001) != 0)) {
                posList_ = new java.util.ArrayList<pb.xiugou.x1.protobuf.formation.Formation.PbFormationPos>();
                mutable_bitField0_ |= 0x00000001;
              }
              posList_.add(
                  input.readMessage(pb.xiugou.x1.protobuf.formation.Formation.PbFormationPos.parser(), extensionRegistry));
              break;
            }
            case 48: {

              type_ = input.readInt32();
              break;
            }
            default: {
              if (!parseUnknownField(
                  input, unknownFields, extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e).setUnfinishedMessage(this);
      } finally {
        if (((mutable_bitField0_ & 0x00000001) != 0)) {
          posList_ = java.util.Collections.unmodifiableList(posList_);
        }
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return pb.xiugou.x1.protobuf.battle.Battle.internal_static_pb_EnterBattleRequest_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return pb.xiugou.x1.protobuf.battle.Battle.internal_static_pb_EnterBattleRequest_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              pb.xiugou.x1.protobuf.battle.Battle.EnterBattleRequest.class, pb.xiugou.x1.protobuf.battle.Battle.EnterBattleRequest.Builder.class);
    }

    /**
     * Protobuf enum {@code pb.EnterBattleRequest.Proto}
     */
    public enum Proto
        implements com.google.protobuf.ProtocolMessageEnum {
      /**
       * <code>UNKNOWN = 0;</code>
       */
      UNKNOWN(0),
      /**
       * <code>ID = 300001;</code>
       */
      ID(300001),
      UNRECOGNIZED(-1),
      ;

      /**
       * <code>UNKNOWN = 0;</code>
       */
      public static final int UNKNOWN_VALUE = 0;
      /**
       * <code>ID = 300001;</code>
       */
      public static final int ID_VALUE = 300001;


      public final int getNumber() {
        if (this == UNRECOGNIZED) {
          throw new java.lang.IllegalArgumentException(
              "Can't get the number of an unknown enum value.");
        }
        return value;
      }

      /**
       * @param value The numeric wire value of the corresponding enum entry.
       * @return The enum associated with the given numeric wire value.
       * @deprecated Use {@link #forNumber(int)} instead.
       */
      @java.lang.Deprecated
      public static Proto valueOf(int value) {
        return forNumber(value);
      }

      /**
       * @param value The numeric wire value of the corresponding enum entry.
       * @return The enum associated with the given numeric wire value.
       */
      public static Proto forNumber(int value) {
        switch (value) {
          case 0: return UNKNOWN;
          case 300001: return ID;
          default: return null;
        }
      }

      public static com.google.protobuf.Internal.EnumLiteMap<Proto>
          internalGetValueMap() {
        return internalValueMap;
      }
      private static final com.google.protobuf.Internal.EnumLiteMap<
          Proto> internalValueMap =
            new com.google.protobuf.Internal.EnumLiteMap<Proto>() {
              public Proto findValueByNumber(int number) {
                return Proto.forNumber(number);
              }
            };

      public final com.google.protobuf.Descriptors.EnumValueDescriptor
          getValueDescriptor() {
        return getDescriptor().getValues().get(ordinal());
      }
      public final com.google.protobuf.Descriptors.EnumDescriptor
          getDescriptorForType() {
        return getDescriptor();
      }
      public static final com.google.protobuf.Descriptors.EnumDescriptor
          getDescriptor() {
        return pb.xiugou.x1.protobuf.battle.Battle.EnterBattleRequest.getDescriptor().getEnumTypes().get(0);
      }

      private static final Proto[] VALUES = values();

      public static Proto valueOf(
          com.google.protobuf.Descriptors.EnumValueDescriptor desc) {
        if (desc.getType() != getDescriptor()) {
          throw new java.lang.IllegalArgumentException(
            "EnumValueDescriptor is not for this type.");
        }
        if (desc.getIndex() == -1) {
          return UNRECOGNIZED;
        }
        return VALUES[desc.getIndex()];
      }

      private final int value;

      private Proto(int value) {
        this.value = value;
      }

      // @@protoc_insertion_point(enum_scope:pb.EnterBattleRequest.Proto)
    }

    public static final int BATTLE_TYPE_FIELD_NUMBER = 1;
    private int battleType_;
    /**
     * <pre>
     *战斗类型
     * </pre>
     *
     * <code>int32 battle_type = 1;</code>
     * @return The battleType.
     */
    public int getBattleType() {
      return battleType_;
    }

    public static final int MAP_ID_FIELD_NUMBER = 2;
    private int mapId_;
    /**
     * <pre>
     *地图ID，有不同的配置指向
     * </pre>
     *
     * <code>int32 map_id = 2;</code>
     * @return The mapId.
     */
    public int getMapId() {
      return mapId_;
    }

    public static final int MAIN_HERO_FIELD_NUMBER = 3;
    private int mainHero_;
    /**
     * <pre>
     *对长英雄标识
     * </pre>
     *
     * <code>int32 main_hero = 3;</code>
     * @return The mainHero.
     */
    public int getMainHero() {
      return mainHero_;
    }

    public static final int BATTLE_PARAMS_FIELD_NUMBER = 4;
    private com.google.protobuf.ByteString battleParams_;
    /**
     * <pre>
     *战斗参数
     * </pre>
     *
     * <code>bytes battle_params = 4;</code>
     * @return The battleParams.
     */
    public com.google.protobuf.ByteString getBattleParams() {
      return battleParams_;
    }

    public static final int POS_LIST_FIELD_NUMBER = 5;
    private java.util.List<pb.xiugou.x1.protobuf.formation.Formation.PbFormationPos> posList_;
    /**
     * <pre>
     *出战英雄站位列表，位置从1开始
     * </pre>
     *
     * <code>repeated .pb.PbFormationPos pos_list = 5;</code>
     */
    public java.util.List<pb.xiugou.x1.protobuf.formation.Formation.PbFormationPos> getPosListList() {
      return posList_;
    }
    /**
     * <pre>
     *出战英雄站位列表，位置从1开始
     * </pre>
     *
     * <code>repeated .pb.PbFormationPos pos_list = 5;</code>
     */
    public java.util.List<? extends pb.xiugou.x1.protobuf.formation.Formation.PbFormationPosOrBuilder> 
        getPosListOrBuilderList() {
      return posList_;
    }
    /**
     * <pre>
     *出战英雄站位列表，位置从1开始
     * </pre>
     *
     * <code>repeated .pb.PbFormationPos pos_list = 5;</code>
     */
    public int getPosListCount() {
      return posList_.size();
    }
    /**
     * <pre>
     *出战英雄站位列表，位置从1开始
     * </pre>
     *
     * <code>repeated .pb.PbFormationPos pos_list = 5;</code>
     */
    public pb.xiugou.x1.protobuf.formation.Formation.PbFormationPos getPosList(int index) {
      return posList_.get(index);
    }
    /**
     * <pre>
     *出战英雄站位列表，位置从1开始
     * </pre>
     *
     * <code>repeated .pb.PbFormationPos pos_list = 5;</code>
     */
    public pb.xiugou.x1.protobuf.formation.Formation.PbFormationPosOrBuilder getPosListOrBuilder(
        int index) {
      return posList_.get(index);
    }

    public static final int TYPE_FIELD_NUMBER = 6;
    private int type_;
    /**
     * <pre>
     *前端传啥返回啥
     * </pre>
     *
     * <code>int32 type = 6;</code>
     * @return The type.
     */
    public int getType() {
      return type_;
    }

    private byte memoizedIsInitialized = -1;
    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (battleType_ != 0) {
        output.writeInt32(1, battleType_);
      }
      if (mapId_ != 0) {
        output.writeInt32(2, mapId_);
      }
      if (mainHero_ != 0) {
        output.writeInt32(3, mainHero_);
      }
      if (!battleParams_.isEmpty()) {
        output.writeBytes(4, battleParams_);
      }
      for (int i = 0; i < posList_.size(); i++) {
        output.writeMessage(5, posList_.get(i));
      }
      if (type_ != 0) {
        output.writeInt32(6, type_);
      }
      unknownFields.writeTo(output);
    }

    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      if (battleType_ != 0) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt32Size(1, battleType_);
      }
      if (mapId_ != 0) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt32Size(2, mapId_);
      }
      if (mainHero_ != 0) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt32Size(3, mainHero_);
      }
      if (!battleParams_.isEmpty()) {
        size += com.google.protobuf.CodedOutputStream
          .computeBytesSize(4, battleParams_);
      }
      for (int i = 0; i < posList_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(5, posList_.get(i));
      }
      if (type_ != 0) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt32Size(6, type_);
      }
      size += unknownFields.getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof pb.xiugou.x1.protobuf.battle.Battle.EnterBattleRequest)) {
        return super.equals(obj);
      }
      pb.xiugou.x1.protobuf.battle.Battle.EnterBattleRequest other = (pb.xiugou.x1.protobuf.battle.Battle.EnterBattleRequest) obj;

      if (getBattleType()
          != other.getBattleType()) return false;
      if (getMapId()
          != other.getMapId()) return false;
      if (getMainHero()
          != other.getMainHero()) return false;
      if (!getBattleParams()
          .equals(other.getBattleParams())) return false;
      if (!getPosListList()
          .equals(other.getPosListList())) return false;
      if (getType()
          != other.getType()) return false;
      if (!unknownFields.equals(other.unknownFields)) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      hash = (37 * hash) + BATTLE_TYPE_FIELD_NUMBER;
      hash = (53 * hash) + getBattleType();
      hash = (37 * hash) + MAP_ID_FIELD_NUMBER;
      hash = (53 * hash) + getMapId();
      hash = (37 * hash) + MAIN_HERO_FIELD_NUMBER;
      hash = (53 * hash) + getMainHero();
      hash = (37 * hash) + BATTLE_PARAMS_FIELD_NUMBER;
      hash = (53 * hash) + getBattleParams().hashCode();
      if (getPosListCount() > 0) {
        hash = (37 * hash) + POS_LIST_FIELD_NUMBER;
        hash = (53 * hash) + getPosListList().hashCode();
      }
      hash = (37 * hash) + TYPE_FIELD_NUMBER;
      hash = (53 * hash) + getType();
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static pb.xiugou.x1.protobuf.battle.Battle.EnterBattleRequest parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static pb.xiugou.x1.protobuf.battle.Battle.EnterBattleRequest parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static pb.xiugou.x1.protobuf.battle.Battle.EnterBattleRequest parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static pb.xiugou.x1.protobuf.battle.Battle.EnterBattleRequest parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static pb.xiugou.x1.protobuf.battle.Battle.EnterBattleRequest parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static pb.xiugou.x1.protobuf.battle.Battle.EnterBattleRequest parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static pb.xiugou.x1.protobuf.battle.Battle.EnterBattleRequest parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static pb.xiugou.x1.protobuf.battle.Battle.EnterBattleRequest parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }
    public static pb.xiugou.x1.protobuf.battle.Battle.EnterBattleRequest parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static pb.xiugou.x1.protobuf.battle.Battle.EnterBattleRequest parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static pb.xiugou.x1.protobuf.battle.Battle.EnterBattleRequest parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static pb.xiugou.x1.protobuf.battle.Battle.EnterBattleRequest parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(pb.xiugou.x1.protobuf.battle.Battle.EnterBattleRequest prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * <pre>
     *进入战斗
     * </pre>
     *
     * Protobuf type {@code pb.EnterBattleRequest}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:pb.EnterBattleRequest)
        pb.xiugou.x1.protobuf.battle.Battle.EnterBattleRequestOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return pb.xiugou.x1.protobuf.battle.Battle.internal_static_pb_EnterBattleRequest_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return pb.xiugou.x1.protobuf.battle.Battle.internal_static_pb_EnterBattleRequest_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                pb.xiugou.x1.protobuf.battle.Battle.EnterBattleRequest.class, pb.xiugou.x1.protobuf.battle.Battle.EnterBattleRequest.Builder.class);
      }

      // Construct using pb.xiugou.x1.protobuf.battle.Battle.EnterBattleRequest.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
          getPosListFieldBuilder();
        }
      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        battleType_ = 0;

        mapId_ = 0;

        mainHero_ = 0;

        battleParams_ = com.google.protobuf.ByteString.EMPTY;

        if (posListBuilder_ == null) {
          posList_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000001);
        } else {
          posListBuilder_.clear();
        }
        type_ = 0;

        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return pb.xiugou.x1.protobuf.battle.Battle.internal_static_pb_EnterBattleRequest_descriptor;
      }

      @java.lang.Override
      public pb.xiugou.x1.protobuf.battle.Battle.EnterBattleRequest getDefaultInstanceForType() {
        return pb.xiugou.x1.protobuf.battle.Battle.EnterBattleRequest.getDefaultInstance();
      }

      @java.lang.Override
      public pb.xiugou.x1.protobuf.battle.Battle.EnterBattleRequest build() {
        pb.xiugou.x1.protobuf.battle.Battle.EnterBattleRequest result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public pb.xiugou.x1.protobuf.battle.Battle.EnterBattleRequest buildPartial() {
        pb.xiugou.x1.protobuf.battle.Battle.EnterBattleRequest result = new pb.xiugou.x1.protobuf.battle.Battle.EnterBattleRequest(this);
        int from_bitField0_ = bitField0_;
        result.battleType_ = battleType_;
        result.mapId_ = mapId_;
        result.mainHero_ = mainHero_;
        result.battleParams_ = battleParams_;
        if (posListBuilder_ == null) {
          if (((bitField0_ & 0x00000001) != 0)) {
            posList_ = java.util.Collections.unmodifiableList(posList_);
            bitField0_ = (bitField0_ & ~0x00000001);
          }
          result.posList_ = posList_;
        } else {
          result.posList_ = posListBuilder_.build();
        }
        result.type_ = type_;
        onBuilt();
        return result;
      }

      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }
      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.setField(field, value);
      }
      @java.lang.Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @java.lang.Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }
      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof pb.xiugou.x1.protobuf.battle.Battle.EnterBattleRequest) {
          return mergeFrom((pb.xiugou.x1.protobuf.battle.Battle.EnterBattleRequest)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(pb.xiugou.x1.protobuf.battle.Battle.EnterBattleRequest other) {
        if (other == pb.xiugou.x1.protobuf.battle.Battle.EnterBattleRequest.getDefaultInstance()) return this;
        if (other.getBattleType() != 0) {
          setBattleType(other.getBattleType());
        }
        if (other.getMapId() != 0) {
          setMapId(other.getMapId());
        }
        if (other.getMainHero() != 0) {
          setMainHero(other.getMainHero());
        }
        if (other.getBattleParams() != com.google.protobuf.ByteString.EMPTY) {
          setBattleParams(other.getBattleParams());
        }
        if (posListBuilder_ == null) {
          if (!other.posList_.isEmpty()) {
            if (posList_.isEmpty()) {
              posList_ = other.posList_;
              bitField0_ = (bitField0_ & ~0x00000001);
            } else {
              ensurePosListIsMutable();
              posList_.addAll(other.posList_);
            }
            onChanged();
          }
        } else {
          if (!other.posList_.isEmpty()) {
            if (posListBuilder_.isEmpty()) {
              posListBuilder_.dispose();
              posListBuilder_ = null;
              posList_ = other.posList_;
              bitField0_ = (bitField0_ & ~0x00000001);
              posListBuilder_ = 
                com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
                   getPosListFieldBuilder() : null;
            } else {
              posListBuilder_.addAllMessages(other.posList_);
            }
          }
        }
        if (other.getType() != 0) {
          setType(other.getType());
        }
        this.mergeUnknownFields(other.unknownFields);
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        pb.xiugou.x1.protobuf.battle.Battle.EnterBattleRequest parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (pb.xiugou.x1.protobuf.battle.Battle.EnterBattleRequest) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      private int battleType_ ;
      /**
       * <pre>
       *战斗类型
       * </pre>
       *
       * <code>int32 battle_type = 1;</code>
       * @return The battleType.
       */
      public int getBattleType() {
        return battleType_;
      }
      /**
       * <pre>
       *战斗类型
       * </pre>
       *
       * <code>int32 battle_type = 1;</code>
       * @param value The battleType to set.
       * @return This builder for chaining.
       */
      public Builder setBattleType(int value) {
        
        battleType_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       *战斗类型
       * </pre>
       *
       * <code>int32 battle_type = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearBattleType() {
        
        battleType_ = 0;
        onChanged();
        return this;
      }

      private int mapId_ ;
      /**
       * <pre>
       *地图ID，有不同的配置指向
       * </pre>
       *
       * <code>int32 map_id = 2;</code>
       * @return The mapId.
       */
      public int getMapId() {
        return mapId_;
      }
      /**
       * <pre>
       *地图ID，有不同的配置指向
       * </pre>
       *
       * <code>int32 map_id = 2;</code>
       * @param value The mapId to set.
       * @return This builder for chaining.
       */
      public Builder setMapId(int value) {
        
        mapId_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       *地图ID，有不同的配置指向
       * </pre>
       *
       * <code>int32 map_id = 2;</code>
       * @return This builder for chaining.
       */
      public Builder clearMapId() {
        
        mapId_ = 0;
        onChanged();
        return this;
      }

      private int mainHero_ ;
      /**
       * <pre>
       *对长英雄标识
       * </pre>
       *
       * <code>int32 main_hero = 3;</code>
       * @return The mainHero.
       */
      public int getMainHero() {
        return mainHero_;
      }
      /**
       * <pre>
       *对长英雄标识
       * </pre>
       *
       * <code>int32 main_hero = 3;</code>
       * @param value The mainHero to set.
       * @return This builder for chaining.
       */
      public Builder setMainHero(int value) {
        
        mainHero_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       *对长英雄标识
       * </pre>
       *
       * <code>int32 main_hero = 3;</code>
       * @return This builder for chaining.
       */
      public Builder clearMainHero() {
        
        mainHero_ = 0;
        onChanged();
        return this;
      }

      private com.google.protobuf.ByteString battleParams_ = com.google.protobuf.ByteString.EMPTY;
      /**
       * <pre>
       *战斗参数
       * </pre>
       *
       * <code>bytes battle_params = 4;</code>
       * @return The battleParams.
       */
      public com.google.protobuf.ByteString getBattleParams() {
        return battleParams_;
      }
      /**
       * <pre>
       *战斗参数
       * </pre>
       *
       * <code>bytes battle_params = 4;</code>
       * @param value The battleParams to set.
       * @return This builder for chaining.
       */
      public Builder setBattleParams(com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        battleParams_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       *战斗参数
       * </pre>
       *
       * <code>bytes battle_params = 4;</code>
       * @return This builder for chaining.
       */
      public Builder clearBattleParams() {
        
        battleParams_ = getDefaultInstance().getBattleParams();
        onChanged();
        return this;
      }

      private java.util.List<pb.xiugou.x1.protobuf.formation.Formation.PbFormationPos> posList_ =
        java.util.Collections.emptyList();
      private void ensurePosListIsMutable() {
        if (!((bitField0_ & 0x00000001) != 0)) {
          posList_ = new java.util.ArrayList<pb.xiugou.x1.protobuf.formation.Formation.PbFormationPos>(posList_);
          bitField0_ |= 0x00000001;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilderV3<
          pb.xiugou.x1.protobuf.formation.Formation.PbFormationPos, pb.xiugou.x1.protobuf.formation.Formation.PbFormationPos.Builder, pb.xiugou.x1.protobuf.formation.Formation.PbFormationPosOrBuilder> posListBuilder_;

      /**
       * <pre>
       *出战英雄站位列表，位置从1开始
       * </pre>
       *
       * <code>repeated .pb.PbFormationPos pos_list = 5;</code>
       */
      public java.util.List<pb.xiugou.x1.protobuf.formation.Formation.PbFormationPos> getPosListList() {
        if (posListBuilder_ == null) {
          return java.util.Collections.unmodifiableList(posList_);
        } else {
          return posListBuilder_.getMessageList();
        }
      }
      /**
       * <pre>
       *出战英雄站位列表，位置从1开始
       * </pre>
       *
       * <code>repeated .pb.PbFormationPos pos_list = 5;</code>
       */
      public int getPosListCount() {
        if (posListBuilder_ == null) {
          return posList_.size();
        } else {
          return posListBuilder_.getCount();
        }
      }
      /**
       * <pre>
       *出战英雄站位列表，位置从1开始
       * </pre>
       *
       * <code>repeated .pb.PbFormationPos pos_list = 5;</code>
       */
      public pb.xiugou.x1.protobuf.formation.Formation.PbFormationPos getPosList(int index) {
        if (posListBuilder_ == null) {
          return posList_.get(index);
        } else {
          return posListBuilder_.getMessage(index);
        }
      }
      /**
       * <pre>
       *出战英雄站位列表，位置从1开始
       * </pre>
       *
       * <code>repeated .pb.PbFormationPos pos_list = 5;</code>
       */
      public Builder setPosList(
          int index, pb.xiugou.x1.protobuf.formation.Formation.PbFormationPos value) {
        if (posListBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensurePosListIsMutable();
          posList_.set(index, value);
          onChanged();
        } else {
          posListBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * <pre>
       *出战英雄站位列表，位置从1开始
       * </pre>
       *
       * <code>repeated .pb.PbFormationPos pos_list = 5;</code>
       */
      public Builder setPosList(
          int index, pb.xiugou.x1.protobuf.formation.Formation.PbFormationPos.Builder builderForValue) {
        if (posListBuilder_ == null) {
          ensurePosListIsMutable();
          posList_.set(index, builderForValue.build());
          onChanged();
        } else {
          posListBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       *出战英雄站位列表，位置从1开始
       * </pre>
       *
       * <code>repeated .pb.PbFormationPos pos_list = 5;</code>
       */
      public Builder addPosList(pb.xiugou.x1.protobuf.formation.Formation.PbFormationPos value) {
        if (posListBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensurePosListIsMutable();
          posList_.add(value);
          onChanged();
        } else {
          posListBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * <pre>
       *出战英雄站位列表，位置从1开始
       * </pre>
       *
       * <code>repeated .pb.PbFormationPos pos_list = 5;</code>
       */
      public Builder addPosList(
          int index, pb.xiugou.x1.protobuf.formation.Formation.PbFormationPos value) {
        if (posListBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensurePosListIsMutable();
          posList_.add(index, value);
          onChanged();
        } else {
          posListBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * <pre>
       *出战英雄站位列表，位置从1开始
       * </pre>
       *
       * <code>repeated .pb.PbFormationPos pos_list = 5;</code>
       */
      public Builder addPosList(
          pb.xiugou.x1.protobuf.formation.Formation.PbFormationPos.Builder builderForValue) {
        if (posListBuilder_ == null) {
          ensurePosListIsMutable();
          posList_.add(builderForValue.build());
          onChanged();
        } else {
          posListBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       *出战英雄站位列表，位置从1开始
       * </pre>
       *
       * <code>repeated .pb.PbFormationPos pos_list = 5;</code>
       */
      public Builder addPosList(
          int index, pb.xiugou.x1.protobuf.formation.Formation.PbFormationPos.Builder builderForValue) {
        if (posListBuilder_ == null) {
          ensurePosListIsMutable();
          posList_.add(index, builderForValue.build());
          onChanged();
        } else {
          posListBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       *出战英雄站位列表，位置从1开始
       * </pre>
       *
       * <code>repeated .pb.PbFormationPos pos_list = 5;</code>
       */
      public Builder addAllPosList(
          java.lang.Iterable<? extends pb.xiugou.x1.protobuf.formation.Formation.PbFormationPos> values) {
        if (posListBuilder_ == null) {
          ensurePosListIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, posList_);
          onChanged();
        } else {
          posListBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * <pre>
       *出战英雄站位列表，位置从1开始
       * </pre>
       *
       * <code>repeated .pb.PbFormationPos pos_list = 5;</code>
       */
      public Builder clearPosList() {
        if (posListBuilder_ == null) {
          posList_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000001);
          onChanged();
        } else {
          posListBuilder_.clear();
        }
        return this;
      }
      /**
       * <pre>
       *出战英雄站位列表，位置从1开始
       * </pre>
       *
       * <code>repeated .pb.PbFormationPos pos_list = 5;</code>
       */
      public Builder removePosList(int index) {
        if (posListBuilder_ == null) {
          ensurePosListIsMutable();
          posList_.remove(index);
          onChanged();
        } else {
          posListBuilder_.remove(index);
        }
        return this;
      }
      /**
       * <pre>
       *出战英雄站位列表，位置从1开始
       * </pre>
       *
       * <code>repeated .pb.PbFormationPos pos_list = 5;</code>
       */
      public pb.xiugou.x1.protobuf.formation.Formation.PbFormationPos.Builder getPosListBuilder(
          int index) {
        return getPosListFieldBuilder().getBuilder(index);
      }
      /**
       * <pre>
       *出战英雄站位列表，位置从1开始
       * </pre>
       *
       * <code>repeated .pb.PbFormationPos pos_list = 5;</code>
       */
      public pb.xiugou.x1.protobuf.formation.Formation.PbFormationPosOrBuilder getPosListOrBuilder(
          int index) {
        if (posListBuilder_ == null) {
          return posList_.get(index);  } else {
          return posListBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * <pre>
       *出战英雄站位列表，位置从1开始
       * </pre>
       *
       * <code>repeated .pb.PbFormationPos pos_list = 5;</code>
       */
      public java.util.List<? extends pb.xiugou.x1.protobuf.formation.Formation.PbFormationPosOrBuilder> 
           getPosListOrBuilderList() {
        if (posListBuilder_ != null) {
          return posListBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(posList_);
        }
      }
      /**
       * <pre>
       *出战英雄站位列表，位置从1开始
       * </pre>
       *
       * <code>repeated .pb.PbFormationPos pos_list = 5;</code>
       */
      public pb.xiugou.x1.protobuf.formation.Formation.PbFormationPos.Builder addPosListBuilder() {
        return getPosListFieldBuilder().addBuilder(
            pb.xiugou.x1.protobuf.formation.Formation.PbFormationPos.getDefaultInstance());
      }
      /**
       * <pre>
       *出战英雄站位列表，位置从1开始
       * </pre>
       *
       * <code>repeated .pb.PbFormationPos pos_list = 5;</code>
       */
      public pb.xiugou.x1.protobuf.formation.Formation.PbFormationPos.Builder addPosListBuilder(
          int index) {
        return getPosListFieldBuilder().addBuilder(
            index, pb.xiugou.x1.protobuf.formation.Formation.PbFormationPos.getDefaultInstance());
      }
      /**
       * <pre>
       *出战英雄站位列表，位置从1开始
       * </pre>
       *
       * <code>repeated .pb.PbFormationPos pos_list = 5;</code>
       */
      public java.util.List<pb.xiugou.x1.protobuf.formation.Formation.PbFormationPos.Builder> 
           getPosListBuilderList() {
        return getPosListFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilderV3<
          pb.xiugou.x1.protobuf.formation.Formation.PbFormationPos, pb.xiugou.x1.protobuf.formation.Formation.PbFormationPos.Builder, pb.xiugou.x1.protobuf.formation.Formation.PbFormationPosOrBuilder> 
          getPosListFieldBuilder() {
        if (posListBuilder_ == null) {
          posListBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
              pb.xiugou.x1.protobuf.formation.Formation.PbFormationPos, pb.xiugou.x1.protobuf.formation.Formation.PbFormationPos.Builder, pb.xiugou.x1.protobuf.formation.Formation.PbFormationPosOrBuilder>(
                  posList_,
                  ((bitField0_ & 0x00000001) != 0),
                  getParentForChildren(),
                  isClean());
          posList_ = null;
        }
        return posListBuilder_;
      }

      private int type_ ;
      /**
       * <pre>
       *前端传啥返回啥
       * </pre>
       *
       * <code>int32 type = 6;</code>
       * @return The type.
       */
      public int getType() {
        return type_;
      }
      /**
       * <pre>
       *前端传啥返回啥
       * </pre>
       *
       * <code>int32 type = 6;</code>
       * @param value The type to set.
       * @return This builder for chaining.
       */
      public Builder setType(int value) {
        
        type_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       *前端传啥返回啥
       * </pre>
       *
       * <code>int32 type = 6;</code>
       * @return This builder for chaining.
       */
      public Builder clearType() {
        
        type_ = 0;
        onChanged();
        return this;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

      @java.lang.Override
      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.mergeUnknownFields(unknownFields);
      }


      // @@protoc_insertion_point(builder_scope:pb.EnterBattleRequest)
    }

    // @@protoc_insertion_point(class_scope:pb.EnterBattleRequest)
    private static final pb.xiugou.x1.protobuf.battle.Battle.EnterBattleRequest DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new pb.xiugou.x1.protobuf.battle.Battle.EnterBattleRequest();
    }

    public static pb.xiugou.x1.protobuf.battle.Battle.EnterBattleRequest getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<EnterBattleRequest>
        PARSER = new com.google.protobuf.AbstractParser<EnterBattleRequest>() {
      @java.lang.Override
      public EnterBattleRequest parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return new EnterBattleRequest(input, extensionRegistry);
      }
    };

    public static com.google.protobuf.Parser<EnterBattleRequest> parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser<EnterBattleRequest> getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public pb.xiugou.x1.protobuf.battle.Battle.EnterBattleRequest getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface EnterBattleResponseOrBuilder extends
      // @@protoc_insertion_point(interface_extends:pb.EnterBattleResponse)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     *战斗类型
     * </pre>
     *
     * <code>int32 battle_type = 1;</code>
     * @return The battleType.
     */
    int getBattleType();

    /**
     * <pre>
     *地图ID
     * </pre>
     *
     * <code>int32 map_id = 2;</code>
     * @return The mapId.
     */
    int getMapId();

    /**
     * <pre>
     *出战英雄
     * </pre>
     *
     * <code>repeated .pb.PbSprite heroes = 3;</code>
     */
    java.util.List<pb.xiugou.x1.protobuf.battle.Battle.PbSprite> 
        getHeroesList();
    /**
     * <pre>
     *出战英雄
     * </pre>
     *
     * <code>repeated .pb.PbSprite heroes = 3;</code>
     */
    pb.xiugou.x1.protobuf.battle.Battle.PbSprite getHeroes(int index);
    /**
     * <pre>
     *出战英雄
     * </pre>
     *
     * <code>repeated .pb.PbSprite heroes = 3;</code>
     */
    int getHeroesCount();
    /**
     * <pre>
     *出战英雄
     * </pre>
     *
     * <code>repeated .pb.PbSprite heroes = 3;</code>
     */
    java.util.List<? extends pb.xiugou.x1.protobuf.battle.Battle.PbSpriteOrBuilder> 
        getHeroesOrBuilderList();
    /**
     * <pre>
     *出战英雄
     * </pre>
     *
     * <code>repeated .pb.PbSprite heroes = 3;</code>
     */
    pb.xiugou.x1.protobuf.battle.Battle.PbSpriteOrBuilder getHeroesOrBuilder(
        int index);

    /**
     * <pre>
     *对长英雄标识
     * </pre>
     *
     * <code>int32 main_hero = 4;</code>
     * @return The mainHero.
     */
    int getMainHero();

    /**
     * <pre>
     *战斗参数
     * </pre>
     *
     * <code>bytes battle_params = 5;</code>
     * @return The battleParams.
     */
    com.google.protobuf.ByteString getBattleParams();

    /**
     * <pre>
     *前端传啥返回啥
     * </pre>
     *
     * <code>int32 type = 6;</code>
     * @return The type.
     */
    int getType();
  }
  /**
   * Protobuf type {@code pb.EnterBattleResponse}
   */
  public  static final class EnterBattleResponse extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:pb.EnterBattleResponse)
      EnterBattleResponseOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use EnterBattleResponse.newBuilder() to construct.
    private EnterBattleResponse(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private EnterBattleResponse() {
      heroes_ = java.util.Collections.emptyList();
      battleParams_ = com.google.protobuf.ByteString.EMPTY;
    }

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new EnterBattleResponse();
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private EnterBattleResponse(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      if (extensionRegistry == null) {
        throw new java.lang.NullPointerException();
      }
      int mutable_bitField0_ = 0;
      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder();
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            case 8: {

              battleType_ = input.readInt32();
              break;
            }
            case 16: {

              mapId_ = input.readInt32();
              break;
            }
            case 26: {
              if (!((mutable_bitField0_ & 0x00000001) != 0)) {
                heroes_ = new java.util.ArrayList<pb.xiugou.x1.protobuf.battle.Battle.PbSprite>();
                mutable_bitField0_ |= 0x00000001;
              }
              heroes_.add(
                  input.readMessage(pb.xiugou.x1.protobuf.battle.Battle.PbSprite.parser(), extensionRegistry));
              break;
            }
            case 32: {

              mainHero_ = input.readInt32();
              break;
            }
            case 42: {

              battleParams_ = input.readBytes();
              break;
            }
            case 48: {

              type_ = input.readInt32();
              break;
            }
            default: {
              if (!parseUnknownField(
                  input, unknownFields, extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e).setUnfinishedMessage(this);
      } finally {
        if (((mutable_bitField0_ & 0x00000001) != 0)) {
          heroes_ = java.util.Collections.unmodifiableList(heroes_);
        }
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return pb.xiugou.x1.protobuf.battle.Battle.internal_static_pb_EnterBattleResponse_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return pb.xiugou.x1.protobuf.battle.Battle.internal_static_pb_EnterBattleResponse_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              pb.xiugou.x1.protobuf.battle.Battle.EnterBattleResponse.class, pb.xiugou.x1.protobuf.battle.Battle.EnterBattleResponse.Builder.class);
    }

    /**
     * Protobuf enum {@code pb.EnterBattleResponse.Proto}
     */
    public enum Proto
        implements com.google.protobuf.ProtocolMessageEnum {
      /**
       * <code>UNKNOWN = 0;</code>
       */
      UNKNOWN(0),
      /**
       * <code>ID = 300001;</code>
       */
      ID(300001),
      UNRECOGNIZED(-1),
      ;

      /**
       * <code>UNKNOWN = 0;</code>
       */
      public static final int UNKNOWN_VALUE = 0;
      /**
       * <code>ID = 300001;</code>
       */
      public static final int ID_VALUE = 300001;


      public final int getNumber() {
        if (this == UNRECOGNIZED) {
          throw new java.lang.IllegalArgumentException(
              "Can't get the number of an unknown enum value.");
        }
        return value;
      }

      /**
       * @param value The numeric wire value of the corresponding enum entry.
       * @return The enum associated with the given numeric wire value.
       * @deprecated Use {@link #forNumber(int)} instead.
       */
      @java.lang.Deprecated
      public static Proto valueOf(int value) {
        return forNumber(value);
      }

      /**
       * @param value The numeric wire value of the corresponding enum entry.
       * @return The enum associated with the given numeric wire value.
       */
      public static Proto forNumber(int value) {
        switch (value) {
          case 0: return UNKNOWN;
          case 300001: return ID;
          default: return null;
        }
      }

      public static com.google.protobuf.Internal.EnumLiteMap<Proto>
          internalGetValueMap() {
        return internalValueMap;
      }
      private static final com.google.protobuf.Internal.EnumLiteMap<
          Proto> internalValueMap =
            new com.google.protobuf.Internal.EnumLiteMap<Proto>() {
              public Proto findValueByNumber(int number) {
                return Proto.forNumber(number);
              }
            };

      public final com.google.protobuf.Descriptors.EnumValueDescriptor
          getValueDescriptor() {
        return getDescriptor().getValues().get(ordinal());
      }
      public final com.google.protobuf.Descriptors.EnumDescriptor
          getDescriptorForType() {
        return getDescriptor();
      }
      public static final com.google.protobuf.Descriptors.EnumDescriptor
          getDescriptor() {
        return pb.xiugou.x1.protobuf.battle.Battle.EnterBattleResponse.getDescriptor().getEnumTypes().get(0);
      }

      private static final Proto[] VALUES = values();

      public static Proto valueOf(
          com.google.protobuf.Descriptors.EnumValueDescriptor desc) {
        if (desc.getType() != getDescriptor()) {
          throw new java.lang.IllegalArgumentException(
            "EnumValueDescriptor is not for this type.");
        }
        if (desc.getIndex() == -1) {
          return UNRECOGNIZED;
        }
        return VALUES[desc.getIndex()];
      }

      private final int value;

      private Proto(int value) {
        this.value = value;
      }

      // @@protoc_insertion_point(enum_scope:pb.EnterBattleResponse.Proto)
    }

    public static final int BATTLE_TYPE_FIELD_NUMBER = 1;
    private int battleType_;
    /**
     * <pre>
     *战斗类型
     * </pre>
     *
     * <code>int32 battle_type = 1;</code>
     * @return The battleType.
     */
    public int getBattleType() {
      return battleType_;
    }

    public static final int MAP_ID_FIELD_NUMBER = 2;
    private int mapId_;
    /**
     * <pre>
     *地图ID
     * </pre>
     *
     * <code>int32 map_id = 2;</code>
     * @return The mapId.
     */
    public int getMapId() {
      return mapId_;
    }

    public static final int HEROES_FIELD_NUMBER = 3;
    private java.util.List<pb.xiugou.x1.protobuf.battle.Battle.PbSprite> heroes_;
    /**
     * <pre>
     *出战英雄
     * </pre>
     *
     * <code>repeated .pb.PbSprite heroes = 3;</code>
     */
    public java.util.List<pb.xiugou.x1.protobuf.battle.Battle.PbSprite> getHeroesList() {
      return heroes_;
    }
    /**
     * <pre>
     *出战英雄
     * </pre>
     *
     * <code>repeated .pb.PbSprite heroes = 3;</code>
     */
    public java.util.List<? extends pb.xiugou.x1.protobuf.battle.Battle.PbSpriteOrBuilder> 
        getHeroesOrBuilderList() {
      return heroes_;
    }
    /**
     * <pre>
     *出战英雄
     * </pre>
     *
     * <code>repeated .pb.PbSprite heroes = 3;</code>
     */
    public int getHeroesCount() {
      return heroes_.size();
    }
    /**
     * <pre>
     *出战英雄
     * </pre>
     *
     * <code>repeated .pb.PbSprite heroes = 3;</code>
     */
    public pb.xiugou.x1.protobuf.battle.Battle.PbSprite getHeroes(int index) {
      return heroes_.get(index);
    }
    /**
     * <pre>
     *出战英雄
     * </pre>
     *
     * <code>repeated .pb.PbSprite heroes = 3;</code>
     */
    public pb.xiugou.x1.protobuf.battle.Battle.PbSpriteOrBuilder getHeroesOrBuilder(
        int index) {
      return heroes_.get(index);
    }

    public static final int MAIN_HERO_FIELD_NUMBER = 4;
    private int mainHero_;
    /**
     * <pre>
     *对长英雄标识
     * </pre>
     *
     * <code>int32 main_hero = 4;</code>
     * @return The mainHero.
     */
    public int getMainHero() {
      return mainHero_;
    }

    public static final int BATTLE_PARAMS_FIELD_NUMBER = 5;
    private com.google.protobuf.ByteString battleParams_;
    /**
     * <pre>
     *战斗参数
     * </pre>
     *
     * <code>bytes battle_params = 5;</code>
     * @return The battleParams.
     */
    public com.google.protobuf.ByteString getBattleParams() {
      return battleParams_;
    }

    public static final int TYPE_FIELD_NUMBER = 6;
    private int type_;
    /**
     * <pre>
     *前端传啥返回啥
     * </pre>
     *
     * <code>int32 type = 6;</code>
     * @return The type.
     */
    public int getType() {
      return type_;
    }

    private byte memoizedIsInitialized = -1;
    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (battleType_ != 0) {
        output.writeInt32(1, battleType_);
      }
      if (mapId_ != 0) {
        output.writeInt32(2, mapId_);
      }
      for (int i = 0; i < heroes_.size(); i++) {
        output.writeMessage(3, heroes_.get(i));
      }
      if (mainHero_ != 0) {
        output.writeInt32(4, mainHero_);
      }
      if (!battleParams_.isEmpty()) {
        output.writeBytes(5, battleParams_);
      }
      if (type_ != 0) {
        output.writeInt32(6, type_);
      }
      unknownFields.writeTo(output);
    }

    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      if (battleType_ != 0) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt32Size(1, battleType_);
      }
      if (mapId_ != 0) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt32Size(2, mapId_);
      }
      for (int i = 0; i < heroes_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(3, heroes_.get(i));
      }
      if (mainHero_ != 0) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt32Size(4, mainHero_);
      }
      if (!battleParams_.isEmpty()) {
        size += com.google.protobuf.CodedOutputStream
          .computeBytesSize(5, battleParams_);
      }
      if (type_ != 0) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt32Size(6, type_);
      }
      size += unknownFields.getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof pb.xiugou.x1.protobuf.battle.Battle.EnterBattleResponse)) {
        return super.equals(obj);
      }
      pb.xiugou.x1.protobuf.battle.Battle.EnterBattleResponse other = (pb.xiugou.x1.protobuf.battle.Battle.EnterBattleResponse) obj;

      if (getBattleType()
          != other.getBattleType()) return false;
      if (getMapId()
          != other.getMapId()) return false;
      if (!getHeroesList()
          .equals(other.getHeroesList())) return false;
      if (getMainHero()
          != other.getMainHero()) return false;
      if (!getBattleParams()
          .equals(other.getBattleParams())) return false;
      if (getType()
          != other.getType()) return false;
      if (!unknownFields.equals(other.unknownFields)) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      hash = (37 * hash) + BATTLE_TYPE_FIELD_NUMBER;
      hash = (53 * hash) + getBattleType();
      hash = (37 * hash) + MAP_ID_FIELD_NUMBER;
      hash = (53 * hash) + getMapId();
      if (getHeroesCount() > 0) {
        hash = (37 * hash) + HEROES_FIELD_NUMBER;
        hash = (53 * hash) + getHeroesList().hashCode();
      }
      hash = (37 * hash) + MAIN_HERO_FIELD_NUMBER;
      hash = (53 * hash) + getMainHero();
      hash = (37 * hash) + BATTLE_PARAMS_FIELD_NUMBER;
      hash = (53 * hash) + getBattleParams().hashCode();
      hash = (37 * hash) + TYPE_FIELD_NUMBER;
      hash = (53 * hash) + getType();
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static pb.xiugou.x1.protobuf.battle.Battle.EnterBattleResponse parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static pb.xiugou.x1.protobuf.battle.Battle.EnterBattleResponse parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static pb.xiugou.x1.protobuf.battle.Battle.EnterBattleResponse parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static pb.xiugou.x1.protobuf.battle.Battle.EnterBattleResponse parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static pb.xiugou.x1.protobuf.battle.Battle.EnterBattleResponse parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static pb.xiugou.x1.protobuf.battle.Battle.EnterBattleResponse parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static pb.xiugou.x1.protobuf.battle.Battle.EnterBattleResponse parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static pb.xiugou.x1.protobuf.battle.Battle.EnterBattleResponse parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }
    public static pb.xiugou.x1.protobuf.battle.Battle.EnterBattleResponse parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static pb.xiugou.x1.protobuf.battle.Battle.EnterBattleResponse parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static pb.xiugou.x1.protobuf.battle.Battle.EnterBattleResponse parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static pb.xiugou.x1.protobuf.battle.Battle.EnterBattleResponse parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(pb.xiugou.x1.protobuf.battle.Battle.EnterBattleResponse prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code pb.EnterBattleResponse}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:pb.EnterBattleResponse)
        pb.xiugou.x1.protobuf.battle.Battle.EnterBattleResponseOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return pb.xiugou.x1.protobuf.battle.Battle.internal_static_pb_EnterBattleResponse_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return pb.xiugou.x1.protobuf.battle.Battle.internal_static_pb_EnterBattleResponse_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                pb.xiugou.x1.protobuf.battle.Battle.EnterBattleResponse.class, pb.xiugou.x1.protobuf.battle.Battle.EnterBattleResponse.Builder.class);
      }

      // Construct using pb.xiugou.x1.protobuf.battle.Battle.EnterBattleResponse.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
          getHeroesFieldBuilder();
        }
      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        battleType_ = 0;

        mapId_ = 0;

        if (heroesBuilder_ == null) {
          heroes_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000001);
        } else {
          heroesBuilder_.clear();
        }
        mainHero_ = 0;

        battleParams_ = com.google.protobuf.ByteString.EMPTY;

        type_ = 0;

        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return pb.xiugou.x1.protobuf.battle.Battle.internal_static_pb_EnterBattleResponse_descriptor;
      }

      @java.lang.Override
      public pb.xiugou.x1.protobuf.battle.Battle.EnterBattleResponse getDefaultInstanceForType() {
        return pb.xiugou.x1.protobuf.battle.Battle.EnterBattleResponse.getDefaultInstance();
      }

      @java.lang.Override
      public pb.xiugou.x1.protobuf.battle.Battle.EnterBattleResponse build() {
        pb.xiugou.x1.protobuf.battle.Battle.EnterBattleResponse result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public pb.xiugou.x1.protobuf.battle.Battle.EnterBattleResponse buildPartial() {
        pb.xiugou.x1.protobuf.battle.Battle.EnterBattleResponse result = new pb.xiugou.x1.protobuf.battle.Battle.EnterBattleResponse(this);
        int from_bitField0_ = bitField0_;
        result.battleType_ = battleType_;
        result.mapId_ = mapId_;
        if (heroesBuilder_ == null) {
          if (((bitField0_ & 0x00000001) != 0)) {
            heroes_ = java.util.Collections.unmodifiableList(heroes_);
            bitField0_ = (bitField0_ & ~0x00000001);
          }
          result.heroes_ = heroes_;
        } else {
          result.heroes_ = heroesBuilder_.build();
        }
        result.mainHero_ = mainHero_;
        result.battleParams_ = battleParams_;
        result.type_ = type_;
        onBuilt();
        return result;
      }

      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }
      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.setField(field, value);
      }
      @java.lang.Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @java.lang.Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }
      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof pb.xiugou.x1.protobuf.battle.Battle.EnterBattleResponse) {
          return mergeFrom((pb.xiugou.x1.protobuf.battle.Battle.EnterBattleResponse)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(pb.xiugou.x1.protobuf.battle.Battle.EnterBattleResponse other) {
        if (other == pb.xiugou.x1.protobuf.battle.Battle.EnterBattleResponse.getDefaultInstance()) return this;
        if (other.getBattleType() != 0) {
          setBattleType(other.getBattleType());
        }
        if (other.getMapId() != 0) {
          setMapId(other.getMapId());
        }
        if (heroesBuilder_ == null) {
          if (!other.heroes_.isEmpty()) {
            if (heroes_.isEmpty()) {
              heroes_ = other.heroes_;
              bitField0_ = (bitField0_ & ~0x00000001);
            } else {
              ensureHeroesIsMutable();
              heroes_.addAll(other.heroes_);
            }
            onChanged();
          }
        } else {
          if (!other.heroes_.isEmpty()) {
            if (heroesBuilder_.isEmpty()) {
              heroesBuilder_.dispose();
              heroesBuilder_ = null;
              heroes_ = other.heroes_;
              bitField0_ = (bitField0_ & ~0x00000001);
              heroesBuilder_ = 
                com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
                   getHeroesFieldBuilder() : null;
            } else {
              heroesBuilder_.addAllMessages(other.heroes_);
            }
          }
        }
        if (other.getMainHero() != 0) {
          setMainHero(other.getMainHero());
        }
        if (other.getBattleParams() != com.google.protobuf.ByteString.EMPTY) {
          setBattleParams(other.getBattleParams());
        }
        if (other.getType() != 0) {
          setType(other.getType());
        }
        this.mergeUnknownFields(other.unknownFields);
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        pb.xiugou.x1.protobuf.battle.Battle.EnterBattleResponse parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (pb.xiugou.x1.protobuf.battle.Battle.EnterBattleResponse) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      private int battleType_ ;
      /**
       * <pre>
       *战斗类型
       * </pre>
       *
       * <code>int32 battle_type = 1;</code>
       * @return The battleType.
       */
      public int getBattleType() {
        return battleType_;
      }
      /**
       * <pre>
       *战斗类型
       * </pre>
       *
       * <code>int32 battle_type = 1;</code>
       * @param value The battleType to set.
       * @return This builder for chaining.
       */
      public Builder setBattleType(int value) {
        
        battleType_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       *战斗类型
       * </pre>
       *
       * <code>int32 battle_type = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearBattleType() {
        
        battleType_ = 0;
        onChanged();
        return this;
      }

      private int mapId_ ;
      /**
       * <pre>
       *地图ID
       * </pre>
       *
       * <code>int32 map_id = 2;</code>
       * @return The mapId.
       */
      public int getMapId() {
        return mapId_;
      }
      /**
       * <pre>
       *地图ID
       * </pre>
       *
       * <code>int32 map_id = 2;</code>
       * @param value The mapId to set.
       * @return This builder for chaining.
       */
      public Builder setMapId(int value) {
        
        mapId_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       *地图ID
       * </pre>
       *
       * <code>int32 map_id = 2;</code>
       * @return This builder for chaining.
       */
      public Builder clearMapId() {
        
        mapId_ = 0;
        onChanged();
        return this;
      }

      private java.util.List<pb.xiugou.x1.protobuf.battle.Battle.PbSprite> heroes_ =
        java.util.Collections.emptyList();
      private void ensureHeroesIsMutable() {
        if (!((bitField0_ & 0x00000001) != 0)) {
          heroes_ = new java.util.ArrayList<pb.xiugou.x1.protobuf.battle.Battle.PbSprite>(heroes_);
          bitField0_ |= 0x00000001;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilderV3<
          pb.xiugou.x1.protobuf.battle.Battle.PbSprite, pb.xiugou.x1.protobuf.battle.Battle.PbSprite.Builder, pb.xiugou.x1.protobuf.battle.Battle.PbSpriteOrBuilder> heroesBuilder_;

      /**
       * <pre>
       *出战英雄
       * </pre>
       *
       * <code>repeated .pb.PbSprite heroes = 3;</code>
       */
      public java.util.List<pb.xiugou.x1.protobuf.battle.Battle.PbSprite> getHeroesList() {
        if (heroesBuilder_ == null) {
          return java.util.Collections.unmodifiableList(heroes_);
        } else {
          return heroesBuilder_.getMessageList();
        }
      }
      /**
       * <pre>
       *出战英雄
       * </pre>
       *
       * <code>repeated .pb.PbSprite heroes = 3;</code>
       */
      public int getHeroesCount() {
        if (heroesBuilder_ == null) {
          return heroes_.size();
        } else {
          return heroesBuilder_.getCount();
        }
      }
      /**
       * <pre>
       *出战英雄
       * </pre>
       *
       * <code>repeated .pb.PbSprite heroes = 3;</code>
       */
      public pb.xiugou.x1.protobuf.battle.Battle.PbSprite getHeroes(int index) {
        if (heroesBuilder_ == null) {
          return heroes_.get(index);
        } else {
          return heroesBuilder_.getMessage(index);
        }
      }
      /**
       * <pre>
       *出战英雄
       * </pre>
       *
       * <code>repeated .pb.PbSprite heroes = 3;</code>
       */
      public Builder setHeroes(
          int index, pb.xiugou.x1.protobuf.battle.Battle.PbSprite value) {
        if (heroesBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureHeroesIsMutable();
          heroes_.set(index, value);
          onChanged();
        } else {
          heroesBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * <pre>
       *出战英雄
       * </pre>
       *
       * <code>repeated .pb.PbSprite heroes = 3;</code>
       */
      public Builder setHeroes(
          int index, pb.xiugou.x1.protobuf.battle.Battle.PbSprite.Builder builderForValue) {
        if (heroesBuilder_ == null) {
          ensureHeroesIsMutable();
          heroes_.set(index, builderForValue.build());
          onChanged();
        } else {
          heroesBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       *出战英雄
       * </pre>
       *
       * <code>repeated .pb.PbSprite heroes = 3;</code>
       */
      public Builder addHeroes(pb.xiugou.x1.protobuf.battle.Battle.PbSprite value) {
        if (heroesBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureHeroesIsMutable();
          heroes_.add(value);
          onChanged();
        } else {
          heroesBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * <pre>
       *出战英雄
       * </pre>
       *
       * <code>repeated .pb.PbSprite heroes = 3;</code>
       */
      public Builder addHeroes(
          int index, pb.xiugou.x1.protobuf.battle.Battle.PbSprite value) {
        if (heroesBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureHeroesIsMutable();
          heroes_.add(index, value);
          onChanged();
        } else {
          heroesBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * <pre>
       *出战英雄
       * </pre>
       *
       * <code>repeated .pb.PbSprite heroes = 3;</code>
       */
      public Builder addHeroes(
          pb.xiugou.x1.protobuf.battle.Battle.PbSprite.Builder builderForValue) {
        if (heroesBuilder_ == null) {
          ensureHeroesIsMutable();
          heroes_.add(builderForValue.build());
          onChanged();
        } else {
          heroesBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       *出战英雄
       * </pre>
       *
       * <code>repeated .pb.PbSprite heroes = 3;</code>
       */
      public Builder addHeroes(
          int index, pb.xiugou.x1.protobuf.battle.Battle.PbSprite.Builder builderForValue) {
        if (heroesBuilder_ == null) {
          ensureHeroesIsMutable();
          heroes_.add(index, builderForValue.build());
          onChanged();
        } else {
          heroesBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       *出战英雄
       * </pre>
       *
       * <code>repeated .pb.PbSprite heroes = 3;</code>
       */
      public Builder addAllHeroes(
          java.lang.Iterable<? extends pb.xiugou.x1.protobuf.battle.Battle.PbSprite> values) {
        if (heroesBuilder_ == null) {
          ensureHeroesIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, heroes_);
          onChanged();
        } else {
          heroesBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * <pre>
       *出战英雄
       * </pre>
       *
       * <code>repeated .pb.PbSprite heroes = 3;</code>
       */
      public Builder clearHeroes() {
        if (heroesBuilder_ == null) {
          heroes_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000001);
          onChanged();
        } else {
          heroesBuilder_.clear();
        }
        return this;
      }
      /**
       * <pre>
       *出战英雄
       * </pre>
       *
       * <code>repeated .pb.PbSprite heroes = 3;</code>
       */
      public Builder removeHeroes(int index) {
        if (heroesBuilder_ == null) {
          ensureHeroesIsMutable();
          heroes_.remove(index);
          onChanged();
        } else {
          heroesBuilder_.remove(index);
        }
        return this;
      }
      /**
       * <pre>
       *出战英雄
       * </pre>
       *
       * <code>repeated .pb.PbSprite heroes = 3;</code>
       */
      public pb.xiugou.x1.protobuf.battle.Battle.PbSprite.Builder getHeroesBuilder(
          int index) {
        return getHeroesFieldBuilder().getBuilder(index);
      }
      /**
       * <pre>
       *出战英雄
       * </pre>
       *
       * <code>repeated .pb.PbSprite heroes = 3;</code>
       */
      public pb.xiugou.x1.protobuf.battle.Battle.PbSpriteOrBuilder getHeroesOrBuilder(
          int index) {
        if (heroesBuilder_ == null) {
          return heroes_.get(index);  } else {
          return heroesBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * <pre>
       *出战英雄
       * </pre>
       *
       * <code>repeated .pb.PbSprite heroes = 3;</code>
       */
      public java.util.List<? extends pb.xiugou.x1.protobuf.battle.Battle.PbSpriteOrBuilder> 
           getHeroesOrBuilderList() {
        if (heroesBuilder_ != null) {
          return heroesBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(heroes_);
        }
      }
      /**
       * <pre>
       *出战英雄
       * </pre>
       *
       * <code>repeated .pb.PbSprite heroes = 3;</code>
       */
      public pb.xiugou.x1.protobuf.battle.Battle.PbSprite.Builder addHeroesBuilder() {
        return getHeroesFieldBuilder().addBuilder(
            pb.xiugou.x1.protobuf.battle.Battle.PbSprite.getDefaultInstance());
      }
      /**
       * <pre>
       *出战英雄
       * </pre>
       *
       * <code>repeated .pb.PbSprite heroes = 3;</code>
       */
      public pb.xiugou.x1.protobuf.battle.Battle.PbSprite.Builder addHeroesBuilder(
          int index) {
        return getHeroesFieldBuilder().addBuilder(
            index, pb.xiugou.x1.protobuf.battle.Battle.PbSprite.getDefaultInstance());
      }
      /**
       * <pre>
       *出战英雄
       * </pre>
       *
       * <code>repeated .pb.PbSprite heroes = 3;</code>
       */
      public java.util.List<pb.xiugou.x1.protobuf.battle.Battle.PbSprite.Builder> 
           getHeroesBuilderList() {
        return getHeroesFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilderV3<
          pb.xiugou.x1.protobuf.battle.Battle.PbSprite, pb.xiugou.x1.protobuf.battle.Battle.PbSprite.Builder, pb.xiugou.x1.protobuf.battle.Battle.PbSpriteOrBuilder> 
          getHeroesFieldBuilder() {
        if (heroesBuilder_ == null) {
          heroesBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
              pb.xiugou.x1.protobuf.battle.Battle.PbSprite, pb.xiugou.x1.protobuf.battle.Battle.PbSprite.Builder, pb.xiugou.x1.protobuf.battle.Battle.PbSpriteOrBuilder>(
                  heroes_,
                  ((bitField0_ & 0x00000001) != 0),
                  getParentForChildren(),
                  isClean());
          heroes_ = null;
        }
        return heroesBuilder_;
      }

      private int mainHero_ ;
      /**
       * <pre>
       *对长英雄标识
       * </pre>
       *
       * <code>int32 main_hero = 4;</code>
       * @return The mainHero.
       */
      public int getMainHero() {
        return mainHero_;
      }
      /**
       * <pre>
       *对长英雄标识
       * </pre>
       *
       * <code>int32 main_hero = 4;</code>
       * @param value The mainHero to set.
       * @return This builder for chaining.
       */
      public Builder setMainHero(int value) {
        
        mainHero_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       *对长英雄标识
       * </pre>
       *
       * <code>int32 main_hero = 4;</code>
       * @return This builder for chaining.
       */
      public Builder clearMainHero() {
        
        mainHero_ = 0;
        onChanged();
        return this;
      }

      private com.google.protobuf.ByteString battleParams_ = com.google.protobuf.ByteString.EMPTY;
      /**
       * <pre>
       *战斗参数
       * </pre>
       *
       * <code>bytes battle_params = 5;</code>
       * @return The battleParams.
       */
      public com.google.protobuf.ByteString getBattleParams() {
        return battleParams_;
      }
      /**
       * <pre>
       *战斗参数
       * </pre>
       *
       * <code>bytes battle_params = 5;</code>
       * @param value The battleParams to set.
       * @return This builder for chaining.
       */
      public Builder setBattleParams(com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        battleParams_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       *战斗参数
       * </pre>
       *
       * <code>bytes battle_params = 5;</code>
       * @return This builder for chaining.
       */
      public Builder clearBattleParams() {
        
        battleParams_ = getDefaultInstance().getBattleParams();
        onChanged();
        return this;
      }

      private int type_ ;
      /**
       * <pre>
       *前端传啥返回啥
       * </pre>
       *
       * <code>int32 type = 6;</code>
       * @return The type.
       */
      public int getType() {
        return type_;
      }
      /**
       * <pre>
       *前端传啥返回啥
       * </pre>
       *
       * <code>int32 type = 6;</code>
       * @param value The type to set.
       * @return This builder for chaining.
       */
      public Builder setType(int value) {
        
        type_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       *前端传啥返回啥
       * </pre>
       *
       * <code>int32 type = 6;</code>
       * @return This builder for chaining.
       */
      public Builder clearType() {
        
        type_ = 0;
        onChanged();
        return this;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

      @java.lang.Override
      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.mergeUnknownFields(unknownFields);
      }


      // @@protoc_insertion_point(builder_scope:pb.EnterBattleResponse)
    }

    // @@protoc_insertion_point(class_scope:pb.EnterBattleResponse)
    private static final pb.xiugou.x1.protobuf.battle.Battle.EnterBattleResponse DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new pb.xiugou.x1.protobuf.battle.Battle.EnterBattleResponse();
    }

    public static pb.xiugou.x1.protobuf.battle.Battle.EnterBattleResponse getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<EnterBattleResponse>
        PARSER = new com.google.protobuf.AbstractParser<EnterBattleResponse>() {
      @java.lang.Override
      public EnterBattleResponse parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return new EnterBattleResponse(input, extensionRegistry);
      }
    };

    public static com.google.protobuf.Parser<EnterBattleResponse> parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser<EnterBattleResponse> getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public pb.xiugou.x1.protobuf.battle.Battle.EnterBattleResponse getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface EnterZoneRequestOrBuilder extends
      // @@protoc_insertion_point(interface_extends:pb.EnterZoneRequest)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     *区域ID
     * </pre>
     *
     * <code>int32 zone_id = 1;</code>
     * @return The zoneId.
     */
    int getZoneId();
  }
  /**
   * <pre>
   *进入某个区域
   * </pre>
   *
   * Protobuf type {@code pb.EnterZoneRequest}
   */
  public  static final class EnterZoneRequest extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:pb.EnterZoneRequest)
      EnterZoneRequestOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use EnterZoneRequest.newBuilder() to construct.
    private EnterZoneRequest(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private EnterZoneRequest() {
    }

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new EnterZoneRequest();
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private EnterZoneRequest(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      if (extensionRegistry == null) {
        throw new java.lang.NullPointerException();
      }
      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder();
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            case 8: {

              zoneId_ = input.readInt32();
              break;
            }
            default: {
              if (!parseUnknownField(
                  input, unknownFields, extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e).setUnfinishedMessage(this);
      } finally {
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return pb.xiugou.x1.protobuf.battle.Battle.internal_static_pb_EnterZoneRequest_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return pb.xiugou.x1.protobuf.battle.Battle.internal_static_pb_EnterZoneRequest_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              pb.xiugou.x1.protobuf.battle.Battle.EnterZoneRequest.class, pb.xiugou.x1.protobuf.battle.Battle.EnterZoneRequest.Builder.class);
    }

    /**
     * Protobuf enum {@code pb.EnterZoneRequest.Proto}
     */
    public enum Proto
        implements com.google.protobuf.ProtocolMessageEnum {
      /**
       * <code>UNKNOWN = 0;</code>
       */
      UNKNOWN(0),
      /**
       * <code>ID = 300002;</code>
       */
      ID(300002),
      UNRECOGNIZED(-1),
      ;

      /**
       * <code>UNKNOWN = 0;</code>
       */
      public static final int UNKNOWN_VALUE = 0;
      /**
       * <code>ID = 300002;</code>
       */
      public static final int ID_VALUE = 300002;


      public final int getNumber() {
        if (this == UNRECOGNIZED) {
          throw new java.lang.IllegalArgumentException(
              "Can't get the number of an unknown enum value.");
        }
        return value;
      }

      /**
       * @param value The numeric wire value of the corresponding enum entry.
       * @return The enum associated with the given numeric wire value.
       * @deprecated Use {@link #forNumber(int)} instead.
       */
      @java.lang.Deprecated
      public static Proto valueOf(int value) {
        return forNumber(value);
      }

      /**
       * @param value The numeric wire value of the corresponding enum entry.
       * @return The enum associated with the given numeric wire value.
       */
      public static Proto forNumber(int value) {
        switch (value) {
          case 0: return UNKNOWN;
          case 300002: return ID;
          default: return null;
        }
      }

      public static com.google.protobuf.Internal.EnumLiteMap<Proto>
          internalGetValueMap() {
        return internalValueMap;
      }
      private static final com.google.protobuf.Internal.EnumLiteMap<
          Proto> internalValueMap =
            new com.google.protobuf.Internal.EnumLiteMap<Proto>() {
              public Proto findValueByNumber(int number) {
                return Proto.forNumber(number);
              }
            };

      public final com.google.protobuf.Descriptors.EnumValueDescriptor
          getValueDescriptor() {
        return getDescriptor().getValues().get(ordinal());
      }
      public final com.google.protobuf.Descriptors.EnumDescriptor
          getDescriptorForType() {
        return getDescriptor();
      }
      public static final com.google.protobuf.Descriptors.EnumDescriptor
          getDescriptor() {
        return pb.xiugou.x1.protobuf.battle.Battle.EnterZoneRequest.getDescriptor().getEnumTypes().get(0);
      }

      private static final Proto[] VALUES = values();

      public static Proto valueOf(
          com.google.protobuf.Descriptors.EnumValueDescriptor desc) {
        if (desc.getType() != getDescriptor()) {
          throw new java.lang.IllegalArgumentException(
            "EnumValueDescriptor is not for this type.");
        }
        if (desc.getIndex() == -1) {
          return UNRECOGNIZED;
        }
        return VALUES[desc.getIndex()];
      }

      private final int value;

      private Proto(int value) {
        this.value = value;
      }

      // @@protoc_insertion_point(enum_scope:pb.EnterZoneRequest.Proto)
    }

    public static final int ZONE_ID_FIELD_NUMBER = 1;
    private int zoneId_;
    /**
     * <pre>
     *区域ID
     * </pre>
     *
     * <code>int32 zone_id = 1;</code>
     * @return The zoneId.
     */
    public int getZoneId() {
      return zoneId_;
    }

    private byte memoizedIsInitialized = -1;
    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (zoneId_ != 0) {
        output.writeInt32(1, zoneId_);
      }
      unknownFields.writeTo(output);
    }

    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      if (zoneId_ != 0) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt32Size(1, zoneId_);
      }
      size += unknownFields.getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof pb.xiugou.x1.protobuf.battle.Battle.EnterZoneRequest)) {
        return super.equals(obj);
      }
      pb.xiugou.x1.protobuf.battle.Battle.EnterZoneRequest other = (pb.xiugou.x1.protobuf.battle.Battle.EnterZoneRequest) obj;

      if (getZoneId()
          != other.getZoneId()) return false;
      if (!unknownFields.equals(other.unknownFields)) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      hash = (37 * hash) + ZONE_ID_FIELD_NUMBER;
      hash = (53 * hash) + getZoneId();
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static pb.xiugou.x1.protobuf.battle.Battle.EnterZoneRequest parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static pb.xiugou.x1.protobuf.battle.Battle.EnterZoneRequest parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static pb.xiugou.x1.protobuf.battle.Battle.EnterZoneRequest parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static pb.xiugou.x1.protobuf.battle.Battle.EnterZoneRequest parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static pb.xiugou.x1.protobuf.battle.Battle.EnterZoneRequest parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static pb.xiugou.x1.protobuf.battle.Battle.EnterZoneRequest parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static pb.xiugou.x1.protobuf.battle.Battle.EnterZoneRequest parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static pb.xiugou.x1.protobuf.battle.Battle.EnterZoneRequest parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }
    public static pb.xiugou.x1.protobuf.battle.Battle.EnterZoneRequest parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static pb.xiugou.x1.protobuf.battle.Battle.EnterZoneRequest parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static pb.xiugou.x1.protobuf.battle.Battle.EnterZoneRequest parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static pb.xiugou.x1.protobuf.battle.Battle.EnterZoneRequest parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(pb.xiugou.x1.protobuf.battle.Battle.EnterZoneRequest prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * <pre>
     *进入某个区域
     * </pre>
     *
     * Protobuf type {@code pb.EnterZoneRequest}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:pb.EnterZoneRequest)
        pb.xiugou.x1.protobuf.battle.Battle.EnterZoneRequestOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return pb.xiugou.x1.protobuf.battle.Battle.internal_static_pb_EnterZoneRequest_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return pb.xiugou.x1.protobuf.battle.Battle.internal_static_pb_EnterZoneRequest_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                pb.xiugou.x1.protobuf.battle.Battle.EnterZoneRequest.class, pb.xiugou.x1.protobuf.battle.Battle.EnterZoneRequest.Builder.class);
      }

      // Construct using pb.xiugou.x1.protobuf.battle.Battle.EnterZoneRequest.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
        }
      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        zoneId_ = 0;

        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return pb.xiugou.x1.protobuf.battle.Battle.internal_static_pb_EnterZoneRequest_descriptor;
      }

      @java.lang.Override
      public pb.xiugou.x1.protobuf.battle.Battle.EnterZoneRequest getDefaultInstanceForType() {
        return pb.xiugou.x1.protobuf.battle.Battle.EnterZoneRequest.getDefaultInstance();
      }

      @java.lang.Override
      public pb.xiugou.x1.protobuf.battle.Battle.EnterZoneRequest build() {
        pb.xiugou.x1.protobuf.battle.Battle.EnterZoneRequest result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public pb.xiugou.x1.protobuf.battle.Battle.EnterZoneRequest buildPartial() {
        pb.xiugou.x1.protobuf.battle.Battle.EnterZoneRequest result = new pb.xiugou.x1.protobuf.battle.Battle.EnterZoneRequest(this);
        result.zoneId_ = zoneId_;
        onBuilt();
        return result;
      }

      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }
      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.setField(field, value);
      }
      @java.lang.Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @java.lang.Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }
      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof pb.xiugou.x1.protobuf.battle.Battle.EnterZoneRequest) {
          return mergeFrom((pb.xiugou.x1.protobuf.battle.Battle.EnterZoneRequest)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(pb.xiugou.x1.protobuf.battle.Battle.EnterZoneRequest other) {
        if (other == pb.xiugou.x1.protobuf.battle.Battle.EnterZoneRequest.getDefaultInstance()) return this;
        if (other.getZoneId() != 0) {
          setZoneId(other.getZoneId());
        }
        this.mergeUnknownFields(other.unknownFields);
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        pb.xiugou.x1.protobuf.battle.Battle.EnterZoneRequest parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (pb.xiugou.x1.protobuf.battle.Battle.EnterZoneRequest) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }

      private int zoneId_ ;
      /**
       * <pre>
       *区域ID
       * </pre>
       *
       * <code>int32 zone_id = 1;</code>
       * @return The zoneId.
       */
      public int getZoneId() {
        return zoneId_;
      }
      /**
       * <pre>
       *区域ID
       * </pre>
       *
       * <code>int32 zone_id = 1;</code>
       * @param value The zoneId to set.
       * @return This builder for chaining.
       */
      public Builder setZoneId(int value) {
        
        zoneId_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       *区域ID
       * </pre>
       *
       * <code>int32 zone_id = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearZoneId() {
        
        zoneId_ = 0;
        onChanged();
        return this;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

      @java.lang.Override
      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.mergeUnknownFields(unknownFields);
      }


      // @@protoc_insertion_point(builder_scope:pb.EnterZoneRequest)
    }

    // @@protoc_insertion_point(class_scope:pb.EnterZoneRequest)
    private static final pb.xiugou.x1.protobuf.battle.Battle.EnterZoneRequest DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new pb.xiugou.x1.protobuf.battle.Battle.EnterZoneRequest();
    }

    public static pb.xiugou.x1.protobuf.battle.Battle.EnterZoneRequest getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<EnterZoneRequest>
        PARSER = new com.google.protobuf.AbstractParser<EnterZoneRequest>() {
      @java.lang.Override
      public EnterZoneRequest parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return new EnterZoneRequest(input, extensionRegistry);
      }
    };

    public static com.google.protobuf.Parser<EnterZoneRequest> parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser<EnterZoneRequest> getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public pb.xiugou.x1.protobuf.battle.Battle.EnterZoneRequest getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface EnterZoneResponseOrBuilder extends
      // @@protoc_insertion_point(interface_extends:pb.EnterZoneResponse)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     *区域ID
     * </pre>
     *
     * <code>int32 zone_id = 1;</code>
     * @return The zoneId.
     */
    int getZoneId();
  }
  /**
   * Protobuf type {@code pb.EnterZoneResponse}
   */
  public  static final class EnterZoneResponse extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:pb.EnterZoneResponse)
      EnterZoneResponseOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use EnterZoneResponse.newBuilder() to construct.
    private EnterZoneResponse(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private EnterZoneResponse() {
    }

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new EnterZoneResponse();
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private EnterZoneResponse(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      if (extensionRegistry == null) {
        throw new java.lang.NullPointerException();
      }
      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder();
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            case 8: {

              zoneId_ = input.readInt32();
              break;
            }
            default: {
              if (!parseUnknownField(
                  input, unknownFields, extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e).setUnfinishedMessage(this);
      } finally {
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return pb.xiugou.x1.protobuf.battle.Battle.internal_static_pb_EnterZoneResponse_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return pb.xiugou.x1.protobuf.battle.Battle.internal_static_pb_EnterZoneResponse_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              pb.xiugou.x1.protobuf.battle.Battle.EnterZoneResponse.class, pb.xiugou.x1.protobuf.battle.Battle.EnterZoneResponse.Builder.class);
    }

    /**
     * Protobuf enum {@code pb.EnterZoneResponse.Proto}
     */
    public enum Proto
        implements com.google.protobuf.ProtocolMessageEnum {
      /**
       * <code>UNKNOWN = 0;</code>
       */
      UNKNOWN(0),
      /**
       * <code>ID = 300002;</code>
       */
      ID(300002),
      UNRECOGNIZED(-1),
      ;

      /**
       * <code>UNKNOWN = 0;</code>
       */
      public static final int UNKNOWN_VALUE = 0;
      /**
       * <code>ID = 300002;</code>
       */
      public static final int ID_VALUE = 300002;


      public final int getNumber() {
        if (this == UNRECOGNIZED) {
          throw new java.lang.IllegalArgumentException(
              "Can't get the number of an unknown enum value.");
        }
        return value;
      }

      /**
       * @param value The numeric wire value of the corresponding enum entry.
       * @return The enum associated with the given numeric wire value.
       * @deprecated Use {@link #forNumber(int)} instead.
       */
      @java.lang.Deprecated
      public static Proto valueOf(int value) {
        return forNumber(value);
      }

      /**
       * @param value The numeric wire value of the corresponding enum entry.
       * @return The enum associated with the given numeric wire value.
       */
      public static Proto forNumber(int value) {
        switch (value) {
          case 0: return UNKNOWN;
          case 300002: return ID;
          default: return null;
        }
      }

      public static com.google.protobuf.Internal.EnumLiteMap<Proto>
          internalGetValueMap() {
        return internalValueMap;
      }
      private static final com.google.protobuf.Internal.EnumLiteMap<
          Proto> internalValueMap =
            new com.google.protobuf.Internal.EnumLiteMap<Proto>() {
              public Proto findValueByNumber(int number) {
                return Proto.forNumber(number);
              }
            };

      public final com.google.protobuf.Descriptors.EnumValueDescriptor
          getValueDescriptor() {
        return getDescriptor().getValues().get(ordinal());
      }
      public final com.google.protobuf.Descriptors.EnumDescriptor
          getDescriptorForType() {
        return getDescriptor();
      }
      public static final com.google.protobuf.Descriptors.EnumDescriptor
          getDescriptor() {
        return pb.xiugou.x1.protobuf.battle.Battle.EnterZoneResponse.getDescriptor().getEnumTypes().get(0);
      }

      private static final Proto[] VALUES = values();

      public static Proto valueOf(
          com.google.protobuf.Descriptors.EnumValueDescriptor desc) {
        if (desc.getType() != getDescriptor()) {
          throw new java.lang.IllegalArgumentException(
            "EnumValueDescriptor is not for this type.");
        }
        if (desc.getIndex() == -1) {
          return UNRECOGNIZED;
        }
        return VALUES[desc.getIndex()];
      }

      private final int value;

      private Proto(int value) {
        this.value = value;
      }

      // @@protoc_insertion_point(enum_scope:pb.EnterZoneResponse.Proto)
    }

    public static final int ZONE_ID_FIELD_NUMBER = 1;
    private int zoneId_;
    /**
     * <pre>
     *区域ID
     * </pre>
     *
     * <code>int32 zone_id = 1;</code>
     * @return The zoneId.
     */
    public int getZoneId() {
      return zoneId_;
    }

    private byte memoizedIsInitialized = -1;
    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (zoneId_ != 0) {
        output.writeInt32(1, zoneId_);
      }
      unknownFields.writeTo(output);
    }

    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      if (zoneId_ != 0) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt32Size(1, zoneId_);
      }
      size += unknownFields.getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof pb.xiugou.x1.protobuf.battle.Battle.EnterZoneResponse)) {
        return super.equals(obj);
      }
      pb.xiugou.x1.protobuf.battle.Battle.EnterZoneResponse other = (pb.xiugou.x1.protobuf.battle.Battle.EnterZoneResponse) obj;

      if (getZoneId()
          != other.getZoneId()) return false;
      if (!unknownFields.equals(other.unknownFields)) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      hash = (37 * hash) + ZONE_ID_FIELD_NUMBER;
      hash = (53 * hash) + getZoneId();
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static pb.xiugou.x1.protobuf.battle.Battle.EnterZoneResponse parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static pb.xiugou.x1.protobuf.battle.Battle.EnterZoneResponse parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static pb.xiugou.x1.protobuf.battle.Battle.EnterZoneResponse parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static pb.xiugou.x1.protobuf.battle.Battle.EnterZoneResponse parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static pb.xiugou.x1.protobuf.battle.Battle.EnterZoneResponse parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static pb.xiugou.x1.protobuf.battle.Battle.EnterZoneResponse parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static pb.xiugou.x1.protobuf.battle.Battle.EnterZoneResponse parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static pb.xiugou.x1.protobuf.battle.Battle.EnterZoneResponse parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }
    public static pb.xiugou.x1.protobuf.battle.Battle.EnterZoneResponse parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static pb.xiugou.x1.protobuf.battle.Battle.EnterZoneResponse parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static pb.xiugou.x1.protobuf.battle.Battle.EnterZoneResponse parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static pb.xiugou.x1.protobuf.battle.Battle.EnterZoneResponse parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(pb.xiugou.x1.protobuf.battle.Battle.EnterZoneResponse prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code pb.EnterZoneResponse}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:pb.EnterZoneResponse)
        pb.xiugou.x1.protobuf.battle.Battle.EnterZoneResponseOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return pb.xiugou.x1.protobuf.battle.Battle.internal_static_pb_EnterZoneResponse_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return pb.xiugou.x1.protobuf.battle.Battle.internal_static_pb_EnterZoneResponse_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                pb.xiugou.x1.protobuf.battle.Battle.EnterZoneResponse.class, pb.xiugou.x1.protobuf.battle.Battle.EnterZoneResponse.Builder.class);
      }

      // Construct using pb.xiugou.x1.protobuf.battle.Battle.EnterZoneResponse.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
        }
      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        zoneId_ = 0;

        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return pb.xiugou.x1.protobuf.battle.Battle.internal_static_pb_EnterZoneResponse_descriptor;
      }

      @java.lang.Override
      public pb.xiugou.x1.protobuf.battle.Battle.EnterZoneResponse getDefaultInstanceForType() {
        return pb.xiugou.x1.protobuf.battle.Battle.EnterZoneResponse.getDefaultInstance();
      }

      @java.lang.Override
      public pb.xiugou.x1.protobuf.battle.Battle.EnterZoneResponse build() {
        pb.xiugou.x1.protobuf.battle.Battle.EnterZoneResponse result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public pb.xiugou.x1.protobuf.battle.Battle.EnterZoneResponse buildPartial() {
        pb.xiugou.x1.protobuf.battle.Battle.EnterZoneResponse result = new pb.xiugou.x1.protobuf.battle.Battle.EnterZoneResponse(this);
        result.zoneId_ = zoneId_;
        onBuilt();
        return result;
      }

      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }
      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.setField(field, value);
      }
      @java.lang.Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @java.lang.Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }
      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof pb.xiugou.x1.protobuf.battle.Battle.EnterZoneResponse) {
          return mergeFrom((pb.xiugou.x1.protobuf.battle.Battle.EnterZoneResponse)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(pb.xiugou.x1.protobuf.battle.Battle.EnterZoneResponse other) {
        if (other == pb.xiugou.x1.protobuf.battle.Battle.EnterZoneResponse.getDefaultInstance()) return this;
        if (other.getZoneId() != 0) {
          setZoneId(other.getZoneId());
        }
        this.mergeUnknownFields(other.unknownFields);
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        pb.xiugou.x1.protobuf.battle.Battle.EnterZoneResponse parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (pb.xiugou.x1.protobuf.battle.Battle.EnterZoneResponse) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }

      private int zoneId_ ;
      /**
       * <pre>
       *区域ID
       * </pre>
       *
       * <code>int32 zone_id = 1;</code>
       * @return The zoneId.
       */
      public int getZoneId() {
        return zoneId_;
      }
      /**
       * <pre>
       *区域ID
       * </pre>
       *
       * <code>int32 zone_id = 1;</code>
       * @param value The zoneId to set.
       * @return This builder for chaining.
       */
      public Builder setZoneId(int value) {
        
        zoneId_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       *区域ID
       * </pre>
       *
       * <code>int32 zone_id = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearZoneId() {
        
        zoneId_ = 0;
        onChanged();
        return this;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

      @java.lang.Override
      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.mergeUnknownFields(unknownFields);
      }


      // @@protoc_insertion_point(builder_scope:pb.EnterZoneResponse)
    }

    // @@protoc_insertion_point(class_scope:pb.EnterZoneResponse)
    private static final pb.xiugou.x1.protobuf.battle.Battle.EnterZoneResponse DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new pb.xiugou.x1.protobuf.battle.Battle.EnterZoneResponse();
    }

    public static pb.xiugou.x1.protobuf.battle.Battle.EnterZoneResponse getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<EnterZoneResponse>
        PARSER = new com.google.protobuf.AbstractParser<EnterZoneResponse>() {
      @java.lang.Override
      public EnterZoneResponse parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return new EnterZoneResponse(input, extensionRegistry);
      }
    };

    public static com.google.protobuf.Parser<EnterZoneResponse> parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser<EnterZoneResponse> getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public pb.xiugou.x1.protobuf.battle.Battle.EnterZoneResponse getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface ZoneInfoRequestOrBuilder extends
      // @@protoc_insertion_point(interface_extends:pb.ZoneInfoRequest)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     *区域ID
     * </pre>
     *
     * <code>int32 zone_id = 1;</code>
     * @return The zoneId.
     */
    int getZoneId();
  }
  /**
   * <pre>
   *请求某个区域的数据
   * </pre>
   *
   * Protobuf type {@code pb.ZoneInfoRequest}
   */
  public  static final class ZoneInfoRequest extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:pb.ZoneInfoRequest)
      ZoneInfoRequestOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use ZoneInfoRequest.newBuilder() to construct.
    private ZoneInfoRequest(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private ZoneInfoRequest() {
    }

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new ZoneInfoRequest();
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private ZoneInfoRequest(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      if (extensionRegistry == null) {
        throw new java.lang.NullPointerException();
      }
      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder();
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            case 8: {

              zoneId_ = input.readInt32();
              break;
            }
            default: {
              if (!parseUnknownField(
                  input, unknownFields, extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e).setUnfinishedMessage(this);
      } finally {
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return pb.xiugou.x1.protobuf.battle.Battle.internal_static_pb_ZoneInfoRequest_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return pb.xiugou.x1.protobuf.battle.Battle.internal_static_pb_ZoneInfoRequest_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              pb.xiugou.x1.protobuf.battle.Battle.ZoneInfoRequest.class, pb.xiugou.x1.protobuf.battle.Battle.ZoneInfoRequest.Builder.class);
    }

    /**
     * Protobuf enum {@code pb.ZoneInfoRequest.Proto}
     */
    public enum Proto
        implements com.google.protobuf.ProtocolMessageEnum {
      /**
       * <code>UNKNOWN = 0;</code>
       */
      UNKNOWN(0),
      /**
       * <code>ID = 300003;</code>
       */
      ID(300003),
      UNRECOGNIZED(-1),
      ;

      /**
       * <code>UNKNOWN = 0;</code>
       */
      public static final int UNKNOWN_VALUE = 0;
      /**
       * <code>ID = 300003;</code>
       */
      public static final int ID_VALUE = 300003;


      public final int getNumber() {
        if (this == UNRECOGNIZED) {
          throw new java.lang.IllegalArgumentException(
              "Can't get the number of an unknown enum value.");
        }
        return value;
      }

      /**
       * @param value The numeric wire value of the corresponding enum entry.
       * @return The enum associated with the given numeric wire value.
       * @deprecated Use {@link #forNumber(int)} instead.
       */
      @java.lang.Deprecated
      public static Proto valueOf(int value) {
        return forNumber(value);
      }

      /**
       * @param value The numeric wire value of the corresponding enum entry.
       * @return The enum associated with the given numeric wire value.
       */
      public static Proto forNumber(int value) {
        switch (value) {
          case 0: return UNKNOWN;
          case 300003: return ID;
          default: return null;
        }
      }

      public static com.google.protobuf.Internal.EnumLiteMap<Proto>
          internalGetValueMap() {
        return internalValueMap;
      }
      private static final com.google.protobuf.Internal.EnumLiteMap<
          Proto> internalValueMap =
            new com.google.protobuf.Internal.EnumLiteMap<Proto>() {
              public Proto findValueByNumber(int number) {
                return Proto.forNumber(number);
              }
            };

      public final com.google.protobuf.Descriptors.EnumValueDescriptor
          getValueDescriptor() {
        return getDescriptor().getValues().get(ordinal());
      }
      public final com.google.protobuf.Descriptors.EnumDescriptor
          getDescriptorForType() {
        return getDescriptor();
      }
      public static final com.google.protobuf.Descriptors.EnumDescriptor
          getDescriptor() {
        return pb.xiugou.x1.protobuf.battle.Battle.ZoneInfoRequest.getDescriptor().getEnumTypes().get(0);
      }

      private static final Proto[] VALUES = values();

      public static Proto valueOf(
          com.google.protobuf.Descriptors.EnumValueDescriptor desc) {
        if (desc.getType() != getDescriptor()) {
          throw new java.lang.IllegalArgumentException(
            "EnumValueDescriptor is not for this type.");
        }
        if (desc.getIndex() == -1) {
          return UNRECOGNIZED;
        }
        return VALUES[desc.getIndex()];
      }

      private final int value;

      private Proto(int value) {
        this.value = value;
      }

      // @@protoc_insertion_point(enum_scope:pb.ZoneInfoRequest.Proto)
    }

    public static final int ZONE_ID_FIELD_NUMBER = 1;
    private int zoneId_;
    /**
     * <pre>
     *区域ID
     * </pre>
     *
     * <code>int32 zone_id = 1;</code>
     * @return The zoneId.
     */
    public int getZoneId() {
      return zoneId_;
    }

    private byte memoizedIsInitialized = -1;
    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (zoneId_ != 0) {
        output.writeInt32(1, zoneId_);
      }
      unknownFields.writeTo(output);
    }

    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      if (zoneId_ != 0) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt32Size(1, zoneId_);
      }
      size += unknownFields.getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof pb.xiugou.x1.protobuf.battle.Battle.ZoneInfoRequest)) {
        return super.equals(obj);
      }
      pb.xiugou.x1.protobuf.battle.Battle.ZoneInfoRequest other = (pb.xiugou.x1.protobuf.battle.Battle.ZoneInfoRequest) obj;

      if (getZoneId()
          != other.getZoneId()) return false;
      if (!unknownFields.equals(other.unknownFields)) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      hash = (37 * hash) + ZONE_ID_FIELD_NUMBER;
      hash = (53 * hash) + getZoneId();
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static pb.xiugou.x1.protobuf.battle.Battle.ZoneInfoRequest parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static pb.xiugou.x1.protobuf.battle.Battle.ZoneInfoRequest parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static pb.xiugou.x1.protobuf.battle.Battle.ZoneInfoRequest parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static pb.xiugou.x1.protobuf.battle.Battle.ZoneInfoRequest parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static pb.xiugou.x1.protobuf.battle.Battle.ZoneInfoRequest parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static pb.xiugou.x1.protobuf.battle.Battle.ZoneInfoRequest parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static pb.xiugou.x1.protobuf.battle.Battle.ZoneInfoRequest parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static pb.xiugou.x1.protobuf.battle.Battle.ZoneInfoRequest parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }
    public static pb.xiugou.x1.protobuf.battle.Battle.ZoneInfoRequest parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static pb.xiugou.x1.protobuf.battle.Battle.ZoneInfoRequest parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static pb.xiugou.x1.protobuf.battle.Battle.ZoneInfoRequest parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static pb.xiugou.x1.protobuf.battle.Battle.ZoneInfoRequest parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(pb.xiugou.x1.protobuf.battle.Battle.ZoneInfoRequest prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * <pre>
     *请求某个区域的数据
     * </pre>
     *
     * Protobuf type {@code pb.ZoneInfoRequest}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:pb.ZoneInfoRequest)
        pb.xiugou.x1.protobuf.battle.Battle.ZoneInfoRequestOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return pb.xiugou.x1.protobuf.battle.Battle.internal_static_pb_ZoneInfoRequest_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return pb.xiugou.x1.protobuf.battle.Battle.internal_static_pb_ZoneInfoRequest_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                pb.xiugou.x1.protobuf.battle.Battle.ZoneInfoRequest.class, pb.xiugou.x1.protobuf.battle.Battle.ZoneInfoRequest.Builder.class);
      }

      // Construct using pb.xiugou.x1.protobuf.battle.Battle.ZoneInfoRequest.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
        }
      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        zoneId_ = 0;

        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return pb.xiugou.x1.protobuf.battle.Battle.internal_static_pb_ZoneInfoRequest_descriptor;
      }

      @java.lang.Override
      public pb.xiugou.x1.protobuf.battle.Battle.ZoneInfoRequest getDefaultInstanceForType() {
        return pb.xiugou.x1.protobuf.battle.Battle.ZoneInfoRequest.getDefaultInstance();
      }

      @java.lang.Override
      public pb.xiugou.x1.protobuf.battle.Battle.ZoneInfoRequest build() {
        pb.xiugou.x1.protobuf.battle.Battle.ZoneInfoRequest result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public pb.xiugou.x1.protobuf.battle.Battle.ZoneInfoRequest buildPartial() {
        pb.xiugou.x1.protobuf.battle.Battle.ZoneInfoRequest result = new pb.xiugou.x1.protobuf.battle.Battle.ZoneInfoRequest(this);
        result.zoneId_ = zoneId_;
        onBuilt();
        return result;
      }

      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }
      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.setField(field, value);
      }
      @java.lang.Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @java.lang.Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }
      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof pb.xiugou.x1.protobuf.battle.Battle.ZoneInfoRequest) {
          return mergeFrom((pb.xiugou.x1.protobuf.battle.Battle.ZoneInfoRequest)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(pb.xiugou.x1.protobuf.battle.Battle.ZoneInfoRequest other) {
        if (other == pb.xiugou.x1.protobuf.battle.Battle.ZoneInfoRequest.getDefaultInstance()) return this;
        if (other.getZoneId() != 0) {
          setZoneId(other.getZoneId());
        }
        this.mergeUnknownFields(other.unknownFields);
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        pb.xiugou.x1.protobuf.battle.Battle.ZoneInfoRequest parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (pb.xiugou.x1.protobuf.battle.Battle.ZoneInfoRequest) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }

      private int zoneId_ ;
      /**
       * <pre>
       *区域ID
       * </pre>
       *
       * <code>int32 zone_id = 1;</code>
       * @return The zoneId.
       */
      public int getZoneId() {
        return zoneId_;
      }
      /**
       * <pre>
       *区域ID
       * </pre>
       *
       * <code>int32 zone_id = 1;</code>
       * @param value The zoneId to set.
       * @return This builder for chaining.
       */
      public Builder setZoneId(int value) {
        
        zoneId_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       *区域ID
       * </pre>
       *
       * <code>int32 zone_id = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearZoneId() {
        
        zoneId_ = 0;
        onChanged();
        return this;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

      @java.lang.Override
      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.mergeUnknownFields(unknownFields);
      }


      // @@protoc_insertion_point(builder_scope:pb.ZoneInfoRequest)
    }

    // @@protoc_insertion_point(class_scope:pb.ZoneInfoRequest)
    private static final pb.xiugou.x1.protobuf.battle.Battle.ZoneInfoRequest DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new pb.xiugou.x1.protobuf.battle.Battle.ZoneInfoRequest();
    }

    public static pb.xiugou.x1.protobuf.battle.Battle.ZoneInfoRequest getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<ZoneInfoRequest>
        PARSER = new com.google.protobuf.AbstractParser<ZoneInfoRequest>() {
      @java.lang.Override
      public ZoneInfoRequest parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return new ZoneInfoRequest(input, extensionRegistry);
      }
    };

    public static com.google.protobuf.Parser<ZoneInfoRequest> parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser<ZoneInfoRequest> getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public pb.xiugou.x1.protobuf.battle.Battle.ZoneInfoRequest getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface ZoneInfoResponseOrBuilder extends
      // @@protoc_insertion_point(interface_extends:pb.ZoneInfoResponse)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <code>.pb.PbZone zone = 1;</code>
     * @return Whether the zone field is set.
     */
    boolean hasZone();
    /**
     * <code>.pb.PbZone zone = 1;</code>
     * @return The zone.
     */
    pb.xiugou.x1.protobuf.battle.Battle.PbZone getZone();
    /**
     * <code>.pb.PbZone zone = 1;</code>
     */
    pb.xiugou.x1.protobuf.battle.Battle.PbZoneOrBuilder getZoneOrBuilder();
  }
  /**
   * Protobuf type {@code pb.ZoneInfoResponse}
   */
  public  static final class ZoneInfoResponse extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:pb.ZoneInfoResponse)
      ZoneInfoResponseOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use ZoneInfoResponse.newBuilder() to construct.
    private ZoneInfoResponse(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private ZoneInfoResponse() {
    }

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new ZoneInfoResponse();
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private ZoneInfoResponse(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      if (extensionRegistry == null) {
        throw new java.lang.NullPointerException();
      }
      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder();
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            case 10: {
              pb.xiugou.x1.protobuf.battle.Battle.PbZone.Builder subBuilder = null;
              if (zone_ != null) {
                subBuilder = zone_.toBuilder();
              }
              zone_ = input.readMessage(pb.xiugou.x1.protobuf.battle.Battle.PbZone.parser(), extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(zone_);
                zone_ = subBuilder.buildPartial();
              }

              break;
            }
            default: {
              if (!parseUnknownField(
                  input, unknownFields, extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e).setUnfinishedMessage(this);
      } finally {
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return pb.xiugou.x1.protobuf.battle.Battle.internal_static_pb_ZoneInfoResponse_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return pb.xiugou.x1.protobuf.battle.Battle.internal_static_pb_ZoneInfoResponse_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              pb.xiugou.x1.protobuf.battle.Battle.ZoneInfoResponse.class, pb.xiugou.x1.protobuf.battle.Battle.ZoneInfoResponse.Builder.class);
    }

    /**
     * Protobuf enum {@code pb.ZoneInfoResponse.Proto}
     */
    public enum Proto
        implements com.google.protobuf.ProtocolMessageEnum {
      /**
       * <code>UNKNOWN = 0;</code>
       */
      UNKNOWN(0),
      /**
       * <code>ID = 300003;</code>
       */
      ID(300003),
      UNRECOGNIZED(-1),
      ;

      /**
       * <code>UNKNOWN = 0;</code>
       */
      public static final int UNKNOWN_VALUE = 0;
      /**
       * <code>ID = 300003;</code>
       */
      public static final int ID_VALUE = 300003;


      public final int getNumber() {
        if (this == UNRECOGNIZED) {
          throw new java.lang.IllegalArgumentException(
              "Can't get the number of an unknown enum value.");
        }
        return value;
      }

      /**
       * @param value The numeric wire value of the corresponding enum entry.
       * @return The enum associated with the given numeric wire value.
       * @deprecated Use {@link #forNumber(int)} instead.
       */
      @java.lang.Deprecated
      public static Proto valueOf(int value) {
        return forNumber(value);
      }

      /**
       * @param value The numeric wire value of the corresponding enum entry.
       * @return The enum associated with the given numeric wire value.
       */
      public static Proto forNumber(int value) {
        switch (value) {
          case 0: return UNKNOWN;
          case 300003: return ID;
          default: return null;
        }
      }

      public static com.google.protobuf.Internal.EnumLiteMap<Proto>
          internalGetValueMap() {
        return internalValueMap;
      }
      private static final com.google.protobuf.Internal.EnumLiteMap<
          Proto> internalValueMap =
            new com.google.protobuf.Internal.EnumLiteMap<Proto>() {
              public Proto findValueByNumber(int number) {
                return Proto.forNumber(number);
              }
            };

      public final com.google.protobuf.Descriptors.EnumValueDescriptor
          getValueDescriptor() {
        return getDescriptor().getValues().get(ordinal());
      }
      public final com.google.protobuf.Descriptors.EnumDescriptor
          getDescriptorForType() {
        return getDescriptor();
      }
      public static final com.google.protobuf.Descriptors.EnumDescriptor
          getDescriptor() {
        return pb.xiugou.x1.protobuf.battle.Battle.ZoneInfoResponse.getDescriptor().getEnumTypes().get(0);
      }

      private static final Proto[] VALUES = values();

      public static Proto valueOf(
          com.google.protobuf.Descriptors.EnumValueDescriptor desc) {
        if (desc.getType() != getDescriptor()) {
          throw new java.lang.IllegalArgumentException(
            "EnumValueDescriptor is not for this type.");
        }
        if (desc.getIndex() == -1) {
          return UNRECOGNIZED;
        }
        return VALUES[desc.getIndex()];
      }

      private final int value;

      private Proto(int value) {
        this.value = value;
      }

      // @@protoc_insertion_point(enum_scope:pb.ZoneInfoResponse.Proto)
    }

    public static final int ZONE_FIELD_NUMBER = 1;
    private pb.xiugou.x1.protobuf.battle.Battle.PbZone zone_;
    /**
     * <code>.pb.PbZone zone = 1;</code>
     * @return Whether the zone field is set.
     */
    public boolean hasZone() {
      return zone_ != null;
    }
    /**
     * <code>.pb.PbZone zone = 1;</code>
     * @return The zone.
     */
    public pb.xiugou.x1.protobuf.battle.Battle.PbZone getZone() {
      return zone_ == null ? pb.xiugou.x1.protobuf.battle.Battle.PbZone.getDefaultInstance() : zone_;
    }
    /**
     * <code>.pb.PbZone zone = 1;</code>
     */
    public pb.xiugou.x1.protobuf.battle.Battle.PbZoneOrBuilder getZoneOrBuilder() {
      return getZone();
    }

    private byte memoizedIsInitialized = -1;
    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (zone_ != null) {
        output.writeMessage(1, getZone());
      }
      unknownFields.writeTo(output);
    }

    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      if (zone_ != null) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(1, getZone());
      }
      size += unknownFields.getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof pb.xiugou.x1.protobuf.battle.Battle.ZoneInfoResponse)) {
        return super.equals(obj);
      }
      pb.xiugou.x1.protobuf.battle.Battle.ZoneInfoResponse other = (pb.xiugou.x1.protobuf.battle.Battle.ZoneInfoResponse) obj;

      if (hasZone() != other.hasZone()) return false;
      if (hasZone()) {
        if (!getZone()
            .equals(other.getZone())) return false;
      }
      if (!unknownFields.equals(other.unknownFields)) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      if (hasZone()) {
        hash = (37 * hash) + ZONE_FIELD_NUMBER;
        hash = (53 * hash) + getZone().hashCode();
      }
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static pb.xiugou.x1.protobuf.battle.Battle.ZoneInfoResponse parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static pb.xiugou.x1.protobuf.battle.Battle.ZoneInfoResponse parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static pb.xiugou.x1.protobuf.battle.Battle.ZoneInfoResponse parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static pb.xiugou.x1.protobuf.battle.Battle.ZoneInfoResponse parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static pb.xiugou.x1.protobuf.battle.Battle.ZoneInfoResponse parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static pb.xiugou.x1.protobuf.battle.Battle.ZoneInfoResponse parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static pb.xiugou.x1.protobuf.battle.Battle.ZoneInfoResponse parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static pb.xiugou.x1.protobuf.battle.Battle.ZoneInfoResponse parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }
    public static pb.xiugou.x1.protobuf.battle.Battle.ZoneInfoResponse parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static pb.xiugou.x1.protobuf.battle.Battle.ZoneInfoResponse parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static pb.xiugou.x1.protobuf.battle.Battle.ZoneInfoResponse parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static pb.xiugou.x1.protobuf.battle.Battle.ZoneInfoResponse parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(pb.xiugou.x1.protobuf.battle.Battle.ZoneInfoResponse prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code pb.ZoneInfoResponse}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:pb.ZoneInfoResponse)
        pb.xiugou.x1.protobuf.battle.Battle.ZoneInfoResponseOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return pb.xiugou.x1.protobuf.battle.Battle.internal_static_pb_ZoneInfoResponse_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return pb.xiugou.x1.protobuf.battle.Battle.internal_static_pb_ZoneInfoResponse_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                pb.xiugou.x1.protobuf.battle.Battle.ZoneInfoResponse.class, pb.xiugou.x1.protobuf.battle.Battle.ZoneInfoResponse.Builder.class);
      }

      // Construct using pb.xiugou.x1.protobuf.battle.Battle.ZoneInfoResponse.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
        }
      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        if (zoneBuilder_ == null) {
          zone_ = null;
        } else {
          zone_ = null;
          zoneBuilder_ = null;
        }
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return pb.xiugou.x1.protobuf.battle.Battle.internal_static_pb_ZoneInfoResponse_descriptor;
      }

      @java.lang.Override
      public pb.xiugou.x1.protobuf.battle.Battle.ZoneInfoResponse getDefaultInstanceForType() {
        return pb.xiugou.x1.protobuf.battle.Battle.ZoneInfoResponse.getDefaultInstance();
      }

      @java.lang.Override
      public pb.xiugou.x1.protobuf.battle.Battle.ZoneInfoResponse build() {
        pb.xiugou.x1.protobuf.battle.Battle.ZoneInfoResponse result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public pb.xiugou.x1.protobuf.battle.Battle.ZoneInfoResponse buildPartial() {
        pb.xiugou.x1.protobuf.battle.Battle.ZoneInfoResponse result = new pb.xiugou.x1.protobuf.battle.Battle.ZoneInfoResponse(this);
        if (zoneBuilder_ == null) {
          result.zone_ = zone_;
        } else {
          result.zone_ = zoneBuilder_.build();
        }
        onBuilt();
        return result;
      }

      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }
      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.setField(field, value);
      }
      @java.lang.Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @java.lang.Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }
      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof pb.xiugou.x1.protobuf.battle.Battle.ZoneInfoResponse) {
          return mergeFrom((pb.xiugou.x1.protobuf.battle.Battle.ZoneInfoResponse)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(pb.xiugou.x1.protobuf.battle.Battle.ZoneInfoResponse other) {
        if (other == pb.xiugou.x1.protobuf.battle.Battle.ZoneInfoResponse.getDefaultInstance()) return this;
        if (other.hasZone()) {
          mergeZone(other.getZone());
        }
        this.mergeUnknownFields(other.unknownFields);
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        pb.xiugou.x1.protobuf.battle.Battle.ZoneInfoResponse parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (pb.xiugou.x1.protobuf.battle.Battle.ZoneInfoResponse) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }

      private pb.xiugou.x1.protobuf.battle.Battle.PbZone zone_;
      private com.google.protobuf.SingleFieldBuilderV3<
          pb.xiugou.x1.protobuf.battle.Battle.PbZone, pb.xiugou.x1.protobuf.battle.Battle.PbZone.Builder, pb.xiugou.x1.protobuf.battle.Battle.PbZoneOrBuilder> zoneBuilder_;
      /**
       * <code>.pb.PbZone zone = 1;</code>
       * @return Whether the zone field is set.
       */
      public boolean hasZone() {
        return zoneBuilder_ != null || zone_ != null;
      }
      /**
       * <code>.pb.PbZone zone = 1;</code>
       * @return The zone.
       */
      public pb.xiugou.x1.protobuf.battle.Battle.PbZone getZone() {
        if (zoneBuilder_ == null) {
          return zone_ == null ? pb.xiugou.x1.protobuf.battle.Battle.PbZone.getDefaultInstance() : zone_;
        } else {
          return zoneBuilder_.getMessage();
        }
      }
      /**
       * <code>.pb.PbZone zone = 1;</code>
       */
      public Builder setZone(pb.xiugou.x1.protobuf.battle.Battle.PbZone value) {
        if (zoneBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          zone_ = value;
          onChanged();
        } else {
          zoneBuilder_.setMessage(value);
        }

        return this;
      }
      /**
       * <code>.pb.PbZone zone = 1;</code>
       */
      public Builder setZone(
          pb.xiugou.x1.protobuf.battle.Battle.PbZone.Builder builderForValue) {
        if (zoneBuilder_ == null) {
          zone_ = builderForValue.build();
          onChanged();
        } else {
          zoneBuilder_.setMessage(builderForValue.build());
        }

        return this;
      }
      /**
       * <code>.pb.PbZone zone = 1;</code>
       */
      public Builder mergeZone(pb.xiugou.x1.protobuf.battle.Battle.PbZone value) {
        if (zoneBuilder_ == null) {
          if (zone_ != null) {
            zone_ =
              pb.xiugou.x1.protobuf.battle.Battle.PbZone.newBuilder(zone_).mergeFrom(value).buildPartial();
          } else {
            zone_ = value;
          }
          onChanged();
        } else {
          zoneBuilder_.mergeFrom(value);
        }

        return this;
      }
      /**
       * <code>.pb.PbZone zone = 1;</code>
       */
      public Builder clearZone() {
        if (zoneBuilder_ == null) {
          zone_ = null;
          onChanged();
        } else {
          zone_ = null;
          zoneBuilder_ = null;
        }

        return this;
      }
      /**
       * <code>.pb.PbZone zone = 1;</code>
       */
      public pb.xiugou.x1.protobuf.battle.Battle.PbZone.Builder getZoneBuilder() {
        
        onChanged();
        return getZoneFieldBuilder().getBuilder();
      }
      /**
       * <code>.pb.PbZone zone = 1;</code>
       */
      public pb.xiugou.x1.protobuf.battle.Battle.PbZoneOrBuilder getZoneOrBuilder() {
        if (zoneBuilder_ != null) {
          return zoneBuilder_.getMessageOrBuilder();
        } else {
          return zone_ == null ?
              pb.xiugou.x1.protobuf.battle.Battle.PbZone.getDefaultInstance() : zone_;
        }
      }
      /**
       * <code>.pb.PbZone zone = 1;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          pb.xiugou.x1.protobuf.battle.Battle.PbZone, pb.xiugou.x1.protobuf.battle.Battle.PbZone.Builder, pb.xiugou.x1.protobuf.battle.Battle.PbZoneOrBuilder> 
          getZoneFieldBuilder() {
        if (zoneBuilder_ == null) {
          zoneBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              pb.xiugou.x1.protobuf.battle.Battle.PbZone, pb.xiugou.x1.protobuf.battle.Battle.PbZone.Builder, pb.xiugou.x1.protobuf.battle.Battle.PbZoneOrBuilder>(
                  getZone(),
                  getParentForChildren(),
                  isClean());
          zone_ = null;
        }
        return zoneBuilder_;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

      @java.lang.Override
      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.mergeUnknownFields(unknownFields);
      }


      // @@protoc_insertion_point(builder_scope:pb.ZoneInfoResponse)
    }

    // @@protoc_insertion_point(class_scope:pb.ZoneInfoResponse)
    private static final pb.xiugou.x1.protobuf.battle.Battle.ZoneInfoResponse DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new pb.xiugou.x1.protobuf.battle.Battle.ZoneInfoResponse();
    }

    public static pb.xiugou.x1.protobuf.battle.Battle.ZoneInfoResponse getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<ZoneInfoResponse>
        PARSER = new com.google.protobuf.AbstractParser<ZoneInfoResponse>() {
      @java.lang.Override
      public ZoneInfoResponse parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return new ZoneInfoResponse(input, extensionRegistry);
      }
    };

    public static com.google.protobuf.Parser<ZoneInfoResponse> parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser<ZoneInfoResponse> getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public pb.xiugou.x1.protobuf.battle.Battle.ZoneInfoResponse getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface BattleReviveRequestOrBuilder extends
      // @@protoc_insertion_point(interface_extends:pb.BattleReviveRequest)
      com.google.protobuf.MessageOrBuilder {
  }
  /**
   * <pre>
   *团灭后复活
   * </pre>
   *
   * Protobuf type {@code pb.BattleReviveRequest}
   */
  public  static final class BattleReviveRequest extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:pb.BattleReviveRequest)
      BattleReviveRequestOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use BattleReviveRequest.newBuilder() to construct.
    private BattleReviveRequest(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private BattleReviveRequest() {
    }

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new BattleReviveRequest();
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private BattleReviveRequest(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      if (extensionRegistry == null) {
        throw new java.lang.NullPointerException();
      }
      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder();
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            default: {
              if (!parseUnknownField(
                  input, unknownFields, extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e).setUnfinishedMessage(this);
      } finally {
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return pb.xiugou.x1.protobuf.battle.Battle.internal_static_pb_BattleReviveRequest_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return pb.xiugou.x1.protobuf.battle.Battle.internal_static_pb_BattleReviveRequest_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              pb.xiugou.x1.protobuf.battle.Battle.BattleReviveRequest.class, pb.xiugou.x1.protobuf.battle.Battle.BattleReviveRequest.Builder.class);
    }

    /**
     * Protobuf enum {@code pb.BattleReviveRequest.Proto}
     */
    public enum Proto
        implements com.google.protobuf.ProtocolMessageEnum {
      /**
       * <code>UNKNOWN = 0;</code>
       */
      UNKNOWN(0),
      /**
       * <code>ID = 300006;</code>
       */
      ID(300006),
      UNRECOGNIZED(-1),
      ;

      /**
       * <code>UNKNOWN = 0;</code>
       */
      public static final int UNKNOWN_VALUE = 0;
      /**
       * <code>ID = 300006;</code>
       */
      public static final int ID_VALUE = 300006;


      public final int getNumber() {
        if (this == UNRECOGNIZED) {
          throw new java.lang.IllegalArgumentException(
              "Can't get the number of an unknown enum value.");
        }
        return value;
      }

      /**
       * @param value The numeric wire value of the corresponding enum entry.
       * @return The enum associated with the given numeric wire value.
       * @deprecated Use {@link #forNumber(int)} instead.
       */
      @java.lang.Deprecated
      public static Proto valueOf(int value) {
        return forNumber(value);
      }

      /**
       * @param value The numeric wire value of the corresponding enum entry.
       * @return The enum associated with the given numeric wire value.
       */
      public static Proto forNumber(int value) {
        switch (value) {
          case 0: return UNKNOWN;
          case 300006: return ID;
          default: return null;
        }
      }

      public static com.google.protobuf.Internal.EnumLiteMap<Proto>
          internalGetValueMap() {
        return internalValueMap;
      }
      private static final com.google.protobuf.Internal.EnumLiteMap<
          Proto> internalValueMap =
            new com.google.protobuf.Internal.EnumLiteMap<Proto>() {
              public Proto findValueByNumber(int number) {
                return Proto.forNumber(number);
              }
            };

      public final com.google.protobuf.Descriptors.EnumValueDescriptor
          getValueDescriptor() {
        return getDescriptor().getValues().get(ordinal());
      }
      public final com.google.protobuf.Descriptors.EnumDescriptor
          getDescriptorForType() {
        return getDescriptor();
      }
      public static final com.google.protobuf.Descriptors.EnumDescriptor
          getDescriptor() {
        return pb.xiugou.x1.protobuf.battle.Battle.BattleReviveRequest.getDescriptor().getEnumTypes().get(0);
      }

      private static final Proto[] VALUES = values();

      public static Proto valueOf(
          com.google.protobuf.Descriptors.EnumValueDescriptor desc) {
        if (desc.getType() != getDescriptor()) {
          throw new java.lang.IllegalArgumentException(
            "EnumValueDescriptor is not for this type.");
        }
        if (desc.getIndex() == -1) {
          return UNRECOGNIZED;
        }
        return VALUES[desc.getIndex()];
      }

      private final int value;

      private Proto(int value) {
        this.value = value;
      }

      // @@protoc_insertion_point(enum_scope:pb.BattleReviveRequest.Proto)
    }

    private byte memoizedIsInitialized = -1;
    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      unknownFields.writeTo(output);
    }

    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      size += unknownFields.getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof pb.xiugou.x1.protobuf.battle.Battle.BattleReviveRequest)) {
        return super.equals(obj);
      }
      pb.xiugou.x1.protobuf.battle.Battle.BattleReviveRequest other = (pb.xiugou.x1.protobuf.battle.Battle.BattleReviveRequest) obj;

      if (!unknownFields.equals(other.unknownFields)) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static pb.xiugou.x1.protobuf.battle.Battle.BattleReviveRequest parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static pb.xiugou.x1.protobuf.battle.Battle.BattleReviveRequest parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static pb.xiugou.x1.protobuf.battle.Battle.BattleReviveRequest parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static pb.xiugou.x1.protobuf.battle.Battle.BattleReviveRequest parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static pb.xiugou.x1.protobuf.battle.Battle.BattleReviveRequest parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static pb.xiugou.x1.protobuf.battle.Battle.BattleReviveRequest parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static pb.xiugou.x1.protobuf.battle.Battle.BattleReviveRequest parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static pb.xiugou.x1.protobuf.battle.Battle.BattleReviveRequest parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }
    public static pb.xiugou.x1.protobuf.battle.Battle.BattleReviveRequest parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static pb.xiugou.x1.protobuf.battle.Battle.BattleReviveRequest parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static pb.xiugou.x1.protobuf.battle.Battle.BattleReviveRequest parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static pb.xiugou.x1.protobuf.battle.Battle.BattleReviveRequest parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(pb.xiugou.x1.protobuf.battle.Battle.BattleReviveRequest prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * <pre>
     *团灭后复活
     * </pre>
     *
     * Protobuf type {@code pb.BattleReviveRequest}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:pb.BattleReviveRequest)
        pb.xiugou.x1.protobuf.battle.Battle.BattleReviveRequestOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return pb.xiugou.x1.protobuf.battle.Battle.internal_static_pb_BattleReviveRequest_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return pb.xiugou.x1.protobuf.battle.Battle.internal_static_pb_BattleReviveRequest_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                pb.xiugou.x1.protobuf.battle.Battle.BattleReviveRequest.class, pb.xiugou.x1.protobuf.battle.Battle.BattleReviveRequest.Builder.class);
      }

      // Construct using pb.xiugou.x1.protobuf.battle.Battle.BattleReviveRequest.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
        }
      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return pb.xiugou.x1.protobuf.battle.Battle.internal_static_pb_BattleReviveRequest_descriptor;
      }

      @java.lang.Override
      public pb.xiugou.x1.protobuf.battle.Battle.BattleReviveRequest getDefaultInstanceForType() {
        return pb.xiugou.x1.protobuf.battle.Battle.BattleReviveRequest.getDefaultInstance();
      }

      @java.lang.Override
      public pb.xiugou.x1.protobuf.battle.Battle.BattleReviveRequest build() {
        pb.xiugou.x1.protobuf.battle.Battle.BattleReviveRequest result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public pb.xiugou.x1.protobuf.battle.Battle.BattleReviveRequest buildPartial() {
        pb.xiugou.x1.protobuf.battle.Battle.BattleReviveRequest result = new pb.xiugou.x1.protobuf.battle.Battle.BattleReviveRequest(this);
        onBuilt();
        return result;
      }

      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }
      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.setField(field, value);
      }
      @java.lang.Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @java.lang.Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }
      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof pb.xiugou.x1.protobuf.battle.Battle.BattleReviveRequest) {
          return mergeFrom((pb.xiugou.x1.protobuf.battle.Battle.BattleReviveRequest)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(pb.xiugou.x1.protobuf.battle.Battle.BattleReviveRequest other) {
        if (other == pb.xiugou.x1.protobuf.battle.Battle.BattleReviveRequest.getDefaultInstance()) return this;
        this.mergeUnknownFields(other.unknownFields);
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        pb.xiugou.x1.protobuf.battle.Battle.BattleReviveRequest parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (pb.xiugou.x1.protobuf.battle.Battle.BattleReviveRequest) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

      @java.lang.Override
      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.mergeUnknownFields(unknownFields);
      }


      // @@protoc_insertion_point(builder_scope:pb.BattleReviveRequest)
    }

    // @@protoc_insertion_point(class_scope:pb.BattleReviveRequest)
    private static final pb.xiugou.x1.protobuf.battle.Battle.BattleReviveRequest DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new pb.xiugou.x1.protobuf.battle.Battle.BattleReviveRequest();
    }

    public static pb.xiugou.x1.protobuf.battle.Battle.BattleReviveRequest getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<BattleReviveRequest>
        PARSER = new com.google.protobuf.AbstractParser<BattleReviveRequest>() {
      @java.lang.Override
      public BattleReviveRequest parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return new BattleReviveRequest(input, extensionRegistry);
      }
    };

    public static com.google.protobuf.Parser<BattleReviveRequest> parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser<BattleReviveRequest> getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public pb.xiugou.x1.protobuf.battle.Battle.BattleReviveRequest getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface BattleReviveResponseOrBuilder extends
      // @@protoc_insertion_point(interface_extends:pb.BattleReviveResponse)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     *出战英雄
     * </pre>
     *
     * <code>repeated .pb.PbSprite heroes = 1;</code>
     */
    java.util.List<pb.xiugou.x1.protobuf.battle.Battle.PbSprite> 
        getHeroesList();
    /**
     * <pre>
     *出战英雄
     * </pre>
     *
     * <code>repeated .pb.PbSprite heroes = 1;</code>
     */
    pb.xiugou.x1.protobuf.battle.Battle.PbSprite getHeroes(int index);
    /**
     * <pre>
     *出战英雄
     * </pre>
     *
     * <code>repeated .pb.PbSprite heroes = 1;</code>
     */
    int getHeroesCount();
    /**
     * <pre>
     *出战英雄
     * </pre>
     *
     * <code>repeated .pb.PbSprite heroes = 1;</code>
     */
    java.util.List<? extends pb.xiugou.x1.protobuf.battle.Battle.PbSpriteOrBuilder> 
        getHeroesOrBuilderList();
    /**
     * <pre>
     *出战英雄
     * </pre>
     *
     * <code>repeated .pb.PbSprite heroes = 1;</code>
     */
    pb.xiugou.x1.protobuf.battle.Battle.PbSpriteOrBuilder getHeroesOrBuilder(
        int index);
  }
  /**
   * Protobuf type {@code pb.BattleReviveResponse}
   */
  public  static final class BattleReviveResponse extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:pb.BattleReviveResponse)
      BattleReviveResponseOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use BattleReviveResponse.newBuilder() to construct.
    private BattleReviveResponse(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private BattleReviveResponse() {
      heroes_ = java.util.Collections.emptyList();
    }

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new BattleReviveResponse();
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private BattleReviveResponse(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      if (extensionRegistry == null) {
        throw new java.lang.NullPointerException();
      }
      int mutable_bitField0_ = 0;
      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder();
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            case 10: {
              if (!((mutable_bitField0_ & 0x00000001) != 0)) {
                heroes_ = new java.util.ArrayList<pb.xiugou.x1.protobuf.battle.Battle.PbSprite>();
                mutable_bitField0_ |= 0x00000001;
              }
              heroes_.add(
                  input.readMessage(pb.xiugou.x1.protobuf.battle.Battle.PbSprite.parser(), extensionRegistry));
              break;
            }
            default: {
              if (!parseUnknownField(
                  input, unknownFields, extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e).setUnfinishedMessage(this);
      } finally {
        if (((mutable_bitField0_ & 0x00000001) != 0)) {
          heroes_ = java.util.Collections.unmodifiableList(heroes_);
        }
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return pb.xiugou.x1.protobuf.battle.Battle.internal_static_pb_BattleReviveResponse_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return pb.xiugou.x1.protobuf.battle.Battle.internal_static_pb_BattleReviveResponse_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              pb.xiugou.x1.protobuf.battle.Battle.BattleReviveResponse.class, pb.xiugou.x1.protobuf.battle.Battle.BattleReviveResponse.Builder.class);
    }

    /**
     * Protobuf enum {@code pb.BattleReviveResponse.Proto}
     */
    public enum Proto
        implements com.google.protobuf.ProtocolMessageEnum {
      /**
       * <code>UNKNOWN = 0;</code>
       */
      UNKNOWN(0),
      /**
       * <code>ID = 300006;</code>
       */
      ID(300006),
      UNRECOGNIZED(-1),
      ;

      /**
       * <code>UNKNOWN = 0;</code>
       */
      public static final int UNKNOWN_VALUE = 0;
      /**
       * <code>ID = 300006;</code>
       */
      public static final int ID_VALUE = 300006;


      public final int getNumber() {
        if (this == UNRECOGNIZED) {
          throw new java.lang.IllegalArgumentException(
              "Can't get the number of an unknown enum value.");
        }
        return value;
      }

      /**
       * @param value The numeric wire value of the corresponding enum entry.
       * @return The enum associated with the given numeric wire value.
       * @deprecated Use {@link #forNumber(int)} instead.
       */
      @java.lang.Deprecated
      public static Proto valueOf(int value) {
        return forNumber(value);
      }

      /**
       * @param value The numeric wire value of the corresponding enum entry.
       * @return The enum associated with the given numeric wire value.
       */
      public static Proto forNumber(int value) {
        switch (value) {
          case 0: return UNKNOWN;
          case 300006: return ID;
          default: return null;
        }
      }

      public static com.google.protobuf.Internal.EnumLiteMap<Proto>
          internalGetValueMap() {
        return internalValueMap;
      }
      private static final com.google.protobuf.Internal.EnumLiteMap<
          Proto> internalValueMap =
            new com.google.protobuf.Internal.EnumLiteMap<Proto>() {
              public Proto findValueByNumber(int number) {
                return Proto.forNumber(number);
              }
            };

      public final com.google.protobuf.Descriptors.EnumValueDescriptor
          getValueDescriptor() {
        return getDescriptor().getValues().get(ordinal());
      }
      public final com.google.protobuf.Descriptors.EnumDescriptor
          getDescriptorForType() {
        return getDescriptor();
      }
      public static final com.google.protobuf.Descriptors.EnumDescriptor
          getDescriptor() {
        return pb.xiugou.x1.protobuf.battle.Battle.BattleReviveResponse.getDescriptor().getEnumTypes().get(0);
      }

      private static final Proto[] VALUES = values();

      public static Proto valueOf(
          com.google.protobuf.Descriptors.EnumValueDescriptor desc) {
        if (desc.getType() != getDescriptor()) {
          throw new java.lang.IllegalArgumentException(
            "EnumValueDescriptor is not for this type.");
        }
        if (desc.getIndex() == -1) {
          return UNRECOGNIZED;
        }
        return VALUES[desc.getIndex()];
      }

      private final int value;

      private Proto(int value) {
        this.value = value;
      }

      // @@protoc_insertion_point(enum_scope:pb.BattleReviveResponse.Proto)
    }

    public static final int HEROES_FIELD_NUMBER = 1;
    private java.util.List<pb.xiugou.x1.protobuf.battle.Battle.PbSprite> heroes_;
    /**
     * <pre>
     *出战英雄
     * </pre>
     *
     * <code>repeated .pb.PbSprite heroes = 1;</code>
     */
    public java.util.List<pb.xiugou.x1.protobuf.battle.Battle.PbSprite> getHeroesList() {
      return heroes_;
    }
    /**
     * <pre>
     *出战英雄
     * </pre>
     *
     * <code>repeated .pb.PbSprite heroes = 1;</code>
     */
    public java.util.List<? extends pb.xiugou.x1.protobuf.battle.Battle.PbSpriteOrBuilder> 
        getHeroesOrBuilderList() {
      return heroes_;
    }
    /**
     * <pre>
     *出战英雄
     * </pre>
     *
     * <code>repeated .pb.PbSprite heroes = 1;</code>
     */
    public int getHeroesCount() {
      return heroes_.size();
    }
    /**
     * <pre>
     *出战英雄
     * </pre>
     *
     * <code>repeated .pb.PbSprite heroes = 1;</code>
     */
    public pb.xiugou.x1.protobuf.battle.Battle.PbSprite getHeroes(int index) {
      return heroes_.get(index);
    }
    /**
     * <pre>
     *出战英雄
     * </pre>
     *
     * <code>repeated .pb.PbSprite heroes = 1;</code>
     */
    public pb.xiugou.x1.protobuf.battle.Battle.PbSpriteOrBuilder getHeroesOrBuilder(
        int index) {
      return heroes_.get(index);
    }

    private byte memoizedIsInitialized = -1;
    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      for (int i = 0; i < heroes_.size(); i++) {
        output.writeMessage(1, heroes_.get(i));
      }
      unknownFields.writeTo(output);
    }

    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      for (int i = 0; i < heroes_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(1, heroes_.get(i));
      }
      size += unknownFields.getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof pb.xiugou.x1.protobuf.battle.Battle.BattleReviveResponse)) {
        return super.equals(obj);
      }
      pb.xiugou.x1.protobuf.battle.Battle.BattleReviveResponse other = (pb.xiugou.x1.protobuf.battle.Battle.BattleReviveResponse) obj;

      if (!getHeroesList()
          .equals(other.getHeroesList())) return false;
      if (!unknownFields.equals(other.unknownFields)) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      if (getHeroesCount() > 0) {
        hash = (37 * hash) + HEROES_FIELD_NUMBER;
        hash = (53 * hash) + getHeroesList().hashCode();
      }
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static pb.xiugou.x1.protobuf.battle.Battle.BattleReviveResponse parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static pb.xiugou.x1.protobuf.battle.Battle.BattleReviveResponse parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static pb.xiugou.x1.protobuf.battle.Battle.BattleReviveResponse parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static pb.xiugou.x1.protobuf.battle.Battle.BattleReviveResponse parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static pb.xiugou.x1.protobuf.battle.Battle.BattleReviveResponse parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static pb.xiugou.x1.protobuf.battle.Battle.BattleReviveResponse parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static pb.xiugou.x1.protobuf.battle.Battle.BattleReviveResponse parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static pb.xiugou.x1.protobuf.battle.Battle.BattleReviveResponse parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }
    public static pb.xiugou.x1.protobuf.battle.Battle.BattleReviveResponse parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static pb.xiugou.x1.protobuf.battle.Battle.BattleReviveResponse parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static pb.xiugou.x1.protobuf.battle.Battle.BattleReviveResponse parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static pb.xiugou.x1.protobuf.battle.Battle.BattleReviveResponse parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(pb.xiugou.x1.protobuf.battle.Battle.BattleReviveResponse prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code pb.BattleReviveResponse}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:pb.BattleReviveResponse)
        pb.xiugou.x1.protobuf.battle.Battle.BattleReviveResponseOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return pb.xiugou.x1.protobuf.battle.Battle.internal_static_pb_BattleReviveResponse_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return pb.xiugou.x1.protobuf.battle.Battle.internal_static_pb_BattleReviveResponse_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                pb.xiugou.x1.protobuf.battle.Battle.BattleReviveResponse.class, pb.xiugou.x1.protobuf.battle.Battle.BattleReviveResponse.Builder.class);
      }

      // Construct using pb.xiugou.x1.protobuf.battle.Battle.BattleReviveResponse.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
          getHeroesFieldBuilder();
        }
      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        if (heroesBuilder_ == null) {
          heroes_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000001);
        } else {
          heroesBuilder_.clear();
        }
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return pb.xiugou.x1.protobuf.battle.Battle.internal_static_pb_BattleReviveResponse_descriptor;
      }

      @java.lang.Override
      public pb.xiugou.x1.protobuf.battle.Battle.BattleReviveResponse getDefaultInstanceForType() {
        return pb.xiugou.x1.protobuf.battle.Battle.BattleReviveResponse.getDefaultInstance();
      }

      @java.lang.Override
      public pb.xiugou.x1.protobuf.battle.Battle.BattleReviveResponse build() {
        pb.xiugou.x1.protobuf.battle.Battle.BattleReviveResponse result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public pb.xiugou.x1.protobuf.battle.Battle.BattleReviveResponse buildPartial() {
        pb.xiugou.x1.protobuf.battle.Battle.BattleReviveResponse result = new pb.xiugou.x1.protobuf.battle.Battle.BattleReviveResponse(this);
        int from_bitField0_ = bitField0_;
        if (heroesBuilder_ == null) {
          if (((bitField0_ & 0x00000001) != 0)) {
            heroes_ = java.util.Collections.unmodifiableList(heroes_);
            bitField0_ = (bitField0_ & ~0x00000001);
          }
          result.heroes_ = heroes_;
        } else {
          result.heroes_ = heroesBuilder_.build();
        }
        onBuilt();
        return result;
      }

      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }
      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.setField(field, value);
      }
      @java.lang.Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @java.lang.Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }
      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof pb.xiugou.x1.protobuf.battle.Battle.BattleReviveResponse) {
          return mergeFrom((pb.xiugou.x1.protobuf.battle.Battle.BattleReviveResponse)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(pb.xiugou.x1.protobuf.battle.Battle.BattleReviveResponse other) {
        if (other == pb.xiugou.x1.protobuf.battle.Battle.BattleReviveResponse.getDefaultInstance()) return this;
        if (heroesBuilder_ == null) {
          if (!other.heroes_.isEmpty()) {
            if (heroes_.isEmpty()) {
              heroes_ = other.heroes_;
              bitField0_ = (bitField0_ & ~0x00000001);
            } else {
              ensureHeroesIsMutable();
              heroes_.addAll(other.heroes_);
            }
            onChanged();
          }
        } else {
          if (!other.heroes_.isEmpty()) {
            if (heroesBuilder_.isEmpty()) {
              heroesBuilder_.dispose();
              heroesBuilder_ = null;
              heroes_ = other.heroes_;
              bitField0_ = (bitField0_ & ~0x00000001);
              heroesBuilder_ = 
                com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
                   getHeroesFieldBuilder() : null;
            } else {
              heroesBuilder_.addAllMessages(other.heroes_);
            }
          }
        }
        this.mergeUnknownFields(other.unknownFields);
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        pb.xiugou.x1.protobuf.battle.Battle.BattleReviveResponse parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (pb.xiugou.x1.protobuf.battle.Battle.BattleReviveResponse) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      private java.util.List<pb.xiugou.x1.protobuf.battle.Battle.PbSprite> heroes_ =
        java.util.Collections.emptyList();
      private void ensureHeroesIsMutable() {
        if (!((bitField0_ & 0x00000001) != 0)) {
          heroes_ = new java.util.ArrayList<pb.xiugou.x1.protobuf.battle.Battle.PbSprite>(heroes_);
          bitField0_ |= 0x00000001;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilderV3<
          pb.xiugou.x1.protobuf.battle.Battle.PbSprite, pb.xiugou.x1.protobuf.battle.Battle.PbSprite.Builder, pb.xiugou.x1.protobuf.battle.Battle.PbSpriteOrBuilder> heroesBuilder_;

      /**
       * <pre>
       *出战英雄
       * </pre>
       *
       * <code>repeated .pb.PbSprite heroes = 1;</code>
       */
      public java.util.List<pb.xiugou.x1.protobuf.battle.Battle.PbSprite> getHeroesList() {
        if (heroesBuilder_ == null) {
          return java.util.Collections.unmodifiableList(heroes_);
        } else {
          return heroesBuilder_.getMessageList();
        }
      }
      /**
       * <pre>
       *出战英雄
       * </pre>
       *
       * <code>repeated .pb.PbSprite heroes = 1;</code>
       */
      public int getHeroesCount() {
        if (heroesBuilder_ == null) {
          return heroes_.size();
        } else {
          return heroesBuilder_.getCount();
        }
      }
      /**
       * <pre>
       *出战英雄
       * </pre>
       *
       * <code>repeated .pb.PbSprite heroes = 1;</code>
       */
      public pb.xiugou.x1.protobuf.battle.Battle.PbSprite getHeroes(int index) {
        if (heroesBuilder_ == null) {
          return heroes_.get(index);
        } else {
          return heroesBuilder_.getMessage(index);
        }
      }
      /**
       * <pre>
       *出战英雄
       * </pre>
       *
       * <code>repeated .pb.PbSprite heroes = 1;</code>
       */
      public Builder setHeroes(
          int index, pb.xiugou.x1.protobuf.battle.Battle.PbSprite value) {
        if (heroesBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureHeroesIsMutable();
          heroes_.set(index, value);
          onChanged();
        } else {
          heroesBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * <pre>
       *出战英雄
       * </pre>
       *
       * <code>repeated .pb.PbSprite heroes = 1;</code>
       */
      public Builder setHeroes(
          int index, pb.xiugou.x1.protobuf.battle.Battle.PbSprite.Builder builderForValue) {
        if (heroesBuilder_ == null) {
          ensureHeroesIsMutable();
          heroes_.set(index, builderForValue.build());
          onChanged();
        } else {
          heroesBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       *出战英雄
       * </pre>
       *
       * <code>repeated .pb.PbSprite heroes = 1;</code>
       */
      public Builder addHeroes(pb.xiugou.x1.protobuf.battle.Battle.PbSprite value) {
        if (heroesBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureHeroesIsMutable();
          heroes_.add(value);
          onChanged();
        } else {
          heroesBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * <pre>
       *出战英雄
       * </pre>
       *
       * <code>repeated .pb.PbSprite heroes = 1;</code>
       */
      public Builder addHeroes(
          int index, pb.xiugou.x1.protobuf.battle.Battle.PbSprite value) {
        if (heroesBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureHeroesIsMutable();
          heroes_.add(index, value);
          onChanged();
        } else {
          heroesBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * <pre>
       *出战英雄
       * </pre>
       *
       * <code>repeated .pb.PbSprite heroes = 1;</code>
       */
      public Builder addHeroes(
          pb.xiugou.x1.protobuf.battle.Battle.PbSprite.Builder builderForValue) {
        if (heroesBuilder_ == null) {
          ensureHeroesIsMutable();
          heroes_.add(builderForValue.build());
          onChanged();
        } else {
          heroesBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       *出战英雄
       * </pre>
       *
       * <code>repeated .pb.PbSprite heroes = 1;</code>
       */
      public Builder addHeroes(
          int index, pb.xiugou.x1.protobuf.battle.Battle.PbSprite.Builder builderForValue) {
        if (heroesBuilder_ == null) {
          ensureHeroesIsMutable();
          heroes_.add(index, builderForValue.build());
          onChanged();
        } else {
          heroesBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       *出战英雄
       * </pre>
       *
       * <code>repeated .pb.PbSprite heroes = 1;</code>
       */
      public Builder addAllHeroes(
          java.lang.Iterable<? extends pb.xiugou.x1.protobuf.battle.Battle.PbSprite> values) {
        if (heroesBuilder_ == null) {
          ensureHeroesIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, heroes_);
          onChanged();
        } else {
          heroesBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * <pre>
       *出战英雄
       * </pre>
       *
       * <code>repeated .pb.PbSprite heroes = 1;</code>
       */
      public Builder clearHeroes() {
        if (heroesBuilder_ == null) {
          heroes_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000001);
          onChanged();
        } else {
          heroesBuilder_.clear();
        }
        return this;
      }
      /**
       * <pre>
       *出战英雄
       * </pre>
       *
       * <code>repeated .pb.PbSprite heroes = 1;</code>
       */
      public Builder removeHeroes(int index) {
        if (heroesBuilder_ == null) {
          ensureHeroesIsMutable();
          heroes_.remove(index);
          onChanged();
        } else {
          heroesBuilder_.remove(index);
        }
        return this;
      }
      /**
       * <pre>
       *出战英雄
       * </pre>
       *
       * <code>repeated .pb.PbSprite heroes = 1;</code>
       */
      public pb.xiugou.x1.protobuf.battle.Battle.PbSprite.Builder getHeroesBuilder(
          int index) {
        return getHeroesFieldBuilder().getBuilder(index);
      }
      /**
       * <pre>
       *出战英雄
       * </pre>
       *
       * <code>repeated .pb.PbSprite heroes = 1;</code>
       */
      public pb.xiugou.x1.protobuf.battle.Battle.PbSpriteOrBuilder getHeroesOrBuilder(
          int index) {
        if (heroesBuilder_ == null) {
          return heroes_.get(index);  } else {
          return heroesBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * <pre>
       *出战英雄
       * </pre>
       *
       * <code>repeated .pb.PbSprite heroes = 1;</code>
       */
      public java.util.List<? extends pb.xiugou.x1.protobuf.battle.Battle.PbSpriteOrBuilder> 
           getHeroesOrBuilderList() {
        if (heroesBuilder_ != null) {
          return heroesBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(heroes_);
        }
      }
      /**
       * <pre>
       *出战英雄
       * </pre>
       *
       * <code>repeated .pb.PbSprite heroes = 1;</code>
       */
      public pb.xiugou.x1.protobuf.battle.Battle.PbSprite.Builder addHeroesBuilder() {
        return getHeroesFieldBuilder().addBuilder(
            pb.xiugou.x1.protobuf.battle.Battle.PbSprite.getDefaultInstance());
      }
      /**
       * <pre>
       *出战英雄
       * </pre>
       *
       * <code>repeated .pb.PbSprite heroes = 1;</code>
       */
      public pb.xiugou.x1.protobuf.battle.Battle.PbSprite.Builder addHeroesBuilder(
          int index) {
        return getHeroesFieldBuilder().addBuilder(
            index, pb.xiugou.x1.protobuf.battle.Battle.PbSprite.getDefaultInstance());
      }
      /**
       * <pre>
       *出战英雄
       * </pre>
       *
       * <code>repeated .pb.PbSprite heroes = 1;</code>
       */
      public java.util.List<pb.xiugou.x1.protobuf.battle.Battle.PbSprite.Builder> 
           getHeroesBuilderList() {
        return getHeroesFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilderV3<
          pb.xiugou.x1.protobuf.battle.Battle.PbSprite, pb.xiugou.x1.protobuf.battle.Battle.PbSprite.Builder, pb.xiugou.x1.protobuf.battle.Battle.PbSpriteOrBuilder> 
          getHeroesFieldBuilder() {
        if (heroesBuilder_ == null) {
          heroesBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
              pb.xiugou.x1.protobuf.battle.Battle.PbSprite, pb.xiugou.x1.protobuf.battle.Battle.PbSprite.Builder, pb.xiugou.x1.protobuf.battle.Battle.PbSpriteOrBuilder>(
                  heroes_,
                  ((bitField0_ & 0x00000001) != 0),
                  getParentForChildren(),
                  isClean());
          heroes_ = null;
        }
        return heroesBuilder_;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

      @java.lang.Override
      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.mergeUnknownFields(unknownFields);
      }


      // @@protoc_insertion_point(builder_scope:pb.BattleReviveResponse)
    }

    // @@protoc_insertion_point(class_scope:pb.BattleReviveResponse)
    private static final pb.xiugou.x1.protobuf.battle.Battle.BattleReviveResponse DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new pb.xiugou.x1.protobuf.battle.Battle.BattleReviveResponse();
    }

    public static pb.xiugou.x1.protobuf.battle.Battle.BattleReviveResponse getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<BattleReviveResponse>
        PARSER = new com.google.protobuf.AbstractParser<BattleReviveResponse>() {
      @java.lang.Override
      public BattleReviveResponse parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return new BattleReviveResponse(input, extensionRegistry);
      }
    };

    public static com.google.protobuf.Parser<BattleReviveResponse> parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser<BattleReviveResponse> getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public pb.xiugou.x1.protobuf.battle.Battle.BattleReviveResponse getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface BattleGiveUpRequestOrBuilder extends
      // @@protoc_insertion_point(interface_extends:pb.BattleGiveUpRequest)
      com.google.protobuf.MessageOrBuilder {
  }
  /**
   * <pre>
   *放弃当前战斗
   * </pre>
   *
   * Protobuf type {@code pb.BattleGiveUpRequest}
   */
  public  static final class BattleGiveUpRequest extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:pb.BattleGiveUpRequest)
      BattleGiveUpRequestOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use BattleGiveUpRequest.newBuilder() to construct.
    private BattleGiveUpRequest(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private BattleGiveUpRequest() {
    }

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new BattleGiveUpRequest();
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private BattleGiveUpRequest(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      if (extensionRegistry == null) {
        throw new java.lang.NullPointerException();
      }
      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder();
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            default: {
              if (!parseUnknownField(
                  input, unknownFields, extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e).setUnfinishedMessage(this);
      } finally {
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return pb.xiugou.x1.protobuf.battle.Battle.internal_static_pb_BattleGiveUpRequest_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return pb.xiugou.x1.protobuf.battle.Battle.internal_static_pb_BattleGiveUpRequest_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              pb.xiugou.x1.protobuf.battle.Battle.BattleGiveUpRequest.class, pb.xiugou.x1.protobuf.battle.Battle.BattleGiveUpRequest.Builder.class);
    }

    /**
     * Protobuf enum {@code pb.BattleGiveUpRequest.Proto}
     */
    public enum Proto
        implements com.google.protobuf.ProtocolMessageEnum {
      /**
       * <code>UNKNOWN = 0;</code>
       */
      UNKNOWN(0),
      /**
       * <code>ID = 300007;</code>
       */
      ID(300007),
      UNRECOGNIZED(-1),
      ;

      /**
       * <code>UNKNOWN = 0;</code>
       */
      public static final int UNKNOWN_VALUE = 0;
      /**
       * <code>ID = 300007;</code>
       */
      public static final int ID_VALUE = 300007;


      public final int getNumber() {
        if (this == UNRECOGNIZED) {
          throw new java.lang.IllegalArgumentException(
              "Can't get the number of an unknown enum value.");
        }
        return value;
      }

      /**
       * @param value The numeric wire value of the corresponding enum entry.
       * @return The enum associated with the given numeric wire value.
       * @deprecated Use {@link #forNumber(int)} instead.
       */
      @java.lang.Deprecated
      public static Proto valueOf(int value) {
        return forNumber(value);
      }

      /**
       * @param value The numeric wire value of the corresponding enum entry.
       * @return The enum associated with the given numeric wire value.
       */
      public static Proto forNumber(int value) {
        switch (value) {
          case 0: return UNKNOWN;
          case 300007: return ID;
          default: return null;
        }
      }

      public static com.google.protobuf.Internal.EnumLiteMap<Proto>
          internalGetValueMap() {
        return internalValueMap;
      }
      private static final com.google.protobuf.Internal.EnumLiteMap<
          Proto> internalValueMap =
            new com.google.protobuf.Internal.EnumLiteMap<Proto>() {
              public Proto findValueByNumber(int number) {
                return Proto.forNumber(number);
              }
            };

      public final com.google.protobuf.Descriptors.EnumValueDescriptor
          getValueDescriptor() {
        return getDescriptor().getValues().get(ordinal());
      }
      public final com.google.protobuf.Descriptors.EnumDescriptor
          getDescriptorForType() {
        return getDescriptor();
      }
      public static final com.google.protobuf.Descriptors.EnumDescriptor
          getDescriptor() {
        return pb.xiugou.x1.protobuf.battle.Battle.BattleGiveUpRequest.getDescriptor().getEnumTypes().get(0);
      }

      private static final Proto[] VALUES = values();

      public static Proto valueOf(
          com.google.protobuf.Descriptors.EnumValueDescriptor desc) {
        if (desc.getType() != getDescriptor()) {
          throw new java.lang.IllegalArgumentException(
            "EnumValueDescriptor is not for this type.");
        }
        if (desc.getIndex() == -1) {
          return UNRECOGNIZED;
        }
        return VALUES[desc.getIndex()];
      }

      private final int value;

      private Proto(int value) {
        this.value = value;
      }

      // @@protoc_insertion_point(enum_scope:pb.BattleGiveUpRequest.Proto)
    }

    private byte memoizedIsInitialized = -1;
    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      unknownFields.writeTo(output);
    }

    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      size += unknownFields.getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof pb.xiugou.x1.protobuf.battle.Battle.BattleGiveUpRequest)) {
        return super.equals(obj);
      }
      pb.xiugou.x1.protobuf.battle.Battle.BattleGiveUpRequest other = (pb.xiugou.x1.protobuf.battle.Battle.BattleGiveUpRequest) obj;

      if (!unknownFields.equals(other.unknownFields)) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static pb.xiugou.x1.protobuf.battle.Battle.BattleGiveUpRequest parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static pb.xiugou.x1.protobuf.battle.Battle.BattleGiveUpRequest parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static pb.xiugou.x1.protobuf.battle.Battle.BattleGiveUpRequest parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static pb.xiugou.x1.protobuf.battle.Battle.BattleGiveUpRequest parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static pb.xiugou.x1.protobuf.battle.Battle.BattleGiveUpRequest parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static pb.xiugou.x1.protobuf.battle.Battle.BattleGiveUpRequest parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static pb.xiugou.x1.protobuf.battle.Battle.BattleGiveUpRequest parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static pb.xiugou.x1.protobuf.battle.Battle.BattleGiveUpRequest parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }
    public static pb.xiugou.x1.protobuf.battle.Battle.BattleGiveUpRequest parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static pb.xiugou.x1.protobuf.battle.Battle.BattleGiveUpRequest parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static pb.xiugou.x1.protobuf.battle.Battle.BattleGiveUpRequest parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static pb.xiugou.x1.protobuf.battle.Battle.BattleGiveUpRequest parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(pb.xiugou.x1.protobuf.battle.Battle.BattleGiveUpRequest prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * <pre>
     *放弃当前战斗
     * </pre>
     *
     * Protobuf type {@code pb.BattleGiveUpRequest}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:pb.BattleGiveUpRequest)
        pb.xiugou.x1.protobuf.battle.Battle.BattleGiveUpRequestOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return pb.xiugou.x1.protobuf.battle.Battle.internal_static_pb_BattleGiveUpRequest_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return pb.xiugou.x1.protobuf.battle.Battle.internal_static_pb_BattleGiveUpRequest_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                pb.xiugou.x1.protobuf.battle.Battle.BattleGiveUpRequest.class, pb.xiugou.x1.protobuf.battle.Battle.BattleGiveUpRequest.Builder.class);
      }

      // Construct using pb.xiugou.x1.protobuf.battle.Battle.BattleGiveUpRequest.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
        }
      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return pb.xiugou.x1.protobuf.battle.Battle.internal_static_pb_BattleGiveUpRequest_descriptor;
      }

      @java.lang.Override
      public pb.xiugou.x1.protobuf.battle.Battle.BattleGiveUpRequest getDefaultInstanceForType() {
        return pb.xiugou.x1.protobuf.battle.Battle.BattleGiveUpRequest.getDefaultInstance();
      }

      @java.lang.Override
      public pb.xiugou.x1.protobuf.battle.Battle.BattleGiveUpRequest build() {
        pb.xiugou.x1.protobuf.battle.Battle.BattleGiveUpRequest result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public pb.xiugou.x1.protobuf.battle.Battle.BattleGiveUpRequest buildPartial() {
        pb.xiugou.x1.protobuf.battle.Battle.BattleGiveUpRequest result = new pb.xiugou.x1.protobuf.battle.Battle.BattleGiveUpRequest(this);
        onBuilt();
        return result;
      }

      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }
      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.setField(field, value);
      }
      @java.lang.Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @java.lang.Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }
      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof pb.xiugou.x1.protobuf.battle.Battle.BattleGiveUpRequest) {
          return mergeFrom((pb.xiugou.x1.protobuf.battle.Battle.BattleGiveUpRequest)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(pb.xiugou.x1.protobuf.battle.Battle.BattleGiveUpRequest other) {
        if (other == pb.xiugou.x1.protobuf.battle.Battle.BattleGiveUpRequest.getDefaultInstance()) return this;
        this.mergeUnknownFields(other.unknownFields);
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        pb.xiugou.x1.protobuf.battle.Battle.BattleGiveUpRequest parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (pb.xiugou.x1.protobuf.battle.Battle.BattleGiveUpRequest) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

      @java.lang.Override
      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.mergeUnknownFields(unknownFields);
      }


      // @@protoc_insertion_point(builder_scope:pb.BattleGiveUpRequest)
    }

    // @@protoc_insertion_point(class_scope:pb.BattleGiveUpRequest)
    private static final pb.xiugou.x1.protobuf.battle.Battle.BattleGiveUpRequest DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new pb.xiugou.x1.protobuf.battle.Battle.BattleGiveUpRequest();
    }

    public static pb.xiugou.x1.protobuf.battle.Battle.BattleGiveUpRequest getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<BattleGiveUpRequest>
        PARSER = new com.google.protobuf.AbstractParser<BattleGiveUpRequest>() {
      @java.lang.Override
      public BattleGiveUpRequest parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return new BattleGiveUpRequest(input, extensionRegistry);
      }
    };

    public static com.google.protobuf.Parser<BattleGiveUpRequest> parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser<BattleGiveUpRequest> getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public pb.xiugou.x1.protobuf.battle.Battle.BattleGiveUpRequest getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface BattleGiveUpResponseOrBuilder extends
      // @@protoc_insertion_point(interface_extends:pb.BattleGiveUpResponse)
      com.google.protobuf.MessageOrBuilder {
  }
  /**
   * Protobuf type {@code pb.BattleGiveUpResponse}
   */
  public  static final class BattleGiveUpResponse extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:pb.BattleGiveUpResponse)
      BattleGiveUpResponseOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use BattleGiveUpResponse.newBuilder() to construct.
    private BattleGiveUpResponse(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private BattleGiveUpResponse() {
    }

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new BattleGiveUpResponse();
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private BattleGiveUpResponse(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      if (extensionRegistry == null) {
        throw new java.lang.NullPointerException();
      }
      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder();
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            default: {
              if (!parseUnknownField(
                  input, unknownFields, extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e).setUnfinishedMessage(this);
      } finally {
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return pb.xiugou.x1.protobuf.battle.Battle.internal_static_pb_BattleGiveUpResponse_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return pb.xiugou.x1.protobuf.battle.Battle.internal_static_pb_BattleGiveUpResponse_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              pb.xiugou.x1.protobuf.battle.Battle.BattleGiveUpResponse.class, pb.xiugou.x1.protobuf.battle.Battle.BattleGiveUpResponse.Builder.class);
    }

    /**
     * Protobuf enum {@code pb.BattleGiveUpResponse.Proto}
     */
    public enum Proto
        implements com.google.protobuf.ProtocolMessageEnum {
      /**
       * <code>UNKNOWN = 0;</code>
       */
      UNKNOWN(0),
      /**
       * <code>ID = 300007;</code>
       */
      ID(300007),
      UNRECOGNIZED(-1),
      ;

      /**
       * <code>UNKNOWN = 0;</code>
       */
      public static final int UNKNOWN_VALUE = 0;
      /**
       * <code>ID = 300007;</code>
       */
      public static final int ID_VALUE = 300007;


      public final int getNumber() {
        if (this == UNRECOGNIZED) {
          throw new java.lang.IllegalArgumentException(
              "Can't get the number of an unknown enum value.");
        }
        return value;
      }

      /**
       * @param value The numeric wire value of the corresponding enum entry.
       * @return The enum associated with the given numeric wire value.
       * @deprecated Use {@link #forNumber(int)} instead.
       */
      @java.lang.Deprecated
      public static Proto valueOf(int value) {
        return forNumber(value);
      }

      /**
       * @param value The numeric wire value of the corresponding enum entry.
       * @return The enum associated with the given numeric wire value.
       */
      public static Proto forNumber(int value) {
        switch (value) {
          case 0: return UNKNOWN;
          case 300007: return ID;
          default: return null;
        }
      }

      public static com.google.protobuf.Internal.EnumLiteMap<Proto>
          internalGetValueMap() {
        return internalValueMap;
      }
      private static final com.google.protobuf.Internal.EnumLiteMap<
          Proto> internalValueMap =
            new com.google.protobuf.Internal.EnumLiteMap<Proto>() {
              public Proto findValueByNumber(int number) {
                return Proto.forNumber(number);
              }
            };

      public final com.google.protobuf.Descriptors.EnumValueDescriptor
          getValueDescriptor() {
        return getDescriptor().getValues().get(ordinal());
      }
      public final com.google.protobuf.Descriptors.EnumDescriptor
          getDescriptorForType() {
        return getDescriptor();
      }
      public static final com.google.protobuf.Descriptors.EnumDescriptor
          getDescriptor() {
        return pb.xiugou.x1.protobuf.battle.Battle.BattleGiveUpResponse.getDescriptor().getEnumTypes().get(0);
      }

      private static final Proto[] VALUES = values();

      public static Proto valueOf(
          com.google.protobuf.Descriptors.EnumValueDescriptor desc) {
        if (desc.getType() != getDescriptor()) {
          throw new java.lang.IllegalArgumentException(
            "EnumValueDescriptor is not for this type.");
        }
        if (desc.getIndex() == -1) {
          return UNRECOGNIZED;
        }
        return VALUES[desc.getIndex()];
      }

      private final int value;

      private Proto(int value) {
        this.value = value;
      }

      // @@protoc_insertion_point(enum_scope:pb.BattleGiveUpResponse.Proto)
    }

    private byte memoizedIsInitialized = -1;
    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      unknownFields.writeTo(output);
    }

    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      size += unknownFields.getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof pb.xiugou.x1.protobuf.battle.Battle.BattleGiveUpResponse)) {
        return super.equals(obj);
      }
      pb.xiugou.x1.protobuf.battle.Battle.BattleGiveUpResponse other = (pb.xiugou.x1.protobuf.battle.Battle.BattleGiveUpResponse) obj;

      if (!unknownFields.equals(other.unknownFields)) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static pb.xiugou.x1.protobuf.battle.Battle.BattleGiveUpResponse parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static pb.xiugou.x1.protobuf.battle.Battle.BattleGiveUpResponse parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static pb.xiugou.x1.protobuf.battle.Battle.BattleGiveUpResponse parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static pb.xiugou.x1.protobuf.battle.Battle.BattleGiveUpResponse parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static pb.xiugou.x1.protobuf.battle.Battle.BattleGiveUpResponse parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static pb.xiugou.x1.protobuf.battle.Battle.BattleGiveUpResponse parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static pb.xiugou.x1.protobuf.battle.Battle.BattleGiveUpResponse parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static pb.xiugou.x1.protobuf.battle.Battle.BattleGiveUpResponse parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }
    public static pb.xiugou.x1.protobuf.battle.Battle.BattleGiveUpResponse parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static pb.xiugou.x1.protobuf.battle.Battle.BattleGiveUpResponse parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static pb.xiugou.x1.protobuf.battle.Battle.BattleGiveUpResponse parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static pb.xiugou.x1.protobuf.battle.Battle.BattleGiveUpResponse parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(pb.xiugou.x1.protobuf.battle.Battle.BattleGiveUpResponse prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code pb.BattleGiveUpResponse}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:pb.BattleGiveUpResponse)
        pb.xiugou.x1.protobuf.battle.Battle.BattleGiveUpResponseOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return pb.xiugou.x1.protobuf.battle.Battle.internal_static_pb_BattleGiveUpResponse_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return pb.xiugou.x1.protobuf.battle.Battle.internal_static_pb_BattleGiveUpResponse_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                pb.xiugou.x1.protobuf.battle.Battle.BattleGiveUpResponse.class, pb.xiugou.x1.protobuf.battle.Battle.BattleGiveUpResponse.Builder.class);
      }

      // Construct using pb.xiugou.x1.protobuf.battle.Battle.BattleGiveUpResponse.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
        }
      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return pb.xiugou.x1.protobuf.battle.Battle.internal_static_pb_BattleGiveUpResponse_descriptor;
      }

      @java.lang.Override
      public pb.xiugou.x1.protobuf.battle.Battle.BattleGiveUpResponse getDefaultInstanceForType() {
        return pb.xiugou.x1.protobuf.battle.Battle.BattleGiveUpResponse.getDefaultInstance();
      }

      @java.lang.Override
      public pb.xiugou.x1.protobuf.battle.Battle.BattleGiveUpResponse build() {
        pb.xiugou.x1.protobuf.battle.Battle.BattleGiveUpResponse result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public pb.xiugou.x1.protobuf.battle.Battle.BattleGiveUpResponse buildPartial() {
        pb.xiugou.x1.protobuf.battle.Battle.BattleGiveUpResponse result = new pb.xiugou.x1.protobuf.battle.Battle.BattleGiveUpResponse(this);
        onBuilt();
        return result;
      }

      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }
      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.setField(field, value);
      }
      @java.lang.Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @java.lang.Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }
      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof pb.xiugou.x1.protobuf.battle.Battle.BattleGiveUpResponse) {
          return mergeFrom((pb.xiugou.x1.protobuf.battle.Battle.BattleGiveUpResponse)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(pb.xiugou.x1.protobuf.battle.Battle.BattleGiveUpResponse other) {
        if (other == pb.xiugou.x1.protobuf.battle.Battle.BattleGiveUpResponse.getDefaultInstance()) return this;
        this.mergeUnknownFields(other.unknownFields);
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        pb.xiugou.x1.protobuf.battle.Battle.BattleGiveUpResponse parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (pb.xiugou.x1.protobuf.battle.Battle.BattleGiveUpResponse) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

      @java.lang.Override
      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.mergeUnknownFields(unknownFields);
      }


      // @@protoc_insertion_point(builder_scope:pb.BattleGiveUpResponse)
    }

    // @@protoc_insertion_point(class_scope:pb.BattleGiveUpResponse)
    private static final pb.xiugou.x1.protobuf.battle.Battle.BattleGiveUpResponse DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new pb.xiugou.x1.protobuf.battle.Battle.BattleGiveUpResponse();
    }

    public static pb.xiugou.x1.protobuf.battle.Battle.BattleGiveUpResponse getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<BattleGiveUpResponse>
        PARSER = new com.google.protobuf.AbstractParser<BattleGiveUpResponse>() {
      @java.lang.Override
      public BattleGiveUpResponse parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return new BattleGiveUpResponse(input, extensionRegistry);
      }
    };

    public static com.google.protobuf.Parser<BattleGiveUpResponse> parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser<BattleGiveUpResponse> getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public pb.xiugou.x1.protobuf.battle.Battle.BattleGiveUpResponse getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface BattleKillSpriteRequestOrBuilder extends
      // @@protoc_insertion_point(interface_extends:pb.BattleKillSpriteRequest)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     *被杀死的精灵ID
     * </pre>
     *
     * <code>repeated int32 sprite_ids = 1;</code>
     * @return A list containing the spriteIds.
     */
    java.util.List<java.lang.Integer> getSpriteIdsList();
    /**
     * <pre>
     *被杀死的精灵ID
     * </pre>
     *
     * <code>repeated int32 sprite_ids = 1;</code>
     * @return The count of spriteIds.
     */
    int getSpriteIdsCount();
    /**
     * <pre>
     *被杀死的精灵ID
     * </pre>
     *
     * <code>repeated int32 sprite_ids = 1;</code>
     * @param index The index of the element to return.
     * @return The spriteIds at the given index.
     */
    int getSpriteIds(int index);

    /**
     * <pre>
     *递增ID
     * </pre>
     *
     * <code>int32 serial_id = 2;</code>
     * @return The serialId.
     */
    int getSerialId();
  }
  /**
   * <pre>
   *杀死怪物
   * </pre>
   *
   * Protobuf type {@code pb.BattleKillSpriteRequest}
   */
  public  static final class BattleKillSpriteRequest extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:pb.BattleKillSpriteRequest)
      BattleKillSpriteRequestOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use BattleKillSpriteRequest.newBuilder() to construct.
    private BattleKillSpriteRequest(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private BattleKillSpriteRequest() {
      spriteIds_ = emptyIntList();
    }

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new BattleKillSpriteRequest();
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private BattleKillSpriteRequest(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      if (extensionRegistry == null) {
        throw new java.lang.NullPointerException();
      }
      int mutable_bitField0_ = 0;
      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder();
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            case 8: {
              if (!((mutable_bitField0_ & 0x00000001) != 0)) {
                spriteIds_ = newIntList();
                mutable_bitField0_ |= 0x00000001;
              }
              spriteIds_.addInt(input.readInt32());
              break;
            }
            case 10: {
              int length = input.readRawVarint32();
              int limit = input.pushLimit(length);
              if (!((mutable_bitField0_ & 0x00000001) != 0) && input.getBytesUntilLimit() > 0) {
                spriteIds_ = newIntList();
                mutable_bitField0_ |= 0x00000001;
              }
              while (input.getBytesUntilLimit() > 0) {
                spriteIds_.addInt(input.readInt32());
              }
              input.popLimit(limit);
              break;
            }
            case 16: {

              serialId_ = input.readInt32();
              break;
            }
            default: {
              if (!parseUnknownField(
                  input, unknownFields, extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e).setUnfinishedMessage(this);
      } finally {
        if (((mutable_bitField0_ & 0x00000001) != 0)) {
          spriteIds_.makeImmutable(); // C
        }
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return pb.xiugou.x1.protobuf.battle.Battle.internal_static_pb_BattleKillSpriteRequest_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return pb.xiugou.x1.protobuf.battle.Battle.internal_static_pb_BattleKillSpriteRequest_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              pb.xiugou.x1.protobuf.battle.Battle.BattleKillSpriteRequest.class, pb.xiugou.x1.protobuf.battle.Battle.BattleKillSpriteRequest.Builder.class);
    }

    /**
     * Protobuf enum {@code pb.BattleKillSpriteRequest.Proto}
     */
    public enum Proto
        implements com.google.protobuf.ProtocolMessageEnum {
      /**
       * <code>UNKNOWN = 0;</code>
       */
      UNKNOWN(0),
      /**
       * <code>ID = 300008;</code>
       */
      ID(300008),
      UNRECOGNIZED(-1),
      ;

      /**
       * <code>UNKNOWN = 0;</code>
       */
      public static final int UNKNOWN_VALUE = 0;
      /**
       * <code>ID = 300008;</code>
       */
      public static final int ID_VALUE = 300008;


      public final int getNumber() {
        if (this == UNRECOGNIZED) {
          throw new java.lang.IllegalArgumentException(
              "Can't get the number of an unknown enum value.");
        }
        return value;
      }

      /**
       * @param value The numeric wire value of the corresponding enum entry.
       * @return The enum associated with the given numeric wire value.
       * @deprecated Use {@link #forNumber(int)} instead.
       */
      @java.lang.Deprecated
      public static Proto valueOf(int value) {
        return forNumber(value);
      }

      /**
       * @param value The numeric wire value of the corresponding enum entry.
       * @return The enum associated with the given numeric wire value.
       */
      public static Proto forNumber(int value) {
        switch (value) {
          case 0: return UNKNOWN;
          case 300008: return ID;
          default: return null;
        }
      }

      public static com.google.protobuf.Internal.EnumLiteMap<Proto>
          internalGetValueMap() {
        return internalValueMap;
      }
      private static final com.google.protobuf.Internal.EnumLiteMap<
          Proto> internalValueMap =
            new com.google.protobuf.Internal.EnumLiteMap<Proto>() {
              public Proto findValueByNumber(int number) {
                return Proto.forNumber(number);
              }
            };

      public final com.google.protobuf.Descriptors.EnumValueDescriptor
          getValueDescriptor() {
        return getDescriptor().getValues().get(ordinal());
      }
      public final com.google.protobuf.Descriptors.EnumDescriptor
          getDescriptorForType() {
        return getDescriptor();
      }
      public static final com.google.protobuf.Descriptors.EnumDescriptor
          getDescriptor() {
        return pb.xiugou.x1.protobuf.battle.Battle.BattleKillSpriteRequest.getDescriptor().getEnumTypes().get(0);
      }

      private static final Proto[] VALUES = values();

      public static Proto valueOf(
          com.google.protobuf.Descriptors.EnumValueDescriptor desc) {
        if (desc.getType() != getDescriptor()) {
          throw new java.lang.IllegalArgumentException(
            "EnumValueDescriptor is not for this type.");
        }
        if (desc.getIndex() == -1) {
          return UNRECOGNIZED;
        }
        return VALUES[desc.getIndex()];
      }

      private final int value;

      private Proto(int value) {
        this.value = value;
      }

      // @@protoc_insertion_point(enum_scope:pb.BattleKillSpriteRequest.Proto)
    }

    public static final int SPRITE_IDS_FIELD_NUMBER = 1;
    private com.google.protobuf.Internal.IntList spriteIds_;
    /**
     * <pre>
     *被杀死的精灵ID
     * </pre>
     *
     * <code>repeated int32 sprite_ids = 1;</code>
     * @return A list containing the spriteIds.
     */
    public java.util.List<java.lang.Integer>
        getSpriteIdsList() {
      return spriteIds_;
    }
    /**
     * <pre>
     *被杀死的精灵ID
     * </pre>
     *
     * <code>repeated int32 sprite_ids = 1;</code>
     * @return The count of spriteIds.
     */
    public int getSpriteIdsCount() {
      return spriteIds_.size();
    }
    /**
     * <pre>
     *被杀死的精灵ID
     * </pre>
     *
     * <code>repeated int32 sprite_ids = 1;</code>
     * @param index The index of the element to return.
     * @return The spriteIds at the given index.
     */
    public int getSpriteIds(int index) {
      return spriteIds_.getInt(index);
    }
    private int spriteIdsMemoizedSerializedSize = -1;

    public static final int SERIAL_ID_FIELD_NUMBER = 2;
    private int serialId_;
    /**
     * <pre>
     *递增ID
     * </pre>
     *
     * <code>int32 serial_id = 2;</code>
     * @return The serialId.
     */
    public int getSerialId() {
      return serialId_;
    }

    private byte memoizedIsInitialized = -1;
    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      getSerializedSize();
      if (getSpriteIdsList().size() > 0) {
        output.writeUInt32NoTag(10);
        output.writeUInt32NoTag(spriteIdsMemoizedSerializedSize);
      }
      for (int i = 0; i < spriteIds_.size(); i++) {
        output.writeInt32NoTag(spriteIds_.getInt(i));
      }
      if (serialId_ != 0) {
        output.writeInt32(2, serialId_);
      }
      unknownFields.writeTo(output);
    }

    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      {
        int dataSize = 0;
        for (int i = 0; i < spriteIds_.size(); i++) {
          dataSize += com.google.protobuf.CodedOutputStream
            .computeInt32SizeNoTag(spriteIds_.getInt(i));
        }
        size += dataSize;
        if (!getSpriteIdsList().isEmpty()) {
          size += 1;
          size += com.google.protobuf.CodedOutputStream
              .computeInt32SizeNoTag(dataSize);
        }
        spriteIdsMemoizedSerializedSize = dataSize;
      }
      if (serialId_ != 0) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt32Size(2, serialId_);
      }
      size += unknownFields.getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof pb.xiugou.x1.protobuf.battle.Battle.BattleKillSpriteRequest)) {
        return super.equals(obj);
      }
      pb.xiugou.x1.protobuf.battle.Battle.BattleKillSpriteRequest other = (pb.xiugou.x1.protobuf.battle.Battle.BattleKillSpriteRequest) obj;

      if (!getSpriteIdsList()
          .equals(other.getSpriteIdsList())) return false;
      if (getSerialId()
          != other.getSerialId()) return false;
      if (!unknownFields.equals(other.unknownFields)) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      if (getSpriteIdsCount() > 0) {
        hash = (37 * hash) + SPRITE_IDS_FIELD_NUMBER;
        hash = (53 * hash) + getSpriteIdsList().hashCode();
      }
      hash = (37 * hash) + SERIAL_ID_FIELD_NUMBER;
      hash = (53 * hash) + getSerialId();
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static pb.xiugou.x1.protobuf.battle.Battle.BattleKillSpriteRequest parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static pb.xiugou.x1.protobuf.battle.Battle.BattleKillSpriteRequest parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static pb.xiugou.x1.protobuf.battle.Battle.BattleKillSpriteRequest parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static pb.xiugou.x1.protobuf.battle.Battle.BattleKillSpriteRequest parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static pb.xiugou.x1.protobuf.battle.Battle.BattleKillSpriteRequest parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static pb.xiugou.x1.protobuf.battle.Battle.BattleKillSpriteRequest parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static pb.xiugou.x1.protobuf.battle.Battle.BattleKillSpriteRequest parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static pb.xiugou.x1.protobuf.battle.Battle.BattleKillSpriteRequest parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }
    public static pb.xiugou.x1.protobuf.battle.Battle.BattleKillSpriteRequest parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static pb.xiugou.x1.protobuf.battle.Battle.BattleKillSpriteRequest parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static pb.xiugou.x1.protobuf.battle.Battle.BattleKillSpriteRequest parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static pb.xiugou.x1.protobuf.battle.Battle.BattleKillSpriteRequest parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(pb.xiugou.x1.protobuf.battle.Battle.BattleKillSpriteRequest prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * <pre>
     *杀死怪物
     * </pre>
     *
     * Protobuf type {@code pb.BattleKillSpriteRequest}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:pb.BattleKillSpriteRequest)
        pb.xiugou.x1.protobuf.battle.Battle.BattleKillSpriteRequestOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return pb.xiugou.x1.protobuf.battle.Battle.internal_static_pb_BattleKillSpriteRequest_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return pb.xiugou.x1.protobuf.battle.Battle.internal_static_pb_BattleKillSpriteRequest_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                pb.xiugou.x1.protobuf.battle.Battle.BattleKillSpriteRequest.class, pb.xiugou.x1.protobuf.battle.Battle.BattleKillSpriteRequest.Builder.class);
      }

      // Construct using pb.xiugou.x1.protobuf.battle.Battle.BattleKillSpriteRequest.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
        }
      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        spriteIds_ = emptyIntList();
        bitField0_ = (bitField0_ & ~0x00000001);
        serialId_ = 0;

        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return pb.xiugou.x1.protobuf.battle.Battle.internal_static_pb_BattleKillSpriteRequest_descriptor;
      }

      @java.lang.Override
      public pb.xiugou.x1.protobuf.battle.Battle.BattleKillSpriteRequest getDefaultInstanceForType() {
        return pb.xiugou.x1.protobuf.battle.Battle.BattleKillSpriteRequest.getDefaultInstance();
      }

      @java.lang.Override
      public pb.xiugou.x1.protobuf.battle.Battle.BattleKillSpriteRequest build() {
        pb.xiugou.x1.protobuf.battle.Battle.BattleKillSpriteRequest result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public pb.xiugou.x1.protobuf.battle.Battle.BattleKillSpriteRequest buildPartial() {
        pb.xiugou.x1.protobuf.battle.Battle.BattleKillSpriteRequest result = new pb.xiugou.x1.protobuf.battle.Battle.BattleKillSpriteRequest(this);
        int from_bitField0_ = bitField0_;
        if (((bitField0_ & 0x00000001) != 0)) {
          spriteIds_.makeImmutable();
          bitField0_ = (bitField0_ & ~0x00000001);
        }
        result.spriteIds_ = spriteIds_;
        result.serialId_ = serialId_;
        onBuilt();
        return result;
      }

      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }
      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.setField(field, value);
      }
      @java.lang.Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @java.lang.Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }
      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof pb.xiugou.x1.protobuf.battle.Battle.BattleKillSpriteRequest) {
          return mergeFrom((pb.xiugou.x1.protobuf.battle.Battle.BattleKillSpriteRequest)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(pb.xiugou.x1.protobuf.battle.Battle.BattleKillSpriteRequest other) {
        if (other == pb.xiugou.x1.protobuf.battle.Battle.BattleKillSpriteRequest.getDefaultInstance()) return this;
        if (!other.spriteIds_.isEmpty()) {
          if (spriteIds_.isEmpty()) {
            spriteIds_ = other.spriteIds_;
            bitField0_ = (bitField0_ & ~0x00000001);
          } else {
            ensureSpriteIdsIsMutable();
            spriteIds_.addAll(other.spriteIds_);
          }
          onChanged();
        }
        if (other.getSerialId() != 0) {
          setSerialId(other.getSerialId());
        }
        this.mergeUnknownFields(other.unknownFields);
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        pb.xiugou.x1.protobuf.battle.Battle.BattleKillSpriteRequest parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (pb.xiugou.x1.protobuf.battle.Battle.BattleKillSpriteRequest) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      private com.google.protobuf.Internal.IntList spriteIds_ = emptyIntList();
      private void ensureSpriteIdsIsMutable() {
        if (!((bitField0_ & 0x00000001) != 0)) {
          spriteIds_ = mutableCopy(spriteIds_);
          bitField0_ |= 0x00000001;
         }
      }
      /**
       * <pre>
       *被杀死的精灵ID
       * </pre>
       *
       * <code>repeated int32 sprite_ids = 1;</code>
       * @return A list containing the spriteIds.
       */
      public java.util.List<java.lang.Integer>
          getSpriteIdsList() {
        return ((bitField0_ & 0x00000001) != 0) ?
                 java.util.Collections.unmodifiableList(spriteIds_) : spriteIds_;
      }
      /**
       * <pre>
       *被杀死的精灵ID
       * </pre>
       *
       * <code>repeated int32 sprite_ids = 1;</code>
       * @return The count of spriteIds.
       */
      public int getSpriteIdsCount() {
        return spriteIds_.size();
      }
      /**
       * <pre>
       *被杀死的精灵ID
       * </pre>
       *
       * <code>repeated int32 sprite_ids = 1;</code>
       * @param index The index of the element to return.
       * @return The spriteIds at the given index.
       */
      public int getSpriteIds(int index) {
        return spriteIds_.getInt(index);
      }
      /**
       * <pre>
       *被杀死的精灵ID
       * </pre>
       *
       * <code>repeated int32 sprite_ids = 1;</code>
       * @param index The index to set the value at.
       * @param value The spriteIds to set.
       * @return This builder for chaining.
       */
      public Builder setSpriteIds(
          int index, int value) {
        ensureSpriteIdsIsMutable();
        spriteIds_.setInt(index, value);
        onChanged();
        return this;
      }
      /**
       * <pre>
       *被杀死的精灵ID
       * </pre>
       *
       * <code>repeated int32 sprite_ids = 1;</code>
       * @param value The spriteIds to add.
       * @return This builder for chaining.
       */
      public Builder addSpriteIds(int value) {
        ensureSpriteIdsIsMutable();
        spriteIds_.addInt(value);
        onChanged();
        return this;
      }
      /**
       * <pre>
       *被杀死的精灵ID
       * </pre>
       *
       * <code>repeated int32 sprite_ids = 1;</code>
       * @param values The spriteIds to add.
       * @return This builder for chaining.
       */
      public Builder addAllSpriteIds(
          java.lang.Iterable<? extends java.lang.Integer> values) {
        ensureSpriteIdsIsMutable();
        com.google.protobuf.AbstractMessageLite.Builder.addAll(
            values, spriteIds_);
        onChanged();
        return this;
      }
      /**
       * <pre>
       *被杀死的精灵ID
       * </pre>
       *
       * <code>repeated int32 sprite_ids = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearSpriteIds() {
        spriteIds_ = emptyIntList();
        bitField0_ = (bitField0_ & ~0x00000001);
        onChanged();
        return this;
      }

      private int serialId_ ;
      /**
       * <pre>
       *递增ID
       * </pre>
       *
       * <code>int32 serial_id = 2;</code>
       * @return The serialId.
       */
      public int getSerialId() {
        return serialId_;
      }
      /**
       * <pre>
       *递增ID
       * </pre>
       *
       * <code>int32 serial_id = 2;</code>
       * @param value The serialId to set.
       * @return This builder for chaining.
       */
      public Builder setSerialId(int value) {
        
        serialId_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       *递增ID
       * </pre>
       *
       * <code>int32 serial_id = 2;</code>
       * @return This builder for chaining.
       */
      public Builder clearSerialId() {
        
        serialId_ = 0;
        onChanged();
        return this;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

      @java.lang.Override
      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.mergeUnknownFields(unknownFields);
      }


      // @@protoc_insertion_point(builder_scope:pb.BattleKillSpriteRequest)
    }

    // @@protoc_insertion_point(class_scope:pb.BattleKillSpriteRequest)
    private static final pb.xiugou.x1.protobuf.battle.Battle.BattleKillSpriteRequest DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new pb.xiugou.x1.protobuf.battle.Battle.BattleKillSpriteRequest();
    }

    public static pb.xiugou.x1.protobuf.battle.Battle.BattleKillSpriteRequest getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<BattleKillSpriteRequest>
        PARSER = new com.google.protobuf.AbstractParser<BattleKillSpriteRequest>() {
      @java.lang.Override
      public BattleKillSpriteRequest parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return new BattleKillSpriteRequest(input, extensionRegistry);
      }
    };

    public static com.google.protobuf.Parser<BattleKillSpriteRequest> parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser<BattleKillSpriteRequest> getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public pb.xiugou.x1.protobuf.battle.Battle.BattleKillSpriteRequest getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface BattleKillSpriteResponseOrBuilder extends
      // @@protoc_insertion_point(interface_extends:pb.BattleKillSpriteResponse)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     *被杀的精灵
     * </pre>
     *
     * <code>repeated .pb.PbKillSprite sprites = 1;</code>
     */
    java.util.List<pb.xiugou.x1.protobuf.battle.Battle.PbKillSprite> 
        getSpritesList();
    /**
     * <pre>
     *被杀的精灵
     * </pre>
     *
     * <code>repeated .pb.PbKillSprite sprites = 1;</code>
     */
    pb.xiugou.x1.protobuf.battle.Battle.PbKillSprite getSprites(int index);
    /**
     * <pre>
     *被杀的精灵
     * </pre>
     *
     * <code>repeated .pb.PbKillSprite sprites = 1;</code>
     */
    int getSpritesCount();
    /**
     * <pre>
     *被杀的精灵
     * </pre>
     *
     * <code>repeated .pb.PbKillSprite sprites = 1;</code>
     */
    java.util.List<? extends pb.xiugou.x1.protobuf.battle.Battle.PbKillSpriteOrBuilder> 
        getSpritesOrBuilderList();
    /**
     * <pre>
     *被杀的精灵
     * </pre>
     *
     * <code>repeated .pb.PbKillSprite sprites = 1;</code>
     */
    pb.xiugou.x1.protobuf.battle.Battle.PbKillSpriteOrBuilder getSpritesOrBuilder(
        int index);

    /**
     * <pre>
     *递增ID
     * </pre>
     *
     * <code>int32 serial_id = 2;</code>
     * @return The serialId.
     */
    int getSerialId();

    /**
     * <pre>
     *战斗结束的数据
     * </pre>
     *
     * <code>.pb.PbBattleEndData end_data = 3;</code>
     * @return Whether the endData field is set.
     */
    boolean hasEndData();
    /**
     * <pre>
     *战斗结束的数据
     * </pre>
     *
     * <code>.pb.PbBattleEndData end_data = 3;</code>
     * @return The endData.
     */
    pb.xiugou.x1.protobuf.battle.Battle.PbBattleEndData getEndData();
    /**
     * <pre>
     *战斗结束的数据
     * </pre>
     *
     * <code>.pb.PbBattleEndData end_data = 3;</code>
     */
    pb.xiugou.x1.protobuf.battle.Battle.PbBattleEndDataOrBuilder getEndDataOrBuilder();
  }
  /**
   * Protobuf type {@code pb.BattleKillSpriteResponse}
   */
  public  static final class BattleKillSpriteResponse extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:pb.BattleKillSpriteResponse)
      BattleKillSpriteResponseOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use BattleKillSpriteResponse.newBuilder() to construct.
    private BattleKillSpriteResponse(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private BattleKillSpriteResponse() {
      sprites_ = java.util.Collections.emptyList();
    }

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new BattleKillSpriteResponse();
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private BattleKillSpriteResponse(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      if (extensionRegistry == null) {
        throw new java.lang.NullPointerException();
      }
      int mutable_bitField0_ = 0;
      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder();
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            case 10: {
              if (!((mutable_bitField0_ & 0x00000001) != 0)) {
                sprites_ = new java.util.ArrayList<pb.xiugou.x1.protobuf.battle.Battle.PbKillSprite>();
                mutable_bitField0_ |= 0x00000001;
              }
              sprites_.add(
                  input.readMessage(pb.xiugou.x1.protobuf.battle.Battle.PbKillSprite.parser(), extensionRegistry));
              break;
            }
            case 16: {

              serialId_ = input.readInt32();
              break;
            }
            case 26: {
              pb.xiugou.x1.protobuf.battle.Battle.PbBattleEndData.Builder subBuilder = null;
              if (endData_ != null) {
                subBuilder = endData_.toBuilder();
              }
              endData_ = input.readMessage(pb.xiugou.x1.protobuf.battle.Battle.PbBattleEndData.parser(), extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(endData_);
                endData_ = subBuilder.buildPartial();
              }

              break;
            }
            default: {
              if (!parseUnknownField(
                  input, unknownFields, extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e).setUnfinishedMessage(this);
      } finally {
        if (((mutable_bitField0_ & 0x00000001) != 0)) {
          sprites_ = java.util.Collections.unmodifiableList(sprites_);
        }
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return pb.xiugou.x1.protobuf.battle.Battle.internal_static_pb_BattleKillSpriteResponse_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return pb.xiugou.x1.protobuf.battle.Battle.internal_static_pb_BattleKillSpriteResponse_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              pb.xiugou.x1.protobuf.battle.Battle.BattleKillSpriteResponse.class, pb.xiugou.x1.protobuf.battle.Battle.BattleKillSpriteResponse.Builder.class);
    }

    /**
     * Protobuf enum {@code pb.BattleKillSpriteResponse.Proto}
     */
    public enum Proto
        implements com.google.protobuf.ProtocolMessageEnum {
      /**
       * <code>UNKNOWN = 0;</code>
       */
      UNKNOWN(0),
      /**
       * <code>ID = 300008;</code>
       */
      ID(300008),
      UNRECOGNIZED(-1),
      ;

      /**
       * <code>UNKNOWN = 0;</code>
       */
      public static final int UNKNOWN_VALUE = 0;
      /**
       * <code>ID = 300008;</code>
       */
      public static final int ID_VALUE = 300008;


      public final int getNumber() {
        if (this == UNRECOGNIZED) {
          throw new java.lang.IllegalArgumentException(
              "Can't get the number of an unknown enum value.");
        }
        return value;
      }

      /**
       * @param value The numeric wire value of the corresponding enum entry.
       * @return The enum associated with the given numeric wire value.
       * @deprecated Use {@link #forNumber(int)} instead.
       */
      @java.lang.Deprecated
      public static Proto valueOf(int value) {
        return forNumber(value);
      }

      /**
       * @param value The numeric wire value of the corresponding enum entry.
       * @return The enum associated with the given numeric wire value.
       */
      public static Proto forNumber(int value) {
        switch (value) {
          case 0: return UNKNOWN;
          case 300008: return ID;
          default: return null;
        }
      }

      public static com.google.protobuf.Internal.EnumLiteMap<Proto>
          internalGetValueMap() {
        return internalValueMap;
      }
      private static final com.google.protobuf.Internal.EnumLiteMap<
          Proto> internalValueMap =
            new com.google.protobuf.Internal.EnumLiteMap<Proto>() {
              public Proto findValueByNumber(int number) {
                return Proto.forNumber(number);
              }
            };

      public final com.google.protobuf.Descriptors.EnumValueDescriptor
          getValueDescriptor() {
        return getDescriptor().getValues().get(ordinal());
      }
      public final com.google.protobuf.Descriptors.EnumDescriptor
          getDescriptorForType() {
        return getDescriptor();
      }
      public static final com.google.protobuf.Descriptors.EnumDescriptor
          getDescriptor() {
        return pb.xiugou.x1.protobuf.battle.Battle.BattleKillSpriteResponse.getDescriptor().getEnumTypes().get(0);
      }

      private static final Proto[] VALUES = values();

      public static Proto valueOf(
          com.google.protobuf.Descriptors.EnumValueDescriptor desc) {
        if (desc.getType() != getDescriptor()) {
          throw new java.lang.IllegalArgumentException(
            "EnumValueDescriptor is not for this type.");
        }
        if (desc.getIndex() == -1) {
          return UNRECOGNIZED;
        }
        return VALUES[desc.getIndex()];
      }

      private final int value;

      private Proto(int value) {
        this.value = value;
      }

      // @@protoc_insertion_point(enum_scope:pb.BattleKillSpriteResponse.Proto)
    }

    public static final int SPRITES_FIELD_NUMBER = 1;
    private java.util.List<pb.xiugou.x1.protobuf.battle.Battle.PbKillSprite> sprites_;
    /**
     * <pre>
     *被杀的精灵
     * </pre>
     *
     * <code>repeated .pb.PbKillSprite sprites = 1;</code>
     */
    public java.util.List<pb.xiugou.x1.protobuf.battle.Battle.PbKillSprite> getSpritesList() {
      return sprites_;
    }
    /**
     * <pre>
     *被杀的精灵
     * </pre>
     *
     * <code>repeated .pb.PbKillSprite sprites = 1;</code>
     */
    public java.util.List<? extends pb.xiugou.x1.protobuf.battle.Battle.PbKillSpriteOrBuilder> 
        getSpritesOrBuilderList() {
      return sprites_;
    }
    /**
     * <pre>
     *被杀的精灵
     * </pre>
     *
     * <code>repeated .pb.PbKillSprite sprites = 1;</code>
     */
    public int getSpritesCount() {
      return sprites_.size();
    }
    /**
     * <pre>
     *被杀的精灵
     * </pre>
     *
     * <code>repeated .pb.PbKillSprite sprites = 1;</code>
     */
    public pb.xiugou.x1.protobuf.battle.Battle.PbKillSprite getSprites(int index) {
      return sprites_.get(index);
    }
    /**
     * <pre>
     *被杀的精灵
     * </pre>
     *
     * <code>repeated .pb.PbKillSprite sprites = 1;</code>
     */
    public pb.xiugou.x1.protobuf.battle.Battle.PbKillSpriteOrBuilder getSpritesOrBuilder(
        int index) {
      return sprites_.get(index);
    }

    public static final int SERIAL_ID_FIELD_NUMBER = 2;
    private int serialId_;
    /**
     * <pre>
     *递增ID
     * </pre>
     *
     * <code>int32 serial_id = 2;</code>
     * @return The serialId.
     */
    public int getSerialId() {
      return serialId_;
    }

    public static final int END_DATA_FIELD_NUMBER = 3;
    private pb.xiugou.x1.protobuf.battle.Battle.PbBattleEndData endData_;
    /**
     * <pre>
     *战斗结束的数据
     * </pre>
     *
     * <code>.pb.PbBattleEndData end_data = 3;</code>
     * @return Whether the endData field is set.
     */
    public boolean hasEndData() {
      return endData_ != null;
    }
    /**
     * <pre>
     *战斗结束的数据
     * </pre>
     *
     * <code>.pb.PbBattleEndData end_data = 3;</code>
     * @return The endData.
     */
    public pb.xiugou.x1.protobuf.battle.Battle.PbBattleEndData getEndData() {
      return endData_ == null ? pb.xiugou.x1.protobuf.battle.Battle.PbBattleEndData.getDefaultInstance() : endData_;
    }
    /**
     * <pre>
     *战斗结束的数据
     * </pre>
     *
     * <code>.pb.PbBattleEndData end_data = 3;</code>
     */
    public pb.xiugou.x1.protobuf.battle.Battle.PbBattleEndDataOrBuilder getEndDataOrBuilder() {
      return getEndData();
    }

    private byte memoizedIsInitialized = -1;
    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      for (int i = 0; i < sprites_.size(); i++) {
        output.writeMessage(1, sprites_.get(i));
      }
      if (serialId_ != 0) {
        output.writeInt32(2, serialId_);
      }
      if (endData_ != null) {
        output.writeMessage(3, getEndData());
      }
      unknownFields.writeTo(output);
    }

    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      for (int i = 0; i < sprites_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(1, sprites_.get(i));
      }
      if (serialId_ != 0) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt32Size(2, serialId_);
      }
      if (endData_ != null) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(3, getEndData());
      }
      size += unknownFields.getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof pb.xiugou.x1.protobuf.battle.Battle.BattleKillSpriteResponse)) {
        return super.equals(obj);
      }
      pb.xiugou.x1.protobuf.battle.Battle.BattleKillSpriteResponse other = (pb.xiugou.x1.protobuf.battle.Battle.BattleKillSpriteResponse) obj;

      if (!getSpritesList()
          .equals(other.getSpritesList())) return false;
      if (getSerialId()
          != other.getSerialId()) return false;
      if (hasEndData() != other.hasEndData()) return false;
      if (hasEndData()) {
        if (!getEndData()
            .equals(other.getEndData())) return false;
      }
      if (!unknownFields.equals(other.unknownFields)) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      if (getSpritesCount() > 0) {
        hash = (37 * hash) + SPRITES_FIELD_NUMBER;
        hash = (53 * hash) + getSpritesList().hashCode();
      }
      hash = (37 * hash) + SERIAL_ID_FIELD_NUMBER;
      hash = (53 * hash) + getSerialId();
      if (hasEndData()) {
        hash = (37 * hash) + END_DATA_FIELD_NUMBER;
        hash = (53 * hash) + getEndData().hashCode();
      }
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static pb.xiugou.x1.protobuf.battle.Battle.BattleKillSpriteResponse parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static pb.xiugou.x1.protobuf.battle.Battle.BattleKillSpriteResponse parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static pb.xiugou.x1.protobuf.battle.Battle.BattleKillSpriteResponse parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static pb.xiugou.x1.protobuf.battle.Battle.BattleKillSpriteResponse parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static pb.xiugou.x1.protobuf.battle.Battle.BattleKillSpriteResponse parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static pb.xiugou.x1.protobuf.battle.Battle.BattleKillSpriteResponse parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static pb.xiugou.x1.protobuf.battle.Battle.BattleKillSpriteResponse parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static pb.xiugou.x1.protobuf.battle.Battle.BattleKillSpriteResponse parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }
    public static pb.xiugou.x1.protobuf.battle.Battle.BattleKillSpriteResponse parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static pb.xiugou.x1.protobuf.battle.Battle.BattleKillSpriteResponse parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static pb.xiugou.x1.protobuf.battle.Battle.BattleKillSpriteResponse parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static pb.xiugou.x1.protobuf.battle.Battle.BattleKillSpriteResponse parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(pb.xiugou.x1.protobuf.battle.Battle.BattleKillSpriteResponse prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code pb.BattleKillSpriteResponse}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:pb.BattleKillSpriteResponse)
        pb.xiugou.x1.protobuf.battle.Battle.BattleKillSpriteResponseOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return pb.xiugou.x1.protobuf.battle.Battle.internal_static_pb_BattleKillSpriteResponse_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return pb.xiugou.x1.protobuf.battle.Battle.internal_static_pb_BattleKillSpriteResponse_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                pb.xiugou.x1.protobuf.battle.Battle.BattleKillSpriteResponse.class, pb.xiugou.x1.protobuf.battle.Battle.BattleKillSpriteResponse.Builder.class);
      }

      // Construct using pb.xiugou.x1.protobuf.battle.Battle.BattleKillSpriteResponse.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
          getSpritesFieldBuilder();
        }
      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        if (spritesBuilder_ == null) {
          sprites_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000001);
        } else {
          spritesBuilder_.clear();
        }
        serialId_ = 0;

        if (endDataBuilder_ == null) {
          endData_ = null;
        } else {
          endData_ = null;
          endDataBuilder_ = null;
        }
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return pb.xiugou.x1.protobuf.battle.Battle.internal_static_pb_BattleKillSpriteResponse_descriptor;
      }

      @java.lang.Override
      public pb.xiugou.x1.protobuf.battle.Battle.BattleKillSpriteResponse getDefaultInstanceForType() {
        return pb.xiugou.x1.protobuf.battle.Battle.BattleKillSpriteResponse.getDefaultInstance();
      }

      @java.lang.Override
      public pb.xiugou.x1.protobuf.battle.Battle.BattleKillSpriteResponse build() {
        pb.xiugou.x1.protobuf.battle.Battle.BattleKillSpriteResponse result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public pb.xiugou.x1.protobuf.battle.Battle.BattleKillSpriteResponse buildPartial() {
        pb.xiugou.x1.protobuf.battle.Battle.BattleKillSpriteResponse result = new pb.xiugou.x1.protobuf.battle.Battle.BattleKillSpriteResponse(this);
        int from_bitField0_ = bitField0_;
        if (spritesBuilder_ == null) {
          if (((bitField0_ & 0x00000001) != 0)) {
            sprites_ = java.util.Collections.unmodifiableList(sprites_);
            bitField0_ = (bitField0_ & ~0x00000001);
          }
          result.sprites_ = sprites_;
        } else {
          result.sprites_ = spritesBuilder_.build();
        }
        result.serialId_ = serialId_;
        if (endDataBuilder_ == null) {
          result.endData_ = endData_;
        } else {
          result.endData_ = endDataBuilder_.build();
        }
        onBuilt();
        return result;
      }

      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }
      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.setField(field, value);
      }
      @java.lang.Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @java.lang.Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }
      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof pb.xiugou.x1.protobuf.battle.Battle.BattleKillSpriteResponse) {
          return mergeFrom((pb.xiugou.x1.protobuf.battle.Battle.BattleKillSpriteResponse)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(pb.xiugou.x1.protobuf.battle.Battle.BattleKillSpriteResponse other) {
        if (other == pb.xiugou.x1.protobuf.battle.Battle.BattleKillSpriteResponse.getDefaultInstance()) return this;
        if (spritesBuilder_ == null) {
          if (!other.sprites_.isEmpty()) {
            if (sprites_.isEmpty()) {
              sprites_ = other.sprites_;
              bitField0_ = (bitField0_ & ~0x00000001);
            } else {
              ensureSpritesIsMutable();
              sprites_.addAll(other.sprites_);
            }
            onChanged();
          }
        } else {
          if (!other.sprites_.isEmpty()) {
            if (spritesBuilder_.isEmpty()) {
              spritesBuilder_.dispose();
              spritesBuilder_ = null;
              sprites_ = other.sprites_;
              bitField0_ = (bitField0_ & ~0x00000001);
              spritesBuilder_ = 
                com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
                   getSpritesFieldBuilder() : null;
            } else {
              spritesBuilder_.addAllMessages(other.sprites_);
            }
          }
        }
        if (other.getSerialId() != 0) {
          setSerialId(other.getSerialId());
        }
        if (other.hasEndData()) {
          mergeEndData(other.getEndData());
        }
        this.mergeUnknownFields(other.unknownFields);
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        pb.xiugou.x1.protobuf.battle.Battle.BattleKillSpriteResponse parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (pb.xiugou.x1.protobuf.battle.Battle.BattleKillSpriteResponse) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      private java.util.List<pb.xiugou.x1.protobuf.battle.Battle.PbKillSprite> sprites_ =
        java.util.Collections.emptyList();
      private void ensureSpritesIsMutable() {
        if (!((bitField0_ & 0x00000001) != 0)) {
          sprites_ = new java.util.ArrayList<pb.xiugou.x1.protobuf.battle.Battle.PbKillSprite>(sprites_);
          bitField0_ |= 0x00000001;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilderV3<
          pb.xiugou.x1.protobuf.battle.Battle.PbKillSprite, pb.xiugou.x1.protobuf.battle.Battle.PbKillSprite.Builder, pb.xiugou.x1.protobuf.battle.Battle.PbKillSpriteOrBuilder> spritesBuilder_;

      /**
       * <pre>
       *被杀的精灵
       * </pre>
       *
       * <code>repeated .pb.PbKillSprite sprites = 1;</code>
       */
      public java.util.List<pb.xiugou.x1.protobuf.battle.Battle.PbKillSprite> getSpritesList() {
        if (spritesBuilder_ == null) {
          return java.util.Collections.unmodifiableList(sprites_);
        } else {
          return spritesBuilder_.getMessageList();
        }
      }
      /**
       * <pre>
       *被杀的精灵
       * </pre>
       *
       * <code>repeated .pb.PbKillSprite sprites = 1;</code>
       */
      public int getSpritesCount() {
        if (spritesBuilder_ == null) {
          return sprites_.size();
        } else {
          return spritesBuilder_.getCount();
        }
      }
      /**
       * <pre>
       *被杀的精灵
       * </pre>
       *
       * <code>repeated .pb.PbKillSprite sprites = 1;</code>
       */
      public pb.xiugou.x1.protobuf.battle.Battle.PbKillSprite getSprites(int index) {
        if (spritesBuilder_ == null) {
          return sprites_.get(index);
        } else {
          return spritesBuilder_.getMessage(index);
        }
      }
      /**
       * <pre>
       *被杀的精灵
       * </pre>
       *
       * <code>repeated .pb.PbKillSprite sprites = 1;</code>
       */
      public Builder setSprites(
          int index, pb.xiugou.x1.protobuf.battle.Battle.PbKillSprite value) {
        if (spritesBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureSpritesIsMutable();
          sprites_.set(index, value);
          onChanged();
        } else {
          spritesBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * <pre>
       *被杀的精灵
       * </pre>
       *
       * <code>repeated .pb.PbKillSprite sprites = 1;</code>
       */
      public Builder setSprites(
          int index, pb.xiugou.x1.protobuf.battle.Battle.PbKillSprite.Builder builderForValue) {
        if (spritesBuilder_ == null) {
          ensureSpritesIsMutable();
          sprites_.set(index, builderForValue.build());
          onChanged();
        } else {
          spritesBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       *被杀的精灵
       * </pre>
       *
       * <code>repeated .pb.PbKillSprite sprites = 1;</code>
       */
      public Builder addSprites(pb.xiugou.x1.protobuf.battle.Battle.PbKillSprite value) {
        if (spritesBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureSpritesIsMutable();
          sprites_.add(value);
          onChanged();
        } else {
          spritesBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * <pre>
       *被杀的精灵
       * </pre>
       *
       * <code>repeated .pb.PbKillSprite sprites = 1;</code>
       */
      public Builder addSprites(
          int index, pb.xiugou.x1.protobuf.battle.Battle.PbKillSprite value) {
        if (spritesBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureSpritesIsMutable();
          sprites_.add(index, value);
          onChanged();
        } else {
          spritesBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * <pre>
       *被杀的精灵
       * </pre>
       *
       * <code>repeated .pb.PbKillSprite sprites = 1;</code>
       */
      public Builder addSprites(
          pb.xiugou.x1.protobuf.battle.Battle.PbKillSprite.Builder builderForValue) {
        if (spritesBuilder_ == null) {
          ensureSpritesIsMutable();
          sprites_.add(builderForValue.build());
          onChanged();
        } else {
          spritesBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       *被杀的精灵
       * </pre>
       *
       * <code>repeated .pb.PbKillSprite sprites = 1;</code>
       */
      public Builder addSprites(
          int index, pb.xiugou.x1.protobuf.battle.Battle.PbKillSprite.Builder builderForValue) {
        if (spritesBuilder_ == null) {
          ensureSpritesIsMutable();
          sprites_.add(index, builderForValue.build());
          onChanged();
        } else {
          spritesBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       *被杀的精灵
       * </pre>
       *
       * <code>repeated .pb.PbKillSprite sprites = 1;</code>
       */
      public Builder addAllSprites(
          java.lang.Iterable<? extends pb.xiugou.x1.protobuf.battle.Battle.PbKillSprite> values) {
        if (spritesBuilder_ == null) {
          ensureSpritesIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, sprites_);
          onChanged();
        } else {
          spritesBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * <pre>
       *被杀的精灵
       * </pre>
       *
       * <code>repeated .pb.PbKillSprite sprites = 1;</code>
       */
      public Builder clearSprites() {
        if (spritesBuilder_ == null) {
          sprites_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000001);
          onChanged();
        } else {
          spritesBuilder_.clear();
        }
        return this;
      }
      /**
       * <pre>
       *被杀的精灵
       * </pre>
       *
       * <code>repeated .pb.PbKillSprite sprites = 1;</code>
       */
      public Builder removeSprites(int index) {
        if (spritesBuilder_ == null) {
          ensureSpritesIsMutable();
          sprites_.remove(index);
          onChanged();
        } else {
          spritesBuilder_.remove(index);
        }
        return this;
      }
      /**
       * <pre>
       *被杀的精灵
       * </pre>
       *
       * <code>repeated .pb.PbKillSprite sprites = 1;</code>
       */
      public pb.xiugou.x1.protobuf.battle.Battle.PbKillSprite.Builder getSpritesBuilder(
          int index) {
        return getSpritesFieldBuilder().getBuilder(index);
      }
      /**
       * <pre>
       *被杀的精灵
       * </pre>
       *
       * <code>repeated .pb.PbKillSprite sprites = 1;</code>
       */
      public pb.xiugou.x1.protobuf.battle.Battle.PbKillSpriteOrBuilder getSpritesOrBuilder(
          int index) {
        if (spritesBuilder_ == null) {
          return sprites_.get(index);  } else {
          return spritesBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * <pre>
       *被杀的精灵
       * </pre>
       *
       * <code>repeated .pb.PbKillSprite sprites = 1;</code>
       */
      public java.util.List<? extends pb.xiugou.x1.protobuf.battle.Battle.PbKillSpriteOrBuilder> 
           getSpritesOrBuilderList() {
        if (spritesBuilder_ != null) {
          return spritesBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(sprites_);
        }
      }
      /**
       * <pre>
       *被杀的精灵
       * </pre>
       *
       * <code>repeated .pb.PbKillSprite sprites = 1;</code>
       */
      public pb.xiugou.x1.protobuf.battle.Battle.PbKillSprite.Builder addSpritesBuilder() {
        return getSpritesFieldBuilder().addBuilder(
            pb.xiugou.x1.protobuf.battle.Battle.PbKillSprite.getDefaultInstance());
      }
      /**
       * <pre>
       *被杀的精灵
       * </pre>
       *
       * <code>repeated .pb.PbKillSprite sprites = 1;</code>
       */
      public pb.xiugou.x1.protobuf.battle.Battle.PbKillSprite.Builder addSpritesBuilder(
          int index) {
        return getSpritesFieldBuilder().addBuilder(
            index, pb.xiugou.x1.protobuf.battle.Battle.PbKillSprite.getDefaultInstance());
      }
      /**
       * <pre>
       *被杀的精灵
       * </pre>
       *
       * <code>repeated .pb.PbKillSprite sprites = 1;</code>
       */
      public java.util.List<pb.xiugou.x1.protobuf.battle.Battle.PbKillSprite.Builder> 
           getSpritesBuilderList() {
        return getSpritesFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilderV3<
          pb.xiugou.x1.protobuf.battle.Battle.PbKillSprite, pb.xiugou.x1.protobuf.battle.Battle.PbKillSprite.Builder, pb.xiugou.x1.protobuf.battle.Battle.PbKillSpriteOrBuilder> 
          getSpritesFieldBuilder() {
        if (spritesBuilder_ == null) {
          spritesBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
              pb.xiugou.x1.protobuf.battle.Battle.PbKillSprite, pb.xiugou.x1.protobuf.battle.Battle.PbKillSprite.Builder, pb.xiugou.x1.protobuf.battle.Battle.PbKillSpriteOrBuilder>(
                  sprites_,
                  ((bitField0_ & 0x00000001) != 0),
                  getParentForChildren(),
                  isClean());
          sprites_ = null;
        }
        return spritesBuilder_;
      }

      private int serialId_ ;
      /**
       * <pre>
       *递增ID
       * </pre>
       *
       * <code>int32 serial_id = 2;</code>
       * @return The serialId.
       */
      public int getSerialId() {
        return serialId_;
      }
      /**
       * <pre>
       *递增ID
       * </pre>
       *
       * <code>int32 serial_id = 2;</code>
       * @param value The serialId to set.
       * @return This builder for chaining.
       */
      public Builder setSerialId(int value) {
        
        serialId_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       *递增ID
       * </pre>
       *
       * <code>int32 serial_id = 2;</code>
       * @return This builder for chaining.
       */
      public Builder clearSerialId() {
        
        serialId_ = 0;
        onChanged();
        return this;
      }

      private pb.xiugou.x1.protobuf.battle.Battle.PbBattleEndData endData_;
      private com.google.protobuf.SingleFieldBuilderV3<
          pb.xiugou.x1.protobuf.battle.Battle.PbBattleEndData, pb.xiugou.x1.protobuf.battle.Battle.PbBattleEndData.Builder, pb.xiugou.x1.protobuf.battle.Battle.PbBattleEndDataOrBuilder> endDataBuilder_;
      /**
       * <pre>
       *战斗结束的数据
       * </pre>
       *
       * <code>.pb.PbBattleEndData end_data = 3;</code>
       * @return Whether the endData field is set.
       */
      public boolean hasEndData() {
        return endDataBuilder_ != null || endData_ != null;
      }
      /**
       * <pre>
       *战斗结束的数据
       * </pre>
       *
       * <code>.pb.PbBattleEndData end_data = 3;</code>
       * @return The endData.
       */
      public pb.xiugou.x1.protobuf.battle.Battle.PbBattleEndData getEndData() {
        if (endDataBuilder_ == null) {
          return endData_ == null ? pb.xiugou.x1.protobuf.battle.Battle.PbBattleEndData.getDefaultInstance() : endData_;
        } else {
          return endDataBuilder_.getMessage();
        }
      }
      /**
       * <pre>
       *战斗结束的数据
       * </pre>
       *
       * <code>.pb.PbBattleEndData end_data = 3;</code>
       */
      public Builder setEndData(pb.xiugou.x1.protobuf.battle.Battle.PbBattleEndData value) {
        if (endDataBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          endData_ = value;
          onChanged();
        } else {
          endDataBuilder_.setMessage(value);
        }

        return this;
      }
      /**
       * <pre>
       *战斗结束的数据
       * </pre>
       *
       * <code>.pb.PbBattleEndData end_data = 3;</code>
       */
      public Builder setEndData(
          pb.xiugou.x1.protobuf.battle.Battle.PbBattleEndData.Builder builderForValue) {
        if (endDataBuilder_ == null) {
          endData_ = builderForValue.build();
          onChanged();
        } else {
          endDataBuilder_.setMessage(builderForValue.build());
        }

        return this;
      }
      /**
       * <pre>
       *战斗结束的数据
       * </pre>
       *
       * <code>.pb.PbBattleEndData end_data = 3;</code>
       */
      public Builder mergeEndData(pb.xiugou.x1.protobuf.battle.Battle.PbBattleEndData value) {
        if (endDataBuilder_ == null) {
          if (endData_ != null) {
            endData_ =
              pb.xiugou.x1.protobuf.battle.Battle.PbBattleEndData.newBuilder(endData_).mergeFrom(value).buildPartial();
          } else {
            endData_ = value;
          }
          onChanged();
        } else {
          endDataBuilder_.mergeFrom(value);
        }

        return this;
      }
      /**
       * <pre>
       *战斗结束的数据
       * </pre>
       *
       * <code>.pb.PbBattleEndData end_data = 3;</code>
       */
      public Builder clearEndData() {
        if (endDataBuilder_ == null) {
          endData_ = null;
          onChanged();
        } else {
          endData_ = null;
          endDataBuilder_ = null;
        }

        return this;
      }
      /**
       * <pre>
       *战斗结束的数据
       * </pre>
       *
       * <code>.pb.PbBattleEndData end_data = 3;</code>
       */
      public pb.xiugou.x1.protobuf.battle.Battle.PbBattleEndData.Builder getEndDataBuilder() {
        
        onChanged();
        return getEndDataFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       *战斗结束的数据
       * </pre>
       *
       * <code>.pb.PbBattleEndData end_data = 3;</code>
       */
      public pb.xiugou.x1.protobuf.battle.Battle.PbBattleEndDataOrBuilder getEndDataOrBuilder() {
        if (endDataBuilder_ != null) {
          return endDataBuilder_.getMessageOrBuilder();
        } else {
          return endData_ == null ?
              pb.xiugou.x1.protobuf.battle.Battle.PbBattleEndData.getDefaultInstance() : endData_;
        }
      }
      /**
       * <pre>
       *战斗结束的数据
       * </pre>
       *
       * <code>.pb.PbBattleEndData end_data = 3;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          pb.xiugou.x1.protobuf.battle.Battle.PbBattleEndData, pb.xiugou.x1.protobuf.battle.Battle.PbBattleEndData.Builder, pb.xiugou.x1.protobuf.battle.Battle.PbBattleEndDataOrBuilder> 
          getEndDataFieldBuilder() {
        if (endDataBuilder_ == null) {
          endDataBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              pb.xiugou.x1.protobuf.battle.Battle.PbBattleEndData, pb.xiugou.x1.protobuf.battle.Battle.PbBattleEndData.Builder, pb.xiugou.x1.protobuf.battle.Battle.PbBattleEndDataOrBuilder>(
                  getEndData(),
                  getParentForChildren(),
                  isClean());
          endData_ = null;
        }
        return endDataBuilder_;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

      @java.lang.Override
      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.mergeUnknownFields(unknownFields);
      }


      // @@protoc_insertion_point(builder_scope:pb.BattleKillSpriteResponse)
    }

    // @@protoc_insertion_point(class_scope:pb.BattleKillSpriteResponse)
    private static final pb.xiugou.x1.protobuf.battle.Battle.BattleKillSpriteResponse DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new pb.xiugou.x1.protobuf.battle.Battle.BattleKillSpriteResponse();
    }

    public static pb.xiugou.x1.protobuf.battle.Battle.BattleKillSpriteResponse getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<BattleKillSpriteResponse>
        PARSER = new com.google.protobuf.AbstractParser<BattleKillSpriteResponse>() {
      @java.lang.Override
      public BattleKillSpriteResponse parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return new BattleKillSpriteResponse(input, extensionRegistry);
      }
    };

    public static com.google.protobuf.Parser<BattleKillSpriteResponse> parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser<BattleKillSpriteResponse> getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public pb.xiugou.x1.protobuf.battle.Battle.BattleKillSpriteResponse getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface BattleSyncKillMonsterRequestOrBuilder extends
      // @@protoc_insertion_point(interface_extends:pb.BattleSyncKillMonsterRequest)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     *被杀死的怪物，key怪物的配置ID，value是杀掉的数量
     * </pre>
     *
     * <code>repeated .pb.PbKeyV kill_monsters = 1;</code>
     */
    java.util.List<pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbKeyV> 
        getKillMonstersList();
    /**
     * <pre>
     *被杀死的怪物，key怪物的配置ID，value是杀掉的数量
     * </pre>
     *
     * <code>repeated .pb.PbKeyV kill_monsters = 1;</code>
     */
    pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbKeyV getKillMonsters(int index);
    /**
     * <pre>
     *被杀死的怪物，key怪物的配置ID，value是杀掉的数量
     * </pre>
     *
     * <code>repeated .pb.PbKeyV kill_monsters = 1;</code>
     */
    int getKillMonstersCount();
    /**
     * <pre>
     *被杀死的怪物，key怪物的配置ID，value是杀掉的数量
     * </pre>
     *
     * <code>repeated .pb.PbKeyV kill_monsters = 1;</code>
     */
    java.util.List<? extends pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbKeyVOrBuilder> 
        getKillMonstersOrBuilderList();
    /**
     * <pre>
     *被杀死的怪物，key怪物的配置ID，value是杀掉的数量
     * </pre>
     *
     * <code>repeated .pb.PbKeyV kill_monsters = 1;</code>
     */
    pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbKeyVOrBuilder getKillMonstersOrBuilder(
        int index);
  }
  /**
   * <pre>
   *离线重连后同步杀死怪物
   * </pre>
   *
   * Protobuf type {@code pb.BattleSyncKillMonsterRequest}
   */
  public  static final class BattleSyncKillMonsterRequest extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:pb.BattleSyncKillMonsterRequest)
      BattleSyncKillMonsterRequestOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use BattleSyncKillMonsterRequest.newBuilder() to construct.
    private BattleSyncKillMonsterRequest(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private BattleSyncKillMonsterRequest() {
      killMonsters_ = java.util.Collections.emptyList();
    }

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new BattleSyncKillMonsterRequest();
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private BattleSyncKillMonsterRequest(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      if (extensionRegistry == null) {
        throw new java.lang.NullPointerException();
      }
      int mutable_bitField0_ = 0;
      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder();
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            case 10: {
              if (!((mutable_bitField0_ & 0x00000001) != 0)) {
                killMonsters_ = new java.util.ArrayList<pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbKeyV>();
                mutable_bitField0_ |= 0x00000001;
              }
              killMonsters_.add(
                  input.readMessage(pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbKeyV.parser(), extensionRegistry));
              break;
            }
            default: {
              if (!parseUnknownField(
                  input, unknownFields, extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e).setUnfinishedMessage(this);
      } finally {
        if (((mutable_bitField0_ & 0x00000001) != 0)) {
          killMonsters_ = java.util.Collections.unmodifiableList(killMonsters_);
        }
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return pb.xiugou.x1.protobuf.battle.Battle.internal_static_pb_BattleSyncKillMonsterRequest_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return pb.xiugou.x1.protobuf.battle.Battle.internal_static_pb_BattleSyncKillMonsterRequest_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              pb.xiugou.x1.protobuf.battle.Battle.BattleSyncKillMonsterRequest.class, pb.xiugou.x1.protobuf.battle.Battle.BattleSyncKillMonsterRequest.Builder.class);
    }

    /**
     * Protobuf enum {@code pb.BattleSyncKillMonsterRequest.Proto}
     */
    public enum Proto
        implements com.google.protobuf.ProtocolMessageEnum {
      /**
       * <code>UNKNOWN = 0;</code>
       */
      UNKNOWN(0),
      /**
       * <code>ID = 300009;</code>
       */
      ID(300009),
      UNRECOGNIZED(-1),
      ;

      /**
       * <code>UNKNOWN = 0;</code>
       */
      public static final int UNKNOWN_VALUE = 0;
      /**
       * <code>ID = 300009;</code>
       */
      public static final int ID_VALUE = 300009;


      public final int getNumber() {
        if (this == UNRECOGNIZED) {
          throw new java.lang.IllegalArgumentException(
              "Can't get the number of an unknown enum value.");
        }
        return value;
      }

      /**
       * @param value The numeric wire value of the corresponding enum entry.
       * @return The enum associated with the given numeric wire value.
       * @deprecated Use {@link #forNumber(int)} instead.
       */
      @java.lang.Deprecated
      public static Proto valueOf(int value) {
        return forNumber(value);
      }

      /**
       * @param value The numeric wire value of the corresponding enum entry.
       * @return The enum associated with the given numeric wire value.
       */
      public static Proto forNumber(int value) {
        switch (value) {
          case 0: return UNKNOWN;
          case 300009: return ID;
          default: return null;
        }
      }

      public static com.google.protobuf.Internal.EnumLiteMap<Proto>
          internalGetValueMap() {
        return internalValueMap;
      }
      private static final com.google.protobuf.Internal.EnumLiteMap<
          Proto> internalValueMap =
            new com.google.protobuf.Internal.EnumLiteMap<Proto>() {
              public Proto findValueByNumber(int number) {
                return Proto.forNumber(number);
              }
            };

      public final com.google.protobuf.Descriptors.EnumValueDescriptor
          getValueDescriptor() {
        return getDescriptor().getValues().get(ordinal());
      }
      public final com.google.protobuf.Descriptors.EnumDescriptor
          getDescriptorForType() {
        return getDescriptor();
      }
      public static final com.google.protobuf.Descriptors.EnumDescriptor
          getDescriptor() {
        return pb.xiugou.x1.protobuf.battle.Battle.BattleSyncKillMonsterRequest.getDescriptor().getEnumTypes().get(0);
      }

      private static final Proto[] VALUES = values();

      public static Proto valueOf(
          com.google.protobuf.Descriptors.EnumValueDescriptor desc) {
        if (desc.getType() != getDescriptor()) {
          throw new java.lang.IllegalArgumentException(
            "EnumValueDescriptor is not for this type.");
        }
        if (desc.getIndex() == -1) {
          return UNRECOGNIZED;
        }
        return VALUES[desc.getIndex()];
      }

      private final int value;

      private Proto(int value) {
        this.value = value;
      }

      // @@protoc_insertion_point(enum_scope:pb.BattleSyncKillMonsterRequest.Proto)
    }

    public static final int KILL_MONSTERS_FIELD_NUMBER = 1;
    private java.util.List<pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbKeyV> killMonsters_;
    /**
     * <pre>
     *被杀死的怪物，key怪物的配置ID，value是杀掉的数量
     * </pre>
     *
     * <code>repeated .pb.PbKeyV kill_monsters = 1;</code>
     */
    public java.util.List<pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbKeyV> getKillMonstersList() {
      return killMonsters_;
    }
    /**
     * <pre>
     *被杀死的怪物，key怪物的配置ID，value是杀掉的数量
     * </pre>
     *
     * <code>repeated .pb.PbKeyV kill_monsters = 1;</code>
     */
    public java.util.List<? extends pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbKeyVOrBuilder> 
        getKillMonstersOrBuilderList() {
      return killMonsters_;
    }
    /**
     * <pre>
     *被杀死的怪物，key怪物的配置ID，value是杀掉的数量
     * </pre>
     *
     * <code>repeated .pb.PbKeyV kill_monsters = 1;</code>
     */
    public int getKillMonstersCount() {
      return killMonsters_.size();
    }
    /**
     * <pre>
     *被杀死的怪物，key怪物的配置ID，value是杀掉的数量
     * </pre>
     *
     * <code>repeated .pb.PbKeyV kill_monsters = 1;</code>
     */
    public pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbKeyV getKillMonsters(int index) {
      return killMonsters_.get(index);
    }
    /**
     * <pre>
     *被杀死的怪物，key怪物的配置ID，value是杀掉的数量
     * </pre>
     *
     * <code>repeated .pb.PbKeyV kill_monsters = 1;</code>
     */
    public pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbKeyVOrBuilder getKillMonstersOrBuilder(
        int index) {
      return killMonsters_.get(index);
    }

    private byte memoizedIsInitialized = -1;
    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      for (int i = 0; i < killMonsters_.size(); i++) {
        output.writeMessage(1, killMonsters_.get(i));
      }
      unknownFields.writeTo(output);
    }

    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      for (int i = 0; i < killMonsters_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(1, killMonsters_.get(i));
      }
      size += unknownFields.getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof pb.xiugou.x1.protobuf.battle.Battle.BattleSyncKillMonsterRequest)) {
        return super.equals(obj);
      }
      pb.xiugou.x1.protobuf.battle.Battle.BattleSyncKillMonsterRequest other = (pb.xiugou.x1.protobuf.battle.Battle.BattleSyncKillMonsterRequest) obj;

      if (!getKillMonstersList()
          .equals(other.getKillMonstersList())) return false;
      if (!unknownFields.equals(other.unknownFields)) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      if (getKillMonstersCount() > 0) {
        hash = (37 * hash) + KILL_MONSTERS_FIELD_NUMBER;
        hash = (53 * hash) + getKillMonstersList().hashCode();
      }
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static pb.xiugou.x1.protobuf.battle.Battle.BattleSyncKillMonsterRequest parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static pb.xiugou.x1.protobuf.battle.Battle.BattleSyncKillMonsterRequest parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static pb.xiugou.x1.protobuf.battle.Battle.BattleSyncKillMonsterRequest parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static pb.xiugou.x1.protobuf.battle.Battle.BattleSyncKillMonsterRequest parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static pb.xiugou.x1.protobuf.battle.Battle.BattleSyncKillMonsterRequest parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static pb.xiugou.x1.protobuf.battle.Battle.BattleSyncKillMonsterRequest parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static pb.xiugou.x1.protobuf.battle.Battle.BattleSyncKillMonsterRequest parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static pb.xiugou.x1.protobuf.battle.Battle.BattleSyncKillMonsterRequest parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }
    public static pb.xiugou.x1.protobuf.battle.Battle.BattleSyncKillMonsterRequest parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static pb.xiugou.x1.protobuf.battle.Battle.BattleSyncKillMonsterRequest parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static pb.xiugou.x1.protobuf.battle.Battle.BattleSyncKillMonsterRequest parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static pb.xiugou.x1.protobuf.battle.Battle.BattleSyncKillMonsterRequest parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(pb.xiugou.x1.protobuf.battle.Battle.BattleSyncKillMonsterRequest prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * <pre>
     *离线重连后同步杀死怪物
     * </pre>
     *
     * Protobuf type {@code pb.BattleSyncKillMonsterRequest}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:pb.BattleSyncKillMonsterRequest)
        pb.xiugou.x1.protobuf.battle.Battle.BattleSyncKillMonsterRequestOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return pb.xiugou.x1.protobuf.battle.Battle.internal_static_pb_BattleSyncKillMonsterRequest_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return pb.xiugou.x1.protobuf.battle.Battle.internal_static_pb_BattleSyncKillMonsterRequest_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                pb.xiugou.x1.protobuf.battle.Battle.BattleSyncKillMonsterRequest.class, pb.xiugou.x1.protobuf.battle.Battle.BattleSyncKillMonsterRequest.Builder.class);
      }

      // Construct using pb.xiugou.x1.protobuf.battle.Battle.BattleSyncKillMonsterRequest.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
          getKillMonstersFieldBuilder();
        }
      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        if (killMonstersBuilder_ == null) {
          killMonsters_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000001);
        } else {
          killMonstersBuilder_.clear();
        }
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return pb.xiugou.x1.protobuf.battle.Battle.internal_static_pb_BattleSyncKillMonsterRequest_descriptor;
      }

      @java.lang.Override
      public pb.xiugou.x1.protobuf.battle.Battle.BattleSyncKillMonsterRequest getDefaultInstanceForType() {
        return pb.xiugou.x1.protobuf.battle.Battle.BattleSyncKillMonsterRequest.getDefaultInstance();
      }

      @java.lang.Override
      public pb.xiugou.x1.protobuf.battle.Battle.BattleSyncKillMonsterRequest build() {
        pb.xiugou.x1.protobuf.battle.Battle.BattleSyncKillMonsterRequest result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public pb.xiugou.x1.protobuf.battle.Battle.BattleSyncKillMonsterRequest buildPartial() {
        pb.xiugou.x1.protobuf.battle.Battle.BattleSyncKillMonsterRequest result = new pb.xiugou.x1.protobuf.battle.Battle.BattleSyncKillMonsterRequest(this);
        int from_bitField0_ = bitField0_;
        if (killMonstersBuilder_ == null) {
          if (((bitField0_ & 0x00000001) != 0)) {
            killMonsters_ = java.util.Collections.unmodifiableList(killMonsters_);
            bitField0_ = (bitField0_ & ~0x00000001);
          }
          result.killMonsters_ = killMonsters_;
        } else {
          result.killMonsters_ = killMonstersBuilder_.build();
        }
        onBuilt();
        return result;
      }

      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }
      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.setField(field, value);
      }
      @java.lang.Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @java.lang.Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }
      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof pb.xiugou.x1.protobuf.battle.Battle.BattleSyncKillMonsterRequest) {
          return mergeFrom((pb.xiugou.x1.protobuf.battle.Battle.BattleSyncKillMonsterRequest)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(pb.xiugou.x1.protobuf.battle.Battle.BattleSyncKillMonsterRequest other) {
        if (other == pb.xiugou.x1.protobuf.battle.Battle.BattleSyncKillMonsterRequest.getDefaultInstance()) return this;
        if (killMonstersBuilder_ == null) {
          if (!other.killMonsters_.isEmpty()) {
            if (killMonsters_.isEmpty()) {
              killMonsters_ = other.killMonsters_;
              bitField0_ = (bitField0_ & ~0x00000001);
            } else {
              ensureKillMonstersIsMutable();
              killMonsters_.addAll(other.killMonsters_);
            }
            onChanged();
          }
        } else {
          if (!other.killMonsters_.isEmpty()) {
            if (killMonstersBuilder_.isEmpty()) {
              killMonstersBuilder_.dispose();
              killMonstersBuilder_ = null;
              killMonsters_ = other.killMonsters_;
              bitField0_ = (bitField0_ & ~0x00000001);
              killMonstersBuilder_ = 
                com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
                   getKillMonstersFieldBuilder() : null;
            } else {
              killMonstersBuilder_.addAllMessages(other.killMonsters_);
            }
          }
        }
        this.mergeUnknownFields(other.unknownFields);
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        pb.xiugou.x1.protobuf.battle.Battle.BattleSyncKillMonsterRequest parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (pb.xiugou.x1.protobuf.battle.Battle.BattleSyncKillMonsterRequest) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      private java.util.List<pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbKeyV> killMonsters_ =
        java.util.Collections.emptyList();
      private void ensureKillMonstersIsMutable() {
        if (!((bitField0_ & 0x00000001) != 0)) {
          killMonsters_ = new java.util.ArrayList<pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbKeyV>(killMonsters_);
          bitField0_ |= 0x00000001;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilderV3<
          pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbKeyV, pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbKeyV.Builder, pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbKeyVOrBuilder> killMonstersBuilder_;

      /**
       * <pre>
       *被杀死的怪物，key怪物的配置ID，value是杀掉的数量
       * </pre>
       *
       * <code>repeated .pb.PbKeyV kill_monsters = 1;</code>
       */
      public java.util.List<pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbKeyV> getKillMonstersList() {
        if (killMonstersBuilder_ == null) {
          return java.util.Collections.unmodifiableList(killMonsters_);
        } else {
          return killMonstersBuilder_.getMessageList();
        }
      }
      /**
       * <pre>
       *被杀死的怪物，key怪物的配置ID，value是杀掉的数量
       * </pre>
       *
       * <code>repeated .pb.PbKeyV kill_monsters = 1;</code>
       */
      public int getKillMonstersCount() {
        if (killMonstersBuilder_ == null) {
          return killMonsters_.size();
        } else {
          return killMonstersBuilder_.getCount();
        }
      }
      /**
       * <pre>
       *被杀死的怪物，key怪物的配置ID，value是杀掉的数量
       * </pre>
       *
       * <code>repeated .pb.PbKeyV kill_monsters = 1;</code>
       */
      public pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbKeyV getKillMonsters(int index) {
        if (killMonstersBuilder_ == null) {
          return killMonsters_.get(index);
        } else {
          return killMonstersBuilder_.getMessage(index);
        }
      }
      /**
       * <pre>
       *被杀死的怪物，key怪物的配置ID，value是杀掉的数量
       * </pre>
       *
       * <code>repeated .pb.PbKeyV kill_monsters = 1;</code>
       */
      public Builder setKillMonsters(
          int index, pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbKeyV value) {
        if (killMonstersBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureKillMonstersIsMutable();
          killMonsters_.set(index, value);
          onChanged();
        } else {
          killMonstersBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * <pre>
       *被杀死的怪物，key怪物的配置ID，value是杀掉的数量
       * </pre>
       *
       * <code>repeated .pb.PbKeyV kill_monsters = 1;</code>
       */
      public Builder setKillMonsters(
          int index, pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbKeyV.Builder builderForValue) {
        if (killMonstersBuilder_ == null) {
          ensureKillMonstersIsMutable();
          killMonsters_.set(index, builderForValue.build());
          onChanged();
        } else {
          killMonstersBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       *被杀死的怪物，key怪物的配置ID，value是杀掉的数量
       * </pre>
       *
       * <code>repeated .pb.PbKeyV kill_monsters = 1;</code>
       */
      public Builder addKillMonsters(pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbKeyV value) {
        if (killMonstersBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureKillMonstersIsMutable();
          killMonsters_.add(value);
          onChanged();
        } else {
          killMonstersBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * <pre>
       *被杀死的怪物，key怪物的配置ID，value是杀掉的数量
       * </pre>
       *
       * <code>repeated .pb.PbKeyV kill_monsters = 1;</code>
       */
      public Builder addKillMonsters(
          int index, pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbKeyV value) {
        if (killMonstersBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureKillMonstersIsMutable();
          killMonsters_.add(index, value);
          onChanged();
        } else {
          killMonstersBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * <pre>
       *被杀死的怪物，key怪物的配置ID，value是杀掉的数量
       * </pre>
       *
       * <code>repeated .pb.PbKeyV kill_monsters = 1;</code>
       */
      public Builder addKillMonsters(
          pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbKeyV.Builder builderForValue) {
        if (killMonstersBuilder_ == null) {
          ensureKillMonstersIsMutable();
          killMonsters_.add(builderForValue.build());
          onChanged();
        } else {
          killMonstersBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       *被杀死的怪物，key怪物的配置ID，value是杀掉的数量
       * </pre>
       *
       * <code>repeated .pb.PbKeyV kill_monsters = 1;</code>
       */
      public Builder addKillMonsters(
          int index, pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbKeyV.Builder builderForValue) {
        if (killMonstersBuilder_ == null) {
          ensureKillMonstersIsMutable();
          killMonsters_.add(index, builderForValue.build());
          onChanged();
        } else {
          killMonstersBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       *被杀死的怪物，key怪物的配置ID，value是杀掉的数量
       * </pre>
       *
       * <code>repeated .pb.PbKeyV kill_monsters = 1;</code>
       */
      public Builder addAllKillMonsters(
          java.lang.Iterable<? extends pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbKeyV> values) {
        if (killMonstersBuilder_ == null) {
          ensureKillMonstersIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, killMonsters_);
          onChanged();
        } else {
          killMonstersBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * <pre>
       *被杀死的怪物，key怪物的配置ID，value是杀掉的数量
       * </pre>
       *
       * <code>repeated .pb.PbKeyV kill_monsters = 1;</code>
       */
      public Builder clearKillMonsters() {
        if (killMonstersBuilder_ == null) {
          killMonsters_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000001);
          onChanged();
        } else {
          killMonstersBuilder_.clear();
        }
        return this;
      }
      /**
       * <pre>
       *被杀死的怪物，key怪物的配置ID，value是杀掉的数量
       * </pre>
       *
       * <code>repeated .pb.PbKeyV kill_monsters = 1;</code>
       */
      public Builder removeKillMonsters(int index) {
        if (killMonstersBuilder_ == null) {
          ensureKillMonstersIsMutable();
          killMonsters_.remove(index);
          onChanged();
        } else {
          killMonstersBuilder_.remove(index);
        }
        return this;
      }
      /**
       * <pre>
       *被杀死的怪物，key怪物的配置ID，value是杀掉的数量
       * </pre>
       *
       * <code>repeated .pb.PbKeyV kill_monsters = 1;</code>
       */
      public pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbKeyV.Builder getKillMonstersBuilder(
          int index) {
        return getKillMonstersFieldBuilder().getBuilder(index);
      }
      /**
       * <pre>
       *被杀死的怪物，key怪物的配置ID，value是杀掉的数量
       * </pre>
       *
       * <code>repeated .pb.PbKeyV kill_monsters = 1;</code>
       */
      public pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbKeyVOrBuilder getKillMonstersOrBuilder(
          int index) {
        if (killMonstersBuilder_ == null) {
          return killMonsters_.get(index);  } else {
          return killMonstersBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * <pre>
       *被杀死的怪物，key怪物的配置ID，value是杀掉的数量
       * </pre>
       *
       * <code>repeated .pb.PbKeyV kill_monsters = 1;</code>
       */
      public java.util.List<? extends pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbKeyVOrBuilder> 
           getKillMonstersOrBuilderList() {
        if (killMonstersBuilder_ != null) {
          return killMonstersBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(killMonsters_);
        }
      }
      /**
       * <pre>
       *被杀死的怪物，key怪物的配置ID，value是杀掉的数量
       * </pre>
       *
       * <code>repeated .pb.PbKeyV kill_monsters = 1;</code>
       */
      public pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbKeyV.Builder addKillMonstersBuilder() {
        return getKillMonstersFieldBuilder().addBuilder(
            pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbKeyV.getDefaultInstance());
      }
      /**
       * <pre>
       *被杀死的怪物，key怪物的配置ID，value是杀掉的数量
       * </pre>
       *
       * <code>repeated .pb.PbKeyV kill_monsters = 1;</code>
       */
      public pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbKeyV.Builder addKillMonstersBuilder(
          int index) {
        return getKillMonstersFieldBuilder().addBuilder(
            index, pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbKeyV.getDefaultInstance());
      }
      /**
       * <pre>
       *被杀死的怪物，key怪物的配置ID，value是杀掉的数量
       * </pre>
       *
       * <code>repeated .pb.PbKeyV kill_monsters = 1;</code>
       */
      public java.util.List<pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbKeyV.Builder> 
           getKillMonstersBuilderList() {
        return getKillMonstersFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilderV3<
          pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbKeyV, pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbKeyV.Builder, pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbKeyVOrBuilder> 
          getKillMonstersFieldBuilder() {
        if (killMonstersBuilder_ == null) {
          killMonstersBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
              pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbKeyV, pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbKeyV.Builder, pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbKeyVOrBuilder>(
                  killMonsters_,
                  ((bitField0_ & 0x00000001) != 0),
                  getParentForChildren(),
                  isClean());
          killMonsters_ = null;
        }
        return killMonstersBuilder_;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

      @java.lang.Override
      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.mergeUnknownFields(unknownFields);
      }


      // @@protoc_insertion_point(builder_scope:pb.BattleSyncKillMonsterRequest)
    }

    // @@protoc_insertion_point(class_scope:pb.BattleSyncKillMonsterRequest)
    private static final pb.xiugou.x1.protobuf.battle.Battle.BattleSyncKillMonsterRequest DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new pb.xiugou.x1.protobuf.battle.Battle.BattleSyncKillMonsterRequest();
    }

    public static pb.xiugou.x1.protobuf.battle.Battle.BattleSyncKillMonsterRequest getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<BattleSyncKillMonsterRequest>
        PARSER = new com.google.protobuf.AbstractParser<BattleSyncKillMonsterRequest>() {
      @java.lang.Override
      public BattleSyncKillMonsterRequest parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return new BattleSyncKillMonsterRequest(input, extensionRegistry);
      }
    };

    public static com.google.protobuf.Parser<BattleSyncKillMonsterRequest> parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser<BattleSyncKillMonsterRequest> getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public pb.xiugou.x1.protobuf.battle.Battle.BattleSyncKillMonsterRequest getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface BattleSyncKillMonsterResponseOrBuilder extends
      // @@protoc_insertion_point(interface_extends:pb.BattleSyncKillMonsterResponse)
      com.google.protobuf.MessageOrBuilder {
  }
  /**
   * Protobuf type {@code pb.BattleSyncKillMonsterResponse}
   */
  public  static final class BattleSyncKillMonsterResponse extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:pb.BattleSyncKillMonsterResponse)
      BattleSyncKillMonsterResponseOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use BattleSyncKillMonsterResponse.newBuilder() to construct.
    private BattleSyncKillMonsterResponse(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private BattleSyncKillMonsterResponse() {
    }

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new BattleSyncKillMonsterResponse();
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private BattleSyncKillMonsterResponse(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      if (extensionRegistry == null) {
        throw new java.lang.NullPointerException();
      }
      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder();
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            default: {
              if (!parseUnknownField(
                  input, unknownFields, extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e).setUnfinishedMessage(this);
      } finally {
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return pb.xiugou.x1.protobuf.battle.Battle.internal_static_pb_BattleSyncKillMonsterResponse_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return pb.xiugou.x1.protobuf.battle.Battle.internal_static_pb_BattleSyncKillMonsterResponse_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              pb.xiugou.x1.protobuf.battle.Battle.BattleSyncKillMonsterResponse.class, pb.xiugou.x1.protobuf.battle.Battle.BattleSyncKillMonsterResponse.Builder.class);
    }

    /**
     * Protobuf enum {@code pb.BattleSyncKillMonsterResponse.Proto}
     */
    public enum Proto
        implements com.google.protobuf.ProtocolMessageEnum {
      /**
       * <code>UNKNOWN = 0;</code>
       */
      UNKNOWN(0),
      /**
       * <code>ID = 300009;</code>
       */
      ID(300009),
      UNRECOGNIZED(-1),
      ;

      /**
       * <code>UNKNOWN = 0;</code>
       */
      public static final int UNKNOWN_VALUE = 0;
      /**
       * <code>ID = 300009;</code>
       */
      public static final int ID_VALUE = 300009;


      public final int getNumber() {
        if (this == UNRECOGNIZED) {
          throw new java.lang.IllegalArgumentException(
              "Can't get the number of an unknown enum value.");
        }
        return value;
      }

      /**
       * @param value The numeric wire value of the corresponding enum entry.
       * @return The enum associated with the given numeric wire value.
       * @deprecated Use {@link #forNumber(int)} instead.
       */
      @java.lang.Deprecated
      public static Proto valueOf(int value) {
        return forNumber(value);
      }

      /**
       * @param value The numeric wire value of the corresponding enum entry.
       * @return The enum associated with the given numeric wire value.
       */
      public static Proto forNumber(int value) {
        switch (value) {
          case 0: return UNKNOWN;
          case 300009: return ID;
          default: return null;
        }
      }

      public static com.google.protobuf.Internal.EnumLiteMap<Proto>
          internalGetValueMap() {
        return internalValueMap;
      }
      private static final com.google.protobuf.Internal.EnumLiteMap<
          Proto> internalValueMap =
            new com.google.protobuf.Internal.EnumLiteMap<Proto>() {
              public Proto findValueByNumber(int number) {
                return Proto.forNumber(number);
              }
            };

      public final com.google.protobuf.Descriptors.EnumValueDescriptor
          getValueDescriptor() {
        return getDescriptor().getValues().get(ordinal());
      }
      public final com.google.protobuf.Descriptors.EnumDescriptor
          getDescriptorForType() {
        return getDescriptor();
      }
      public static final com.google.protobuf.Descriptors.EnumDescriptor
          getDescriptor() {
        return pb.xiugou.x1.protobuf.battle.Battle.BattleSyncKillMonsterResponse.getDescriptor().getEnumTypes().get(0);
      }

      private static final Proto[] VALUES = values();

      public static Proto valueOf(
          com.google.protobuf.Descriptors.EnumValueDescriptor desc) {
        if (desc.getType() != getDescriptor()) {
          throw new java.lang.IllegalArgumentException(
            "EnumValueDescriptor is not for this type.");
        }
        if (desc.getIndex() == -1) {
          return UNRECOGNIZED;
        }
        return VALUES[desc.getIndex()];
      }

      private final int value;

      private Proto(int value) {
        this.value = value;
      }

      // @@protoc_insertion_point(enum_scope:pb.BattleSyncKillMonsterResponse.Proto)
    }

    private byte memoizedIsInitialized = -1;
    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      unknownFields.writeTo(output);
    }

    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      size += unknownFields.getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof pb.xiugou.x1.protobuf.battle.Battle.BattleSyncKillMonsterResponse)) {
        return super.equals(obj);
      }
      pb.xiugou.x1.protobuf.battle.Battle.BattleSyncKillMonsterResponse other = (pb.xiugou.x1.protobuf.battle.Battle.BattleSyncKillMonsterResponse) obj;

      if (!unknownFields.equals(other.unknownFields)) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static pb.xiugou.x1.protobuf.battle.Battle.BattleSyncKillMonsterResponse parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static pb.xiugou.x1.protobuf.battle.Battle.BattleSyncKillMonsterResponse parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static pb.xiugou.x1.protobuf.battle.Battle.BattleSyncKillMonsterResponse parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static pb.xiugou.x1.protobuf.battle.Battle.BattleSyncKillMonsterResponse parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static pb.xiugou.x1.protobuf.battle.Battle.BattleSyncKillMonsterResponse parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static pb.xiugou.x1.protobuf.battle.Battle.BattleSyncKillMonsterResponse parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static pb.xiugou.x1.protobuf.battle.Battle.BattleSyncKillMonsterResponse parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static pb.xiugou.x1.protobuf.battle.Battle.BattleSyncKillMonsterResponse parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }
    public static pb.xiugou.x1.protobuf.battle.Battle.BattleSyncKillMonsterResponse parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static pb.xiugou.x1.protobuf.battle.Battle.BattleSyncKillMonsterResponse parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static pb.xiugou.x1.protobuf.battle.Battle.BattleSyncKillMonsterResponse parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static pb.xiugou.x1.protobuf.battle.Battle.BattleSyncKillMonsterResponse parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(pb.xiugou.x1.protobuf.battle.Battle.BattleSyncKillMonsterResponse prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code pb.BattleSyncKillMonsterResponse}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:pb.BattleSyncKillMonsterResponse)
        pb.xiugou.x1.protobuf.battle.Battle.BattleSyncKillMonsterResponseOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return pb.xiugou.x1.protobuf.battle.Battle.internal_static_pb_BattleSyncKillMonsterResponse_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return pb.xiugou.x1.protobuf.battle.Battle.internal_static_pb_BattleSyncKillMonsterResponse_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                pb.xiugou.x1.protobuf.battle.Battle.BattleSyncKillMonsterResponse.class, pb.xiugou.x1.protobuf.battle.Battle.BattleSyncKillMonsterResponse.Builder.class);
      }

      // Construct using pb.xiugou.x1.protobuf.battle.Battle.BattleSyncKillMonsterResponse.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
        }
      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return pb.xiugou.x1.protobuf.battle.Battle.internal_static_pb_BattleSyncKillMonsterResponse_descriptor;
      }

      @java.lang.Override
      public pb.xiugou.x1.protobuf.battle.Battle.BattleSyncKillMonsterResponse getDefaultInstanceForType() {
        return pb.xiugou.x1.protobuf.battle.Battle.BattleSyncKillMonsterResponse.getDefaultInstance();
      }

      @java.lang.Override
      public pb.xiugou.x1.protobuf.battle.Battle.BattleSyncKillMonsterResponse build() {
        pb.xiugou.x1.protobuf.battle.Battle.BattleSyncKillMonsterResponse result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public pb.xiugou.x1.protobuf.battle.Battle.BattleSyncKillMonsterResponse buildPartial() {
        pb.xiugou.x1.protobuf.battle.Battle.BattleSyncKillMonsterResponse result = new pb.xiugou.x1.protobuf.battle.Battle.BattleSyncKillMonsterResponse(this);
        onBuilt();
        return result;
      }

      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }
      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.setField(field, value);
      }
      @java.lang.Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @java.lang.Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }
      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof pb.xiugou.x1.protobuf.battle.Battle.BattleSyncKillMonsterResponse) {
          return mergeFrom((pb.xiugou.x1.protobuf.battle.Battle.BattleSyncKillMonsterResponse)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(pb.xiugou.x1.protobuf.battle.Battle.BattleSyncKillMonsterResponse other) {
        if (other == pb.xiugou.x1.protobuf.battle.Battle.BattleSyncKillMonsterResponse.getDefaultInstance()) return this;
        this.mergeUnknownFields(other.unknownFields);
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        pb.xiugou.x1.protobuf.battle.Battle.BattleSyncKillMonsterResponse parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (pb.xiugou.x1.protobuf.battle.Battle.BattleSyncKillMonsterResponse) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

      @java.lang.Override
      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.mergeUnknownFields(unknownFields);
      }


      // @@protoc_insertion_point(builder_scope:pb.BattleSyncKillMonsterResponse)
    }

    // @@protoc_insertion_point(class_scope:pb.BattleSyncKillMonsterResponse)
    private static final pb.xiugou.x1.protobuf.battle.Battle.BattleSyncKillMonsterResponse DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new pb.xiugou.x1.protobuf.battle.Battle.BattleSyncKillMonsterResponse();
    }

    public static pb.xiugou.x1.protobuf.battle.Battle.BattleSyncKillMonsterResponse getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<BattleSyncKillMonsterResponse>
        PARSER = new com.google.protobuf.AbstractParser<BattleSyncKillMonsterResponse>() {
      @java.lang.Override
      public BattleSyncKillMonsterResponse parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return new BattleSyncKillMonsterResponse(input, extensionRegistry);
      }
    };

    public static com.google.protobuf.Parser<BattleSyncKillMonsterResponse> parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser<BattleSyncKillMonsterResponse> getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public pb.xiugou.x1.protobuf.battle.Battle.BattleSyncKillMonsterResponse getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface BattleRebornSpriteRequestOrBuilder extends
      // @@protoc_insertion_point(interface_extends:pb.BattleRebornSpriteRequest)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     *被复活的精灵ID
     * </pre>
     *
     * <code>repeated int32 sprite_ids = 1;</code>
     * @return A list containing the spriteIds.
     */
    java.util.List<java.lang.Integer> getSpriteIdsList();
    /**
     * <pre>
     *被复活的精灵ID
     * </pre>
     *
     * <code>repeated int32 sprite_ids = 1;</code>
     * @return The count of spriteIds.
     */
    int getSpriteIdsCount();
    /**
     * <pre>
     *被复活的精灵ID
     * </pre>
     *
     * <code>repeated int32 sprite_ids = 1;</code>
     * @param index The index of the element to return.
     * @return The spriteIds at the given index.
     */
    int getSpriteIds(int index);
  }
  /**
   * <pre>
   *复活英雄
   * </pre>
   *
   * Protobuf type {@code pb.BattleRebornSpriteRequest}
   */
  public  static final class BattleRebornSpriteRequest extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:pb.BattleRebornSpriteRequest)
      BattleRebornSpriteRequestOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use BattleRebornSpriteRequest.newBuilder() to construct.
    private BattleRebornSpriteRequest(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private BattleRebornSpriteRequest() {
      spriteIds_ = emptyIntList();
    }

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new BattleRebornSpriteRequest();
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private BattleRebornSpriteRequest(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      if (extensionRegistry == null) {
        throw new java.lang.NullPointerException();
      }
      int mutable_bitField0_ = 0;
      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder();
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            case 8: {
              if (!((mutable_bitField0_ & 0x00000001) != 0)) {
                spriteIds_ = newIntList();
                mutable_bitField0_ |= 0x00000001;
              }
              spriteIds_.addInt(input.readInt32());
              break;
            }
            case 10: {
              int length = input.readRawVarint32();
              int limit = input.pushLimit(length);
              if (!((mutable_bitField0_ & 0x00000001) != 0) && input.getBytesUntilLimit() > 0) {
                spriteIds_ = newIntList();
                mutable_bitField0_ |= 0x00000001;
              }
              while (input.getBytesUntilLimit() > 0) {
                spriteIds_.addInt(input.readInt32());
              }
              input.popLimit(limit);
              break;
            }
            default: {
              if (!parseUnknownField(
                  input, unknownFields, extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e).setUnfinishedMessage(this);
      } finally {
        if (((mutable_bitField0_ & 0x00000001) != 0)) {
          spriteIds_.makeImmutable(); // C
        }
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return pb.xiugou.x1.protobuf.battle.Battle.internal_static_pb_BattleRebornSpriteRequest_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return pb.xiugou.x1.protobuf.battle.Battle.internal_static_pb_BattleRebornSpriteRequest_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              pb.xiugou.x1.protobuf.battle.Battle.BattleRebornSpriteRequest.class, pb.xiugou.x1.protobuf.battle.Battle.BattleRebornSpriteRequest.Builder.class);
    }

    /**
     * Protobuf enum {@code pb.BattleRebornSpriteRequest.Proto}
     */
    public enum Proto
        implements com.google.protobuf.ProtocolMessageEnum {
      /**
       * <code>UNKNOWN = 0;</code>
       */
      UNKNOWN(0),
      /**
       * <code>ID = 300011;</code>
       */
      ID(300011),
      UNRECOGNIZED(-1),
      ;

      /**
       * <code>UNKNOWN = 0;</code>
       */
      public static final int UNKNOWN_VALUE = 0;
      /**
       * <code>ID = 300011;</code>
       */
      public static final int ID_VALUE = 300011;


      public final int getNumber() {
        if (this == UNRECOGNIZED) {
          throw new java.lang.IllegalArgumentException(
              "Can't get the number of an unknown enum value.");
        }
        return value;
      }

      /**
       * @param value The numeric wire value of the corresponding enum entry.
       * @return The enum associated with the given numeric wire value.
       * @deprecated Use {@link #forNumber(int)} instead.
       */
      @java.lang.Deprecated
      public static Proto valueOf(int value) {
        return forNumber(value);
      }

      /**
       * @param value The numeric wire value of the corresponding enum entry.
       * @return The enum associated with the given numeric wire value.
       */
      public static Proto forNumber(int value) {
        switch (value) {
          case 0: return UNKNOWN;
          case 300011: return ID;
          default: return null;
        }
      }

      public static com.google.protobuf.Internal.EnumLiteMap<Proto>
          internalGetValueMap() {
        return internalValueMap;
      }
      private static final com.google.protobuf.Internal.EnumLiteMap<
          Proto> internalValueMap =
            new com.google.protobuf.Internal.EnumLiteMap<Proto>() {
              public Proto findValueByNumber(int number) {
                return Proto.forNumber(number);
              }
            };

      public final com.google.protobuf.Descriptors.EnumValueDescriptor
          getValueDescriptor() {
        return getDescriptor().getValues().get(ordinal());
      }
      public final com.google.protobuf.Descriptors.EnumDescriptor
          getDescriptorForType() {
        return getDescriptor();
      }
      public static final com.google.protobuf.Descriptors.EnumDescriptor
          getDescriptor() {
        return pb.xiugou.x1.protobuf.battle.Battle.BattleRebornSpriteRequest.getDescriptor().getEnumTypes().get(0);
      }

      private static final Proto[] VALUES = values();

      public static Proto valueOf(
          com.google.protobuf.Descriptors.EnumValueDescriptor desc) {
        if (desc.getType() != getDescriptor()) {
          throw new java.lang.IllegalArgumentException(
            "EnumValueDescriptor is not for this type.");
        }
        if (desc.getIndex() == -1) {
          return UNRECOGNIZED;
        }
        return VALUES[desc.getIndex()];
      }

      private final int value;

      private Proto(int value) {
        this.value = value;
      }

      // @@protoc_insertion_point(enum_scope:pb.BattleRebornSpriteRequest.Proto)
    }

    public static final int SPRITE_IDS_FIELD_NUMBER = 1;
    private com.google.protobuf.Internal.IntList spriteIds_;
    /**
     * <pre>
     *被复活的精灵ID
     * </pre>
     *
     * <code>repeated int32 sprite_ids = 1;</code>
     * @return A list containing the spriteIds.
     */
    public java.util.List<java.lang.Integer>
        getSpriteIdsList() {
      return spriteIds_;
    }
    /**
     * <pre>
     *被复活的精灵ID
     * </pre>
     *
     * <code>repeated int32 sprite_ids = 1;</code>
     * @return The count of spriteIds.
     */
    public int getSpriteIdsCount() {
      return spriteIds_.size();
    }
    /**
     * <pre>
     *被复活的精灵ID
     * </pre>
     *
     * <code>repeated int32 sprite_ids = 1;</code>
     * @param index The index of the element to return.
     * @return The spriteIds at the given index.
     */
    public int getSpriteIds(int index) {
      return spriteIds_.getInt(index);
    }
    private int spriteIdsMemoizedSerializedSize = -1;

    private byte memoizedIsInitialized = -1;
    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      getSerializedSize();
      if (getSpriteIdsList().size() > 0) {
        output.writeUInt32NoTag(10);
        output.writeUInt32NoTag(spriteIdsMemoizedSerializedSize);
      }
      for (int i = 0; i < spriteIds_.size(); i++) {
        output.writeInt32NoTag(spriteIds_.getInt(i));
      }
      unknownFields.writeTo(output);
    }

    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      {
        int dataSize = 0;
        for (int i = 0; i < spriteIds_.size(); i++) {
          dataSize += com.google.protobuf.CodedOutputStream
            .computeInt32SizeNoTag(spriteIds_.getInt(i));
        }
        size += dataSize;
        if (!getSpriteIdsList().isEmpty()) {
          size += 1;
          size += com.google.protobuf.CodedOutputStream
              .computeInt32SizeNoTag(dataSize);
        }
        spriteIdsMemoizedSerializedSize = dataSize;
      }
      size += unknownFields.getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof pb.xiugou.x1.protobuf.battle.Battle.BattleRebornSpriteRequest)) {
        return super.equals(obj);
      }
      pb.xiugou.x1.protobuf.battle.Battle.BattleRebornSpriteRequest other = (pb.xiugou.x1.protobuf.battle.Battle.BattleRebornSpriteRequest) obj;

      if (!getSpriteIdsList()
          .equals(other.getSpriteIdsList())) return false;
      if (!unknownFields.equals(other.unknownFields)) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      if (getSpriteIdsCount() > 0) {
        hash = (37 * hash) + SPRITE_IDS_FIELD_NUMBER;
        hash = (53 * hash) + getSpriteIdsList().hashCode();
      }
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static pb.xiugou.x1.protobuf.battle.Battle.BattleRebornSpriteRequest parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static pb.xiugou.x1.protobuf.battle.Battle.BattleRebornSpriteRequest parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static pb.xiugou.x1.protobuf.battle.Battle.BattleRebornSpriteRequest parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static pb.xiugou.x1.protobuf.battle.Battle.BattleRebornSpriteRequest parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static pb.xiugou.x1.protobuf.battle.Battle.BattleRebornSpriteRequest parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static pb.xiugou.x1.protobuf.battle.Battle.BattleRebornSpriteRequest parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static pb.xiugou.x1.protobuf.battle.Battle.BattleRebornSpriteRequest parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static pb.xiugou.x1.protobuf.battle.Battle.BattleRebornSpriteRequest parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }
    public static pb.xiugou.x1.protobuf.battle.Battle.BattleRebornSpriteRequest parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static pb.xiugou.x1.protobuf.battle.Battle.BattleRebornSpriteRequest parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static pb.xiugou.x1.protobuf.battle.Battle.BattleRebornSpriteRequest parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static pb.xiugou.x1.protobuf.battle.Battle.BattleRebornSpriteRequest parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(pb.xiugou.x1.protobuf.battle.Battle.BattleRebornSpriteRequest prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * <pre>
     *复活英雄
     * </pre>
     *
     * Protobuf type {@code pb.BattleRebornSpriteRequest}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:pb.BattleRebornSpriteRequest)
        pb.xiugou.x1.protobuf.battle.Battle.BattleRebornSpriteRequestOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return pb.xiugou.x1.protobuf.battle.Battle.internal_static_pb_BattleRebornSpriteRequest_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return pb.xiugou.x1.protobuf.battle.Battle.internal_static_pb_BattleRebornSpriteRequest_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                pb.xiugou.x1.protobuf.battle.Battle.BattleRebornSpriteRequest.class, pb.xiugou.x1.protobuf.battle.Battle.BattleRebornSpriteRequest.Builder.class);
      }

      // Construct using pb.xiugou.x1.protobuf.battle.Battle.BattleRebornSpriteRequest.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
        }
      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        spriteIds_ = emptyIntList();
        bitField0_ = (bitField0_ & ~0x00000001);
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return pb.xiugou.x1.protobuf.battle.Battle.internal_static_pb_BattleRebornSpriteRequest_descriptor;
      }

      @java.lang.Override
      public pb.xiugou.x1.protobuf.battle.Battle.BattleRebornSpriteRequest getDefaultInstanceForType() {
        return pb.xiugou.x1.protobuf.battle.Battle.BattleRebornSpriteRequest.getDefaultInstance();
      }

      @java.lang.Override
      public pb.xiugou.x1.protobuf.battle.Battle.BattleRebornSpriteRequest build() {
        pb.xiugou.x1.protobuf.battle.Battle.BattleRebornSpriteRequest result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public pb.xiugou.x1.protobuf.battle.Battle.BattleRebornSpriteRequest buildPartial() {
        pb.xiugou.x1.protobuf.battle.Battle.BattleRebornSpriteRequest result = new pb.xiugou.x1.protobuf.battle.Battle.BattleRebornSpriteRequest(this);
        int from_bitField0_ = bitField0_;
        if (((bitField0_ & 0x00000001) != 0)) {
          spriteIds_.makeImmutable();
          bitField0_ = (bitField0_ & ~0x00000001);
        }
        result.spriteIds_ = spriteIds_;
        onBuilt();
        return result;
      }

      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }
      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.setField(field, value);
      }
      @java.lang.Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @java.lang.Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }
      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof pb.xiugou.x1.protobuf.battle.Battle.BattleRebornSpriteRequest) {
          return mergeFrom((pb.xiugou.x1.protobuf.battle.Battle.BattleRebornSpriteRequest)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(pb.xiugou.x1.protobuf.battle.Battle.BattleRebornSpriteRequest other) {
        if (other == pb.xiugou.x1.protobuf.battle.Battle.BattleRebornSpriteRequest.getDefaultInstance()) return this;
        if (!other.spriteIds_.isEmpty()) {
          if (spriteIds_.isEmpty()) {
            spriteIds_ = other.spriteIds_;
            bitField0_ = (bitField0_ & ~0x00000001);
          } else {
            ensureSpriteIdsIsMutable();
            spriteIds_.addAll(other.spriteIds_);
          }
          onChanged();
        }
        this.mergeUnknownFields(other.unknownFields);
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        pb.xiugou.x1.protobuf.battle.Battle.BattleRebornSpriteRequest parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (pb.xiugou.x1.protobuf.battle.Battle.BattleRebornSpriteRequest) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      private com.google.protobuf.Internal.IntList spriteIds_ = emptyIntList();
      private void ensureSpriteIdsIsMutable() {
        if (!((bitField0_ & 0x00000001) != 0)) {
          spriteIds_ = mutableCopy(spriteIds_);
          bitField0_ |= 0x00000001;
         }
      }
      /**
       * <pre>
       *被复活的精灵ID
       * </pre>
       *
       * <code>repeated int32 sprite_ids = 1;</code>
       * @return A list containing the spriteIds.
       */
      public java.util.List<java.lang.Integer>
          getSpriteIdsList() {
        return ((bitField0_ & 0x00000001) != 0) ?
                 java.util.Collections.unmodifiableList(spriteIds_) : spriteIds_;
      }
      /**
       * <pre>
       *被复活的精灵ID
       * </pre>
       *
       * <code>repeated int32 sprite_ids = 1;</code>
       * @return The count of spriteIds.
       */
      public int getSpriteIdsCount() {
        return spriteIds_.size();
      }
      /**
       * <pre>
       *被复活的精灵ID
       * </pre>
       *
       * <code>repeated int32 sprite_ids = 1;</code>
       * @param index The index of the element to return.
       * @return The spriteIds at the given index.
       */
      public int getSpriteIds(int index) {
        return spriteIds_.getInt(index);
      }
      /**
       * <pre>
       *被复活的精灵ID
       * </pre>
       *
       * <code>repeated int32 sprite_ids = 1;</code>
       * @param index The index to set the value at.
       * @param value The spriteIds to set.
       * @return This builder for chaining.
       */
      public Builder setSpriteIds(
          int index, int value) {
        ensureSpriteIdsIsMutable();
        spriteIds_.setInt(index, value);
        onChanged();
        return this;
      }
      /**
       * <pre>
       *被复活的精灵ID
       * </pre>
       *
       * <code>repeated int32 sprite_ids = 1;</code>
       * @param value The spriteIds to add.
       * @return This builder for chaining.
       */
      public Builder addSpriteIds(int value) {
        ensureSpriteIdsIsMutable();
        spriteIds_.addInt(value);
        onChanged();
        return this;
      }
      /**
       * <pre>
       *被复活的精灵ID
       * </pre>
       *
       * <code>repeated int32 sprite_ids = 1;</code>
       * @param values The spriteIds to add.
       * @return This builder for chaining.
       */
      public Builder addAllSpriteIds(
          java.lang.Iterable<? extends java.lang.Integer> values) {
        ensureSpriteIdsIsMutable();
        com.google.protobuf.AbstractMessageLite.Builder.addAll(
            values, spriteIds_);
        onChanged();
        return this;
      }
      /**
       * <pre>
       *被复活的精灵ID
       * </pre>
       *
       * <code>repeated int32 sprite_ids = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearSpriteIds() {
        spriteIds_ = emptyIntList();
        bitField0_ = (bitField0_ & ~0x00000001);
        onChanged();
        return this;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

      @java.lang.Override
      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.mergeUnknownFields(unknownFields);
      }


      // @@protoc_insertion_point(builder_scope:pb.BattleRebornSpriteRequest)
    }

    // @@protoc_insertion_point(class_scope:pb.BattleRebornSpriteRequest)
    private static final pb.xiugou.x1.protobuf.battle.Battle.BattleRebornSpriteRequest DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new pb.xiugou.x1.protobuf.battle.Battle.BattleRebornSpriteRequest();
    }

    public static pb.xiugou.x1.protobuf.battle.Battle.BattleRebornSpriteRequest getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<BattleRebornSpriteRequest>
        PARSER = new com.google.protobuf.AbstractParser<BattleRebornSpriteRequest>() {
      @java.lang.Override
      public BattleRebornSpriteRequest parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return new BattleRebornSpriteRequest(input, extensionRegistry);
      }
    };

    public static com.google.protobuf.Parser<BattleRebornSpriteRequest> parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser<BattleRebornSpriteRequest> getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public pb.xiugou.x1.protobuf.battle.Battle.BattleRebornSpriteRequest getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface BattleRebornSpriteResponseOrBuilder extends
      // @@protoc_insertion_point(interface_extends:pb.BattleRebornSpriteResponse)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     *被复活的精灵ID
     * </pre>
     *
     * <code>repeated .pb.PbSprite sprites = 1;</code>
     */
    java.util.List<pb.xiugou.x1.protobuf.battle.Battle.PbSprite> 
        getSpritesList();
    /**
     * <pre>
     *被复活的精灵ID
     * </pre>
     *
     * <code>repeated .pb.PbSprite sprites = 1;</code>
     */
    pb.xiugou.x1.protobuf.battle.Battle.PbSprite getSprites(int index);
    /**
     * <pre>
     *被复活的精灵ID
     * </pre>
     *
     * <code>repeated .pb.PbSprite sprites = 1;</code>
     */
    int getSpritesCount();
    /**
     * <pre>
     *被复活的精灵ID
     * </pre>
     *
     * <code>repeated .pb.PbSprite sprites = 1;</code>
     */
    java.util.List<? extends pb.xiugou.x1.protobuf.battle.Battle.PbSpriteOrBuilder> 
        getSpritesOrBuilderList();
    /**
     * <pre>
     *被复活的精灵ID
     * </pre>
     *
     * <code>repeated .pb.PbSprite sprites = 1;</code>
     */
    pb.xiugou.x1.protobuf.battle.Battle.PbSpriteOrBuilder getSpritesOrBuilder(
        int index);
  }
  /**
   * Protobuf type {@code pb.BattleRebornSpriteResponse}
   */
  public  static final class BattleRebornSpriteResponse extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:pb.BattleRebornSpriteResponse)
      BattleRebornSpriteResponseOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use BattleRebornSpriteResponse.newBuilder() to construct.
    private BattleRebornSpriteResponse(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private BattleRebornSpriteResponse() {
      sprites_ = java.util.Collections.emptyList();
    }

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new BattleRebornSpriteResponse();
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private BattleRebornSpriteResponse(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      if (extensionRegistry == null) {
        throw new java.lang.NullPointerException();
      }
      int mutable_bitField0_ = 0;
      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder();
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            case 10: {
              if (!((mutable_bitField0_ & 0x00000001) != 0)) {
                sprites_ = new java.util.ArrayList<pb.xiugou.x1.protobuf.battle.Battle.PbSprite>();
                mutable_bitField0_ |= 0x00000001;
              }
              sprites_.add(
                  input.readMessage(pb.xiugou.x1.protobuf.battle.Battle.PbSprite.parser(), extensionRegistry));
              break;
            }
            default: {
              if (!parseUnknownField(
                  input, unknownFields, extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e).setUnfinishedMessage(this);
      } finally {
        if (((mutable_bitField0_ & 0x00000001) != 0)) {
          sprites_ = java.util.Collections.unmodifiableList(sprites_);
        }
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return pb.xiugou.x1.protobuf.battle.Battle.internal_static_pb_BattleRebornSpriteResponse_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return pb.xiugou.x1.protobuf.battle.Battle.internal_static_pb_BattleRebornSpriteResponse_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              pb.xiugou.x1.protobuf.battle.Battle.BattleRebornSpriteResponse.class, pb.xiugou.x1.protobuf.battle.Battle.BattleRebornSpriteResponse.Builder.class);
    }

    /**
     * Protobuf enum {@code pb.BattleRebornSpriteResponse.Proto}
     */
    public enum Proto
        implements com.google.protobuf.ProtocolMessageEnum {
      /**
       * <code>UNKNOWN = 0;</code>
       */
      UNKNOWN(0),
      /**
       * <code>ID = 300011;</code>
       */
      ID(300011),
      UNRECOGNIZED(-1),
      ;

      /**
       * <code>UNKNOWN = 0;</code>
       */
      public static final int UNKNOWN_VALUE = 0;
      /**
       * <code>ID = 300011;</code>
       */
      public static final int ID_VALUE = 300011;


      public final int getNumber() {
        if (this == UNRECOGNIZED) {
          throw new java.lang.IllegalArgumentException(
              "Can't get the number of an unknown enum value.");
        }
        return value;
      }

      /**
       * @param value The numeric wire value of the corresponding enum entry.
       * @return The enum associated with the given numeric wire value.
       * @deprecated Use {@link #forNumber(int)} instead.
       */
      @java.lang.Deprecated
      public static Proto valueOf(int value) {
        return forNumber(value);
      }

      /**
       * @param value The numeric wire value of the corresponding enum entry.
       * @return The enum associated with the given numeric wire value.
       */
      public static Proto forNumber(int value) {
        switch (value) {
          case 0: return UNKNOWN;
          case 300011: return ID;
          default: return null;
        }
      }

      public static com.google.protobuf.Internal.EnumLiteMap<Proto>
          internalGetValueMap() {
        return internalValueMap;
      }
      private static final com.google.protobuf.Internal.EnumLiteMap<
          Proto> internalValueMap =
            new com.google.protobuf.Internal.EnumLiteMap<Proto>() {
              public Proto findValueByNumber(int number) {
                return Proto.forNumber(number);
              }
            };

      public final com.google.protobuf.Descriptors.EnumValueDescriptor
          getValueDescriptor() {
        return getDescriptor().getValues().get(ordinal());
      }
      public final com.google.protobuf.Descriptors.EnumDescriptor
          getDescriptorForType() {
        return getDescriptor();
      }
      public static final com.google.protobuf.Descriptors.EnumDescriptor
          getDescriptor() {
        return pb.xiugou.x1.protobuf.battle.Battle.BattleRebornSpriteResponse.getDescriptor().getEnumTypes().get(0);
      }

      private static final Proto[] VALUES = values();

      public static Proto valueOf(
          com.google.protobuf.Descriptors.EnumValueDescriptor desc) {
        if (desc.getType() != getDescriptor()) {
          throw new java.lang.IllegalArgumentException(
            "EnumValueDescriptor is not for this type.");
        }
        if (desc.getIndex() == -1) {
          return UNRECOGNIZED;
        }
        return VALUES[desc.getIndex()];
      }

      private final int value;

      private Proto(int value) {
        this.value = value;
      }

      // @@protoc_insertion_point(enum_scope:pb.BattleRebornSpriteResponse.Proto)
    }

    public static final int SPRITES_FIELD_NUMBER = 1;
    private java.util.List<pb.xiugou.x1.protobuf.battle.Battle.PbSprite> sprites_;
    /**
     * <pre>
     *被复活的精灵ID
     * </pre>
     *
     * <code>repeated .pb.PbSprite sprites = 1;</code>
     */
    public java.util.List<pb.xiugou.x1.protobuf.battle.Battle.PbSprite> getSpritesList() {
      return sprites_;
    }
    /**
     * <pre>
     *被复活的精灵ID
     * </pre>
     *
     * <code>repeated .pb.PbSprite sprites = 1;</code>
     */
    public java.util.List<? extends pb.xiugou.x1.protobuf.battle.Battle.PbSpriteOrBuilder> 
        getSpritesOrBuilderList() {
      return sprites_;
    }
    /**
     * <pre>
     *被复活的精灵ID
     * </pre>
     *
     * <code>repeated .pb.PbSprite sprites = 1;</code>
     */
    public int getSpritesCount() {
      return sprites_.size();
    }
    /**
     * <pre>
     *被复活的精灵ID
     * </pre>
     *
     * <code>repeated .pb.PbSprite sprites = 1;</code>
     */
    public pb.xiugou.x1.protobuf.battle.Battle.PbSprite getSprites(int index) {
      return sprites_.get(index);
    }
    /**
     * <pre>
     *被复活的精灵ID
     * </pre>
     *
     * <code>repeated .pb.PbSprite sprites = 1;</code>
     */
    public pb.xiugou.x1.protobuf.battle.Battle.PbSpriteOrBuilder getSpritesOrBuilder(
        int index) {
      return sprites_.get(index);
    }

    private byte memoizedIsInitialized = -1;
    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      for (int i = 0; i < sprites_.size(); i++) {
        output.writeMessage(1, sprites_.get(i));
      }
      unknownFields.writeTo(output);
    }

    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      for (int i = 0; i < sprites_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(1, sprites_.get(i));
      }
      size += unknownFields.getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof pb.xiugou.x1.protobuf.battle.Battle.BattleRebornSpriteResponse)) {
        return super.equals(obj);
      }
      pb.xiugou.x1.protobuf.battle.Battle.BattleRebornSpriteResponse other = (pb.xiugou.x1.protobuf.battle.Battle.BattleRebornSpriteResponse) obj;

      if (!getSpritesList()
          .equals(other.getSpritesList())) return false;
      if (!unknownFields.equals(other.unknownFields)) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      if (getSpritesCount() > 0) {
        hash = (37 * hash) + SPRITES_FIELD_NUMBER;
        hash = (53 * hash) + getSpritesList().hashCode();
      }
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static pb.xiugou.x1.protobuf.battle.Battle.BattleRebornSpriteResponse parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static pb.xiugou.x1.protobuf.battle.Battle.BattleRebornSpriteResponse parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static pb.xiugou.x1.protobuf.battle.Battle.BattleRebornSpriteResponse parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static pb.xiugou.x1.protobuf.battle.Battle.BattleRebornSpriteResponse parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static pb.xiugou.x1.protobuf.battle.Battle.BattleRebornSpriteResponse parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static pb.xiugou.x1.protobuf.battle.Battle.BattleRebornSpriteResponse parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static pb.xiugou.x1.protobuf.battle.Battle.BattleRebornSpriteResponse parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static pb.xiugou.x1.protobuf.battle.Battle.BattleRebornSpriteResponse parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }
    public static pb.xiugou.x1.protobuf.battle.Battle.BattleRebornSpriteResponse parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static pb.xiugou.x1.protobuf.battle.Battle.BattleRebornSpriteResponse parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static pb.xiugou.x1.protobuf.battle.Battle.BattleRebornSpriteResponse parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static pb.xiugou.x1.protobuf.battle.Battle.BattleRebornSpriteResponse parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(pb.xiugou.x1.protobuf.battle.Battle.BattleRebornSpriteResponse prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code pb.BattleRebornSpriteResponse}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:pb.BattleRebornSpriteResponse)
        pb.xiugou.x1.protobuf.battle.Battle.BattleRebornSpriteResponseOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return pb.xiugou.x1.protobuf.battle.Battle.internal_static_pb_BattleRebornSpriteResponse_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return pb.xiugou.x1.protobuf.battle.Battle.internal_static_pb_BattleRebornSpriteResponse_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                pb.xiugou.x1.protobuf.battle.Battle.BattleRebornSpriteResponse.class, pb.xiugou.x1.protobuf.battle.Battle.BattleRebornSpriteResponse.Builder.class);
      }

      // Construct using pb.xiugou.x1.protobuf.battle.Battle.BattleRebornSpriteResponse.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
          getSpritesFieldBuilder();
        }
      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        if (spritesBuilder_ == null) {
          sprites_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000001);
        } else {
          spritesBuilder_.clear();
        }
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return pb.xiugou.x1.protobuf.battle.Battle.internal_static_pb_BattleRebornSpriteResponse_descriptor;
      }

      @java.lang.Override
      public pb.xiugou.x1.protobuf.battle.Battle.BattleRebornSpriteResponse getDefaultInstanceForType() {
        return pb.xiugou.x1.protobuf.battle.Battle.BattleRebornSpriteResponse.getDefaultInstance();
      }

      @java.lang.Override
      public pb.xiugou.x1.protobuf.battle.Battle.BattleRebornSpriteResponse build() {
        pb.xiugou.x1.protobuf.battle.Battle.BattleRebornSpriteResponse result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public pb.xiugou.x1.protobuf.battle.Battle.BattleRebornSpriteResponse buildPartial() {
        pb.xiugou.x1.protobuf.battle.Battle.BattleRebornSpriteResponse result = new pb.xiugou.x1.protobuf.battle.Battle.BattleRebornSpriteResponse(this);
        int from_bitField0_ = bitField0_;
        if (spritesBuilder_ == null) {
          if (((bitField0_ & 0x00000001) != 0)) {
            sprites_ = java.util.Collections.unmodifiableList(sprites_);
            bitField0_ = (bitField0_ & ~0x00000001);
          }
          result.sprites_ = sprites_;
        } else {
          result.sprites_ = spritesBuilder_.build();
        }
        onBuilt();
        return result;
      }

      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }
      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.setField(field, value);
      }
      @java.lang.Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @java.lang.Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }
      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof pb.xiugou.x1.protobuf.battle.Battle.BattleRebornSpriteResponse) {
          return mergeFrom((pb.xiugou.x1.protobuf.battle.Battle.BattleRebornSpriteResponse)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(pb.xiugou.x1.protobuf.battle.Battle.BattleRebornSpriteResponse other) {
        if (other == pb.xiugou.x1.protobuf.battle.Battle.BattleRebornSpriteResponse.getDefaultInstance()) return this;
        if (spritesBuilder_ == null) {
          if (!other.sprites_.isEmpty()) {
            if (sprites_.isEmpty()) {
              sprites_ = other.sprites_;
              bitField0_ = (bitField0_ & ~0x00000001);
            } else {
              ensureSpritesIsMutable();
              sprites_.addAll(other.sprites_);
            }
            onChanged();
          }
        } else {
          if (!other.sprites_.isEmpty()) {
            if (spritesBuilder_.isEmpty()) {
              spritesBuilder_.dispose();
              spritesBuilder_ = null;
              sprites_ = other.sprites_;
              bitField0_ = (bitField0_ & ~0x00000001);
              spritesBuilder_ = 
                com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
                   getSpritesFieldBuilder() : null;
            } else {
              spritesBuilder_.addAllMessages(other.sprites_);
            }
          }
        }
        this.mergeUnknownFields(other.unknownFields);
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        pb.xiugou.x1.protobuf.battle.Battle.BattleRebornSpriteResponse parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (pb.xiugou.x1.protobuf.battle.Battle.BattleRebornSpriteResponse) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      private java.util.List<pb.xiugou.x1.protobuf.battle.Battle.PbSprite> sprites_ =
        java.util.Collections.emptyList();
      private void ensureSpritesIsMutable() {
        if (!((bitField0_ & 0x00000001) != 0)) {
          sprites_ = new java.util.ArrayList<pb.xiugou.x1.protobuf.battle.Battle.PbSprite>(sprites_);
          bitField0_ |= 0x00000001;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilderV3<
          pb.xiugou.x1.protobuf.battle.Battle.PbSprite, pb.xiugou.x1.protobuf.battle.Battle.PbSprite.Builder, pb.xiugou.x1.protobuf.battle.Battle.PbSpriteOrBuilder> spritesBuilder_;

      /**
       * <pre>
       *被复活的精灵ID
       * </pre>
       *
       * <code>repeated .pb.PbSprite sprites = 1;</code>
       */
      public java.util.List<pb.xiugou.x1.protobuf.battle.Battle.PbSprite> getSpritesList() {
        if (spritesBuilder_ == null) {
          return java.util.Collections.unmodifiableList(sprites_);
        } else {
          return spritesBuilder_.getMessageList();
        }
      }
      /**
       * <pre>
       *被复活的精灵ID
       * </pre>
       *
       * <code>repeated .pb.PbSprite sprites = 1;</code>
       */
      public int getSpritesCount() {
        if (spritesBuilder_ == null) {
          return sprites_.size();
        } else {
          return spritesBuilder_.getCount();
        }
      }
      /**
       * <pre>
       *被复活的精灵ID
       * </pre>
       *
       * <code>repeated .pb.PbSprite sprites = 1;</code>
       */
      public pb.xiugou.x1.protobuf.battle.Battle.PbSprite getSprites(int index) {
        if (spritesBuilder_ == null) {
          return sprites_.get(index);
        } else {
          return spritesBuilder_.getMessage(index);
        }
      }
      /**
       * <pre>
       *被复活的精灵ID
       * </pre>
       *
       * <code>repeated .pb.PbSprite sprites = 1;</code>
       */
      public Builder setSprites(
          int index, pb.xiugou.x1.protobuf.battle.Battle.PbSprite value) {
        if (spritesBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureSpritesIsMutable();
          sprites_.set(index, value);
          onChanged();
        } else {
          spritesBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * <pre>
       *被复活的精灵ID
       * </pre>
       *
       * <code>repeated .pb.PbSprite sprites = 1;</code>
       */
      public Builder setSprites(
          int index, pb.xiugou.x1.protobuf.battle.Battle.PbSprite.Builder builderForValue) {
        if (spritesBuilder_ == null) {
          ensureSpritesIsMutable();
          sprites_.set(index, builderForValue.build());
          onChanged();
        } else {
          spritesBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       *被复活的精灵ID
       * </pre>
       *
       * <code>repeated .pb.PbSprite sprites = 1;</code>
       */
      public Builder addSprites(pb.xiugou.x1.protobuf.battle.Battle.PbSprite value) {
        if (spritesBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureSpritesIsMutable();
          sprites_.add(value);
          onChanged();
        } else {
          spritesBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * <pre>
       *被复活的精灵ID
       * </pre>
       *
       * <code>repeated .pb.PbSprite sprites = 1;</code>
       */
      public Builder addSprites(
          int index, pb.xiugou.x1.protobuf.battle.Battle.PbSprite value) {
        if (spritesBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureSpritesIsMutable();
          sprites_.add(index, value);
          onChanged();
        } else {
          spritesBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * <pre>
       *被复活的精灵ID
       * </pre>
       *
       * <code>repeated .pb.PbSprite sprites = 1;</code>
       */
      public Builder addSprites(
          pb.xiugou.x1.protobuf.battle.Battle.PbSprite.Builder builderForValue) {
        if (spritesBuilder_ == null) {
          ensureSpritesIsMutable();
          sprites_.add(builderForValue.build());
          onChanged();
        } else {
          spritesBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       *被复活的精灵ID
       * </pre>
       *
       * <code>repeated .pb.PbSprite sprites = 1;</code>
       */
      public Builder addSprites(
          int index, pb.xiugou.x1.protobuf.battle.Battle.PbSprite.Builder builderForValue) {
        if (spritesBuilder_ == null) {
          ensureSpritesIsMutable();
          sprites_.add(index, builderForValue.build());
          onChanged();
        } else {
          spritesBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       *被复活的精灵ID
       * </pre>
       *
       * <code>repeated .pb.PbSprite sprites = 1;</code>
       */
      public Builder addAllSprites(
          java.lang.Iterable<? extends pb.xiugou.x1.protobuf.battle.Battle.PbSprite> values) {
        if (spritesBuilder_ == null) {
          ensureSpritesIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, sprites_);
          onChanged();
        } else {
          spritesBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * <pre>
       *被复活的精灵ID
       * </pre>
       *
       * <code>repeated .pb.PbSprite sprites = 1;</code>
       */
      public Builder clearSprites() {
        if (spritesBuilder_ == null) {
          sprites_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000001);
          onChanged();
        } else {
          spritesBuilder_.clear();
        }
        return this;
      }
      /**
       * <pre>
       *被复活的精灵ID
       * </pre>
       *
       * <code>repeated .pb.PbSprite sprites = 1;</code>
       */
      public Builder removeSprites(int index) {
        if (spritesBuilder_ == null) {
          ensureSpritesIsMutable();
          sprites_.remove(index);
          onChanged();
        } else {
          spritesBuilder_.remove(index);
        }
        return this;
      }
      /**
       * <pre>
       *被复活的精灵ID
       * </pre>
       *
       * <code>repeated .pb.PbSprite sprites = 1;</code>
       */
      public pb.xiugou.x1.protobuf.battle.Battle.PbSprite.Builder getSpritesBuilder(
          int index) {
        return getSpritesFieldBuilder().getBuilder(index);
      }
      /**
       * <pre>
       *被复活的精灵ID
       * </pre>
       *
       * <code>repeated .pb.PbSprite sprites = 1;</code>
       */
      public pb.xiugou.x1.protobuf.battle.Battle.PbSpriteOrBuilder getSpritesOrBuilder(
          int index) {
        if (spritesBuilder_ == null) {
          return sprites_.get(index);  } else {
          return spritesBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * <pre>
       *被复活的精灵ID
       * </pre>
       *
       * <code>repeated .pb.PbSprite sprites = 1;</code>
       */
      public java.util.List<? extends pb.xiugou.x1.protobuf.battle.Battle.PbSpriteOrBuilder> 
           getSpritesOrBuilderList() {
        if (spritesBuilder_ != null) {
          return spritesBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(sprites_);
        }
      }
      /**
       * <pre>
       *被复活的精灵ID
       * </pre>
       *
       * <code>repeated .pb.PbSprite sprites = 1;</code>
       */
      public pb.xiugou.x1.protobuf.battle.Battle.PbSprite.Builder addSpritesBuilder() {
        return getSpritesFieldBuilder().addBuilder(
            pb.xiugou.x1.protobuf.battle.Battle.PbSprite.getDefaultInstance());
      }
      /**
       * <pre>
       *被复活的精灵ID
       * </pre>
       *
       * <code>repeated .pb.PbSprite sprites = 1;</code>
       */
      public pb.xiugou.x1.protobuf.battle.Battle.PbSprite.Builder addSpritesBuilder(
          int index) {
        return getSpritesFieldBuilder().addBuilder(
            index, pb.xiugou.x1.protobuf.battle.Battle.PbSprite.getDefaultInstance());
      }
      /**
       * <pre>
       *被复活的精灵ID
       * </pre>
       *
       * <code>repeated .pb.PbSprite sprites = 1;</code>
       */
      public java.util.List<pb.xiugou.x1.protobuf.battle.Battle.PbSprite.Builder> 
           getSpritesBuilderList() {
        return getSpritesFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilderV3<
          pb.xiugou.x1.protobuf.battle.Battle.PbSprite, pb.xiugou.x1.protobuf.battle.Battle.PbSprite.Builder, pb.xiugou.x1.protobuf.battle.Battle.PbSpriteOrBuilder> 
          getSpritesFieldBuilder() {
        if (spritesBuilder_ == null) {
          spritesBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
              pb.xiugou.x1.protobuf.battle.Battle.PbSprite, pb.xiugou.x1.protobuf.battle.Battle.PbSprite.Builder, pb.xiugou.x1.protobuf.battle.Battle.PbSpriteOrBuilder>(
                  sprites_,
                  ((bitField0_ & 0x00000001) != 0),
                  getParentForChildren(),
                  isClean());
          sprites_ = null;
        }
        return spritesBuilder_;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

      @java.lang.Override
      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.mergeUnknownFields(unknownFields);
      }


      // @@protoc_insertion_point(builder_scope:pb.BattleRebornSpriteResponse)
    }

    // @@protoc_insertion_point(class_scope:pb.BattleRebornSpriteResponse)
    private static final pb.xiugou.x1.protobuf.battle.Battle.BattleRebornSpriteResponse DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new pb.xiugou.x1.protobuf.battle.Battle.BattleRebornSpriteResponse();
    }

    public static pb.xiugou.x1.protobuf.battle.Battle.BattleRebornSpriteResponse getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<BattleRebornSpriteResponse>
        PARSER = new com.google.protobuf.AbstractParser<BattleRebornSpriteResponse>() {
      @java.lang.Override
      public BattleRebornSpriteResponse parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return new BattleRebornSpriteResponse(input, extensionRegistry);
      }
    };

    public static com.google.protobuf.Parser<BattleRebornSpriteResponse> parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser<BattleRebornSpriteResponse> getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public pb.xiugou.x1.protobuf.battle.Battle.BattleRebornSpriteResponse getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface BattleSettleRequestOrBuilder extends
      // @@protoc_insertion_point(interface_extends:pb.BattleSettleRequest)
      com.google.protobuf.MessageOrBuilder {
  }
  /**
   * <pre>
   *战斗结算，战斗时间结束了，或者其他特殊的条件判定战斗结束，则需要发战斗结算
   * </pre>
   *
   * Protobuf type {@code pb.BattleSettleRequest}
   */
  public  static final class BattleSettleRequest extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:pb.BattleSettleRequest)
      BattleSettleRequestOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use BattleSettleRequest.newBuilder() to construct.
    private BattleSettleRequest(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private BattleSettleRequest() {
    }

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new BattleSettleRequest();
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private BattleSettleRequest(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      if (extensionRegistry == null) {
        throw new java.lang.NullPointerException();
      }
      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder();
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            default: {
              if (!parseUnknownField(
                  input, unknownFields, extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e).setUnfinishedMessage(this);
      } finally {
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return pb.xiugou.x1.protobuf.battle.Battle.internal_static_pb_BattleSettleRequest_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return pb.xiugou.x1.protobuf.battle.Battle.internal_static_pb_BattleSettleRequest_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              pb.xiugou.x1.protobuf.battle.Battle.BattleSettleRequest.class, pb.xiugou.x1.protobuf.battle.Battle.BattleSettleRequest.Builder.class);
    }

    /**
     * Protobuf enum {@code pb.BattleSettleRequest.Proto}
     */
    public enum Proto
        implements com.google.protobuf.ProtocolMessageEnum {
      /**
       * <code>UNKNOWN = 0;</code>
       */
      UNKNOWN(0),
      /**
       * <code>ID = 300012;</code>
       */
      ID(300012),
      UNRECOGNIZED(-1),
      ;

      /**
       * <code>UNKNOWN = 0;</code>
       */
      public static final int UNKNOWN_VALUE = 0;
      /**
       * <code>ID = 300012;</code>
       */
      public static final int ID_VALUE = 300012;


      public final int getNumber() {
        if (this == UNRECOGNIZED) {
          throw new java.lang.IllegalArgumentException(
              "Can't get the number of an unknown enum value.");
        }
        return value;
      }

      /**
       * @param value The numeric wire value of the corresponding enum entry.
       * @return The enum associated with the given numeric wire value.
       * @deprecated Use {@link #forNumber(int)} instead.
       */
      @java.lang.Deprecated
      public static Proto valueOf(int value) {
        return forNumber(value);
      }

      /**
       * @param value The numeric wire value of the corresponding enum entry.
       * @return The enum associated with the given numeric wire value.
       */
      public static Proto forNumber(int value) {
        switch (value) {
          case 0: return UNKNOWN;
          case 300012: return ID;
          default: return null;
        }
      }

      public static com.google.protobuf.Internal.EnumLiteMap<Proto>
          internalGetValueMap() {
        return internalValueMap;
      }
      private static final com.google.protobuf.Internal.EnumLiteMap<
          Proto> internalValueMap =
            new com.google.protobuf.Internal.EnumLiteMap<Proto>() {
              public Proto findValueByNumber(int number) {
                return Proto.forNumber(number);
              }
            };

      public final com.google.protobuf.Descriptors.EnumValueDescriptor
          getValueDescriptor() {
        return getDescriptor().getValues().get(ordinal());
      }
      public final com.google.protobuf.Descriptors.EnumDescriptor
          getDescriptorForType() {
        return getDescriptor();
      }
      public static final com.google.protobuf.Descriptors.EnumDescriptor
          getDescriptor() {
        return pb.xiugou.x1.protobuf.battle.Battle.BattleSettleRequest.getDescriptor().getEnumTypes().get(0);
      }

      private static final Proto[] VALUES = values();

      public static Proto valueOf(
          com.google.protobuf.Descriptors.EnumValueDescriptor desc) {
        if (desc.getType() != getDescriptor()) {
          throw new java.lang.IllegalArgumentException(
            "EnumValueDescriptor is not for this type.");
        }
        if (desc.getIndex() == -1) {
          return UNRECOGNIZED;
        }
        return VALUES[desc.getIndex()];
      }

      private final int value;

      private Proto(int value) {
        this.value = value;
      }

      // @@protoc_insertion_point(enum_scope:pb.BattleSettleRequest.Proto)
    }

    private byte memoizedIsInitialized = -1;
    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      unknownFields.writeTo(output);
    }

    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      size += unknownFields.getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof pb.xiugou.x1.protobuf.battle.Battle.BattleSettleRequest)) {
        return super.equals(obj);
      }
      pb.xiugou.x1.protobuf.battle.Battle.BattleSettleRequest other = (pb.xiugou.x1.protobuf.battle.Battle.BattleSettleRequest) obj;

      if (!unknownFields.equals(other.unknownFields)) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static pb.xiugou.x1.protobuf.battle.Battle.BattleSettleRequest parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static pb.xiugou.x1.protobuf.battle.Battle.BattleSettleRequest parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static pb.xiugou.x1.protobuf.battle.Battle.BattleSettleRequest parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static pb.xiugou.x1.protobuf.battle.Battle.BattleSettleRequest parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static pb.xiugou.x1.protobuf.battle.Battle.BattleSettleRequest parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static pb.xiugou.x1.protobuf.battle.Battle.BattleSettleRequest parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static pb.xiugou.x1.protobuf.battle.Battle.BattleSettleRequest parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static pb.xiugou.x1.protobuf.battle.Battle.BattleSettleRequest parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }
    public static pb.xiugou.x1.protobuf.battle.Battle.BattleSettleRequest parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static pb.xiugou.x1.protobuf.battle.Battle.BattleSettleRequest parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static pb.xiugou.x1.protobuf.battle.Battle.BattleSettleRequest parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static pb.xiugou.x1.protobuf.battle.Battle.BattleSettleRequest parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(pb.xiugou.x1.protobuf.battle.Battle.BattleSettleRequest prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * <pre>
     *战斗结算，战斗时间结束了，或者其他特殊的条件判定战斗结束，则需要发战斗结算
     * </pre>
     *
     * Protobuf type {@code pb.BattleSettleRequest}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:pb.BattleSettleRequest)
        pb.xiugou.x1.protobuf.battle.Battle.BattleSettleRequestOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return pb.xiugou.x1.protobuf.battle.Battle.internal_static_pb_BattleSettleRequest_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return pb.xiugou.x1.protobuf.battle.Battle.internal_static_pb_BattleSettleRequest_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                pb.xiugou.x1.protobuf.battle.Battle.BattleSettleRequest.class, pb.xiugou.x1.protobuf.battle.Battle.BattleSettleRequest.Builder.class);
      }

      // Construct using pb.xiugou.x1.protobuf.battle.Battle.BattleSettleRequest.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
        }
      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return pb.xiugou.x1.protobuf.battle.Battle.internal_static_pb_BattleSettleRequest_descriptor;
      }

      @java.lang.Override
      public pb.xiugou.x1.protobuf.battle.Battle.BattleSettleRequest getDefaultInstanceForType() {
        return pb.xiugou.x1.protobuf.battle.Battle.BattleSettleRequest.getDefaultInstance();
      }

      @java.lang.Override
      public pb.xiugou.x1.protobuf.battle.Battle.BattleSettleRequest build() {
        pb.xiugou.x1.protobuf.battle.Battle.BattleSettleRequest result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public pb.xiugou.x1.protobuf.battle.Battle.BattleSettleRequest buildPartial() {
        pb.xiugou.x1.protobuf.battle.Battle.BattleSettleRequest result = new pb.xiugou.x1.protobuf.battle.Battle.BattleSettleRequest(this);
        onBuilt();
        return result;
      }

      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }
      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.setField(field, value);
      }
      @java.lang.Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @java.lang.Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }
      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof pb.xiugou.x1.protobuf.battle.Battle.BattleSettleRequest) {
          return mergeFrom((pb.xiugou.x1.protobuf.battle.Battle.BattleSettleRequest)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(pb.xiugou.x1.protobuf.battle.Battle.BattleSettleRequest other) {
        if (other == pb.xiugou.x1.protobuf.battle.Battle.BattleSettleRequest.getDefaultInstance()) return this;
        this.mergeUnknownFields(other.unknownFields);
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        pb.xiugou.x1.protobuf.battle.Battle.BattleSettleRequest parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (pb.xiugou.x1.protobuf.battle.Battle.BattleSettleRequest) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

      @java.lang.Override
      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.mergeUnknownFields(unknownFields);
      }


      // @@protoc_insertion_point(builder_scope:pb.BattleSettleRequest)
    }

    // @@protoc_insertion_point(class_scope:pb.BattleSettleRequest)
    private static final pb.xiugou.x1.protobuf.battle.Battle.BattleSettleRequest DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new pb.xiugou.x1.protobuf.battle.Battle.BattleSettleRequest();
    }

    public static pb.xiugou.x1.protobuf.battle.Battle.BattleSettleRequest getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<BattleSettleRequest>
        PARSER = new com.google.protobuf.AbstractParser<BattleSettleRequest>() {
      @java.lang.Override
      public BattleSettleRequest parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return new BattleSettleRequest(input, extensionRegistry);
      }
    };

    public static com.google.protobuf.Parser<BattleSettleRequest> parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser<BattleSettleRequest> getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public pb.xiugou.x1.protobuf.battle.Battle.BattleSettleRequest getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface BattleSettleResponseOrBuilder extends
      // @@protoc_insertion_point(interface_extends:pb.BattleSettleResponse)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     *战斗结束的数据
     * </pre>
     *
     * <code>.pb.PbBattleEndData end_data = 1;</code>
     * @return Whether the endData field is set.
     */
    boolean hasEndData();
    /**
     * <pre>
     *战斗结束的数据
     * </pre>
     *
     * <code>.pb.PbBattleEndData end_data = 1;</code>
     * @return The endData.
     */
    pb.xiugou.x1.protobuf.battle.Battle.PbBattleEndData getEndData();
    /**
     * <pre>
     *战斗结束的数据
     * </pre>
     *
     * <code>.pb.PbBattleEndData end_data = 1;</code>
     */
    pb.xiugou.x1.protobuf.battle.Battle.PbBattleEndDataOrBuilder getEndDataOrBuilder();
  }
  /**
   * Protobuf type {@code pb.BattleSettleResponse}
   */
  public  static final class BattleSettleResponse extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:pb.BattleSettleResponse)
      BattleSettleResponseOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use BattleSettleResponse.newBuilder() to construct.
    private BattleSettleResponse(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private BattleSettleResponse() {
    }

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new BattleSettleResponse();
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private BattleSettleResponse(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      if (extensionRegistry == null) {
        throw new java.lang.NullPointerException();
      }
      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder();
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            case 10: {
              pb.xiugou.x1.protobuf.battle.Battle.PbBattleEndData.Builder subBuilder = null;
              if (endData_ != null) {
                subBuilder = endData_.toBuilder();
              }
              endData_ = input.readMessage(pb.xiugou.x1.protobuf.battle.Battle.PbBattleEndData.parser(), extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(endData_);
                endData_ = subBuilder.buildPartial();
              }

              break;
            }
            default: {
              if (!parseUnknownField(
                  input, unknownFields, extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e).setUnfinishedMessage(this);
      } finally {
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return pb.xiugou.x1.protobuf.battle.Battle.internal_static_pb_BattleSettleResponse_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return pb.xiugou.x1.protobuf.battle.Battle.internal_static_pb_BattleSettleResponse_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              pb.xiugou.x1.protobuf.battle.Battle.BattleSettleResponse.class, pb.xiugou.x1.protobuf.battle.Battle.BattleSettleResponse.Builder.class);
    }

    /**
     * Protobuf enum {@code pb.BattleSettleResponse.Proto}
     */
    public enum Proto
        implements com.google.protobuf.ProtocolMessageEnum {
      /**
       * <code>UNKNOWN = 0;</code>
       */
      UNKNOWN(0),
      /**
       * <code>ID = 300012;</code>
       */
      ID(300012),
      UNRECOGNIZED(-1),
      ;

      /**
       * <code>UNKNOWN = 0;</code>
       */
      public static final int UNKNOWN_VALUE = 0;
      /**
       * <code>ID = 300012;</code>
       */
      public static final int ID_VALUE = 300012;


      public final int getNumber() {
        if (this == UNRECOGNIZED) {
          throw new java.lang.IllegalArgumentException(
              "Can't get the number of an unknown enum value.");
        }
        return value;
      }

      /**
       * @param value The numeric wire value of the corresponding enum entry.
       * @return The enum associated with the given numeric wire value.
       * @deprecated Use {@link #forNumber(int)} instead.
       */
      @java.lang.Deprecated
      public static Proto valueOf(int value) {
        return forNumber(value);
      }

      /**
       * @param value The numeric wire value of the corresponding enum entry.
       * @return The enum associated with the given numeric wire value.
       */
      public static Proto forNumber(int value) {
        switch (value) {
          case 0: return UNKNOWN;
          case 300012: return ID;
          default: return null;
        }
      }

      public static com.google.protobuf.Internal.EnumLiteMap<Proto>
          internalGetValueMap() {
        return internalValueMap;
      }
      private static final com.google.protobuf.Internal.EnumLiteMap<
          Proto> internalValueMap =
            new com.google.protobuf.Internal.EnumLiteMap<Proto>() {
              public Proto findValueByNumber(int number) {
                return Proto.forNumber(number);
              }
            };

      public final com.google.protobuf.Descriptors.EnumValueDescriptor
          getValueDescriptor() {
        return getDescriptor().getValues().get(ordinal());
      }
      public final com.google.protobuf.Descriptors.EnumDescriptor
          getDescriptorForType() {
        return getDescriptor();
      }
      public static final com.google.protobuf.Descriptors.EnumDescriptor
          getDescriptor() {
        return pb.xiugou.x1.protobuf.battle.Battle.BattleSettleResponse.getDescriptor().getEnumTypes().get(0);
      }

      private static final Proto[] VALUES = values();

      public static Proto valueOf(
          com.google.protobuf.Descriptors.EnumValueDescriptor desc) {
        if (desc.getType() != getDescriptor()) {
          throw new java.lang.IllegalArgumentException(
            "EnumValueDescriptor is not for this type.");
        }
        if (desc.getIndex() == -1) {
          return UNRECOGNIZED;
        }
        return VALUES[desc.getIndex()];
      }

      private final int value;

      private Proto(int value) {
        this.value = value;
      }

      // @@protoc_insertion_point(enum_scope:pb.BattleSettleResponse.Proto)
    }

    public static final int END_DATA_FIELD_NUMBER = 1;
    private pb.xiugou.x1.protobuf.battle.Battle.PbBattleEndData endData_;
    /**
     * <pre>
     *战斗结束的数据
     * </pre>
     *
     * <code>.pb.PbBattleEndData end_data = 1;</code>
     * @return Whether the endData field is set.
     */
    public boolean hasEndData() {
      return endData_ != null;
    }
    /**
     * <pre>
     *战斗结束的数据
     * </pre>
     *
     * <code>.pb.PbBattleEndData end_data = 1;</code>
     * @return The endData.
     */
    public pb.xiugou.x1.protobuf.battle.Battle.PbBattleEndData getEndData() {
      return endData_ == null ? pb.xiugou.x1.protobuf.battle.Battle.PbBattleEndData.getDefaultInstance() : endData_;
    }
    /**
     * <pre>
     *战斗结束的数据
     * </pre>
     *
     * <code>.pb.PbBattleEndData end_data = 1;</code>
     */
    public pb.xiugou.x1.protobuf.battle.Battle.PbBattleEndDataOrBuilder getEndDataOrBuilder() {
      return getEndData();
    }

    private byte memoizedIsInitialized = -1;
    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (endData_ != null) {
        output.writeMessage(1, getEndData());
      }
      unknownFields.writeTo(output);
    }

    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      if (endData_ != null) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(1, getEndData());
      }
      size += unknownFields.getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof pb.xiugou.x1.protobuf.battle.Battle.BattleSettleResponse)) {
        return super.equals(obj);
      }
      pb.xiugou.x1.protobuf.battle.Battle.BattleSettleResponse other = (pb.xiugou.x1.protobuf.battle.Battle.BattleSettleResponse) obj;

      if (hasEndData() != other.hasEndData()) return false;
      if (hasEndData()) {
        if (!getEndData()
            .equals(other.getEndData())) return false;
      }
      if (!unknownFields.equals(other.unknownFields)) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      if (hasEndData()) {
        hash = (37 * hash) + END_DATA_FIELD_NUMBER;
        hash = (53 * hash) + getEndData().hashCode();
      }
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static pb.xiugou.x1.protobuf.battle.Battle.BattleSettleResponse parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static pb.xiugou.x1.protobuf.battle.Battle.BattleSettleResponse parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static pb.xiugou.x1.protobuf.battle.Battle.BattleSettleResponse parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static pb.xiugou.x1.protobuf.battle.Battle.BattleSettleResponse parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static pb.xiugou.x1.protobuf.battle.Battle.BattleSettleResponse parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static pb.xiugou.x1.protobuf.battle.Battle.BattleSettleResponse parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static pb.xiugou.x1.protobuf.battle.Battle.BattleSettleResponse parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static pb.xiugou.x1.protobuf.battle.Battle.BattleSettleResponse parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }
    public static pb.xiugou.x1.protobuf.battle.Battle.BattleSettleResponse parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static pb.xiugou.x1.protobuf.battle.Battle.BattleSettleResponse parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static pb.xiugou.x1.protobuf.battle.Battle.BattleSettleResponse parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static pb.xiugou.x1.protobuf.battle.Battle.BattleSettleResponse parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(pb.xiugou.x1.protobuf.battle.Battle.BattleSettleResponse prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code pb.BattleSettleResponse}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:pb.BattleSettleResponse)
        pb.xiugou.x1.protobuf.battle.Battle.BattleSettleResponseOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return pb.xiugou.x1.protobuf.battle.Battle.internal_static_pb_BattleSettleResponse_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return pb.xiugou.x1.protobuf.battle.Battle.internal_static_pb_BattleSettleResponse_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                pb.xiugou.x1.protobuf.battle.Battle.BattleSettleResponse.class, pb.xiugou.x1.protobuf.battle.Battle.BattleSettleResponse.Builder.class);
      }

      // Construct using pb.xiugou.x1.protobuf.battle.Battle.BattleSettleResponse.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
        }
      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        if (endDataBuilder_ == null) {
          endData_ = null;
        } else {
          endData_ = null;
          endDataBuilder_ = null;
        }
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return pb.xiugou.x1.protobuf.battle.Battle.internal_static_pb_BattleSettleResponse_descriptor;
      }

      @java.lang.Override
      public pb.xiugou.x1.protobuf.battle.Battle.BattleSettleResponse getDefaultInstanceForType() {
        return pb.xiugou.x1.protobuf.battle.Battle.BattleSettleResponse.getDefaultInstance();
      }

      @java.lang.Override
      public pb.xiugou.x1.protobuf.battle.Battle.BattleSettleResponse build() {
        pb.xiugou.x1.protobuf.battle.Battle.BattleSettleResponse result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public pb.xiugou.x1.protobuf.battle.Battle.BattleSettleResponse buildPartial() {
        pb.xiugou.x1.protobuf.battle.Battle.BattleSettleResponse result = new pb.xiugou.x1.protobuf.battle.Battle.BattleSettleResponse(this);
        if (endDataBuilder_ == null) {
          result.endData_ = endData_;
        } else {
          result.endData_ = endDataBuilder_.build();
        }
        onBuilt();
        return result;
      }

      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }
      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.setField(field, value);
      }
      @java.lang.Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @java.lang.Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }
      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof pb.xiugou.x1.protobuf.battle.Battle.BattleSettleResponse) {
          return mergeFrom((pb.xiugou.x1.protobuf.battle.Battle.BattleSettleResponse)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(pb.xiugou.x1.protobuf.battle.Battle.BattleSettleResponse other) {
        if (other == pb.xiugou.x1.protobuf.battle.Battle.BattleSettleResponse.getDefaultInstance()) return this;
        if (other.hasEndData()) {
          mergeEndData(other.getEndData());
        }
        this.mergeUnknownFields(other.unknownFields);
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        pb.xiugou.x1.protobuf.battle.Battle.BattleSettleResponse parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (pb.xiugou.x1.protobuf.battle.Battle.BattleSettleResponse) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }

      private pb.xiugou.x1.protobuf.battle.Battle.PbBattleEndData endData_;
      private com.google.protobuf.SingleFieldBuilderV3<
          pb.xiugou.x1.protobuf.battle.Battle.PbBattleEndData, pb.xiugou.x1.protobuf.battle.Battle.PbBattleEndData.Builder, pb.xiugou.x1.protobuf.battle.Battle.PbBattleEndDataOrBuilder> endDataBuilder_;
      /**
       * <pre>
       *战斗结束的数据
       * </pre>
       *
       * <code>.pb.PbBattleEndData end_data = 1;</code>
       * @return Whether the endData field is set.
       */
      public boolean hasEndData() {
        return endDataBuilder_ != null || endData_ != null;
      }
      /**
       * <pre>
       *战斗结束的数据
       * </pre>
       *
       * <code>.pb.PbBattleEndData end_data = 1;</code>
       * @return The endData.
       */
      public pb.xiugou.x1.protobuf.battle.Battle.PbBattleEndData getEndData() {
        if (endDataBuilder_ == null) {
          return endData_ == null ? pb.xiugou.x1.protobuf.battle.Battle.PbBattleEndData.getDefaultInstance() : endData_;
        } else {
          return endDataBuilder_.getMessage();
        }
      }
      /**
       * <pre>
       *战斗结束的数据
       * </pre>
       *
       * <code>.pb.PbBattleEndData end_data = 1;</code>
       */
      public Builder setEndData(pb.xiugou.x1.protobuf.battle.Battle.PbBattleEndData value) {
        if (endDataBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          endData_ = value;
          onChanged();
        } else {
          endDataBuilder_.setMessage(value);
        }

        return this;
      }
      /**
       * <pre>
       *战斗结束的数据
       * </pre>
       *
       * <code>.pb.PbBattleEndData end_data = 1;</code>
       */
      public Builder setEndData(
          pb.xiugou.x1.protobuf.battle.Battle.PbBattleEndData.Builder builderForValue) {
        if (endDataBuilder_ == null) {
          endData_ = builderForValue.build();
          onChanged();
        } else {
          endDataBuilder_.setMessage(builderForValue.build());
        }

        return this;
      }
      /**
       * <pre>
       *战斗结束的数据
       * </pre>
       *
       * <code>.pb.PbBattleEndData end_data = 1;</code>
       */
      public Builder mergeEndData(pb.xiugou.x1.protobuf.battle.Battle.PbBattleEndData value) {
        if (endDataBuilder_ == null) {
          if (endData_ != null) {
            endData_ =
              pb.xiugou.x1.protobuf.battle.Battle.PbBattleEndData.newBuilder(endData_).mergeFrom(value).buildPartial();
          } else {
            endData_ = value;
          }
          onChanged();
        } else {
          endDataBuilder_.mergeFrom(value);
        }

        return this;
      }
      /**
       * <pre>
       *战斗结束的数据
       * </pre>
       *
       * <code>.pb.PbBattleEndData end_data = 1;</code>
       */
      public Builder clearEndData() {
        if (endDataBuilder_ == null) {
          endData_ = null;
          onChanged();
        } else {
          endData_ = null;
          endDataBuilder_ = null;
        }

        return this;
      }
      /**
       * <pre>
       *战斗结束的数据
       * </pre>
       *
       * <code>.pb.PbBattleEndData end_data = 1;</code>
       */
      public pb.xiugou.x1.protobuf.battle.Battle.PbBattleEndData.Builder getEndDataBuilder() {
        
        onChanged();
        return getEndDataFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       *战斗结束的数据
       * </pre>
       *
       * <code>.pb.PbBattleEndData end_data = 1;</code>
       */
      public pb.xiugou.x1.protobuf.battle.Battle.PbBattleEndDataOrBuilder getEndDataOrBuilder() {
        if (endDataBuilder_ != null) {
          return endDataBuilder_.getMessageOrBuilder();
        } else {
          return endData_ == null ?
              pb.xiugou.x1.protobuf.battle.Battle.PbBattleEndData.getDefaultInstance() : endData_;
        }
      }
      /**
       * <pre>
       *战斗结束的数据
       * </pre>
       *
       * <code>.pb.PbBattleEndData end_data = 1;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          pb.xiugou.x1.protobuf.battle.Battle.PbBattleEndData, pb.xiugou.x1.protobuf.battle.Battle.PbBattleEndData.Builder, pb.xiugou.x1.protobuf.battle.Battle.PbBattleEndDataOrBuilder> 
          getEndDataFieldBuilder() {
        if (endDataBuilder_ == null) {
          endDataBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              pb.xiugou.x1.protobuf.battle.Battle.PbBattleEndData, pb.xiugou.x1.protobuf.battle.Battle.PbBattleEndData.Builder, pb.xiugou.x1.protobuf.battle.Battle.PbBattleEndDataOrBuilder>(
                  getEndData(),
                  getParentForChildren(),
                  isClean());
          endData_ = null;
        }
        return endDataBuilder_;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

      @java.lang.Override
      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.mergeUnknownFields(unknownFields);
      }


      // @@protoc_insertion_point(builder_scope:pb.BattleSettleResponse)
    }

    // @@protoc_insertion_point(class_scope:pb.BattleSettleResponse)
    private static final pb.xiugou.x1.protobuf.battle.Battle.BattleSettleResponse DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new pb.xiugou.x1.protobuf.battle.Battle.BattleSettleResponse();
    }

    public static pb.xiugou.x1.protobuf.battle.Battle.BattleSettleResponse getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<BattleSettleResponse>
        PARSER = new com.google.protobuf.AbstractParser<BattleSettleResponse>() {
      @java.lang.Override
      public BattleSettleResponse parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return new BattleSettleResponse(input, extensionRegistry);
      }
    };

    public static com.google.protobuf.Parser<BattleSettleResponse> parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser<BattleSettleResponse> getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public pb.xiugou.x1.protobuf.battle.Battle.BattleSettleResponse getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface BattleSpawnMonsterGmMessageOrBuilder extends
      // @@protoc_insertion_point(interface_extends:pb.BattleSpawnMonsterGmMessage)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     *战斗类型
     * </pre>
     *
     * <code>int32 battle_type = 1;</code>
     * @return The battleType.
     */
    int getBattleType();

    /**
     * <pre>
     *GM增加的精灵
     * </pre>
     *
     * <code>.pb.PbSprite sprite = 2;</code>
     * @return Whether the sprite field is set.
     */
    boolean hasSprite();
    /**
     * <pre>
     *GM增加的精灵
     * </pre>
     *
     * <code>.pb.PbSprite sprite = 2;</code>
     * @return The sprite.
     */
    pb.xiugou.x1.protobuf.battle.Battle.PbSprite getSprite();
    /**
     * <pre>
     *GM增加的精灵
     * </pre>
     *
     * <code>.pb.PbSprite sprite = 2;</code>
     */
    pb.xiugou.x1.protobuf.battle.Battle.PbSpriteOrBuilder getSpriteOrBuilder();
  }
  /**
   * <pre>
   *战斗GM出怪
   * </pre>
   *
   * Protobuf type {@code pb.BattleSpawnMonsterGmMessage}
   */
  public  static final class BattleSpawnMonsterGmMessage extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:pb.BattleSpawnMonsterGmMessage)
      BattleSpawnMonsterGmMessageOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use BattleSpawnMonsterGmMessage.newBuilder() to construct.
    private BattleSpawnMonsterGmMessage(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private BattleSpawnMonsterGmMessage() {
    }

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new BattleSpawnMonsterGmMessage();
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private BattleSpawnMonsterGmMessage(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      if (extensionRegistry == null) {
        throw new java.lang.NullPointerException();
      }
      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder();
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            case 8: {

              battleType_ = input.readInt32();
              break;
            }
            case 18: {
              pb.xiugou.x1.protobuf.battle.Battle.PbSprite.Builder subBuilder = null;
              if (sprite_ != null) {
                subBuilder = sprite_.toBuilder();
              }
              sprite_ = input.readMessage(pb.xiugou.x1.protobuf.battle.Battle.PbSprite.parser(), extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(sprite_);
                sprite_ = subBuilder.buildPartial();
              }

              break;
            }
            default: {
              if (!parseUnknownField(
                  input, unknownFields, extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e).setUnfinishedMessage(this);
      } finally {
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return pb.xiugou.x1.protobuf.battle.Battle.internal_static_pb_BattleSpawnMonsterGmMessage_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return pb.xiugou.x1.protobuf.battle.Battle.internal_static_pb_BattleSpawnMonsterGmMessage_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              pb.xiugou.x1.protobuf.battle.Battle.BattleSpawnMonsterGmMessage.class, pb.xiugou.x1.protobuf.battle.Battle.BattleSpawnMonsterGmMessage.Builder.class);
    }

    /**
     * Protobuf enum {@code pb.BattleSpawnMonsterGmMessage.Proto}
     */
    public enum Proto
        implements com.google.protobuf.ProtocolMessageEnum {
      /**
       * <code>UNKNOWN = 0;</code>
       */
      UNKNOWN(0),
      /**
       * <code>ID = 300013;</code>
       */
      ID(300013),
      UNRECOGNIZED(-1),
      ;

      /**
       * <code>UNKNOWN = 0;</code>
       */
      public static final int UNKNOWN_VALUE = 0;
      /**
       * <code>ID = 300013;</code>
       */
      public static final int ID_VALUE = 300013;


      public final int getNumber() {
        if (this == UNRECOGNIZED) {
          throw new java.lang.IllegalArgumentException(
              "Can't get the number of an unknown enum value.");
        }
        return value;
      }

      /**
       * @param value The numeric wire value of the corresponding enum entry.
       * @return The enum associated with the given numeric wire value.
       * @deprecated Use {@link #forNumber(int)} instead.
       */
      @java.lang.Deprecated
      public static Proto valueOf(int value) {
        return forNumber(value);
      }

      /**
       * @param value The numeric wire value of the corresponding enum entry.
       * @return The enum associated with the given numeric wire value.
       */
      public static Proto forNumber(int value) {
        switch (value) {
          case 0: return UNKNOWN;
          case 300013: return ID;
          default: return null;
        }
      }

      public static com.google.protobuf.Internal.EnumLiteMap<Proto>
          internalGetValueMap() {
        return internalValueMap;
      }
      private static final com.google.protobuf.Internal.EnumLiteMap<
          Proto> internalValueMap =
            new com.google.protobuf.Internal.EnumLiteMap<Proto>() {
              public Proto findValueByNumber(int number) {
                return Proto.forNumber(number);
              }
            };

      public final com.google.protobuf.Descriptors.EnumValueDescriptor
          getValueDescriptor() {
        return getDescriptor().getValues().get(ordinal());
      }
      public final com.google.protobuf.Descriptors.EnumDescriptor
          getDescriptorForType() {
        return getDescriptor();
      }
      public static final com.google.protobuf.Descriptors.EnumDescriptor
          getDescriptor() {
        return pb.xiugou.x1.protobuf.battle.Battle.BattleSpawnMonsterGmMessage.getDescriptor().getEnumTypes().get(0);
      }

      private static final Proto[] VALUES = values();

      public static Proto valueOf(
          com.google.protobuf.Descriptors.EnumValueDescriptor desc) {
        if (desc.getType() != getDescriptor()) {
          throw new java.lang.IllegalArgumentException(
            "EnumValueDescriptor is not for this type.");
        }
        if (desc.getIndex() == -1) {
          return UNRECOGNIZED;
        }
        return VALUES[desc.getIndex()];
      }

      private final int value;

      private Proto(int value) {
        this.value = value;
      }

      // @@protoc_insertion_point(enum_scope:pb.BattleSpawnMonsterGmMessage.Proto)
    }

    public static final int BATTLE_TYPE_FIELD_NUMBER = 1;
    private int battleType_;
    /**
     * <pre>
     *战斗类型
     * </pre>
     *
     * <code>int32 battle_type = 1;</code>
     * @return The battleType.
     */
    public int getBattleType() {
      return battleType_;
    }

    public static final int SPRITE_FIELD_NUMBER = 2;
    private pb.xiugou.x1.protobuf.battle.Battle.PbSprite sprite_;
    /**
     * <pre>
     *GM增加的精灵
     * </pre>
     *
     * <code>.pb.PbSprite sprite = 2;</code>
     * @return Whether the sprite field is set.
     */
    public boolean hasSprite() {
      return sprite_ != null;
    }
    /**
     * <pre>
     *GM增加的精灵
     * </pre>
     *
     * <code>.pb.PbSprite sprite = 2;</code>
     * @return The sprite.
     */
    public pb.xiugou.x1.protobuf.battle.Battle.PbSprite getSprite() {
      return sprite_ == null ? pb.xiugou.x1.protobuf.battle.Battle.PbSprite.getDefaultInstance() : sprite_;
    }
    /**
     * <pre>
     *GM增加的精灵
     * </pre>
     *
     * <code>.pb.PbSprite sprite = 2;</code>
     */
    public pb.xiugou.x1.protobuf.battle.Battle.PbSpriteOrBuilder getSpriteOrBuilder() {
      return getSprite();
    }

    private byte memoizedIsInitialized = -1;
    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (battleType_ != 0) {
        output.writeInt32(1, battleType_);
      }
      if (sprite_ != null) {
        output.writeMessage(2, getSprite());
      }
      unknownFields.writeTo(output);
    }

    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      if (battleType_ != 0) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt32Size(1, battleType_);
      }
      if (sprite_ != null) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(2, getSprite());
      }
      size += unknownFields.getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof pb.xiugou.x1.protobuf.battle.Battle.BattleSpawnMonsterGmMessage)) {
        return super.equals(obj);
      }
      pb.xiugou.x1.protobuf.battle.Battle.BattleSpawnMonsterGmMessage other = (pb.xiugou.x1.protobuf.battle.Battle.BattleSpawnMonsterGmMessage) obj;

      if (getBattleType()
          != other.getBattleType()) return false;
      if (hasSprite() != other.hasSprite()) return false;
      if (hasSprite()) {
        if (!getSprite()
            .equals(other.getSprite())) return false;
      }
      if (!unknownFields.equals(other.unknownFields)) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      hash = (37 * hash) + BATTLE_TYPE_FIELD_NUMBER;
      hash = (53 * hash) + getBattleType();
      if (hasSprite()) {
        hash = (37 * hash) + SPRITE_FIELD_NUMBER;
        hash = (53 * hash) + getSprite().hashCode();
      }
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static pb.xiugou.x1.protobuf.battle.Battle.BattleSpawnMonsterGmMessage parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static pb.xiugou.x1.protobuf.battle.Battle.BattleSpawnMonsterGmMessage parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static pb.xiugou.x1.protobuf.battle.Battle.BattleSpawnMonsterGmMessage parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static pb.xiugou.x1.protobuf.battle.Battle.BattleSpawnMonsterGmMessage parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static pb.xiugou.x1.protobuf.battle.Battle.BattleSpawnMonsterGmMessage parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static pb.xiugou.x1.protobuf.battle.Battle.BattleSpawnMonsterGmMessage parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static pb.xiugou.x1.protobuf.battle.Battle.BattleSpawnMonsterGmMessage parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static pb.xiugou.x1.protobuf.battle.Battle.BattleSpawnMonsterGmMessage parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }
    public static pb.xiugou.x1.protobuf.battle.Battle.BattleSpawnMonsterGmMessage parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static pb.xiugou.x1.protobuf.battle.Battle.BattleSpawnMonsterGmMessage parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static pb.xiugou.x1.protobuf.battle.Battle.BattleSpawnMonsterGmMessage parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static pb.xiugou.x1.protobuf.battle.Battle.BattleSpawnMonsterGmMessage parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(pb.xiugou.x1.protobuf.battle.Battle.BattleSpawnMonsterGmMessage prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * <pre>
     *战斗GM出怪
     * </pre>
     *
     * Protobuf type {@code pb.BattleSpawnMonsterGmMessage}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:pb.BattleSpawnMonsterGmMessage)
        pb.xiugou.x1.protobuf.battle.Battle.BattleSpawnMonsterGmMessageOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return pb.xiugou.x1.protobuf.battle.Battle.internal_static_pb_BattleSpawnMonsterGmMessage_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return pb.xiugou.x1.protobuf.battle.Battle.internal_static_pb_BattleSpawnMonsterGmMessage_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                pb.xiugou.x1.protobuf.battle.Battle.BattleSpawnMonsterGmMessage.class, pb.xiugou.x1.protobuf.battle.Battle.BattleSpawnMonsterGmMessage.Builder.class);
      }

      // Construct using pb.xiugou.x1.protobuf.battle.Battle.BattleSpawnMonsterGmMessage.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
        }
      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        battleType_ = 0;

        if (spriteBuilder_ == null) {
          sprite_ = null;
        } else {
          sprite_ = null;
          spriteBuilder_ = null;
        }
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return pb.xiugou.x1.protobuf.battle.Battle.internal_static_pb_BattleSpawnMonsterGmMessage_descriptor;
      }

      @java.lang.Override
      public pb.xiugou.x1.protobuf.battle.Battle.BattleSpawnMonsterGmMessage getDefaultInstanceForType() {
        return pb.xiugou.x1.protobuf.battle.Battle.BattleSpawnMonsterGmMessage.getDefaultInstance();
      }

      @java.lang.Override
      public pb.xiugou.x1.protobuf.battle.Battle.BattleSpawnMonsterGmMessage build() {
        pb.xiugou.x1.protobuf.battle.Battle.BattleSpawnMonsterGmMessage result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public pb.xiugou.x1.protobuf.battle.Battle.BattleSpawnMonsterGmMessage buildPartial() {
        pb.xiugou.x1.protobuf.battle.Battle.BattleSpawnMonsterGmMessage result = new pb.xiugou.x1.protobuf.battle.Battle.BattleSpawnMonsterGmMessage(this);
        result.battleType_ = battleType_;
        if (spriteBuilder_ == null) {
          result.sprite_ = sprite_;
        } else {
          result.sprite_ = spriteBuilder_.build();
        }
        onBuilt();
        return result;
      }

      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }
      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.setField(field, value);
      }
      @java.lang.Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @java.lang.Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }
      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof pb.xiugou.x1.protobuf.battle.Battle.BattleSpawnMonsterGmMessage) {
          return mergeFrom((pb.xiugou.x1.protobuf.battle.Battle.BattleSpawnMonsterGmMessage)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(pb.xiugou.x1.protobuf.battle.Battle.BattleSpawnMonsterGmMessage other) {
        if (other == pb.xiugou.x1.protobuf.battle.Battle.BattleSpawnMonsterGmMessage.getDefaultInstance()) return this;
        if (other.getBattleType() != 0) {
          setBattleType(other.getBattleType());
        }
        if (other.hasSprite()) {
          mergeSprite(other.getSprite());
        }
        this.mergeUnknownFields(other.unknownFields);
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        pb.xiugou.x1.protobuf.battle.Battle.BattleSpawnMonsterGmMessage parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (pb.xiugou.x1.protobuf.battle.Battle.BattleSpawnMonsterGmMessage) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }

      private int battleType_ ;
      /**
       * <pre>
       *战斗类型
       * </pre>
       *
       * <code>int32 battle_type = 1;</code>
       * @return The battleType.
       */
      public int getBattleType() {
        return battleType_;
      }
      /**
       * <pre>
       *战斗类型
       * </pre>
       *
       * <code>int32 battle_type = 1;</code>
       * @param value The battleType to set.
       * @return This builder for chaining.
       */
      public Builder setBattleType(int value) {
        
        battleType_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       *战斗类型
       * </pre>
       *
       * <code>int32 battle_type = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearBattleType() {
        
        battleType_ = 0;
        onChanged();
        return this;
      }

      private pb.xiugou.x1.protobuf.battle.Battle.PbSprite sprite_;
      private com.google.protobuf.SingleFieldBuilderV3<
          pb.xiugou.x1.protobuf.battle.Battle.PbSprite, pb.xiugou.x1.protobuf.battle.Battle.PbSprite.Builder, pb.xiugou.x1.protobuf.battle.Battle.PbSpriteOrBuilder> spriteBuilder_;
      /**
       * <pre>
       *GM增加的精灵
       * </pre>
       *
       * <code>.pb.PbSprite sprite = 2;</code>
       * @return Whether the sprite field is set.
       */
      public boolean hasSprite() {
        return spriteBuilder_ != null || sprite_ != null;
      }
      /**
       * <pre>
       *GM增加的精灵
       * </pre>
       *
       * <code>.pb.PbSprite sprite = 2;</code>
       * @return The sprite.
       */
      public pb.xiugou.x1.protobuf.battle.Battle.PbSprite getSprite() {
        if (spriteBuilder_ == null) {
          return sprite_ == null ? pb.xiugou.x1.protobuf.battle.Battle.PbSprite.getDefaultInstance() : sprite_;
        } else {
          return spriteBuilder_.getMessage();
        }
      }
      /**
       * <pre>
       *GM增加的精灵
       * </pre>
       *
       * <code>.pb.PbSprite sprite = 2;</code>
       */
      public Builder setSprite(pb.xiugou.x1.protobuf.battle.Battle.PbSprite value) {
        if (spriteBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          sprite_ = value;
          onChanged();
        } else {
          spriteBuilder_.setMessage(value);
        }

        return this;
      }
      /**
       * <pre>
       *GM增加的精灵
       * </pre>
       *
       * <code>.pb.PbSprite sprite = 2;</code>
       */
      public Builder setSprite(
          pb.xiugou.x1.protobuf.battle.Battle.PbSprite.Builder builderForValue) {
        if (spriteBuilder_ == null) {
          sprite_ = builderForValue.build();
          onChanged();
        } else {
          spriteBuilder_.setMessage(builderForValue.build());
        }

        return this;
      }
      /**
       * <pre>
       *GM增加的精灵
       * </pre>
       *
       * <code>.pb.PbSprite sprite = 2;</code>
       */
      public Builder mergeSprite(pb.xiugou.x1.protobuf.battle.Battle.PbSprite value) {
        if (spriteBuilder_ == null) {
          if (sprite_ != null) {
            sprite_ =
              pb.xiugou.x1.protobuf.battle.Battle.PbSprite.newBuilder(sprite_).mergeFrom(value).buildPartial();
          } else {
            sprite_ = value;
          }
          onChanged();
        } else {
          spriteBuilder_.mergeFrom(value);
        }

        return this;
      }
      /**
       * <pre>
       *GM增加的精灵
       * </pre>
       *
       * <code>.pb.PbSprite sprite = 2;</code>
       */
      public Builder clearSprite() {
        if (spriteBuilder_ == null) {
          sprite_ = null;
          onChanged();
        } else {
          sprite_ = null;
          spriteBuilder_ = null;
        }

        return this;
      }
      /**
       * <pre>
       *GM增加的精灵
       * </pre>
       *
       * <code>.pb.PbSprite sprite = 2;</code>
       */
      public pb.xiugou.x1.protobuf.battle.Battle.PbSprite.Builder getSpriteBuilder() {
        
        onChanged();
        return getSpriteFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       *GM增加的精灵
       * </pre>
       *
       * <code>.pb.PbSprite sprite = 2;</code>
       */
      public pb.xiugou.x1.protobuf.battle.Battle.PbSpriteOrBuilder getSpriteOrBuilder() {
        if (spriteBuilder_ != null) {
          return spriteBuilder_.getMessageOrBuilder();
        } else {
          return sprite_ == null ?
              pb.xiugou.x1.protobuf.battle.Battle.PbSprite.getDefaultInstance() : sprite_;
        }
      }
      /**
       * <pre>
       *GM增加的精灵
       * </pre>
       *
       * <code>.pb.PbSprite sprite = 2;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          pb.xiugou.x1.protobuf.battle.Battle.PbSprite, pb.xiugou.x1.protobuf.battle.Battle.PbSprite.Builder, pb.xiugou.x1.protobuf.battle.Battle.PbSpriteOrBuilder> 
          getSpriteFieldBuilder() {
        if (spriteBuilder_ == null) {
          spriteBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              pb.xiugou.x1.protobuf.battle.Battle.PbSprite, pb.xiugou.x1.protobuf.battle.Battle.PbSprite.Builder, pb.xiugou.x1.protobuf.battle.Battle.PbSpriteOrBuilder>(
                  getSprite(),
                  getParentForChildren(),
                  isClean());
          sprite_ = null;
        }
        return spriteBuilder_;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

      @java.lang.Override
      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.mergeUnknownFields(unknownFields);
      }


      // @@protoc_insertion_point(builder_scope:pb.BattleSpawnMonsterGmMessage)
    }

    // @@protoc_insertion_point(class_scope:pb.BattleSpawnMonsterGmMessage)
    private static final pb.xiugou.x1.protobuf.battle.Battle.BattleSpawnMonsterGmMessage DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new pb.xiugou.x1.protobuf.battle.Battle.BattleSpawnMonsterGmMessage();
    }

    public static pb.xiugou.x1.protobuf.battle.Battle.BattleSpawnMonsterGmMessage getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<BattleSpawnMonsterGmMessage>
        PARSER = new com.google.protobuf.AbstractParser<BattleSpawnMonsterGmMessage>() {
      @java.lang.Override
      public BattleSpawnMonsterGmMessage parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return new BattleSpawnMonsterGmMessage(input, extensionRegistry);
      }
    };

    public static com.google.protobuf.Parser<BattleSpawnMonsterGmMessage> parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser<BattleSpawnMonsterGmMessage> getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public pb.xiugou.x1.protobuf.battle.Battle.BattleSpawnMonsterGmMessage getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface SwitchBattleHeroRequestOrBuilder extends
      // @@protoc_insertion_point(interface_extends:pb.SwitchBattleHeroRequest)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     *对长英雄标识
     * </pre>
     *
     * <code>int32 main_hero = 1;</code>
     * @return The mainHero.
     */
    int getMainHero();

    /**
     * <pre>
     *出战英雄站位列表，位置从1开始
     * </pre>
     *
     * <code>repeated .pb.PbFormationPos pos_list = 2;</code>
     */
    java.util.List<pb.xiugou.x1.protobuf.formation.Formation.PbFormationPos> 
        getPosListList();
    /**
     * <pre>
     *出战英雄站位列表，位置从1开始
     * </pre>
     *
     * <code>repeated .pb.PbFormationPos pos_list = 2;</code>
     */
    pb.xiugou.x1.protobuf.formation.Formation.PbFormationPos getPosList(int index);
    /**
     * <pre>
     *出战英雄站位列表，位置从1开始
     * </pre>
     *
     * <code>repeated .pb.PbFormationPos pos_list = 2;</code>
     */
    int getPosListCount();
    /**
     * <pre>
     *出战英雄站位列表，位置从1开始
     * </pre>
     *
     * <code>repeated .pb.PbFormationPos pos_list = 2;</code>
     */
    java.util.List<? extends pb.xiugou.x1.protobuf.formation.Formation.PbFormationPosOrBuilder> 
        getPosListOrBuilderList();
    /**
     * <pre>
     *出战英雄站位列表，位置从1开始
     * </pre>
     *
     * <code>repeated .pb.PbFormationPos pos_list = 2;</code>
     */
    pb.xiugou.x1.protobuf.formation.Formation.PbFormationPosOrBuilder getPosListOrBuilder(
        int index);
  }
  /**
   * <pre>
   *更换出战英雄
   * </pre>
   *
   * Protobuf type {@code pb.SwitchBattleHeroRequest}
   */
  public  static final class SwitchBattleHeroRequest extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:pb.SwitchBattleHeroRequest)
      SwitchBattleHeroRequestOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use SwitchBattleHeroRequest.newBuilder() to construct.
    private SwitchBattleHeroRequest(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private SwitchBattleHeroRequest() {
      posList_ = java.util.Collections.emptyList();
    }

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new SwitchBattleHeroRequest();
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private SwitchBattleHeroRequest(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      if (extensionRegistry == null) {
        throw new java.lang.NullPointerException();
      }
      int mutable_bitField0_ = 0;
      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder();
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            case 8: {

              mainHero_ = input.readInt32();
              break;
            }
            case 18: {
              if (!((mutable_bitField0_ & 0x00000001) != 0)) {
                posList_ = new java.util.ArrayList<pb.xiugou.x1.protobuf.formation.Formation.PbFormationPos>();
                mutable_bitField0_ |= 0x00000001;
              }
              posList_.add(
                  input.readMessage(pb.xiugou.x1.protobuf.formation.Formation.PbFormationPos.parser(), extensionRegistry));
              break;
            }
            default: {
              if (!parseUnknownField(
                  input, unknownFields, extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e).setUnfinishedMessage(this);
      } finally {
        if (((mutable_bitField0_ & 0x00000001) != 0)) {
          posList_ = java.util.Collections.unmodifiableList(posList_);
        }
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return pb.xiugou.x1.protobuf.battle.Battle.internal_static_pb_SwitchBattleHeroRequest_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return pb.xiugou.x1.protobuf.battle.Battle.internal_static_pb_SwitchBattleHeroRequest_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              pb.xiugou.x1.protobuf.battle.Battle.SwitchBattleHeroRequest.class, pb.xiugou.x1.protobuf.battle.Battle.SwitchBattleHeroRequest.Builder.class);
    }

    /**
     * Protobuf enum {@code pb.SwitchBattleHeroRequest.Proto}
     */
    public enum Proto
        implements com.google.protobuf.ProtocolMessageEnum {
      /**
       * <code>UNKNOWN = 0;</code>
       */
      UNKNOWN(0),
      /**
       * <code>ID = 300101;</code>
       */
      ID(300101),
      UNRECOGNIZED(-1),
      ;

      /**
       * <code>UNKNOWN = 0;</code>
       */
      public static final int UNKNOWN_VALUE = 0;
      /**
       * <code>ID = 300101;</code>
       */
      public static final int ID_VALUE = 300101;


      public final int getNumber() {
        if (this == UNRECOGNIZED) {
          throw new java.lang.IllegalArgumentException(
              "Can't get the number of an unknown enum value.");
        }
        return value;
      }

      /**
       * @param value The numeric wire value of the corresponding enum entry.
       * @return The enum associated with the given numeric wire value.
       * @deprecated Use {@link #forNumber(int)} instead.
       */
      @java.lang.Deprecated
      public static Proto valueOf(int value) {
        return forNumber(value);
      }

      /**
       * @param value The numeric wire value of the corresponding enum entry.
       * @return The enum associated with the given numeric wire value.
       */
      public static Proto forNumber(int value) {
        switch (value) {
          case 0: return UNKNOWN;
          case 300101: return ID;
          default: return null;
        }
      }

      public static com.google.protobuf.Internal.EnumLiteMap<Proto>
          internalGetValueMap() {
        return internalValueMap;
      }
      private static final com.google.protobuf.Internal.EnumLiteMap<
          Proto> internalValueMap =
            new com.google.protobuf.Internal.EnumLiteMap<Proto>() {
              public Proto findValueByNumber(int number) {
                return Proto.forNumber(number);
              }
            };

      public final com.google.protobuf.Descriptors.EnumValueDescriptor
          getValueDescriptor() {
        return getDescriptor().getValues().get(ordinal());
      }
      public final com.google.protobuf.Descriptors.EnumDescriptor
          getDescriptorForType() {
        return getDescriptor();
      }
      public static final com.google.protobuf.Descriptors.EnumDescriptor
          getDescriptor() {
        return pb.xiugou.x1.protobuf.battle.Battle.SwitchBattleHeroRequest.getDescriptor().getEnumTypes().get(0);
      }

      private static final Proto[] VALUES = values();

      public static Proto valueOf(
          com.google.protobuf.Descriptors.EnumValueDescriptor desc) {
        if (desc.getType() != getDescriptor()) {
          throw new java.lang.IllegalArgumentException(
            "EnumValueDescriptor is not for this type.");
        }
        if (desc.getIndex() == -1) {
          return UNRECOGNIZED;
        }
        return VALUES[desc.getIndex()];
      }

      private final int value;

      private Proto(int value) {
        this.value = value;
      }

      // @@protoc_insertion_point(enum_scope:pb.SwitchBattleHeroRequest.Proto)
    }

    public static final int MAIN_HERO_FIELD_NUMBER = 1;
    private int mainHero_;
    /**
     * <pre>
     *对长英雄标识
     * </pre>
     *
     * <code>int32 main_hero = 1;</code>
     * @return The mainHero.
     */
    public int getMainHero() {
      return mainHero_;
    }

    public static final int POS_LIST_FIELD_NUMBER = 2;
    private java.util.List<pb.xiugou.x1.protobuf.formation.Formation.PbFormationPos> posList_;
    /**
     * <pre>
     *出战英雄站位列表，位置从1开始
     * </pre>
     *
     * <code>repeated .pb.PbFormationPos pos_list = 2;</code>
     */
    public java.util.List<pb.xiugou.x1.protobuf.formation.Formation.PbFormationPos> getPosListList() {
      return posList_;
    }
    /**
     * <pre>
     *出战英雄站位列表，位置从1开始
     * </pre>
     *
     * <code>repeated .pb.PbFormationPos pos_list = 2;</code>
     */
    public java.util.List<? extends pb.xiugou.x1.protobuf.formation.Formation.PbFormationPosOrBuilder> 
        getPosListOrBuilderList() {
      return posList_;
    }
    /**
     * <pre>
     *出战英雄站位列表，位置从1开始
     * </pre>
     *
     * <code>repeated .pb.PbFormationPos pos_list = 2;</code>
     */
    public int getPosListCount() {
      return posList_.size();
    }
    /**
     * <pre>
     *出战英雄站位列表，位置从1开始
     * </pre>
     *
     * <code>repeated .pb.PbFormationPos pos_list = 2;</code>
     */
    public pb.xiugou.x1.protobuf.formation.Formation.PbFormationPos getPosList(int index) {
      return posList_.get(index);
    }
    /**
     * <pre>
     *出战英雄站位列表，位置从1开始
     * </pre>
     *
     * <code>repeated .pb.PbFormationPos pos_list = 2;</code>
     */
    public pb.xiugou.x1.protobuf.formation.Formation.PbFormationPosOrBuilder getPosListOrBuilder(
        int index) {
      return posList_.get(index);
    }

    private byte memoizedIsInitialized = -1;
    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (mainHero_ != 0) {
        output.writeInt32(1, mainHero_);
      }
      for (int i = 0; i < posList_.size(); i++) {
        output.writeMessage(2, posList_.get(i));
      }
      unknownFields.writeTo(output);
    }

    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      if (mainHero_ != 0) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt32Size(1, mainHero_);
      }
      for (int i = 0; i < posList_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(2, posList_.get(i));
      }
      size += unknownFields.getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof pb.xiugou.x1.protobuf.battle.Battle.SwitchBattleHeroRequest)) {
        return super.equals(obj);
      }
      pb.xiugou.x1.protobuf.battle.Battle.SwitchBattleHeroRequest other = (pb.xiugou.x1.protobuf.battle.Battle.SwitchBattleHeroRequest) obj;

      if (getMainHero()
          != other.getMainHero()) return false;
      if (!getPosListList()
          .equals(other.getPosListList())) return false;
      if (!unknownFields.equals(other.unknownFields)) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      hash = (37 * hash) + MAIN_HERO_FIELD_NUMBER;
      hash = (53 * hash) + getMainHero();
      if (getPosListCount() > 0) {
        hash = (37 * hash) + POS_LIST_FIELD_NUMBER;
        hash = (53 * hash) + getPosListList().hashCode();
      }
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static pb.xiugou.x1.protobuf.battle.Battle.SwitchBattleHeroRequest parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static pb.xiugou.x1.protobuf.battle.Battle.SwitchBattleHeroRequest parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static pb.xiugou.x1.protobuf.battle.Battle.SwitchBattleHeroRequest parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static pb.xiugou.x1.protobuf.battle.Battle.SwitchBattleHeroRequest parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static pb.xiugou.x1.protobuf.battle.Battle.SwitchBattleHeroRequest parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static pb.xiugou.x1.protobuf.battle.Battle.SwitchBattleHeroRequest parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static pb.xiugou.x1.protobuf.battle.Battle.SwitchBattleHeroRequest parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static pb.xiugou.x1.protobuf.battle.Battle.SwitchBattleHeroRequest parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }
    public static pb.xiugou.x1.protobuf.battle.Battle.SwitchBattleHeroRequest parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static pb.xiugou.x1.protobuf.battle.Battle.SwitchBattleHeroRequest parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static pb.xiugou.x1.protobuf.battle.Battle.SwitchBattleHeroRequest parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static pb.xiugou.x1.protobuf.battle.Battle.SwitchBattleHeroRequest parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(pb.xiugou.x1.protobuf.battle.Battle.SwitchBattleHeroRequest prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * <pre>
     *更换出战英雄
     * </pre>
     *
     * Protobuf type {@code pb.SwitchBattleHeroRequest}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:pb.SwitchBattleHeroRequest)
        pb.xiugou.x1.protobuf.battle.Battle.SwitchBattleHeroRequestOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return pb.xiugou.x1.protobuf.battle.Battle.internal_static_pb_SwitchBattleHeroRequest_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return pb.xiugou.x1.protobuf.battle.Battle.internal_static_pb_SwitchBattleHeroRequest_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                pb.xiugou.x1.protobuf.battle.Battle.SwitchBattleHeroRequest.class, pb.xiugou.x1.protobuf.battle.Battle.SwitchBattleHeroRequest.Builder.class);
      }

      // Construct using pb.xiugou.x1.protobuf.battle.Battle.SwitchBattleHeroRequest.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
          getPosListFieldBuilder();
        }
      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        mainHero_ = 0;

        if (posListBuilder_ == null) {
          posList_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000001);
        } else {
          posListBuilder_.clear();
        }
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return pb.xiugou.x1.protobuf.battle.Battle.internal_static_pb_SwitchBattleHeroRequest_descriptor;
      }

      @java.lang.Override
      public pb.xiugou.x1.protobuf.battle.Battle.SwitchBattleHeroRequest getDefaultInstanceForType() {
        return pb.xiugou.x1.protobuf.battle.Battle.SwitchBattleHeroRequest.getDefaultInstance();
      }

      @java.lang.Override
      public pb.xiugou.x1.protobuf.battle.Battle.SwitchBattleHeroRequest build() {
        pb.xiugou.x1.protobuf.battle.Battle.SwitchBattleHeroRequest result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public pb.xiugou.x1.protobuf.battle.Battle.SwitchBattleHeroRequest buildPartial() {
        pb.xiugou.x1.protobuf.battle.Battle.SwitchBattleHeroRequest result = new pb.xiugou.x1.protobuf.battle.Battle.SwitchBattleHeroRequest(this);
        int from_bitField0_ = bitField0_;
        result.mainHero_ = mainHero_;
        if (posListBuilder_ == null) {
          if (((bitField0_ & 0x00000001) != 0)) {
            posList_ = java.util.Collections.unmodifiableList(posList_);
            bitField0_ = (bitField0_ & ~0x00000001);
          }
          result.posList_ = posList_;
        } else {
          result.posList_ = posListBuilder_.build();
        }
        onBuilt();
        return result;
      }

      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }
      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.setField(field, value);
      }
      @java.lang.Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @java.lang.Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }
      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof pb.xiugou.x1.protobuf.battle.Battle.SwitchBattleHeroRequest) {
          return mergeFrom((pb.xiugou.x1.protobuf.battle.Battle.SwitchBattleHeroRequest)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(pb.xiugou.x1.protobuf.battle.Battle.SwitchBattleHeroRequest other) {
        if (other == pb.xiugou.x1.protobuf.battle.Battle.SwitchBattleHeroRequest.getDefaultInstance()) return this;
        if (other.getMainHero() != 0) {
          setMainHero(other.getMainHero());
        }
        if (posListBuilder_ == null) {
          if (!other.posList_.isEmpty()) {
            if (posList_.isEmpty()) {
              posList_ = other.posList_;
              bitField0_ = (bitField0_ & ~0x00000001);
            } else {
              ensurePosListIsMutable();
              posList_.addAll(other.posList_);
            }
            onChanged();
          }
        } else {
          if (!other.posList_.isEmpty()) {
            if (posListBuilder_.isEmpty()) {
              posListBuilder_.dispose();
              posListBuilder_ = null;
              posList_ = other.posList_;
              bitField0_ = (bitField0_ & ~0x00000001);
              posListBuilder_ = 
                com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
                   getPosListFieldBuilder() : null;
            } else {
              posListBuilder_.addAllMessages(other.posList_);
            }
          }
        }
        this.mergeUnknownFields(other.unknownFields);
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        pb.xiugou.x1.protobuf.battle.Battle.SwitchBattleHeroRequest parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (pb.xiugou.x1.protobuf.battle.Battle.SwitchBattleHeroRequest) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      private int mainHero_ ;
      /**
       * <pre>
       *对长英雄标识
       * </pre>
       *
       * <code>int32 main_hero = 1;</code>
       * @return The mainHero.
       */
      public int getMainHero() {
        return mainHero_;
      }
      /**
       * <pre>
       *对长英雄标识
       * </pre>
       *
       * <code>int32 main_hero = 1;</code>
       * @param value The mainHero to set.
       * @return This builder for chaining.
       */
      public Builder setMainHero(int value) {
        
        mainHero_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       *对长英雄标识
       * </pre>
       *
       * <code>int32 main_hero = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearMainHero() {
        
        mainHero_ = 0;
        onChanged();
        return this;
      }

      private java.util.List<pb.xiugou.x1.protobuf.formation.Formation.PbFormationPos> posList_ =
        java.util.Collections.emptyList();
      private void ensurePosListIsMutable() {
        if (!((bitField0_ & 0x00000001) != 0)) {
          posList_ = new java.util.ArrayList<pb.xiugou.x1.protobuf.formation.Formation.PbFormationPos>(posList_);
          bitField0_ |= 0x00000001;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilderV3<
          pb.xiugou.x1.protobuf.formation.Formation.PbFormationPos, pb.xiugou.x1.protobuf.formation.Formation.PbFormationPos.Builder, pb.xiugou.x1.protobuf.formation.Formation.PbFormationPosOrBuilder> posListBuilder_;

      /**
       * <pre>
       *出战英雄站位列表，位置从1开始
       * </pre>
       *
       * <code>repeated .pb.PbFormationPos pos_list = 2;</code>
       */
      public java.util.List<pb.xiugou.x1.protobuf.formation.Formation.PbFormationPos> getPosListList() {
        if (posListBuilder_ == null) {
          return java.util.Collections.unmodifiableList(posList_);
        } else {
          return posListBuilder_.getMessageList();
        }
      }
      /**
       * <pre>
       *出战英雄站位列表，位置从1开始
       * </pre>
       *
       * <code>repeated .pb.PbFormationPos pos_list = 2;</code>
       */
      public int getPosListCount() {
        if (posListBuilder_ == null) {
          return posList_.size();
        } else {
          return posListBuilder_.getCount();
        }
      }
      /**
       * <pre>
       *出战英雄站位列表，位置从1开始
       * </pre>
       *
       * <code>repeated .pb.PbFormationPos pos_list = 2;</code>
       */
      public pb.xiugou.x1.protobuf.formation.Formation.PbFormationPos getPosList(int index) {
        if (posListBuilder_ == null) {
          return posList_.get(index);
        } else {
          return posListBuilder_.getMessage(index);
        }
      }
      /**
       * <pre>
       *出战英雄站位列表，位置从1开始
       * </pre>
       *
       * <code>repeated .pb.PbFormationPos pos_list = 2;</code>
       */
      public Builder setPosList(
          int index, pb.xiugou.x1.protobuf.formation.Formation.PbFormationPos value) {
        if (posListBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensurePosListIsMutable();
          posList_.set(index, value);
          onChanged();
        } else {
          posListBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * <pre>
       *出战英雄站位列表，位置从1开始
       * </pre>
       *
       * <code>repeated .pb.PbFormationPos pos_list = 2;</code>
       */
      public Builder setPosList(
          int index, pb.xiugou.x1.protobuf.formation.Formation.PbFormationPos.Builder builderForValue) {
        if (posListBuilder_ == null) {
          ensurePosListIsMutable();
          posList_.set(index, builderForValue.build());
          onChanged();
        } else {
          posListBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       *出战英雄站位列表，位置从1开始
       * </pre>
       *
       * <code>repeated .pb.PbFormationPos pos_list = 2;</code>
       */
      public Builder addPosList(pb.xiugou.x1.protobuf.formation.Formation.PbFormationPos value) {
        if (posListBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensurePosListIsMutable();
          posList_.add(value);
          onChanged();
        } else {
          posListBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * <pre>
       *出战英雄站位列表，位置从1开始
       * </pre>
       *
       * <code>repeated .pb.PbFormationPos pos_list = 2;</code>
       */
      public Builder addPosList(
          int index, pb.xiugou.x1.protobuf.formation.Formation.PbFormationPos value) {
        if (posListBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensurePosListIsMutable();
          posList_.add(index, value);
          onChanged();
        } else {
          posListBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * <pre>
       *出战英雄站位列表，位置从1开始
       * </pre>
       *
       * <code>repeated .pb.PbFormationPos pos_list = 2;</code>
       */
      public Builder addPosList(
          pb.xiugou.x1.protobuf.formation.Formation.PbFormationPos.Builder builderForValue) {
        if (posListBuilder_ == null) {
          ensurePosListIsMutable();
          posList_.add(builderForValue.build());
          onChanged();
        } else {
          posListBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       *出战英雄站位列表，位置从1开始
       * </pre>
       *
       * <code>repeated .pb.PbFormationPos pos_list = 2;</code>
       */
      public Builder addPosList(
          int index, pb.xiugou.x1.protobuf.formation.Formation.PbFormationPos.Builder builderForValue) {
        if (posListBuilder_ == null) {
          ensurePosListIsMutable();
          posList_.add(index, builderForValue.build());
          onChanged();
        } else {
          posListBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       *出战英雄站位列表，位置从1开始
       * </pre>
       *
       * <code>repeated .pb.PbFormationPos pos_list = 2;</code>
       */
      public Builder addAllPosList(
          java.lang.Iterable<? extends pb.xiugou.x1.protobuf.formation.Formation.PbFormationPos> values) {
        if (posListBuilder_ == null) {
          ensurePosListIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, posList_);
          onChanged();
        } else {
          posListBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * <pre>
       *出战英雄站位列表，位置从1开始
       * </pre>
       *
       * <code>repeated .pb.PbFormationPos pos_list = 2;</code>
       */
      public Builder clearPosList() {
        if (posListBuilder_ == null) {
          posList_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000001);
          onChanged();
        } else {
          posListBuilder_.clear();
        }
        return this;
      }
      /**
       * <pre>
       *出战英雄站位列表，位置从1开始
       * </pre>
       *
       * <code>repeated .pb.PbFormationPos pos_list = 2;</code>
       */
      public Builder removePosList(int index) {
        if (posListBuilder_ == null) {
          ensurePosListIsMutable();
          posList_.remove(index);
          onChanged();
        } else {
          posListBuilder_.remove(index);
        }
        return this;
      }
      /**
       * <pre>
       *出战英雄站位列表，位置从1开始
       * </pre>
       *
       * <code>repeated .pb.PbFormationPos pos_list = 2;</code>
       */
      public pb.xiugou.x1.protobuf.formation.Formation.PbFormationPos.Builder getPosListBuilder(
          int index) {
        return getPosListFieldBuilder().getBuilder(index);
      }
      /**
       * <pre>
       *出战英雄站位列表，位置从1开始
       * </pre>
       *
       * <code>repeated .pb.PbFormationPos pos_list = 2;</code>
       */
      public pb.xiugou.x1.protobuf.formation.Formation.PbFormationPosOrBuilder getPosListOrBuilder(
          int index) {
        if (posListBuilder_ == null) {
          return posList_.get(index);  } else {
          return posListBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * <pre>
       *出战英雄站位列表，位置从1开始
       * </pre>
       *
       * <code>repeated .pb.PbFormationPos pos_list = 2;</code>
       */
      public java.util.List<? extends pb.xiugou.x1.protobuf.formation.Formation.PbFormationPosOrBuilder> 
           getPosListOrBuilderList() {
        if (posListBuilder_ != null) {
          return posListBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(posList_);
        }
      }
      /**
       * <pre>
       *出战英雄站位列表，位置从1开始
       * </pre>
       *
       * <code>repeated .pb.PbFormationPos pos_list = 2;</code>
       */
      public pb.xiugou.x1.protobuf.formation.Formation.PbFormationPos.Builder addPosListBuilder() {
        return getPosListFieldBuilder().addBuilder(
            pb.xiugou.x1.protobuf.formation.Formation.PbFormationPos.getDefaultInstance());
      }
      /**
       * <pre>
       *出战英雄站位列表，位置从1开始
       * </pre>
       *
       * <code>repeated .pb.PbFormationPos pos_list = 2;</code>
       */
      public pb.xiugou.x1.protobuf.formation.Formation.PbFormationPos.Builder addPosListBuilder(
          int index) {
        return getPosListFieldBuilder().addBuilder(
            index, pb.xiugou.x1.protobuf.formation.Formation.PbFormationPos.getDefaultInstance());
      }
      /**
       * <pre>
       *出战英雄站位列表，位置从1开始
       * </pre>
       *
       * <code>repeated .pb.PbFormationPos pos_list = 2;</code>
       */
      public java.util.List<pb.xiugou.x1.protobuf.formation.Formation.PbFormationPos.Builder> 
           getPosListBuilderList() {
        return getPosListFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilderV3<
          pb.xiugou.x1.protobuf.formation.Formation.PbFormationPos, pb.xiugou.x1.protobuf.formation.Formation.PbFormationPos.Builder, pb.xiugou.x1.protobuf.formation.Formation.PbFormationPosOrBuilder> 
          getPosListFieldBuilder() {
        if (posListBuilder_ == null) {
          posListBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
              pb.xiugou.x1.protobuf.formation.Formation.PbFormationPos, pb.xiugou.x1.protobuf.formation.Formation.PbFormationPos.Builder, pb.xiugou.x1.protobuf.formation.Formation.PbFormationPosOrBuilder>(
                  posList_,
                  ((bitField0_ & 0x00000001) != 0),
                  getParentForChildren(),
                  isClean());
          posList_ = null;
        }
        return posListBuilder_;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

      @java.lang.Override
      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.mergeUnknownFields(unknownFields);
      }


      // @@protoc_insertion_point(builder_scope:pb.SwitchBattleHeroRequest)
    }

    // @@protoc_insertion_point(class_scope:pb.SwitchBattleHeroRequest)
    private static final pb.xiugou.x1.protobuf.battle.Battle.SwitchBattleHeroRequest DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new pb.xiugou.x1.protobuf.battle.Battle.SwitchBattleHeroRequest();
    }

    public static pb.xiugou.x1.protobuf.battle.Battle.SwitchBattleHeroRequest getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<SwitchBattleHeroRequest>
        PARSER = new com.google.protobuf.AbstractParser<SwitchBattleHeroRequest>() {
      @java.lang.Override
      public SwitchBattleHeroRequest parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return new SwitchBattleHeroRequest(input, extensionRegistry);
      }
    };

    public static com.google.protobuf.Parser<SwitchBattleHeroRequest> parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser<SwitchBattleHeroRequest> getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public pb.xiugou.x1.protobuf.battle.Battle.SwitchBattleHeroRequest getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface SwitchBattleHeroResponseOrBuilder extends
      // @@protoc_insertion_point(interface_extends:pb.SwitchBattleHeroResponse)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     *出战英雄
     * </pre>
     *
     * <code>repeated .pb.PbSprite heroes = 1;</code>
     */
    java.util.List<pb.xiugou.x1.protobuf.battle.Battle.PbSprite> 
        getHeroesList();
    /**
     * <pre>
     *出战英雄
     * </pre>
     *
     * <code>repeated .pb.PbSprite heroes = 1;</code>
     */
    pb.xiugou.x1.protobuf.battle.Battle.PbSprite getHeroes(int index);
    /**
     * <pre>
     *出战英雄
     * </pre>
     *
     * <code>repeated .pb.PbSprite heroes = 1;</code>
     */
    int getHeroesCount();
    /**
     * <pre>
     *出战英雄
     * </pre>
     *
     * <code>repeated .pb.PbSprite heroes = 1;</code>
     */
    java.util.List<? extends pb.xiugou.x1.protobuf.battle.Battle.PbSpriteOrBuilder> 
        getHeroesOrBuilderList();
    /**
     * <pre>
     *出战英雄
     * </pre>
     *
     * <code>repeated .pb.PbSprite heroes = 1;</code>
     */
    pb.xiugou.x1.protobuf.battle.Battle.PbSpriteOrBuilder getHeroesOrBuilder(
        int index);

    /**
     * <pre>
     *对长英雄标识
     * </pre>
     *
     * <code>int32 main_hero = 2;</code>
     * @return The mainHero.
     */
    int getMainHero();
  }
  /**
   * Protobuf type {@code pb.SwitchBattleHeroResponse}
   */
  public  static final class SwitchBattleHeroResponse extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:pb.SwitchBattleHeroResponse)
      SwitchBattleHeroResponseOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use SwitchBattleHeroResponse.newBuilder() to construct.
    private SwitchBattleHeroResponse(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private SwitchBattleHeroResponse() {
      heroes_ = java.util.Collections.emptyList();
    }

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new SwitchBattleHeroResponse();
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private SwitchBattleHeroResponse(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      if (extensionRegistry == null) {
        throw new java.lang.NullPointerException();
      }
      int mutable_bitField0_ = 0;
      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder();
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            case 10: {
              if (!((mutable_bitField0_ & 0x00000001) != 0)) {
                heroes_ = new java.util.ArrayList<pb.xiugou.x1.protobuf.battle.Battle.PbSprite>();
                mutable_bitField0_ |= 0x00000001;
              }
              heroes_.add(
                  input.readMessage(pb.xiugou.x1.protobuf.battle.Battle.PbSprite.parser(), extensionRegistry));
              break;
            }
            case 16: {

              mainHero_ = input.readInt32();
              break;
            }
            default: {
              if (!parseUnknownField(
                  input, unknownFields, extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e).setUnfinishedMessage(this);
      } finally {
        if (((mutable_bitField0_ & 0x00000001) != 0)) {
          heroes_ = java.util.Collections.unmodifiableList(heroes_);
        }
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return pb.xiugou.x1.protobuf.battle.Battle.internal_static_pb_SwitchBattleHeroResponse_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return pb.xiugou.x1.protobuf.battle.Battle.internal_static_pb_SwitchBattleHeroResponse_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              pb.xiugou.x1.protobuf.battle.Battle.SwitchBattleHeroResponse.class, pb.xiugou.x1.protobuf.battle.Battle.SwitchBattleHeroResponse.Builder.class);
    }

    /**
     * Protobuf enum {@code pb.SwitchBattleHeroResponse.Proto}
     */
    public enum Proto
        implements com.google.protobuf.ProtocolMessageEnum {
      /**
       * <code>UNKNOWN = 0;</code>
       */
      UNKNOWN(0),
      /**
       * <code>ID = 300101;</code>
       */
      ID(300101),
      UNRECOGNIZED(-1),
      ;

      /**
       * <code>UNKNOWN = 0;</code>
       */
      public static final int UNKNOWN_VALUE = 0;
      /**
       * <code>ID = 300101;</code>
       */
      public static final int ID_VALUE = 300101;


      public final int getNumber() {
        if (this == UNRECOGNIZED) {
          throw new java.lang.IllegalArgumentException(
              "Can't get the number of an unknown enum value.");
        }
        return value;
      }

      /**
       * @param value The numeric wire value of the corresponding enum entry.
       * @return The enum associated with the given numeric wire value.
       * @deprecated Use {@link #forNumber(int)} instead.
       */
      @java.lang.Deprecated
      public static Proto valueOf(int value) {
        return forNumber(value);
      }

      /**
       * @param value The numeric wire value of the corresponding enum entry.
       * @return The enum associated with the given numeric wire value.
       */
      public static Proto forNumber(int value) {
        switch (value) {
          case 0: return UNKNOWN;
          case 300101: return ID;
          default: return null;
        }
      }

      public static com.google.protobuf.Internal.EnumLiteMap<Proto>
          internalGetValueMap() {
        return internalValueMap;
      }
      private static final com.google.protobuf.Internal.EnumLiteMap<
          Proto> internalValueMap =
            new com.google.protobuf.Internal.EnumLiteMap<Proto>() {
              public Proto findValueByNumber(int number) {
                return Proto.forNumber(number);
              }
            };

      public final com.google.protobuf.Descriptors.EnumValueDescriptor
          getValueDescriptor() {
        return getDescriptor().getValues().get(ordinal());
      }
      public final com.google.protobuf.Descriptors.EnumDescriptor
          getDescriptorForType() {
        return getDescriptor();
      }
      public static final com.google.protobuf.Descriptors.EnumDescriptor
          getDescriptor() {
        return pb.xiugou.x1.protobuf.battle.Battle.SwitchBattleHeroResponse.getDescriptor().getEnumTypes().get(0);
      }

      private static final Proto[] VALUES = values();

      public static Proto valueOf(
          com.google.protobuf.Descriptors.EnumValueDescriptor desc) {
        if (desc.getType() != getDescriptor()) {
          throw new java.lang.IllegalArgumentException(
            "EnumValueDescriptor is not for this type.");
        }
        if (desc.getIndex() == -1) {
          return UNRECOGNIZED;
        }
        return VALUES[desc.getIndex()];
      }

      private final int value;

      private Proto(int value) {
        this.value = value;
      }

      // @@protoc_insertion_point(enum_scope:pb.SwitchBattleHeroResponse.Proto)
    }

    public static final int HEROES_FIELD_NUMBER = 1;
    private java.util.List<pb.xiugou.x1.protobuf.battle.Battle.PbSprite> heroes_;
    /**
     * <pre>
     *出战英雄
     * </pre>
     *
     * <code>repeated .pb.PbSprite heroes = 1;</code>
     */
    public java.util.List<pb.xiugou.x1.protobuf.battle.Battle.PbSprite> getHeroesList() {
      return heroes_;
    }
    /**
     * <pre>
     *出战英雄
     * </pre>
     *
     * <code>repeated .pb.PbSprite heroes = 1;</code>
     */
    public java.util.List<? extends pb.xiugou.x1.protobuf.battle.Battle.PbSpriteOrBuilder> 
        getHeroesOrBuilderList() {
      return heroes_;
    }
    /**
     * <pre>
     *出战英雄
     * </pre>
     *
     * <code>repeated .pb.PbSprite heroes = 1;</code>
     */
    public int getHeroesCount() {
      return heroes_.size();
    }
    /**
     * <pre>
     *出战英雄
     * </pre>
     *
     * <code>repeated .pb.PbSprite heroes = 1;</code>
     */
    public pb.xiugou.x1.protobuf.battle.Battle.PbSprite getHeroes(int index) {
      return heroes_.get(index);
    }
    /**
     * <pre>
     *出战英雄
     * </pre>
     *
     * <code>repeated .pb.PbSprite heroes = 1;</code>
     */
    public pb.xiugou.x1.protobuf.battle.Battle.PbSpriteOrBuilder getHeroesOrBuilder(
        int index) {
      return heroes_.get(index);
    }

    public static final int MAIN_HERO_FIELD_NUMBER = 2;
    private int mainHero_;
    /**
     * <pre>
     *对长英雄标识
     * </pre>
     *
     * <code>int32 main_hero = 2;</code>
     * @return The mainHero.
     */
    public int getMainHero() {
      return mainHero_;
    }

    private byte memoizedIsInitialized = -1;
    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      for (int i = 0; i < heroes_.size(); i++) {
        output.writeMessage(1, heroes_.get(i));
      }
      if (mainHero_ != 0) {
        output.writeInt32(2, mainHero_);
      }
      unknownFields.writeTo(output);
    }

    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      for (int i = 0; i < heroes_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(1, heroes_.get(i));
      }
      if (mainHero_ != 0) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt32Size(2, mainHero_);
      }
      size += unknownFields.getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof pb.xiugou.x1.protobuf.battle.Battle.SwitchBattleHeroResponse)) {
        return super.equals(obj);
      }
      pb.xiugou.x1.protobuf.battle.Battle.SwitchBattleHeroResponse other = (pb.xiugou.x1.protobuf.battle.Battle.SwitchBattleHeroResponse) obj;

      if (!getHeroesList()
          .equals(other.getHeroesList())) return false;
      if (getMainHero()
          != other.getMainHero()) return false;
      if (!unknownFields.equals(other.unknownFields)) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      if (getHeroesCount() > 0) {
        hash = (37 * hash) + HEROES_FIELD_NUMBER;
        hash = (53 * hash) + getHeroesList().hashCode();
      }
      hash = (37 * hash) + MAIN_HERO_FIELD_NUMBER;
      hash = (53 * hash) + getMainHero();
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static pb.xiugou.x1.protobuf.battle.Battle.SwitchBattleHeroResponse parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static pb.xiugou.x1.protobuf.battle.Battle.SwitchBattleHeroResponse parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static pb.xiugou.x1.protobuf.battle.Battle.SwitchBattleHeroResponse parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static pb.xiugou.x1.protobuf.battle.Battle.SwitchBattleHeroResponse parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static pb.xiugou.x1.protobuf.battle.Battle.SwitchBattleHeroResponse parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static pb.xiugou.x1.protobuf.battle.Battle.SwitchBattleHeroResponse parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static pb.xiugou.x1.protobuf.battle.Battle.SwitchBattleHeroResponse parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static pb.xiugou.x1.protobuf.battle.Battle.SwitchBattleHeroResponse parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }
    public static pb.xiugou.x1.protobuf.battle.Battle.SwitchBattleHeroResponse parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static pb.xiugou.x1.protobuf.battle.Battle.SwitchBattleHeroResponse parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static pb.xiugou.x1.protobuf.battle.Battle.SwitchBattleHeroResponse parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static pb.xiugou.x1.protobuf.battle.Battle.SwitchBattleHeroResponse parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(pb.xiugou.x1.protobuf.battle.Battle.SwitchBattleHeroResponse prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code pb.SwitchBattleHeroResponse}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:pb.SwitchBattleHeroResponse)
        pb.xiugou.x1.protobuf.battle.Battle.SwitchBattleHeroResponseOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return pb.xiugou.x1.protobuf.battle.Battle.internal_static_pb_SwitchBattleHeroResponse_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return pb.xiugou.x1.protobuf.battle.Battle.internal_static_pb_SwitchBattleHeroResponse_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                pb.xiugou.x1.protobuf.battle.Battle.SwitchBattleHeroResponse.class, pb.xiugou.x1.protobuf.battle.Battle.SwitchBattleHeroResponse.Builder.class);
      }

      // Construct using pb.xiugou.x1.protobuf.battle.Battle.SwitchBattleHeroResponse.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
          getHeroesFieldBuilder();
        }
      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        if (heroesBuilder_ == null) {
          heroes_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000001);
        } else {
          heroesBuilder_.clear();
        }
        mainHero_ = 0;

        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return pb.xiugou.x1.protobuf.battle.Battle.internal_static_pb_SwitchBattleHeroResponse_descriptor;
      }

      @java.lang.Override
      public pb.xiugou.x1.protobuf.battle.Battle.SwitchBattleHeroResponse getDefaultInstanceForType() {
        return pb.xiugou.x1.protobuf.battle.Battle.SwitchBattleHeroResponse.getDefaultInstance();
      }

      @java.lang.Override
      public pb.xiugou.x1.protobuf.battle.Battle.SwitchBattleHeroResponse build() {
        pb.xiugou.x1.protobuf.battle.Battle.SwitchBattleHeroResponse result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public pb.xiugou.x1.protobuf.battle.Battle.SwitchBattleHeroResponse buildPartial() {
        pb.xiugou.x1.protobuf.battle.Battle.SwitchBattleHeroResponse result = new pb.xiugou.x1.protobuf.battle.Battle.SwitchBattleHeroResponse(this);
        int from_bitField0_ = bitField0_;
        if (heroesBuilder_ == null) {
          if (((bitField0_ & 0x00000001) != 0)) {
            heroes_ = java.util.Collections.unmodifiableList(heroes_);
            bitField0_ = (bitField0_ & ~0x00000001);
          }
          result.heroes_ = heroes_;
        } else {
          result.heroes_ = heroesBuilder_.build();
        }
        result.mainHero_ = mainHero_;
        onBuilt();
        return result;
      }

      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }
      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.setField(field, value);
      }
      @java.lang.Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @java.lang.Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }
      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof pb.xiugou.x1.protobuf.battle.Battle.SwitchBattleHeroResponse) {
          return mergeFrom((pb.xiugou.x1.protobuf.battle.Battle.SwitchBattleHeroResponse)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(pb.xiugou.x1.protobuf.battle.Battle.SwitchBattleHeroResponse other) {
        if (other == pb.xiugou.x1.protobuf.battle.Battle.SwitchBattleHeroResponse.getDefaultInstance()) return this;
        if (heroesBuilder_ == null) {
          if (!other.heroes_.isEmpty()) {
            if (heroes_.isEmpty()) {
              heroes_ = other.heroes_;
              bitField0_ = (bitField0_ & ~0x00000001);
            } else {
              ensureHeroesIsMutable();
              heroes_.addAll(other.heroes_);
            }
            onChanged();
          }
        } else {
          if (!other.heroes_.isEmpty()) {
            if (heroesBuilder_.isEmpty()) {
              heroesBuilder_.dispose();
              heroesBuilder_ = null;
              heroes_ = other.heroes_;
              bitField0_ = (bitField0_ & ~0x00000001);
              heroesBuilder_ = 
                com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
                   getHeroesFieldBuilder() : null;
            } else {
              heroesBuilder_.addAllMessages(other.heroes_);
            }
          }
        }
        if (other.getMainHero() != 0) {
          setMainHero(other.getMainHero());
        }
        this.mergeUnknownFields(other.unknownFields);
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        pb.xiugou.x1.protobuf.battle.Battle.SwitchBattleHeroResponse parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (pb.xiugou.x1.protobuf.battle.Battle.SwitchBattleHeroResponse) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      private java.util.List<pb.xiugou.x1.protobuf.battle.Battle.PbSprite> heroes_ =
        java.util.Collections.emptyList();
      private void ensureHeroesIsMutable() {
        if (!((bitField0_ & 0x00000001) != 0)) {
          heroes_ = new java.util.ArrayList<pb.xiugou.x1.protobuf.battle.Battle.PbSprite>(heroes_);
          bitField0_ |= 0x00000001;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilderV3<
          pb.xiugou.x1.protobuf.battle.Battle.PbSprite, pb.xiugou.x1.protobuf.battle.Battle.PbSprite.Builder, pb.xiugou.x1.protobuf.battle.Battle.PbSpriteOrBuilder> heroesBuilder_;

      /**
       * <pre>
       *出战英雄
       * </pre>
       *
       * <code>repeated .pb.PbSprite heroes = 1;</code>
       */
      public java.util.List<pb.xiugou.x1.protobuf.battle.Battle.PbSprite> getHeroesList() {
        if (heroesBuilder_ == null) {
          return java.util.Collections.unmodifiableList(heroes_);
        } else {
          return heroesBuilder_.getMessageList();
        }
      }
      /**
       * <pre>
       *出战英雄
       * </pre>
       *
       * <code>repeated .pb.PbSprite heroes = 1;</code>
       */
      public int getHeroesCount() {
        if (heroesBuilder_ == null) {
          return heroes_.size();
        } else {
          return heroesBuilder_.getCount();
        }
      }
      /**
       * <pre>
       *出战英雄
       * </pre>
       *
       * <code>repeated .pb.PbSprite heroes = 1;</code>
       */
      public pb.xiugou.x1.protobuf.battle.Battle.PbSprite getHeroes(int index) {
        if (heroesBuilder_ == null) {
          return heroes_.get(index);
        } else {
          return heroesBuilder_.getMessage(index);
        }
      }
      /**
       * <pre>
       *出战英雄
       * </pre>
       *
       * <code>repeated .pb.PbSprite heroes = 1;</code>
       */
      public Builder setHeroes(
          int index, pb.xiugou.x1.protobuf.battle.Battle.PbSprite value) {
        if (heroesBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureHeroesIsMutable();
          heroes_.set(index, value);
          onChanged();
        } else {
          heroesBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * <pre>
       *出战英雄
       * </pre>
       *
       * <code>repeated .pb.PbSprite heroes = 1;</code>
       */
      public Builder setHeroes(
          int index, pb.xiugou.x1.protobuf.battle.Battle.PbSprite.Builder builderForValue) {
        if (heroesBuilder_ == null) {
          ensureHeroesIsMutable();
          heroes_.set(index, builderForValue.build());
          onChanged();
        } else {
          heroesBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       *出战英雄
       * </pre>
       *
       * <code>repeated .pb.PbSprite heroes = 1;</code>
       */
      public Builder addHeroes(pb.xiugou.x1.protobuf.battle.Battle.PbSprite value) {
        if (heroesBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureHeroesIsMutable();
          heroes_.add(value);
          onChanged();
        } else {
          heroesBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * <pre>
       *出战英雄
       * </pre>
       *
       * <code>repeated .pb.PbSprite heroes = 1;</code>
       */
      public Builder addHeroes(
          int index, pb.xiugou.x1.protobuf.battle.Battle.PbSprite value) {
        if (heroesBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureHeroesIsMutable();
          heroes_.add(index, value);
          onChanged();
        } else {
          heroesBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * <pre>
       *出战英雄
       * </pre>
       *
       * <code>repeated .pb.PbSprite heroes = 1;</code>
       */
      public Builder addHeroes(
          pb.xiugou.x1.protobuf.battle.Battle.PbSprite.Builder builderForValue) {
        if (heroesBuilder_ == null) {
          ensureHeroesIsMutable();
          heroes_.add(builderForValue.build());
          onChanged();
        } else {
          heroesBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       *出战英雄
       * </pre>
       *
       * <code>repeated .pb.PbSprite heroes = 1;</code>
       */
      public Builder addHeroes(
          int index, pb.xiugou.x1.protobuf.battle.Battle.PbSprite.Builder builderForValue) {
        if (heroesBuilder_ == null) {
          ensureHeroesIsMutable();
          heroes_.add(index, builderForValue.build());
          onChanged();
        } else {
          heroesBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       *出战英雄
       * </pre>
       *
       * <code>repeated .pb.PbSprite heroes = 1;</code>
       */
      public Builder addAllHeroes(
          java.lang.Iterable<? extends pb.xiugou.x1.protobuf.battle.Battle.PbSprite> values) {
        if (heroesBuilder_ == null) {
          ensureHeroesIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, heroes_);
          onChanged();
        } else {
          heroesBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * <pre>
       *出战英雄
       * </pre>
       *
       * <code>repeated .pb.PbSprite heroes = 1;</code>
       */
      public Builder clearHeroes() {
        if (heroesBuilder_ == null) {
          heroes_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000001);
          onChanged();
        } else {
          heroesBuilder_.clear();
        }
        return this;
      }
      /**
       * <pre>
       *出战英雄
       * </pre>
       *
       * <code>repeated .pb.PbSprite heroes = 1;</code>
       */
      public Builder removeHeroes(int index) {
        if (heroesBuilder_ == null) {
          ensureHeroesIsMutable();
          heroes_.remove(index);
          onChanged();
        } else {
          heroesBuilder_.remove(index);
        }
        return this;
      }
      /**
       * <pre>
       *出战英雄
       * </pre>
       *
       * <code>repeated .pb.PbSprite heroes = 1;</code>
       */
      public pb.xiugou.x1.protobuf.battle.Battle.PbSprite.Builder getHeroesBuilder(
          int index) {
        return getHeroesFieldBuilder().getBuilder(index);
      }
      /**
       * <pre>
       *出战英雄
       * </pre>
       *
       * <code>repeated .pb.PbSprite heroes = 1;</code>
       */
      public pb.xiugou.x1.protobuf.battle.Battle.PbSpriteOrBuilder getHeroesOrBuilder(
          int index) {
        if (heroesBuilder_ == null) {
          return heroes_.get(index);  } else {
          return heroesBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * <pre>
       *出战英雄
       * </pre>
       *
       * <code>repeated .pb.PbSprite heroes = 1;</code>
       */
      public java.util.List<? extends pb.xiugou.x1.protobuf.battle.Battle.PbSpriteOrBuilder> 
           getHeroesOrBuilderList() {
        if (heroesBuilder_ != null) {
          return heroesBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(heroes_);
        }
      }
      /**
       * <pre>
       *出战英雄
       * </pre>
       *
       * <code>repeated .pb.PbSprite heroes = 1;</code>
       */
      public pb.xiugou.x1.protobuf.battle.Battle.PbSprite.Builder addHeroesBuilder() {
        return getHeroesFieldBuilder().addBuilder(
            pb.xiugou.x1.protobuf.battle.Battle.PbSprite.getDefaultInstance());
      }
      /**
       * <pre>
       *出战英雄
       * </pre>
       *
       * <code>repeated .pb.PbSprite heroes = 1;</code>
       */
      public pb.xiugou.x1.protobuf.battle.Battle.PbSprite.Builder addHeroesBuilder(
          int index) {
        return getHeroesFieldBuilder().addBuilder(
            index, pb.xiugou.x1.protobuf.battle.Battle.PbSprite.getDefaultInstance());
      }
      /**
       * <pre>
       *出战英雄
       * </pre>
       *
       * <code>repeated .pb.PbSprite heroes = 1;</code>
       */
      public java.util.List<pb.xiugou.x1.protobuf.battle.Battle.PbSprite.Builder> 
           getHeroesBuilderList() {
        return getHeroesFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilderV3<
          pb.xiugou.x1.protobuf.battle.Battle.PbSprite, pb.xiugou.x1.protobuf.battle.Battle.PbSprite.Builder, pb.xiugou.x1.protobuf.battle.Battle.PbSpriteOrBuilder> 
          getHeroesFieldBuilder() {
        if (heroesBuilder_ == null) {
          heroesBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
              pb.xiugou.x1.protobuf.battle.Battle.PbSprite, pb.xiugou.x1.protobuf.battle.Battle.PbSprite.Builder, pb.xiugou.x1.protobuf.battle.Battle.PbSpriteOrBuilder>(
                  heroes_,
                  ((bitField0_ & 0x00000001) != 0),
                  getParentForChildren(),
                  isClean());
          heroes_ = null;
        }
        return heroesBuilder_;
      }

      private int mainHero_ ;
      /**
       * <pre>
       *对长英雄标识
       * </pre>
       *
       * <code>int32 main_hero = 2;</code>
       * @return The mainHero.
       */
      public int getMainHero() {
        return mainHero_;
      }
      /**
       * <pre>
       *对长英雄标识
       * </pre>
       *
       * <code>int32 main_hero = 2;</code>
       * @param value The mainHero to set.
       * @return This builder for chaining.
       */
      public Builder setMainHero(int value) {
        
        mainHero_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       *对长英雄标识
       * </pre>
       *
       * <code>int32 main_hero = 2;</code>
       * @return This builder for chaining.
       */
      public Builder clearMainHero() {
        
        mainHero_ = 0;
        onChanged();
        return this;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

      @java.lang.Override
      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.mergeUnknownFields(unknownFields);
      }


      // @@protoc_insertion_point(builder_scope:pb.SwitchBattleHeroResponse)
    }

    // @@protoc_insertion_point(class_scope:pb.SwitchBattleHeroResponse)
    private static final pb.xiugou.x1.protobuf.battle.Battle.SwitchBattleHeroResponse DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new pb.xiugou.x1.protobuf.battle.Battle.SwitchBattleHeroResponse();
    }

    public static pb.xiugou.x1.protobuf.battle.Battle.SwitchBattleHeroResponse getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<SwitchBattleHeroResponse>
        PARSER = new com.google.protobuf.AbstractParser<SwitchBattleHeroResponse>() {
      @java.lang.Override
      public SwitchBattleHeroResponse parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return new SwitchBattleHeroResponse(input, extensionRegistry);
      }
    };

    public static com.google.protobuf.Parser<SwitchBattleHeroResponse> parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser<SwitchBattleHeroResponse> getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public pb.xiugou.x1.protobuf.battle.Battle.SwitchBattleHeroResponse getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface PbTreasureEventOrBuilder extends
      // @@protoc_insertion_point(interface_extends:pb.PbTreasureEvent)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     *资源ID
     * </pre>
     *
     * <code>int32 item_id = 1;</code>
     * @return The itemId.
     */
    int getItemId();

    /**
     * <pre>
     *资源数量
     * </pre>
     *
     * <code>int64 num = 2;</code>
     * @return The num.
     */
    long getNum();

    /**
     * <pre>
     *升级后的资源ID
     * </pre>
     *
     * <code>int32 up_item_id = 3;</code>
     * @return The upItemId.
     */
    int getUpItemId();

    /**
     * <pre>
     *升级后的资源数量
     * </pre>
     *
     * <code>int64 up_num = 4;</code>
     * @return The upNum.
     */
    long getUpNum();

    /**
     * <pre>
     *宝箱消失时间
     * </pre>
     *
     * <code>int64 disappear_time = 5;</code>
     * @return The disappearTime.
     */
    long getDisappearTime();
  }
  /**
   * Protobuf type {@code pb.PbTreasureEvent}
   */
  public  static final class PbTreasureEvent extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:pb.PbTreasureEvent)
      PbTreasureEventOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use PbTreasureEvent.newBuilder() to construct.
    private PbTreasureEvent(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private PbTreasureEvent() {
    }

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new PbTreasureEvent();
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private PbTreasureEvent(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      if (extensionRegistry == null) {
        throw new java.lang.NullPointerException();
      }
      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder();
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            case 8: {

              itemId_ = input.readInt32();
              break;
            }
            case 16: {

              num_ = input.readInt64();
              break;
            }
            case 24: {

              upItemId_ = input.readInt32();
              break;
            }
            case 32: {

              upNum_ = input.readInt64();
              break;
            }
            case 40: {

              disappearTime_ = input.readInt64();
              break;
            }
            default: {
              if (!parseUnknownField(
                  input, unknownFields, extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e).setUnfinishedMessage(this);
      } finally {
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return pb.xiugou.x1.protobuf.battle.Battle.internal_static_pb_PbTreasureEvent_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return pb.xiugou.x1.protobuf.battle.Battle.internal_static_pb_PbTreasureEvent_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              pb.xiugou.x1.protobuf.battle.Battle.PbTreasureEvent.class, pb.xiugou.x1.protobuf.battle.Battle.PbTreasureEvent.Builder.class);
    }

    public static final int ITEM_ID_FIELD_NUMBER = 1;
    private int itemId_;
    /**
     * <pre>
     *资源ID
     * </pre>
     *
     * <code>int32 item_id = 1;</code>
     * @return The itemId.
     */
    public int getItemId() {
      return itemId_;
    }

    public static final int NUM_FIELD_NUMBER = 2;
    private long num_;
    /**
     * <pre>
     *资源数量
     * </pre>
     *
     * <code>int64 num = 2;</code>
     * @return The num.
     */
    public long getNum() {
      return num_;
    }

    public static final int UP_ITEM_ID_FIELD_NUMBER = 3;
    private int upItemId_;
    /**
     * <pre>
     *升级后的资源ID
     * </pre>
     *
     * <code>int32 up_item_id = 3;</code>
     * @return The upItemId.
     */
    public int getUpItemId() {
      return upItemId_;
    }

    public static final int UP_NUM_FIELD_NUMBER = 4;
    private long upNum_;
    /**
     * <pre>
     *升级后的资源数量
     * </pre>
     *
     * <code>int64 up_num = 4;</code>
     * @return The upNum.
     */
    public long getUpNum() {
      return upNum_;
    }

    public static final int DISAPPEAR_TIME_FIELD_NUMBER = 5;
    private long disappearTime_;
    /**
     * <pre>
     *宝箱消失时间
     * </pre>
     *
     * <code>int64 disappear_time = 5;</code>
     * @return The disappearTime.
     */
    public long getDisappearTime() {
      return disappearTime_;
    }

    private byte memoizedIsInitialized = -1;
    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (itemId_ != 0) {
        output.writeInt32(1, itemId_);
      }
      if (num_ != 0L) {
        output.writeInt64(2, num_);
      }
      if (upItemId_ != 0) {
        output.writeInt32(3, upItemId_);
      }
      if (upNum_ != 0L) {
        output.writeInt64(4, upNum_);
      }
      if (disappearTime_ != 0L) {
        output.writeInt64(5, disappearTime_);
      }
      unknownFields.writeTo(output);
    }

    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      if (itemId_ != 0) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt32Size(1, itemId_);
      }
      if (num_ != 0L) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt64Size(2, num_);
      }
      if (upItemId_ != 0) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt32Size(3, upItemId_);
      }
      if (upNum_ != 0L) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt64Size(4, upNum_);
      }
      if (disappearTime_ != 0L) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt64Size(5, disappearTime_);
      }
      size += unknownFields.getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof pb.xiugou.x1.protobuf.battle.Battle.PbTreasureEvent)) {
        return super.equals(obj);
      }
      pb.xiugou.x1.protobuf.battle.Battle.PbTreasureEvent other = (pb.xiugou.x1.protobuf.battle.Battle.PbTreasureEvent) obj;

      if (getItemId()
          != other.getItemId()) return false;
      if (getNum()
          != other.getNum()) return false;
      if (getUpItemId()
          != other.getUpItemId()) return false;
      if (getUpNum()
          != other.getUpNum()) return false;
      if (getDisappearTime()
          != other.getDisappearTime()) return false;
      if (!unknownFields.equals(other.unknownFields)) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      hash = (37 * hash) + ITEM_ID_FIELD_NUMBER;
      hash = (53 * hash) + getItemId();
      hash = (37 * hash) + NUM_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
          getNum());
      hash = (37 * hash) + UP_ITEM_ID_FIELD_NUMBER;
      hash = (53 * hash) + getUpItemId();
      hash = (37 * hash) + UP_NUM_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
          getUpNum());
      hash = (37 * hash) + DISAPPEAR_TIME_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
          getDisappearTime());
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static pb.xiugou.x1.protobuf.battle.Battle.PbTreasureEvent parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static pb.xiugou.x1.protobuf.battle.Battle.PbTreasureEvent parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static pb.xiugou.x1.protobuf.battle.Battle.PbTreasureEvent parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static pb.xiugou.x1.protobuf.battle.Battle.PbTreasureEvent parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static pb.xiugou.x1.protobuf.battle.Battle.PbTreasureEvent parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static pb.xiugou.x1.protobuf.battle.Battle.PbTreasureEvent parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static pb.xiugou.x1.protobuf.battle.Battle.PbTreasureEvent parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static pb.xiugou.x1.protobuf.battle.Battle.PbTreasureEvent parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }
    public static pb.xiugou.x1.protobuf.battle.Battle.PbTreasureEvent parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static pb.xiugou.x1.protobuf.battle.Battle.PbTreasureEvent parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static pb.xiugou.x1.protobuf.battle.Battle.PbTreasureEvent parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static pb.xiugou.x1.protobuf.battle.Battle.PbTreasureEvent parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(pb.xiugou.x1.protobuf.battle.Battle.PbTreasureEvent prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code pb.PbTreasureEvent}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:pb.PbTreasureEvent)
        pb.xiugou.x1.protobuf.battle.Battle.PbTreasureEventOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return pb.xiugou.x1.protobuf.battle.Battle.internal_static_pb_PbTreasureEvent_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return pb.xiugou.x1.protobuf.battle.Battle.internal_static_pb_PbTreasureEvent_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                pb.xiugou.x1.protobuf.battle.Battle.PbTreasureEvent.class, pb.xiugou.x1.protobuf.battle.Battle.PbTreasureEvent.Builder.class);
      }

      // Construct using pb.xiugou.x1.protobuf.battle.Battle.PbTreasureEvent.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
        }
      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        itemId_ = 0;

        num_ = 0L;

        upItemId_ = 0;

        upNum_ = 0L;

        disappearTime_ = 0L;

        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return pb.xiugou.x1.protobuf.battle.Battle.internal_static_pb_PbTreasureEvent_descriptor;
      }

      @java.lang.Override
      public pb.xiugou.x1.protobuf.battle.Battle.PbTreasureEvent getDefaultInstanceForType() {
        return pb.xiugou.x1.protobuf.battle.Battle.PbTreasureEvent.getDefaultInstance();
      }

      @java.lang.Override
      public pb.xiugou.x1.protobuf.battle.Battle.PbTreasureEvent build() {
        pb.xiugou.x1.protobuf.battle.Battle.PbTreasureEvent result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public pb.xiugou.x1.protobuf.battle.Battle.PbTreasureEvent buildPartial() {
        pb.xiugou.x1.protobuf.battle.Battle.PbTreasureEvent result = new pb.xiugou.x1.protobuf.battle.Battle.PbTreasureEvent(this);
        result.itemId_ = itemId_;
        result.num_ = num_;
        result.upItemId_ = upItemId_;
        result.upNum_ = upNum_;
        result.disappearTime_ = disappearTime_;
        onBuilt();
        return result;
      }

      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }
      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.setField(field, value);
      }
      @java.lang.Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @java.lang.Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }
      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof pb.xiugou.x1.protobuf.battle.Battle.PbTreasureEvent) {
          return mergeFrom((pb.xiugou.x1.protobuf.battle.Battle.PbTreasureEvent)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(pb.xiugou.x1.protobuf.battle.Battle.PbTreasureEvent other) {
        if (other == pb.xiugou.x1.protobuf.battle.Battle.PbTreasureEvent.getDefaultInstance()) return this;
        if (other.getItemId() != 0) {
          setItemId(other.getItemId());
        }
        if (other.getNum() != 0L) {
          setNum(other.getNum());
        }
        if (other.getUpItemId() != 0) {
          setUpItemId(other.getUpItemId());
        }
        if (other.getUpNum() != 0L) {
          setUpNum(other.getUpNum());
        }
        if (other.getDisappearTime() != 0L) {
          setDisappearTime(other.getDisappearTime());
        }
        this.mergeUnknownFields(other.unknownFields);
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        pb.xiugou.x1.protobuf.battle.Battle.PbTreasureEvent parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (pb.xiugou.x1.protobuf.battle.Battle.PbTreasureEvent) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }

      private int itemId_ ;
      /**
       * <pre>
       *资源ID
       * </pre>
       *
       * <code>int32 item_id = 1;</code>
       * @return The itemId.
       */
      public int getItemId() {
        return itemId_;
      }
      /**
       * <pre>
       *资源ID
       * </pre>
       *
       * <code>int32 item_id = 1;</code>
       * @param value The itemId to set.
       * @return This builder for chaining.
       */
      public Builder setItemId(int value) {
        
        itemId_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       *资源ID
       * </pre>
       *
       * <code>int32 item_id = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearItemId() {
        
        itemId_ = 0;
        onChanged();
        return this;
      }

      private long num_ ;
      /**
       * <pre>
       *资源数量
       * </pre>
       *
       * <code>int64 num = 2;</code>
       * @return The num.
       */
      public long getNum() {
        return num_;
      }
      /**
       * <pre>
       *资源数量
       * </pre>
       *
       * <code>int64 num = 2;</code>
       * @param value The num to set.
       * @return This builder for chaining.
       */
      public Builder setNum(long value) {
        
        num_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       *资源数量
       * </pre>
       *
       * <code>int64 num = 2;</code>
       * @return This builder for chaining.
       */
      public Builder clearNum() {
        
        num_ = 0L;
        onChanged();
        return this;
      }

      private int upItemId_ ;
      /**
       * <pre>
       *升级后的资源ID
       * </pre>
       *
       * <code>int32 up_item_id = 3;</code>
       * @return The upItemId.
       */
      public int getUpItemId() {
        return upItemId_;
      }
      /**
       * <pre>
       *升级后的资源ID
       * </pre>
       *
       * <code>int32 up_item_id = 3;</code>
       * @param value The upItemId to set.
       * @return This builder for chaining.
       */
      public Builder setUpItemId(int value) {
        
        upItemId_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       *升级后的资源ID
       * </pre>
       *
       * <code>int32 up_item_id = 3;</code>
       * @return This builder for chaining.
       */
      public Builder clearUpItemId() {
        
        upItemId_ = 0;
        onChanged();
        return this;
      }

      private long upNum_ ;
      /**
       * <pre>
       *升级后的资源数量
       * </pre>
       *
       * <code>int64 up_num = 4;</code>
       * @return The upNum.
       */
      public long getUpNum() {
        return upNum_;
      }
      /**
       * <pre>
       *升级后的资源数量
       * </pre>
       *
       * <code>int64 up_num = 4;</code>
       * @param value The upNum to set.
       * @return This builder for chaining.
       */
      public Builder setUpNum(long value) {
        
        upNum_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       *升级后的资源数量
       * </pre>
       *
       * <code>int64 up_num = 4;</code>
       * @return This builder for chaining.
       */
      public Builder clearUpNum() {
        
        upNum_ = 0L;
        onChanged();
        return this;
      }

      private long disappearTime_ ;
      /**
       * <pre>
       *宝箱消失时间
       * </pre>
       *
       * <code>int64 disappear_time = 5;</code>
       * @return The disappearTime.
       */
      public long getDisappearTime() {
        return disappearTime_;
      }
      /**
       * <pre>
       *宝箱消失时间
       * </pre>
       *
       * <code>int64 disappear_time = 5;</code>
       * @param value The disappearTime to set.
       * @return This builder for chaining.
       */
      public Builder setDisappearTime(long value) {
        
        disappearTime_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       *宝箱消失时间
       * </pre>
       *
       * <code>int64 disappear_time = 5;</code>
       * @return This builder for chaining.
       */
      public Builder clearDisappearTime() {
        
        disappearTime_ = 0L;
        onChanged();
        return this;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

      @java.lang.Override
      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.mergeUnknownFields(unknownFields);
      }


      // @@protoc_insertion_point(builder_scope:pb.PbTreasureEvent)
    }

    // @@protoc_insertion_point(class_scope:pb.PbTreasureEvent)
    private static final pb.xiugou.x1.protobuf.battle.Battle.PbTreasureEvent DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new pb.xiugou.x1.protobuf.battle.Battle.PbTreasureEvent();
    }

    public static pb.xiugou.x1.protobuf.battle.Battle.PbTreasureEvent getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<PbTreasureEvent>
        PARSER = new com.google.protobuf.AbstractParser<PbTreasureEvent>() {
      @java.lang.Override
      public PbTreasureEvent parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return new PbTreasureEvent(input, extensionRegistry);
      }
    };

    public static com.google.protobuf.Parser<PbTreasureEvent> parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser<PbTreasureEvent> getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public pb.xiugou.x1.protobuf.battle.Battle.PbTreasureEvent getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface PbSpriteOrBuilder extends
      // @@protoc_insertion_point(interface_extends:pb.PbSprite)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     *精灵唯一ID
     * </pre>
     *
     * <code>int32 id = 1;</code>
     * @return The id.
     */
    int getId();

    /**
     * <pre>
     *精灵类型
     * </pre>
     *
     * <code>.pb.PbSpriteType type = 2;</code>
     * @return The enum numeric value on the wire for type.
     */
    int getTypeValue();
    /**
     * <pre>
     *精灵类型
     * </pre>
     *
     * <code>.pb.PbSpriteType type = 2;</code>
     * @return The type.
     */
    pb.xiugou.x1.protobuf.battle.Battle.PbSpriteType getType();

    /**
     * <pre>
     *英雄标识、怪物ID（对应G怪物表）
     * </pre>
     *
     * <code>int32 identity = 3;</code>
     * @return The identity.
     */
    int getIdentity();

    /**
     * <pre>
     *精灵等级
     * </pre>
     *
     * <code>int32 level = 4;</code>
     * @return The level.
     */
    int getLevel();

    /**
     * <pre>
     *重生时间，毫秒，0不进行重生
     * </pre>
     *
     * <code>int64 reborn_time = 5;</code>
     * @return The rebornTime.
     */
    long getRebornTime();

    /**
     * <pre>
     *对于怪物来说的刷新方式1世界坐标附近区域随机刷新，2世界坐标定点刷新
     * </pre>
     *
     * <code>int32 ctype = 6;</code>
     * @return The ctype.
     */
    int getCtype();

    /**
     * <pre>
     *地图文件中的世界坐标
     * </pre>
     *
     * <code>int32 cx = 7;</code>
     * @return The cx.
     */
    int getCx();

    /**
     * <pre>
     *地图文件中的世界坐标
     * </pre>
     *
     * <code>int32 cy = 8;</code>
     * @return The cy.
     */
    int getCy();

    /**
     * <pre>
     *战斗属性
     * </pre>
     *
     * <code>.pb.PbBattleAttr battle_attr = 9;</code>
     * @return Whether the battleAttr field is set.
     */
    boolean hasBattleAttr();
    /**
     * <pre>
     *战斗属性
     * </pre>
     *
     * <code>.pb.PbBattleAttr battle_attr = 9;</code>
     * @return The battleAttr.
     */
    pb.xiugou.x1.protobuf.battleattr.BattleAttr.PbBattleAttr getBattleAttr();
    /**
     * <pre>
     *战斗属性
     * </pre>
     *
     * <code>.pb.PbBattleAttr battle_attr = 9;</code>
     */
    pb.xiugou.x1.protobuf.battleattr.BattleAttr.PbBattleAttrOrBuilder getBattleAttrOrBuilder();

    /**
     * <pre>
     *配置ID
     * </pre>
     *
     * <code>int32 config_id = 10;</code>
     * @return The configId.
     */
    int getConfigId();

    /**
     * <pre>
     *迷雾ID
     * </pre>
     *
     * <code>int32 fog_area = 11;</code>
     * @return The fogArea.
     */
    int getFogArea();
  }
  /**
   * Protobuf type {@code pb.PbSprite}
   */
  public  static final class PbSprite extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:pb.PbSprite)
      PbSpriteOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use PbSprite.newBuilder() to construct.
    private PbSprite(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private PbSprite() {
      type_ = 0;
    }

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new PbSprite();
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private PbSprite(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      if (extensionRegistry == null) {
        throw new java.lang.NullPointerException();
      }
      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder();
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            case 8: {

              id_ = input.readInt32();
              break;
            }
            case 16: {
              int rawValue = input.readEnum();

              type_ = rawValue;
              break;
            }
            case 24: {

              identity_ = input.readInt32();
              break;
            }
            case 32: {

              level_ = input.readInt32();
              break;
            }
            case 40: {

              rebornTime_ = input.readInt64();
              break;
            }
            case 48: {

              ctype_ = input.readInt32();
              break;
            }
            case 56: {

              cx_ = input.readInt32();
              break;
            }
            case 64: {

              cy_ = input.readInt32();
              break;
            }
            case 74: {
              pb.xiugou.x1.protobuf.battleattr.BattleAttr.PbBattleAttr.Builder subBuilder = null;
              if (battleAttr_ != null) {
                subBuilder = battleAttr_.toBuilder();
              }
              battleAttr_ = input.readMessage(pb.xiugou.x1.protobuf.battleattr.BattleAttr.PbBattleAttr.parser(), extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(battleAttr_);
                battleAttr_ = subBuilder.buildPartial();
              }

              break;
            }
            case 80: {

              configId_ = input.readInt32();
              break;
            }
            case 88: {

              fogArea_ = input.readInt32();
              break;
            }
            default: {
              if (!parseUnknownField(
                  input, unknownFields, extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e).setUnfinishedMessage(this);
      } finally {
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return pb.xiugou.x1.protobuf.battle.Battle.internal_static_pb_PbSprite_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return pb.xiugou.x1.protobuf.battle.Battle.internal_static_pb_PbSprite_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              pb.xiugou.x1.protobuf.battle.Battle.PbSprite.class, pb.xiugou.x1.protobuf.battle.Battle.PbSprite.Builder.class);
    }

    public static final int ID_FIELD_NUMBER = 1;
    private int id_;
    /**
     * <pre>
     *精灵唯一ID
     * </pre>
     *
     * <code>int32 id = 1;</code>
     * @return The id.
     */
    public int getId() {
      return id_;
    }

    public static final int TYPE_FIELD_NUMBER = 2;
    private int type_;
    /**
     * <pre>
     *精灵类型
     * </pre>
     *
     * <code>.pb.PbSpriteType type = 2;</code>
     * @return The enum numeric value on the wire for type.
     */
    public int getTypeValue() {
      return type_;
    }
    /**
     * <pre>
     *精灵类型
     * </pre>
     *
     * <code>.pb.PbSpriteType type = 2;</code>
     * @return The type.
     */
    public pb.xiugou.x1.protobuf.battle.Battle.PbSpriteType getType() {
      @SuppressWarnings("deprecation")
      pb.xiugou.x1.protobuf.battle.Battle.PbSpriteType result = pb.xiugou.x1.protobuf.battle.Battle.PbSpriteType.valueOf(type_);
      return result == null ? pb.xiugou.x1.protobuf.battle.Battle.PbSpriteType.UNRECOGNIZED : result;
    }

    public static final int IDENTITY_FIELD_NUMBER = 3;
    private int identity_;
    /**
     * <pre>
     *英雄标识、怪物ID（对应G怪物表）
     * </pre>
     *
     * <code>int32 identity = 3;</code>
     * @return The identity.
     */
    public int getIdentity() {
      return identity_;
    }

    public static final int LEVEL_FIELD_NUMBER = 4;
    private int level_;
    /**
     * <pre>
     *精灵等级
     * </pre>
     *
     * <code>int32 level = 4;</code>
     * @return The level.
     */
    public int getLevel() {
      return level_;
    }

    public static final int REBORN_TIME_FIELD_NUMBER = 5;
    private long rebornTime_;
    /**
     * <pre>
     *重生时间，毫秒，0不进行重生
     * </pre>
     *
     * <code>int64 reborn_time = 5;</code>
     * @return The rebornTime.
     */
    public long getRebornTime() {
      return rebornTime_;
    }

    public static final int CTYPE_FIELD_NUMBER = 6;
    private int ctype_;
    /**
     * <pre>
     *对于怪物来说的刷新方式1世界坐标附近区域随机刷新，2世界坐标定点刷新
     * </pre>
     *
     * <code>int32 ctype = 6;</code>
     * @return The ctype.
     */
    public int getCtype() {
      return ctype_;
    }

    public static final int CX_FIELD_NUMBER = 7;
    private int cx_;
    /**
     * <pre>
     *地图文件中的世界坐标
     * </pre>
     *
     * <code>int32 cx = 7;</code>
     * @return The cx.
     */
    public int getCx() {
      return cx_;
    }

    public static final int CY_FIELD_NUMBER = 8;
    private int cy_;
    /**
     * <pre>
     *地图文件中的世界坐标
     * </pre>
     *
     * <code>int32 cy = 8;</code>
     * @return The cy.
     */
    public int getCy() {
      return cy_;
    }

    public static final int BATTLE_ATTR_FIELD_NUMBER = 9;
    private pb.xiugou.x1.protobuf.battleattr.BattleAttr.PbBattleAttr battleAttr_;
    /**
     * <pre>
     *战斗属性
     * </pre>
     *
     * <code>.pb.PbBattleAttr battle_attr = 9;</code>
     * @return Whether the battleAttr field is set.
     */
    public boolean hasBattleAttr() {
      return battleAttr_ != null;
    }
    /**
     * <pre>
     *战斗属性
     * </pre>
     *
     * <code>.pb.PbBattleAttr battle_attr = 9;</code>
     * @return The battleAttr.
     */
    public pb.xiugou.x1.protobuf.battleattr.BattleAttr.PbBattleAttr getBattleAttr() {
      return battleAttr_ == null ? pb.xiugou.x1.protobuf.battleattr.BattleAttr.PbBattleAttr.getDefaultInstance() : battleAttr_;
    }
    /**
     * <pre>
     *战斗属性
     * </pre>
     *
     * <code>.pb.PbBattleAttr battle_attr = 9;</code>
     */
    public pb.xiugou.x1.protobuf.battleattr.BattleAttr.PbBattleAttrOrBuilder getBattleAttrOrBuilder() {
      return getBattleAttr();
    }

    public static final int CONFIG_ID_FIELD_NUMBER = 10;
    private int configId_;
    /**
     * <pre>
     *配置ID
     * </pre>
     *
     * <code>int32 config_id = 10;</code>
     * @return The configId.
     */
    public int getConfigId() {
      return configId_;
    }

    public static final int FOG_AREA_FIELD_NUMBER = 11;
    private int fogArea_;
    /**
     * <pre>
     *迷雾ID
     * </pre>
     *
     * <code>int32 fog_area = 11;</code>
     * @return The fogArea.
     */
    public int getFogArea() {
      return fogArea_;
    }

    private byte memoizedIsInitialized = -1;
    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (id_ != 0) {
        output.writeInt32(1, id_);
      }
      if (type_ != pb.xiugou.x1.protobuf.battle.Battle.PbSpriteType.UNKNOWN_SPRITE_TYPE.getNumber()) {
        output.writeEnum(2, type_);
      }
      if (identity_ != 0) {
        output.writeInt32(3, identity_);
      }
      if (level_ != 0) {
        output.writeInt32(4, level_);
      }
      if (rebornTime_ != 0L) {
        output.writeInt64(5, rebornTime_);
      }
      if (ctype_ != 0) {
        output.writeInt32(6, ctype_);
      }
      if (cx_ != 0) {
        output.writeInt32(7, cx_);
      }
      if (cy_ != 0) {
        output.writeInt32(8, cy_);
      }
      if (battleAttr_ != null) {
        output.writeMessage(9, getBattleAttr());
      }
      if (configId_ != 0) {
        output.writeInt32(10, configId_);
      }
      if (fogArea_ != 0) {
        output.writeInt32(11, fogArea_);
      }
      unknownFields.writeTo(output);
    }

    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      if (id_ != 0) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt32Size(1, id_);
      }
      if (type_ != pb.xiugou.x1.protobuf.battle.Battle.PbSpriteType.UNKNOWN_SPRITE_TYPE.getNumber()) {
        size += com.google.protobuf.CodedOutputStream
          .computeEnumSize(2, type_);
      }
      if (identity_ != 0) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt32Size(3, identity_);
      }
      if (level_ != 0) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt32Size(4, level_);
      }
      if (rebornTime_ != 0L) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt64Size(5, rebornTime_);
      }
      if (ctype_ != 0) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt32Size(6, ctype_);
      }
      if (cx_ != 0) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt32Size(7, cx_);
      }
      if (cy_ != 0) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt32Size(8, cy_);
      }
      if (battleAttr_ != null) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(9, getBattleAttr());
      }
      if (configId_ != 0) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt32Size(10, configId_);
      }
      if (fogArea_ != 0) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt32Size(11, fogArea_);
      }
      size += unknownFields.getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof pb.xiugou.x1.protobuf.battle.Battle.PbSprite)) {
        return super.equals(obj);
      }
      pb.xiugou.x1.protobuf.battle.Battle.PbSprite other = (pb.xiugou.x1.protobuf.battle.Battle.PbSprite) obj;

      if (getId()
          != other.getId()) return false;
      if (type_ != other.type_) return false;
      if (getIdentity()
          != other.getIdentity()) return false;
      if (getLevel()
          != other.getLevel()) return false;
      if (getRebornTime()
          != other.getRebornTime()) return false;
      if (getCtype()
          != other.getCtype()) return false;
      if (getCx()
          != other.getCx()) return false;
      if (getCy()
          != other.getCy()) return false;
      if (hasBattleAttr() != other.hasBattleAttr()) return false;
      if (hasBattleAttr()) {
        if (!getBattleAttr()
            .equals(other.getBattleAttr())) return false;
      }
      if (getConfigId()
          != other.getConfigId()) return false;
      if (getFogArea()
          != other.getFogArea()) return false;
      if (!unknownFields.equals(other.unknownFields)) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      hash = (37 * hash) + ID_FIELD_NUMBER;
      hash = (53 * hash) + getId();
      hash = (37 * hash) + TYPE_FIELD_NUMBER;
      hash = (53 * hash) + type_;
      hash = (37 * hash) + IDENTITY_FIELD_NUMBER;
      hash = (53 * hash) + getIdentity();
      hash = (37 * hash) + LEVEL_FIELD_NUMBER;
      hash = (53 * hash) + getLevel();
      hash = (37 * hash) + REBORN_TIME_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
          getRebornTime());
      hash = (37 * hash) + CTYPE_FIELD_NUMBER;
      hash = (53 * hash) + getCtype();
      hash = (37 * hash) + CX_FIELD_NUMBER;
      hash = (53 * hash) + getCx();
      hash = (37 * hash) + CY_FIELD_NUMBER;
      hash = (53 * hash) + getCy();
      if (hasBattleAttr()) {
        hash = (37 * hash) + BATTLE_ATTR_FIELD_NUMBER;
        hash = (53 * hash) + getBattleAttr().hashCode();
      }
      hash = (37 * hash) + CONFIG_ID_FIELD_NUMBER;
      hash = (53 * hash) + getConfigId();
      hash = (37 * hash) + FOG_AREA_FIELD_NUMBER;
      hash = (53 * hash) + getFogArea();
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static pb.xiugou.x1.protobuf.battle.Battle.PbSprite parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static pb.xiugou.x1.protobuf.battle.Battle.PbSprite parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static pb.xiugou.x1.protobuf.battle.Battle.PbSprite parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static pb.xiugou.x1.protobuf.battle.Battle.PbSprite parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static pb.xiugou.x1.protobuf.battle.Battle.PbSprite parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static pb.xiugou.x1.protobuf.battle.Battle.PbSprite parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static pb.xiugou.x1.protobuf.battle.Battle.PbSprite parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static pb.xiugou.x1.protobuf.battle.Battle.PbSprite parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }
    public static pb.xiugou.x1.protobuf.battle.Battle.PbSprite parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static pb.xiugou.x1.protobuf.battle.Battle.PbSprite parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static pb.xiugou.x1.protobuf.battle.Battle.PbSprite parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static pb.xiugou.x1.protobuf.battle.Battle.PbSprite parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(pb.xiugou.x1.protobuf.battle.Battle.PbSprite prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code pb.PbSprite}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:pb.PbSprite)
        pb.xiugou.x1.protobuf.battle.Battle.PbSpriteOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return pb.xiugou.x1.protobuf.battle.Battle.internal_static_pb_PbSprite_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return pb.xiugou.x1.protobuf.battle.Battle.internal_static_pb_PbSprite_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                pb.xiugou.x1.protobuf.battle.Battle.PbSprite.class, pb.xiugou.x1.protobuf.battle.Battle.PbSprite.Builder.class);
      }

      // Construct using pb.xiugou.x1.protobuf.battle.Battle.PbSprite.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
        }
      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        id_ = 0;

        type_ = 0;

        identity_ = 0;

        level_ = 0;

        rebornTime_ = 0L;

        ctype_ = 0;

        cx_ = 0;

        cy_ = 0;

        if (battleAttrBuilder_ == null) {
          battleAttr_ = null;
        } else {
          battleAttr_ = null;
          battleAttrBuilder_ = null;
        }
        configId_ = 0;

        fogArea_ = 0;

        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return pb.xiugou.x1.protobuf.battle.Battle.internal_static_pb_PbSprite_descriptor;
      }

      @java.lang.Override
      public pb.xiugou.x1.protobuf.battle.Battle.PbSprite getDefaultInstanceForType() {
        return pb.xiugou.x1.protobuf.battle.Battle.PbSprite.getDefaultInstance();
      }

      @java.lang.Override
      public pb.xiugou.x1.protobuf.battle.Battle.PbSprite build() {
        pb.xiugou.x1.protobuf.battle.Battle.PbSprite result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public pb.xiugou.x1.protobuf.battle.Battle.PbSprite buildPartial() {
        pb.xiugou.x1.protobuf.battle.Battle.PbSprite result = new pb.xiugou.x1.protobuf.battle.Battle.PbSprite(this);
        result.id_ = id_;
        result.type_ = type_;
        result.identity_ = identity_;
        result.level_ = level_;
        result.rebornTime_ = rebornTime_;
        result.ctype_ = ctype_;
        result.cx_ = cx_;
        result.cy_ = cy_;
        if (battleAttrBuilder_ == null) {
          result.battleAttr_ = battleAttr_;
        } else {
          result.battleAttr_ = battleAttrBuilder_.build();
        }
        result.configId_ = configId_;
        result.fogArea_ = fogArea_;
        onBuilt();
        return result;
      }

      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }
      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.setField(field, value);
      }
      @java.lang.Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @java.lang.Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }
      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof pb.xiugou.x1.protobuf.battle.Battle.PbSprite) {
          return mergeFrom((pb.xiugou.x1.protobuf.battle.Battle.PbSprite)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(pb.xiugou.x1.protobuf.battle.Battle.PbSprite other) {
        if (other == pb.xiugou.x1.protobuf.battle.Battle.PbSprite.getDefaultInstance()) return this;
        if (other.getId() != 0) {
          setId(other.getId());
        }
        if (other.type_ != 0) {
          setTypeValue(other.getTypeValue());
        }
        if (other.getIdentity() != 0) {
          setIdentity(other.getIdentity());
        }
        if (other.getLevel() != 0) {
          setLevel(other.getLevel());
        }
        if (other.getRebornTime() != 0L) {
          setRebornTime(other.getRebornTime());
        }
        if (other.getCtype() != 0) {
          setCtype(other.getCtype());
        }
        if (other.getCx() != 0) {
          setCx(other.getCx());
        }
        if (other.getCy() != 0) {
          setCy(other.getCy());
        }
        if (other.hasBattleAttr()) {
          mergeBattleAttr(other.getBattleAttr());
        }
        if (other.getConfigId() != 0) {
          setConfigId(other.getConfigId());
        }
        if (other.getFogArea() != 0) {
          setFogArea(other.getFogArea());
        }
        this.mergeUnknownFields(other.unknownFields);
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        pb.xiugou.x1.protobuf.battle.Battle.PbSprite parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (pb.xiugou.x1.protobuf.battle.Battle.PbSprite) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }

      private int id_ ;
      /**
       * <pre>
       *精灵唯一ID
       * </pre>
       *
       * <code>int32 id = 1;</code>
       * @return The id.
       */
      public int getId() {
        return id_;
      }
      /**
       * <pre>
       *精灵唯一ID
       * </pre>
       *
       * <code>int32 id = 1;</code>
       * @param value The id to set.
       * @return This builder for chaining.
       */
      public Builder setId(int value) {
        
        id_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       *精灵唯一ID
       * </pre>
       *
       * <code>int32 id = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearId() {
        
        id_ = 0;
        onChanged();
        return this;
      }

      private int type_ = 0;
      /**
       * <pre>
       *精灵类型
       * </pre>
       *
       * <code>.pb.PbSpriteType type = 2;</code>
       * @return The enum numeric value on the wire for type.
       */
      public int getTypeValue() {
        return type_;
      }
      /**
       * <pre>
       *精灵类型
       * </pre>
       *
       * <code>.pb.PbSpriteType type = 2;</code>
       * @param value The enum numeric value on the wire for type to set.
       * @return This builder for chaining.
       */
      public Builder setTypeValue(int value) {
        type_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       *精灵类型
       * </pre>
       *
       * <code>.pb.PbSpriteType type = 2;</code>
       * @return The type.
       */
      public pb.xiugou.x1.protobuf.battle.Battle.PbSpriteType getType() {
        @SuppressWarnings("deprecation")
        pb.xiugou.x1.protobuf.battle.Battle.PbSpriteType result = pb.xiugou.x1.protobuf.battle.Battle.PbSpriteType.valueOf(type_);
        return result == null ? pb.xiugou.x1.protobuf.battle.Battle.PbSpriteType.UNRECOGNIZED : result;
      }
      /**
       * <pre>
       *精灵类型
       * </pre>
       *
       * <code>.pb.PbSpriteType type = 2;</code>
       * @param value The type to set.
       * @return This builder for chaining.
       */
      public Builder setType(pb.xiugou.x1.protobuf.battle.Battle.PbSpriteType value) {
        if (value == null) {
          throw new NullPointerException();
        }
        
        type_ = value.getNumber();
        onChanged();
        return this;
      }
      /**
       * <pre>
       *精灵类型
       * </pre>
       *
       * <code>.pb.PbSpriteType type = 2;</code>
       * @return This builder for chaining.
       */
      public Builder clearType() {
        
        type_ = 0;
        onChanged();
        return this;
      }

      private int identity_ ;
      /**
       * <pre>
       *英雄标识、怪物ID（对应G怪物表）
       * </pre>
       *
       * <code>int32 identity = 3;</code>
       * @return The identity.
       */
      public int getIdentity() {
        return identity_;
      }
      /**
       * <pre>
       *英雄标识、怪物ID（对应G怪物表）
       * </pre>
       *
       * <code>int32 identity = 3;</code>
       * @param value The identity to set.
       * @return This builder for chaining.
       */
      public Builder setIdentity(int value) {
        
        identity_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       *英雄标识、怪物ID（对应G怪物表）
       * </pre>
       *
       * <code>int32 identity = 3;</code>
       * @return This builder for chaining.
       */
      public Builder clearIdentity() {
        
        identity_ = 0;
        onChanged();
        return this;
      }

      private int level_ ;
      /**
       * <pre>
       *精灵等级
       * </pre>
       *
       * <code>int32 level = 4;</code>
       * @return The level.
       */
      public int getLevel() {
        return level_;
      }
      /**
       * <pre>
       *精灵等级
       * </pre>
       *
       * <code>int32 level = 4;</code>
       * @param value The level to set.
       * @return This builder for chaining.
       */
      public Builder setLevel(int value) {
        
        level_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       *精灵等级
       * </pre>
       *
       * <code>int32 level = 4;</code>
       * @return This builder for chaining.
       */
      public Builder clearLevel() {
        
        level_ = 0;
        onChanged();
        return this;
      }

      private long rebornTime_ ;
      /**
       * <pre>
       *重生时间，毫秒，0不进行重生
       * </pre>
       *
       * <code>int64 reborn_time = 5;</code>
       * @return The rebornTime.
       */
      public long getRebornTime() {
        return rebornTime_;
      }
      /**
       * <pre>
       *重生时间，毫秒，0不进行重生
       * </pre>
       *
       * <code>int64 reborn_time = 5;</code>
       * @param value The rebornTime to set.
       * @return This builder for chaining.
       */
      public Builder setRebornTime(long value) {
        
        rebornTime_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       *重生时间，毫秒，0不进行重生
       * </pre>
       *
       * <code>int64 reborn_time = 5;</code>
       * @return This builder for chaining.
       */
      public Builder clearRebornTime() {
        
        rebornTime_ = 0L;
        onChanged();
        return this;
      }

      private int ctype_ ;
      /**
       * <pre>
       *对于怪物来说的刷新方式1世界坐标附近区域随机刷新，2世界坐标定点刷新
       * </pre>
       *
       * <code>int32 ctype = 6;</code>
       * @return The ctype.
       */
      public int getCtype() {
        return ctype_;
      }
      /**
       * <pre>
       *对于怪物来说的刷新方式1世界坐标附近区域随机刷新，2世界坐标定点刷新
       * </pre>
       *
       * <code>int32 ctype = 6;</code>
       * @param value The ctype to set.
       * @return This builder for chaining.
       */
      public Builder setCtype(int value) {
        
        ctype_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       *对于怪物来说的刷新方式1世界坐标附近区域随机刷新，2世界坐标定点刷新
       * </pre>
       *
       * <code>int32 ctype = 6;</code>
       * @return This builder for chaining.
       */
      public Builder clearCtype() {
        
        ctype_ = 0;
        onChanged();
        return this;
      }

      private int cx_ ;
      /**
       * <pre>
       *地图文件中的世界坐标
       * </pre>
       *
       * <code>int32 cx = 7;</code>
       * @return The cx.
       */
      public int getCx() {
        return cx_;
      }
      /**
       * <pre>
       *地图文件中的世界坐标
       * </pre>
       *
       * <code>int32 cx = 7;</code>
       * @param value The cx to set.
       * @return This builder for chaining.
       */
      public Builder setCx(int value) {
        
        cx_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       *地图文件中的世界坐标
       * </pre>
       *
       * <code>int32 cx = 7;</code>
       * @return This builder for chaining.
       */
      public Builder clearCx() {
        
        cx_ = 0;
        onChanged();
        return this;
      }

      private int cy_ ;
      /**
       * <pre>
       *地图文件中的世界坐标
       * </pre>
       *
       * <code>int32 cy = 8;</code>
       * @return The cy.
       */
      public int getCy() {
        return cy_;
      }
      /**
       * <pre>
       *地图文件中的世界坐标
       * </pre>
       *
       * <code>int32 cy = 8;</code>
       * @param value The cy to set.
       * @return This builder for chaining.
       */
      public Builder setCy(int value) {
        
        cy_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       *地图文件中的世界坐标
       * </pre>
       *
       * <code>int32 cy = 8;</code>
       * @return This builder for chaining.
       */
      public Builder clearCy() {
        
        cy_ = 0;
        onChanged();
        return this;
      }

      private pb.xiugou.x1.protobuf.battleattr.BattleAttr.PbBattleAttr battleAttr_;
      private com.google.protobuf.SingleFieldBuilderV3<
          pb.xiugou.x1.protobuf.battleattr.BattleAttr.PbBattleAttr, pb.xiugou.x1.protobuf.battleattr.BattleAttr.PbBattleAttr.Builder, pb.xiugou.x1.protobuf.battleattr.BattleAttr.PbBattleAttrOrBuilder> battleAttrBuilder_;
      /**
       * <pre>
       *战斗属性
       * </pre>
       *
       * <code>.pb.PbBattleAttr battle_attr = 9;</code>
       * @return Whether the battleAttr field is set.
       */
      public boolean hasBattleAttr() {
        return battleAttrBuilder_ != null || battleAttr_ != null;
      }
      /**
       * <pre>
       *战斗属性
       * </pre>
       *
       * <code>.pb.PbBattleAttr battle_attr = 9;</code>
       * @return The battleAttr.
       */
      public pb.xiugou.x1.protobuf.battleattr.BattleAttr.PbBattleAttr getBattleAttr() {
        if (battleAttrBuilder_ == null) {
          return battleAttr_ == null ? pb.xiugou.x1.protobuf.battleattr.BattleAttr.PbBattleAttr.getDefaultInstance() : battleAttr_;
        } else {
          return battleAttrBuilder_.getMessage();
        }
      }
      /**
       * <pre>
       *战斗属性
       * </pre>
       *
       * <code>.pb.PbBattleAttr battle_attr = 9;</code>
       */
      public Builder setBattleAttr(pb.xiugou.x1.protobuf.battleattr.BattleAttr.PbBattleAttr value) {
        if (battleAttrBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          battleAttr_ = value;
          onChanged();
        } else {
          battleAttrBuilder_.setMessage(value);
        }

        return this;
      }
      /**
       * <pre>
       *战斗属性
       * </pre>
       *
       * <code>.pb.PbBattleAttr battle_attr = 9;</code>
       */
      public Builder setBattleAttr(
          pb.xiugou.x1.protobuf.battleattr.BattleAttr.PbBattleAttr.Builder builderForValue) {
        if (battleAttrBuilder_ == null) {
          battleAttr_ = builderForValue.build();
          onChanged();
        } else {
          battleAttrBuilder_.setMessage(builderForValue.build());
        }

        return this;
      }
      /**
       * <pre>
       *战斗属性
       * </pre>
       *
       * <code>.pb.PbBattleAttr battle_attr = 9;</code>
       */
      public Builder mergeBattleAttr(pb.xiugou.x1.protobuf.battleattr.BattleAttr.PbBattleAttr value) {
        if (battleAttrBuilder_ == null) {
          if (battleAttr_ != null) {
            battleAttr_ =
              pb.xiugou.x1.protobuf.battleattr.BattleAttr.PbBattleAttr.newBuilder(battleAttr_).mergeFrom(value).buildPartial();
          } else {
            battleAttr_ = value;
          }
          onChanged();
        } else {
          battleAttrBuilder_.mergeFrom(value);
        }

        return this;
      }
      /**
       * <pre>
       *战斗属性
       * </pre>
       *
       * <code>.pb.PbBattleAttr battle_attr = 9;</code>
       */
      public Builder clearBattleAttr() {
        if (battleAttrBuilder_ == null) {
          battleAttr_ = null;
          onChanged();
        } else {
          battleAttr_ = null;
          battleAttrBuilder_ = null;
        }

        return this;
      }
      /**
       * <pre>
       *战斗属性
       * </pre>
       *
       * <code>.pb.PbBattleAttr battle_attr = 9;</code>
       */
      public pb.xiugou.x1.protobuf.battleattr.BattleAttr.PbBattleAttr.Builder getBattleAttrBuilder() {
        
        onChanged();
        return getBattleAttrFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       *战斗属性
       * </pre>
       *
       * <code>.pb.PbBattleAttr battle_attr = 9;</code>
       */
      public pb.xiugou.x1.protobuf.battleattr.BattleAttr.PbBattleAttrOrBuilder getBattleAttrOrBuilder() {
        if (battleAttrBuilder_ != null) {
          return battleAttrBuilder_.getMessageOrBuilder();
        } else {
          return battleAttr_ == null ?
              pb.xiugou.x1.protobuf.battleattr.BattleAttr.PbBattleAttr.getDefaultInstance() : battleAttr_;
        }
      }
      /**
       * <pre>
       *战斗属性
       * </pre>
       *
       * <code>.pb.PbBattleAttr battle_attr = 9;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          pb.xiugou.x1.protobuf.battleattr.BattleAttr.PbBattleAttr, pb.xiugou.x1.protobuf.battleattr.BattleAttr.PbBattleAttr.Builder, pb.xiugou.x1.protobuf.battleattr.BattleAttr.PbBattleAttrOrBuilder> 
          getBattleAttrFieldBuilder() {
        if (battleAttrBuilder_ == null) {
          battleAttrBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              pb.xiugou.x1.protobuf.battleattr.BattleAttr.PbBattleAttr, pb.xiugou.x1.protobuf.battleattr.BattleAttr.PbBattleAttr.Builder, pb.xiugou.x1.protobuf.battleattr.BattleAttr.PbBattleAttrOrBuilder>(
                  getBattleAttr(),
                  getParentForChildren(),
                  isClean());
          battleAttr_ = null;
        }
        return battleAttrBuilder_;
      }

      private int configId_ ;
      /**
       * <pre>
       *配置ID
       * </pre>
       *
       * <code>int32 config_id = 10;</code>
       * @return The configId.
       */
      public int getConfigId() {
        return configId_;
      }
      /**
       * <pre>
       *配置ID
       * </pre>
       *
       * <code>int32 config_id = 10;</code>
       * @param value The configId to set.
       * @return This builder for chaining.
       */
      public Builder setConfigId(int value) {
        
        configId_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       *配置ID
       * </pre>
       *
       * <code>int32 config_id = 10;</code>
       * @return This builder for chaining.
       */
      public Builder clearConfigId() {
        
        configId_ = 0;
        onChanged();
        return this;
      }

      private int fogArea_ ;
      /**
       * <pre>
       *迷雾ID
       * </pre>
       *
       * <code>int32 fog_area = 11;</code>
       * @return The fogArea.
       */
      public int getFogArea() {
        return fogArea_;
      }
      /**
       * <pre>
       *迷雾ID
       * </pre>
       *
       * <code>int32 fog_area = 11;</code>
       * @param value The fogArea to set.
       * @return This builder for chaining.
       */
      public Builder setFogArea(int value) {
        
        fogArea_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       *迷雾ID
       * </pre>
       *
       * <code>int32 fog_area = 11;</code>
       * @return This builder for chaining.
       */
      public Builder clearFogArea() {
        
        fogArea_ = 0;
        onChanged();
        return this;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

      @java.lang.Override
      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.mergeUnknownFields(unknownFields);
      }


      // @@protoc_insertion_point(builder_scope:pb.PbSprite)
    }

    // @@protoc_insertion_point(class_scope:pb.PbSprite)
    private static final pb.xiugou.x1.protobuf.battle.Battle.PbSprite DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new pb.xiugou.x1.protobuf.battle.Battle.PbSprite();
    }

    public static pb.xiugou.x1.protobuf.battle.Battle.PbSprite getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<PbSprite>
        PARSER = new com.google.protobuf.AbstractParser<PbSprite>() {
      @java.lang.Override
      public PbSprite parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return new PbSprite(input, extensionRegistry);
      }
    };

    public static com.google.protobuf.Parser<PbSprite> parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser<PbSprite> getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public pb.xiugou.x1.protobuf.battle.Battle.PbSprite getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface PbKillSpriteOrBuilder extends
      // @@protoc_insertion_point(interface_extends:pb.PbKillSprite)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     *精灵唯一ID
     * </pre>
     *
     * <code>int32 id = 1;</code>
     * @return The id.
     */
    int getId();

    /**
     * <pre>
     *重生时间，毫秒，小于等于0不进行重生
     * </pre>
     *
     * <code>int64 reborn_time = 2;</code>
     * @return The rebornTime.
     */
    long getRebornTime();

    /**
     * <pre>
     *掉落物，仅用于展示
     * </pre>
     *
     * <code>repeated .pb.PbItem drops = 3;</code>
     */
    java.util.List<pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbItem> 
        getDropsList();
    /**
     * <pre>
     *掉落物，仅用于展示
     * </pre>
     *
     * <code>repeated .pb.PbItem drops = 3;</code>
     */
    pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbItem getDrops(int index);
    /**
     * <pre>
     *掉落物，仅用于展示
     * </pre>
     *
     * <code>repeated .pb.PbItem drops = 3;</code>
     */
    int getDropsCount();
    /**
     * <pre>
     *掉落物，仅用于展示
     * </pre>
     *
     * <code>repeated .pb.PbItem drops = 3;</code>
     */
    java.util.List<? extends pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbItemOrBuilder> 
        getDropsOrBuilderList();
    /**
     * <pre>
     *掉落物，仅用于展示
     * </pre>
     *
     * <code>repeated .pb.PbItem drops = 3;</code>
     */
    pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbItemOrBuilder getDropsOrBuilder(
        int index);

    /**
     * <pre>
     *是否有掉落宝箱
     * </pre>
     *
     * <code>bool has_box = 4;</code>
     * @return The hasBox.
     */
    boolean getHasBox();

    /**
     * <pre>
     *掉落的书本，雷书、冰书、治疗书、加速书等
     * </pre>
     *
     * <code>int32 book = 5;</code>
     * @return The book.
     */
    int getBook();
  }
  /**
   * Protobuf type {@code pb.PbKillSprite}
   */
  public  static final class PbKillSprite extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:pb.PbKillSprite)
      PbKillSpriteOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use PbKillSprite.newBuilder() to construct.
    private PbKillSprite(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private PbKillSprite() {
      drops_ = java.util.Collections.emptyList();
    }

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new PbKillSprite();
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private PbKillSprite(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      if (extensionRegistry == null) {
        throw new java.lang.NullPointerException();
      }
      int mutable_bitField0_ = 0;
      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder();
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            case 8: {

              id_ = input.readInt32();
              break;
            }
            case 16: {

              rebornTime_ = input.readInt64();
              break;
            }
            case 26: {
              if (!((mutable_bitField0_ & 0x00000001) != 0)) {
                drops_ = new java.util.ArrayList<pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbItem>();
                mutable_bitField0_ |= 0x00000001;
              }
              drops_.add(
                  input.readMessage(pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbItem.parser(), extensionRegistry));
              break;
            }
            case 32: {

              hasBox_ = input.readBool();
              break;
            }
            case 40: {

              book_ = input.readInt32();
              break;
            }
            default: {
              if (!parseUnknownField(
                  input, unknownFields, extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e).setUnfinishedMessage(this);
      } finally {
        if (((mutable_bitField0_ & 0x00000001) != 0)) {
          drops_ = java.util.Collections.unmodifiableList(drops_);
        }
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return pb.xiugou.x1.protobuf.battle.Battle.internal_static_pb_PbKillSprite_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return pb.xiugou.x1.protobuf.battle.Battle.internal_static_pb_PbKillSprite_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              pb.xiugou.x1.protobuf.battle.Battle.PbKillSprite.class, pb.xiugou.x1.protobuf.battle.Battle.PbKillSprite.Builder.class);
    }

    public static final int ID_FIELD_NUMBER = 1;
    private int id_;
    /**
     * <pre>
     *精灵唯一ID
     * </pre>
     *
     * <code>int32 id = 1;</code>
     * @return The id.
     */
    public int getId() {
      return id_;
    }

    public static final int REBORN_TIME_FIELD_NUMBER = 2;
    private long rebornTime_;
    /**
     * <pre>
     *重生时间，毫秒，小于等于0不进行重生
     * </pre>
     *
     * <code>int64 reborn_time = 2;</code>
     * @return The rebornTime.
     */
    public long getRebornTime() {
      return rebornTime_;
    }

    public static final int DROPS_FIELD_NUMBER = 3;
    private java.util.List<pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbItem> drops_;
    /**
     * <pre>
     *掉落物，仅用于展示
     * </pre>
     *
     * <code>repeated .pb.PbItem drops = 3;</code>
     */
    public java.util.List<pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbItem> getDropsList() {
      return drops_;
    }
    /**
     * <pre>
     *掉落物，仅用于展示
     * </pre>
     *
     * <code>repeated .pb.PbItem drops = 3;</code>
     */
    public java.util.List<? extends pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbItemOrBuilder> 
        getDropsOrBuilderList() {
      return drops_;
    }
    /**
     * <pre>
     *掉落物，仅用于展示
     * </pre>
     *
     * <code>repeated .pb.PbItem drops = 3;</code>
     */
    public int getDropsCount() {
      return drops_.size();
    }
    /**
     * <pre>
     *掉落物，仅用于展示
     * </pre>
     *
     * <code>repeated .pb.PbItem drops = 3;</code>
     */
    public pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbItem getDrops(int index) {
      return drops_.get(index);
    }
    /**
     * <pre>
     *掉落物，仅用于展示
     * </pre>
     *
     * <code>repeated .pb.PbItem drops = 3;</code>
     */
    public pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbItemOrBuilder getDropsOrBuilder(
        int index) {
      return drops_.get(index);
    }

    public static final int HAS_BOX_FIELD_NUMBER = 4;
    private boolean hasBox_;
    /**
     * <pre>
     *是否有掉落宝箱
     * </pre>
     *
     * <code>bool has_box = 4;</code>
     * @return The hasBox.
     */
    public boolean getHasBox() {
      return hasBox_;
    }

    public static final int BOOK_FIELD_NUMBER = 5;
    private int book_;
    /**
     * <pre>
     *掉落的书本，雷书、冰书、治疗书、加速书等
     * </pre>
     *
     * <code>int32 book = 5;</code>
     * @return The book.
     */
    public int getBook() {
      return book_;
    }

    private byte memoizedIsInitialized = -1;
    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (id_ != 0) {
        output.writeInt32(1, id_);
      }
      if (rebornTime_ != 0L) {
        output.writeInt64(2, rebornTime_);
      }
      for (int i = 0; i < drops_.size(); i++) {
        output.writeMessage(3, drops_.get(i));
      }
      if (hasBox_ != false) {
        output.writeBool(4, hasBox_);
      }
      if (book_ != 0) {
        output.writeInt32(5, book_);
      }
      unknownFields.writeTo(output);
    }

    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      if (id_ != 0) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt32Size(1, id_);
      }
      if (rebornTime_ != 0L) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt64Size(2, rebornTime_);
      }
      for (int i = 0; i < drops_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(3, drops_.get(i));
      }
      if (hasBox_ != false) {
        size += com.google.protobuf.CodedOutputStream
          .computeBoolSize(4, hasBox_);
      }
      if (book_ != 0) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt32Size(5, book_);
      }
      size += unknownFields.getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof pb.xiugou.x1.protobuf.battle.Battle.PbKillSprite)) {
        return super.equals(obj);
      }
      pb.xiugou.x1.protobuf.battle.Battle.PbKillSprite other = (pb.xiugou.x1.protobuf.battle.Battle.PbKillSprite) obj;

      if (getId()
          != other.getId()) return false;
      if (getRebornTime()
          != other.getRebornTime()) return false;
      if (!getDropsList()
          .equals(other.getDropsList())) return false;
      if (getHasBox()
          != other.getHasBox()) return false;
      if (getBook()
          != other.getBook()) return false;
      if (!unknownFields.equals(other.unknownFields)) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      hash = (37 * hash) + ID_FIELD_NUMBER;
      hash = (53 * hash) + getId();
      hash = (37 * hash) + REBORN_TIME_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
          getRebornTime());
      if (getDropsCount() > 0) {
        hash = (37 * hash) + DROPS_FIELD_NUMBER;
        hash = (53 * hash) + getDropsList().hashCode();
      }
      hash = (37 * hash) + HAS_BOX_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
          getHasBox());
      hash = (37 * hash) + BOOK_FIELD_NUMBER;
      hash = (53 * hash) + getBook();
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static pb.xiugou.x1.protobuf.battle.Battle.PbKillSprite parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static pb.xiugou.x1.protobuf.battle.Battle.PbKillSprite parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static pb.xiugou.x1.protobuf.battle.Battle.PbKillSprite parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static pb.xiugou.x1.protobuf.battle.Battle.PbKillSprite parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static pb.xiugou.x1.protobuf.battle.Battle.PbKillSprite parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static pb.xiugou.x1.protobuf.battle.Battle.PbKillSprite parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static pb.xiugou.x1.protobuf.battle.Battle.PbKillSprite parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static pb.xiugou.x1.protobuf.battle.Battle.PbKillSprite parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }
    public static pb.xiugou.x1.protobuf.battle.Battle.PbKillSprite parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static pb.xiugou.x1.protobuf.battle.Battle.PbKillSprite parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static pb.xiugou.x1.protobuf.battle.Battle.PbKillSprite parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static pb.xiugou.x1.protobuf.battle.Battle.PbKillSprite parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(pb.xiugou.x1.protobuf.battle.Battle.PbKillSprite prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code pb.PbKillSprite}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:pb.PbKillSprite)
        pb.xiugou.x1.protobuf.battle.Battle.PbKillSpriteOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return pb.xiugou.x1.protobuf.battle.Battle.internal_static_pb_PbKillSprite_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return pb.xiugou.x1.protobuf.battle.Battle.internal_static_pb_PbKillSprite_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                pb.xiugou.x1.protobuf.battle.Battle.PbKillSprite.class, pb.xiugou.x1.protobuf.battle.Battle.PbKillSprite.Builder.class);
      }

      // Construct using pb.xiugou.x1.protobuf.battle.Battle.PbKillSprite.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
          getDropsFieldBuilder();
        }
      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        id_ = 0;

        rebornTime_ = 0L;

        if (dropsBuilder_ == null) {
          drops_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000001);
        } else {
          dropsBuilder_.clear();
        }
        hasBox_ = false;

        book_ = 0;

        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return pb.xiugou.x1.protobuf.battle.Battle.internal_static_pb_PbKillSprite_descriptor;
      }

      @java.lang.Override
      public pb.xiugou.x1.protobuf.battle.Battle.PbKillSprite getDefaultInstanceForType() {
        return pb.xiugou.x1.protobuf.battle.Battle.PbKillSprite.getDefaultInstance();
      }

      @java.lang.Override
      public pb.xiugou.x1.protobuf.battle.Battle.PbKillSprite build() {
        pb.xiugou.x1.protobuf.battle.Battle.PbKillSprite result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public pb.xiugou.x1.protobuf.battle.Battle.PbKillSprite buildPartial() {
        pb.xiugou.x1.protobuf.battle.Battle.PbKillSprite result = new pb.xiugou.x1.protobuf.battle.Battle.PbKillSprite(this);
        int from_bitField0_ = bitField0_;
        result.id_ = id_;
        result.rebornTime_ = rebornTime_;
        if (dropsBuilder_ == null) {
          if (((bitField0_ & 0x00000001) != 0)) {
            drops_ = java.util.Collections.unmodifiableList(drops_);
            bitField0_ = (bitField0_ & ~0x00000001);
          }
          result.drops_ = drops_;
        } else {
          result.drops_ = dropsBuilder_.build();
        }
        result.hasBox_ = hasBox_;
        result.book_ = book_;
        onBuilt();
        return result;
      }

      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }
      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.setField(field, value);
      }
      @java.lang.Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @java.lang.Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }
      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof pb.xiugou.x1.protobuf.battle.Battle.PbKillSprite) {
          return mergeFrom((pb.xiugou.x1.protobuf.battle.Battle.PbKillSprite)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(pb.xiugou.x1.protobuf.battle.Battle.PbKillSprite other) {
        if (other == pb.xiugou.x1.protobuf.battle.Battle.PbKillSprite.getDefaultInstance()) return this;
        if (other.getId() != 0) {
          setId(other.getId());
        }
        if (other.getRebornTime() != 0L) {
          setRebornTime(other.getRebornTime());
        }
        if (dropsBuilder_ == null) {
          if (!other.drops_.isEmpty()) {
            if (drops_.isEmpty()) {
              drops_ = other.drops_;
              bitField0_ = (bitField0_ & ~0x00000001);
            } else {
              ensureDropsIsMutable();
              drops_.addAll(other.drops_);
            }
            onChanged();
          }
        } else {
          if (!other.drops_.isEmpty()) {
            if (dropsBuilder_.isEmpty()) {
              dropsBuilder_.dispose();
              dropsBuilder_ = null;
              drops_ = other.drops_;
              bitField0_ = (bitField0_ & ~0x00000001);
              dropsBuilder_ = 
                com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
                   getDropsFieldBuilder() : null;
            } else {
              dropsBuilder_.addAllMessages(other.drops_);
            }
          }
        }
        if (other.getHasBox() != false) {
          setHasBox(other.getHasBox());
        }
        if (other.getBook() != 0) {
          setBook(other.getBook());
        }
        this.mergeUnknownFields(other.unknownFields);
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        pb.xiugou.x1.protobuf.battle.Battle.PbKillSprite parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (pb.xiugou.x1.protobuf.battle.Battle.PbKillSprite) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      private int id_ ;
      /**
       * <pre>
       *精灵唯一ID
       * </pre>
       *
       * <code>int32 id = 1;</code>
       * @return The id.
       */
      public int getId() {
        return id_;
      }
      /**
       * <pre>
       *精灵唯一ID
       * </pre>
       *
       * <code>int32 id = 1;</code>
       * @param value The id to set.
       * @return This builder for chaining.
       */
      public Builder setId(int value) {
        
        id_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       *精灵唯一ID
       * </pre>
       *
       * <code>int32 id = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearId() {
        
        id_ = 0;
        onChanged();
        return this;
      }

      private long rebornTime_ ;
      /**
       * <pre>
       *重生时间，毫秒，小于等于0不进行重生
       * </pre>
       *
       * <code>int64 reborn_time = 2;</code>
       * @return The rebornTime.
       */
      public long getRebornTime() {
        return rebornTime_;
      }
      /**
       * <pre>
       *重生时间，毫秒，小于等于0不进行重生
       * </pre>
       *
       * <code>int64 reborn_time = 2;</code>
       * @param value The rebornTime to set.
       * @return This builder for chaining.
       */
      public Builder setRebornTime(long value) {
        
        rebornTime_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       *重生时间，毫秒，小于等于0不进行重生
       * </pre>
       *
       * <code>int64 reborn_time = 2;</code>
       * @return This builder for chaining.
       */
      public Builder clearRebornTime() {
        
        rebornTime_ = 0L;
        onChanged();
        return this;
      }

      private java.util.List<pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbItem> drops_ =
        java.util.Collections.emptyList();
      private void ensureDropsIsMutable() {
        if (!((bitField0_ & 0x00000001) != 0)) {
          drops_ = new java.util.ArrayList<pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbItem>(drops_);
          bitField0_ |= 0x00000001;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilderV3<
          pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbItem, pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbItem.Builder, pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbItemOrBuilder> dropsBuilder_;

      /**
       * <pre>
       *掉落物，仅用于展示
       * </pre>
       *
       * <code>repeated .pb.PbItem drops = 3;</code>
       */
      public java.util.List<pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbItem> getDropsList() {
        if (dropsBuilder_ == null) {
          return java.util.Collections.unmodifiableList(drops_);
        } else {
          return dropsBuilder_.getMessageList();
        }
      }
      /**
       * <pre>
       *掉落物，仅用于展示
       * </pre>
       *
       * <code>repeated .pb.PbItem drops = 3;</code>
       */
      public int getDropsCount() {
        if (dropsBuilder_ == null) {
          return drops_.size();
        } else {
          return dropsBuilder_.getCount();
        }
      }
      /**
       * <pre>
       *掉落物，仅用于展示
       * </pre>
       *
       * <code>repeated .pb.PbItem drops = 3;</code>
       */
      public pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbItem getDrops(int index) {
        if (dropsBuilder_ == null) {
          return drops_.get(index);
        } else {
          return dropsBuilder_.getMessage(index);
        }
      }
      /**
       * <pre>
       *掉落物，仅用于展示
       * </pre>
       *
       * <code>repeated .pb.PbItem drops = 3;</code>
       */
      public Builder setDrops(
          int index, pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbItem value) {
        if (dropsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureDropsIsMutable();
          drops_.set(index, value);
          onChanged();
        } else {
          dropsBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * <pre>
       *掉落物，仅用于展示
       * </pre>
       *
       * <code>repeated .pb.PbItem drops = 3;</code>
       */
      public Builder setDrops(
          int index, pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbItem.Builder builderForValue) {
        if (dropsBuilder_ == null) {
          ensureDropsIsMutable();
          drops_.set(index, builderForValue.build());
          onChanged();
        } else {
          dropsBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       *掉落物，仅用于展示
       * </pre>
       *
       * <code>repeated .pb.PbItem drops = 3;</code>
       */
      public Builder addDrops(pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbItem value) {
        if (dropsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureDropsIsMutable();
          drops_.add(value);
          onChanged();
        } else {
          dropsBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * <pre>
       *掉落物，仅用于展示
       * </pre>
       *
       * <code>repeated .pb.PbItem drops = 3;</code>
       */
      public Builder addDrops(
          int index, pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbItem value) {
        if (dropsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureDropsIsMutable();
          drops_.add(index, value);
          onChanged();
        } else {
          dropsBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * <pre>
       *掉落物，仅用于展示
       * </pre>
       *
       * <code>repeated .pb.PbItem drops = 3;</code>
       */
      public Builder addDrops(
          pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbItem.Builder builderForValue) {
        if (dropsBuilder_ == null) {
          ensureDropsIsMutable();
          drops_.add(builderForValue.build());
          onChanged();
        } else {
          dropsBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       *掉落物，仅用于展示
       * </pre>
       *
       * <code>repeated .pb.PbItem drops = 3;</code>
       */
      public Builder addDrops(
          int index, pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbItem.Builder builderForValue) {
        if (dropsBuilder_ == null) {
          ensureDropsIsMutable();
          drops_.add(index, builderForValue.build());
          onChanged();
        } else {
          dropsBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       *掉落物，仅用于展示
       * </pre>
       *
       * <code>repeated .pb.PbItem drops = 3;</code>
       */
      public Builder addAllDrops(
          java.lang.Iterable<? extends pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbItem> values) {
        if (dropsBuilder_ == null) {
          ensureDropsIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, drops_);
          onChanged();
        } else {
          dropsBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * <pre>
       *掉落物，仅用于展示
       * </pre>
       *
       * <code>repeated .pb.PbItem drops = 3;</code>
       */
      public Builder clearDrops() {
        if (dropsBuilder_ == null) {
          drops_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000001);
          onChanged();
        } else {
          dropsBuilder_.clear();
        }
        return this;
      }
      /**
       * <pre>
       *掉落物，仅用于展示
       * </pre>
       *
       * <code>repeated .pb.PbItem drops = 3;</code>
       */
      public Builder removeDrops(int index) {
        if (dropsBuilder_ == null) {
          ensureDropsIsMutable();
          drops_.remove(index);
          onChanged();
        } else {
          dropsBuilder_.remove(index);
        }
        return this;
      }
      /**
       * <pre>
       *掉落物，仅用于展示
       * </pre>
       *
       * <code>repeated .pb.PbItem drops = 3;</code>
       */
      public pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbItem.Builder getDropsBuilder(
          int index) {
        return getDropsFieldBuilder().getBuilder(index);
      }
      /**
       * <pre>
       *掉落物，仅用于展示
       * </pre>
       *
       * <code>repeated .pb.PbItem drops = 3;</code>
       */
      public pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbItemOrBuilder getDropsOrBuilder(
          int index) {
        if (dropsBuilder_ == null) {
          return drops_.get(index);  } else {
          return dropsBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * <pre>
       *掉落物，仅用于展示
       * </pre>
       *
       * <code>repeated .pb.PbItem drops = 3;</code>
       */
      public java.util.List<? extends pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbItemOrBuilder> 
           getDropsOrBuilderList() {
        if (dropsBuilder_ != null) {
          return dropsBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(drops_);
        }
      }
      /**
       * <pre>
       *掉落物，仅用于展示
       * </pre>
       *
       * <code>repeated .pb.PbItem drops = 3;</code>
       */
      public pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbItem.Builder addDropsBuilder() {
        return getDropsFieldBuilder().addBuilder(
            pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbItem.getDefaultInstance());
      }
      /**
       * <pre>
       *掉落物，仅用于展示
       * </pre>
       *
       * <code>repeated .pb.PbItem drops = 3;</code>
       */
      public pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbItem.Builder addDropsBuilder(
          int index) {
        return getDropsFieldBuilder().addBuilder(
            index, pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbItem.getDefaultInstance());
      }
      /**
       * <pre>
       *掉落物，仅用于展示
       * </pre>
       *
       * <code>repeated .pb.PbItem drops = 3;</code>
       */
      public java.util.List<pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbItem.Builder> 
           getDropsBuilderList() {
        return getDropsFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilderV3<
          pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbItem, pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbItem.Builder, pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbItemOrBuilder> 
          getDropsFieldBuilder() {
        if (dropsBuilder_ == null) {
          dropsBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
              pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbItem, pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbItem.Builder, pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbItemOrBuilder>(
                  drops_,
                  ((bitField0_ & 0x00000001) != 0),
                  getParentForChildren(),
                  isClean());
          drops_ = null;
        }
        return dropsBuilder_;
      }

      private boolean hasBox_ ;
      /**
       * <pre>
       *是否有掉落宝箱
       * </pre>
       *
       * <code>bool has_box = 4;</code>
       * @return The hasBox.
       */
      public boolean getHasBox() {
        return hasBox_;
      }
      /**
       * <pre>
       *是否有掉落宝箱
       * </pre>
       *
       * <code>bool has_box = 4;</code>
       * @param value The hasBox to set.
       * @return This builder for chaining.
       */
      public Builder setHasBox(boolean value) {
        
        hasBox_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       *是否有掉落宝箱
       * </pre>
       *
       * <code>bool has_box = 4;</code>
       * @return This builder for chaining.
       */
      public Builder clearHasBox() {
        
        hasBox_ = false;
        onChanged();
        return this;
      }

      private int book_ ;
      /**
       * <pre>
       *掉落的书本，雷书、冰书、治疗书、加速书等
       * </pre>
       *
       * <code>int32 book = 5;</code>
       * @return The book.
       */
      public int getBook() {
        return book_;
      }
      /**
       * <pre>
       *掉落的书本，雷书、冰书、治疗书、加速书等
       * </pre>
       *
       * <code>int32 book = 5;</code>
       * @param value The book to set.
       * @return This builder for chaining.
       */
      public Builder setBook(int value) {
        
        book_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       *掉落的书本，雷书、冰书、治疗书、加速书等
       * </pre>
       *
       * <code>int32 book = 5;</code>
       * @return This builder for chaining.
       */
      public Builder clearBook() {
        
        book_ = 0;
        onChanged();
        return this;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

      @java.lang.Override
      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.mergeUnknownFields(unknownFields);
      }


      // @@protoc_insertion_point(builder_scope:pb.PbKillSprite)
    }

    // @@protoc_insertion_point(class_scope:pb.PbKillSprite)
    private static final pb.xiugou.x1.protobuf.battle.Battle.PbKillSprite DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new pb.xiugou.x1.protobuf.battle.Battle.PbKillSprite();
    }

    public static pb.xiugou.x1.protobuf.battle.Battle.PbKillSprite getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<PbKillSprite>
        PARSER = new com.google.protobuf.AbstractParser<PbKillSprite>() {
      @java.lang.Override
      public PbKillSprite parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return new PbKillSprite(input, extensionRegistry);
      }
    };

    public static com.google.protobuf.Parser<PbKillSprite> parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser<PbKillSprite> getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public pb.xiugou.x1.protobuf.battle.Battle.PbKillSprite getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface PbZoneOrBuilder extends
      // @@protoc_insertion_point(interface_extends:pb.PbZone)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     *区域ID
     * </pre>
     *
     * <code>int32 zone_id = 1;</code>
     * @return The zoneId.
     */
    int getZoneId();

    /**
     * <pre>
     *怪物、敌对英雄
     * </pre>
     *
     * <code>repeated .pb.PbSprite sprites = 2;</code>
     */
    java.util.List<pb.xiugou.x1.protobuf.battle.Battle.PbSprite> 
        getSpritesList();
    /**
     * <pre>
     *怪物、敌对英雄
     * </pre>
     *
     * <code>repeated .pb.PbSprite sprites = 2;</code>
     */
    pb.xiugou.x1.protobuf.battle.Battle.PbSprite getSprites(int index);
    /**
     * <pre>
     *怪物、敌对英雄
     * </pre>
     *
     * <code>repeated .pb.PbSprite sprites = 2;</code>
     */
    int getSpritesCount();
    /**
     * <pre>
     *怪物、敌对英雄
     * </pre>
     *
     * <code>repeated .pb.PbSprite sprites = 2;</code>
     */
    java.util.List<? extends pb.xiugou.x1.protobuf.battle.Battle.PbSpriteOrBuilder> 
        getSpritesOrBuilderList();
    /**
     * <pre>
     *怪物、敌对英雄
     * </pre>
     *
     * <code>repeated .pb.PbSprite sprites = 2;</code>
     */
    pb.xiugou.x1.protobuf.battle.Battle.PbSpriteOrBuilder getSpritesOrBuilder(
        int index);

    /**
     * <pre>
     *资源点
     * </pre>
     *
     * <code>repeated .pb.PbHarvest harvests = 3;</code>
     */
    java.util.List<pb.xiugou.x1.protobuf.battle.Battle.PbHarvest> 
        getHarvestsList();
    /**
     * <pre>
     *资源点
     * </pre>
     *
     * <code>repeated .pb.PbHarvest harvests = 3;</code>
     */
    pb.xiugou.x1.protobuf.battle.Battle.PbHarvest getHarvests(int index);
    /**
     * <pre>
     *资源点
     * </pre>
     *
     * <code>repeated .pb.PbHarvest harvests = 3;</code>
     */
    int getHarvestsCount();
    /**
     * <pre>
     *资源点
     * </pre>
     *
     * <code>repeated .pb.PbHarvest harvests = 3;</code>
     */
    java.util.List<? extends pb.xiugou.x1.protobuf.battle.Battle.PbHarvestOrBuilder> 
        getHarvestsOrBuilderList();
    /**
     * <pre>
     *资源点
     * </pre>
     *
     * <code>repeated .pb.PbHarvest harvests = 3;</code>
     */
    pb.xiugou.x1.protobuf.battle.Battle.PbHarvestOrBuilder getHarvestsOrBuilder(
        int index);

    /**
     * <pre>
     *援军
     * </pre>
     *
     * <code>.pb.PbSprite aid_sprite = 4;</code>
     * @return Whether the aidSprite field is set.
     */
    boolean hasAidSprite();
    /**
     * <pre>
     *援军
     * </pre>
     *
     * <code>.pb.PbSprite aid_sprite = 4;</code>
     * @return The aidSprite.
     */
    pb.xiugou.x1.protobuf.battle.Battle.PbSprite getAidSprite();
    /**
     * <pre>
     *援军
     * </pre>
     *
     * <code>.pb.PbSprite aid_sprite = 4;</code>
     */
    pb.xiugou.x1.protobuf.battle.Battle.PbSpriteOrBuilder getAidSpriteOrBuilder();

    /**
     * <pre>
     *需要移除的作战单位ID
     * </pre>
     *
     * <code>int32 remove_sprite_id = 5;</code>
     * @return The removeSpriteId.
     */
    int getRemoveSpriteId();
  }
  /**
   * Protobuf type {@code pb.PbZone}
   */
  public  static final class PbZone extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:pb.PbZone)
      PbZoneOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use PbZone.newBuilder() to construct.
    private PbZone(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private PbZone() {
      sprites_ = java.util.Collections.emptyList();
      harvests_ = java.util.Collections.emptyList();
    }

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new PbZone();
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private PbZone(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      if (extensionRegistry == null) {
        throw new java.lang.NullPointerException();
      }
      int mutable_bitField0_ = 0;
      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder();
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            case 8: {

              zoneId_ = input.readInt32();
              break;
            }
            case 18: {
              if (!((mutable_bitField0_ & 0x00000001) != 0)) {
                sprites_ = new java.util.ArrayList<pb.xiugou.x1.protobuf.battle.Battle.PbSprite>();
                mutable_bitField0_ |= 0x00000001;
              }
              sprites_.add(
                  input.readMessage(pb.xiugou.x1.protobuf.battle.Battle.PbSprite.parser(), extensionRegistry));
              break;
            }
            case 26: {
              if (!((mutable_bitField0_ & 0x00000002) != 0)) {
                harvests_ = new java.util.ArrayList<pb.xiugou.x1.protobuf.battle.Battle.PbHarvest>();
                mutable_bitField0_ |= 0x00000002;
              }
              harvests_.add(
                  input.readMessage(pb.xiugou.x1.protobuf.battle.Battle.PbHarvest.parser(), extensionRegistry));
              break;
            }
            case 34: {
              pb.xiugou.x1.protobuf.battle.Battle.PbSprite.Builder subBuilder = null;
              if (aidSprite_ != null) {
                subBuilder = aidSprite_.toBuilder();
              }
              aidSprite_ = input.readMessage(pb.xiugou.x1.protobuf.battle.Battle.PbSprite.parser(), extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(aidSprite_);
                aidSprite_ = subBuilder.buildPartial();
              }

              break;
            }
            case 40: {

              removeSpriteId_ = input.readInt32();
              break;
            }
            default: {
              if (!parseUnknownField(
                  input, unknownFields, extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e).setUnfinishedMessage(this);
      } finally {
        if (((mutable_bitField0_ & 0x00000001) != 0)) {
          sprites_ = java.util.Collections.unmodifiableList(sprites_);
        }
        if (((mutable_bitField0_ & 0x00000002) != 0)) {
          harvests_ = java.util.Collections.unmodifiableList(harvests_);
        }
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return pb.xiugou.x1.protobuf.battle.Battle.internal_static_pb_PbZone_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return pb.xiugou.x1.protobuf.battle.Battle.internal_static_pb_PbZone_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              pb.xiugou.x1.protobuf.battle.Battle.PbZone.class, pb.xiugou.x1.protobuf.battle.Battle.PbZone.Builder.class);
    }

    public static final int ZONE_ID_FIELD_NUMBER = 1;
    private int zoneId_;
    /**
     * <pre>
     *区域ID
     * </pre>
     *
     * <code>int32 zone_id = 1;</code>
     * @return The zoneId.
     */
    public int getZoneId() {
      return zoneId_;
    }

    public static final int SPRITES_FIELD_NUMBER = 2;
    private java.util.List<pb.xiugou.x1.protobuf.battle.Battle.PbSprite> sprites_;
    /**
     * <pre>
     *怪物、敌对英雄
     * </pre>
     *
     * <code>repeated .pb.PbSprite sprites = 2;</code>
     */
    public java.util.List<pb.xiugou.x1.protobuf.battle.Battle.PbSprite> getSpritesList() {
      return sprites_;
    }
    /**
     * <pre>
     *怪物、敌对英雄
     * </pre>
     *
     * <code>repeated .pb.PbSprite sprites = 2;</code>
     */
    public java.util.List<? extends pb.xiugou.x1.protobuf.battle.Battle.PbSpriteOrBuilder> 
        getSpritesOrBuilderList() {
      return sprites_;
    }
    /**
     * <pre>
     *怪物、敌对英雄
     * </pre>
     *
     * <code>repeated .pb.PbSprite sprites = 2;</code>
     */
    public int getSpritesCount() {
      return sprites_.size();
    }
    /**
     * <pre>
     *怪物、敌对英雄
     * </pre>
     *
     * <code>repeated .pb.PbSprite sprites = 2;</code>
     */
    public pb.xiugou.x1.protobuf.battle.Battle.PbSprite getSprites(int index) {
      return sprites_.get(index);
    }
    /**
     * <pre>
     *怪物、敌对英雄
     * </pre>
     *
     * <code>repeated .pb.PbSprite sprites = 2;</code>
     */
    public pb.xiugou.x1.protobuf.battle.Battle.PbSpriteOrBuilder getSpritesOrBuilder(
        int index) {
      return sprites_.get(index);
    }

    public static final int HARVESTS_FIELD_NUMBER = 3;
    private java.util.List<pb.xiugou.x1.protobuf.battle.Battle.PbHarvest> harvests_;
    /**
     * <pre>
     *资源点
     * </pre>
     *
     * <code>repeated .pb.PbHarvest harvests = 3;</code>
     */
    public java.util.List<pb.xiugou.x1.protobuf.battle.Battle.PbHarvest> getHarvestsList() {
      return harvests_;
    }
    /**
     * <pre>
     *资源点
     * </pre>
     *
     * <code>repeated .pb.PbHarvest harvests = 3;</code>
     */
    public java.util.List<? extends pb.xiugou.x1.protobuf.battle.Battle.PbHarvestOrBuilder> 
        getHarvestsOrBuilderList() {
      return harvests_;
    }
    /**
     * <pre>
     *资源点
     * </pre>
     *
     * <code>repeated .pb.PbHarvest harvests = 3;</code>
     */
    public int getHarvestsCount() {
      return harvests_.size();
    }
    /**
     * <pre>
     *资源点
     * </pre>
     *
     * <code>repeated .pb.PbHarvest harvests = 3;</code>
     */
    public pb.xiugou.x1.protobuf.battle.Battle.PbHarvest getHarvests(int index) {
      return harvests_.get(index);
    }
    /**
     * <pre>
     *资源点
     * </pre>
     *
     * <code>repeated .pb.PbHarvest harvests = 3;</code>
     */
    public pb.xiugou.x1.protobuf.battle.Battle.PbHarvestOrBuilder getHarvestsOrBuilder(
        int index) {
      return harvests_.get(index);
    }

    public static final int AID_SPRITE_FIELD_NUMBER = 4;
    private pb.xiugou.x1.protobuf.battle.Battle.PbSprite aidSprite_;
    /**
     * <pre>
     *援军
     * </pre>
     *
     * <code>.pb.PbSprite aid_sprite = 4;</code>
     * @return Whether the aidSprite field is set.
     */
    public boolean hasAidSprite() {
      return aidSprite_ != null;
    }
    /**
     * <pre>
     *援军
     * </pre>
     *
     * <code>.pb.PbSprite aid_sprite = 4;</code>
     * @return The aidSprite.
     */
    public pb.xiugou.x1.protobuf.battle.Battle.PbSprite getAidSprite() {
      return aidSprite_ == null ? pb.xiugou.x1.protobuf.battle.Battle.PbSprite.getDefaultInstance() : aidSprite_;
    }
    /**
     * <pre>
     *援军
     * </pre>
     *
     * <code>.pb.PbSprite aid_sprite = 4;</code>
     */
    public pb.xiugou.x1.protobuf.battle.Battle.PbSpriteOrBuilder getAidSpriteOrBuilder() {
      return getAidSprite();
    }

    public static final int REMOVE_SPRITE_ID_FIELD_NUMBER = 5;
    private int removeSpriteId_;
    /**
     * <pre>
     *需要移除的作战单位ID
     * </pre>
     *
     * <code>int32 remove_sprite_id = 5;</code>
     * @return The removeSpriteId.
     */
    public int getRemoveSpriteId() {
      return removeSpriteId_;
    }

    private byte memoizedIsInitialized = -1;
    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (zoneId_ != 0) {
        output.writeInt32(1, zoneId_);
      }
      for (int i = 0; i < sprites_.size(); i++) {
        output.writeMessage(2, sprites_.get(i));
      }
      for (int i = 0; i < harvests_.size(); i++) {
        output.writeMessage(3, harvests_.get(i));
      }
      if (aidSprite_ != null) {
        output.writeMessage(4, getAidSprite());
      }
      if (removeSpriteId_ != 0) {
        output.writeInt32(5, removeSpriteId_);
      }
      unknownFields.writeTo(output);
    }

    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      if (zoneId_ != 0) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt32Size(1, zoneId_);
      }
      for (int i = 0; i < sprites_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(2, sprites_.get(i));
      }
      for (int i = 0; i < harvests_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(3, harvests_.get(i));
      }
      if (aidSprite_ != null) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(4, getAidSprite());
      }
      if (removeSpriteId_ != 0) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt32Size(5, removeSpriteId_);
      }
      size += unknownFields.getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof pb.xiugou.x1.protobuf.battle.Battle.PbZone)) {
        return super.equals(obj);
      }
      pb.xiugou.x1.protobuf.battle.Battle.PbZone other = (pb.xiugou.x1.protobuf.battle.Battle.PbZone) obj;

      if (getZoneId()
          != other.getZoneId()) return false;
      if (!getSpritesList()
          .equals(other.getSpritesList())) return false;
      if (!getHarvestsList()
          .equals(other.getHarvestsList())) return false;
      if (hasAidSprite() != other.hasAidSprite()) return false;
      if (hasAidSprite()) {
        if (!getAidSprite()
            .equals(other.getAidSprite())) return false;
      }
      if (getRemoveSpriteId()
          != other.getRemoveSpriteId()) return false;
      if (!unknownFields.equals(other.unknownFields)) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      hash = (37 * hash) + ZONE_ID_FIELD_NUMBER;
      hash = (53 * hash) + getZoneId();
      if (getSpritesCount() > 0) {
        hash = (37 * hash) + SPRITES_FIELD_NUMBER;
        hash = (53 * hash) + getSpritesList().hashCode();
      }
      if (getHarvestsCount() > 0) {
        hash = (37 * hash) + HARVESTS_FIELD_NUMBER;
        hash = (53 * hash) + getHarvestsList().hashCode();
      }
      if (hasAidSprite()) {
        hash = (37 * hash) + AID_SPRITE_FIELD_NUMBER;
        hash = (53 * hash) + getAidSprite().hashCode();
      }
      hash = (37 * hash) + REMOVE_SPRITE_ID_FIELD_NUMBER;
      hash = (53 * hash) + getRemoveSpriteId();
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static pb.xiugou.x1.protobuf.battle.Battle.PbZone parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static pb.xiugou.x1.protobuf.battle.Battle.PbZone parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static pb.xiugou.x1.protobuf.battle.Battle.PbZone parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static pb.xiugou.x1.protobuf.battle.Battle.PbZone parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static pb.xiugou.x1.protobuf.battle.Battle.PbZone parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static pb.xiugou.x1.protobuf.battle.Battle.PbZone parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static pb.xiugou.x1.protobuf.battle.Battle.PbZone parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static pb.xiugou.x1.protobuf.battle.Battle.PbZone parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }
    public static pb.xiugou.x1.protobuf.battle.Battle.PbZone parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static pb.xiugou.x1.protobuf.battle.Battle.PbZone parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static pb.xiugou.x1.protobuf.battle.Battle.PbZone parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static pb.xiugou.x1.protobuf.battle.Battle.PbZone parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(pb.xiugou.x1.protobuf.battle.Battle.PbZone prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code pb.PbZone}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:pb.PbZone)
        pb.xiugou.x1.protobuf.battle.Battle.PbZoneOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return pb.xiugou.x1.protobuf.battle.Battle.internal_static_pb_PbZone_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return pb.xiugou.x1.protobuf.battle.Battle.internal_static_pb_PbZone_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                pb.xiugou.x1.protobuf.battle.Battle.PbZone.class, pb.xiugou.x1.protobuf.battle.Battle.PbZone.Builder.class);
      }

      // Construct using pb.xiugou.x1.protobuf.battle.Battle.PbZone.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
          getSpritesFieldBuilder();
          getHarvestsFieldBuilder();
        }
      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        zoneId_ = 0;

        if (spritesBuilder_ == null) {
          sprites_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000001);
        } else {
          spritesBuilder_.clear();
        }
        if (harvestsBuilder_ == null) {
          harvests_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000002);
        } else {
          harvestsBuilder_.clear();
        }
        if (aidSpriteBuilder_ == null) {
          aidSprite_ = null;
        } else {
          aidSprite_ = null;
          aidSpriteBuilder_ = null;
        }
        removeSpriteId_ = 0;

        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return pb.xiugou.x1.protobuf.battle.Battle.internal_static_pb_PbZone_descriptor;
      }

      @java.lang.Override
      public pb.xiugou.x1.protobuf.battle.Battle.PbZone getDefaultInstanceForType() {
        return pb.xiugou.x1.protobuf.battle.Battle.PbZone.getDefaultInstance();
      }

      @java.lang.Override
      public pb.xiugou.x1.protobuf.battle.Battle.PbZone build() {
        pb.xiugou.x1.protobuf.battle.Battle.PbZone result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public pb.xiugou.x1.protobuf.battle.Battle.PbZone buildPartial() {
        pb.xiugou.x1.protobuf.battle.Battle.PbZone result = new pb.xiugou.x1.protobuf.battle.Battle.PbZone(this);
        int from_bitField0_ = bitField0_;
        result.zoneId_ = zoneId_;
        if (spritesBuilder_ == null) {
          if (((bitField0_ & 0x00000001) != 0)) {
            sprites_ = java.util.Collections.unmodifiableList(sprites_);
            bitField0_ = (bitField0_ & ~0x00000001);
          }
          result.sprites_ = sprites_;
        } else {
          result.sprites_ = spritesBuilder_.build();
        }
        if (harvestsBuilder_ == null) {
          if (((bitField0_ & 0x00000002) != 0)) {
            harvests_ = java.util.Collections.unmodifiableList(harvests_);
            bitField0_ = (bitField0_ & ~0x00000002);
          }
          result.harvests_ = harvests_;
        } else {
          result.harvests_ = harvestsBuilder_.build();
        }
        if (aidSpriteBuilder_ == null) {
          result.aidSprite_ = aidSprite_;
        } else {
          result.aidSprite_ = aidSpriteBuilder_.build();
        }
        result.removeSpriteId_ = removeSpriteId_;
        onBuilt();
        return result;
      }

      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }
      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.setField(field, value);
      }
      @java.lang.Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @java.lang.Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }
      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof pb.xiugou.x1.protobuf.battle.Battle.PbZone) {
          return mergeFrom((pb.xiugou.x1.protobuf.battle.Battle.PbZone)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(pb.xiugou.x1.protobuf.battle.Battle.PbZone other) {
        if (other == pb.xiugou.x1.protobuf.battle.Battle.PbZone.getDefaultInstance()) return this;
        if (other.getZoneId() != 0) {
          setZoneId(other.getZoneId());
        }
        if (spritesBuilder_ == null) {
          if (!other.sprites_.isEmpty()) {
            if (sprites_.isEmpty()) {
              sprites_ = other.sprites_;
              bitField0_ = (bitField0_ & ~0x00000001);
            } else {
              ensureSpritesIsMutable();
              sprites_.addAll(other.sprites_);
            }
            onChanged();
          }
        } else {
          if (!other.sprites_.isEmpty()) {
            if (spritesBuilder_.isEmpty()) {
              spritesBuilder_.dispose();
              spritesBuilder_ = null;
              sprites_ = other.sprites_;
              bitField0_ = (bitField0_ & ~0x00000001);
              spritesBuilder_ = 
                com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
                   getSpritesFieldBuilder() : null;
            } else {
              spritesBuilder_.addAllMessages(other.sprites_);
            }
          }
        }
        if (harvestsBuilder_ == null) {
          if (!other.harvests_.isEmpty()) {
            if (harvests_.isEmpty()) {
              harvests_ = other.harvests_;
              bitField0_ = (bitField0_ & ~0x00000002);
            } else {
              ensureHarvestsIsMutable();
              harvests_.addAll(other.harvests_);
            }
            onChanged();
          }
        } else {
          if (!other.harvests_.isEmpty()) {
            if (harvestsBuilder_.isEmpty()) {
              harvestsBuilder_.dispose();
              harvestsBuilder_ = null;
              harvests_ = other.harvests_;
              bitField0_ = (bitField0_ & ~0x00000002);
              harvestsBuilder_ = 
                com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
                   getHarvestsFieldBuilder() : null;
            } else {
              harvestsBuilder_.addAllMessages(other.harvests_);
            }
          }
        }
        if (other.hasAidSprite()) {
          mergeAidSprite(other.getAidSprite());
        }
        if (other.getRemoveSpriteId() != 0) {
          setRemoveSpriteId(other.getRemoveSpriteId());
        }
        this.mergeUnknownFields(other.unknownFields);
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        pb.xiugou.x1.protobuf.battle.Battle.PbZone parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (pb.xiugou.x1.protobuf.battle.Battle.PbZone) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      private int zoneId_ ;
      /**
       * <pre>
       *区域ID
       * </pre>
       *
       * <code>int32 zone_id = 1;</code>
       * @return The zoneId.
       */
      public int getZoneId() {
        return zoneId_;
      }
      /**
       * <pre>
       *区域ID
       * </pre>
       *
       * <code>int32 zone_id = 1;</code>
       * @param value The zoneId to set.
       * @return This builder for chaining.
       */
      public Builder setZoneId(int value) {
        
        zoneId_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       *区域ID
       * </pre>
       *
       * <code>int32 zone_id = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearZoneId() {
        
        zoneId_ = 0;
        onChanged();
        return this;
      }

      private java.util.List<pb.xiugou.x1.protobuf.battle.Battle.PbSprite> sprites_ =
        java.util.Collections.emptyList();
      private void ensureSpritesIsMutable() {
        if (!((bitField0_ & 0x00000001) != 0)) {
          sprites_ = new java.util.ArrayList<pb.xiugou.x1.protobuf.battle.Battle.PbSprite>(sprites_);
          bitField0_ |= 0x00000001;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilderV3<
          pb.xiugou.x1.protobuf.battle.Battle.PbSprite, pb.xiugou.x1.protobuf.battle.Battle.PbSprite.Builder, pb.xiugou.x1.protobuf.battle.Battle.PbSpriteOrBuilder> spritesBuilder_;

      /**
       * <pre>
       *怪物、敌对英雄
       * </pre>
       *
       * <code>repeated .pb.PbSprite sprites = 2;</code>
       */
      public java.util.List<pb.xiugou.x1.protobuf.battle.Battle.PbSprite> getSpritesList() {
        if (spritesBuilder_ == null) {
          return java.util.Collections.unmodifiableList(sprites_);
        } else {
          return spritesBuilder_.getMessageList();
        }
      }
      /**
       * <pre>
       *怪物、敌对英雄
       * </pre>
       *
       * <code>repeated .pb.PbSprite sprites = 2;</code>
       */
      public int getSpritesCount() {
        if (spritesBuilder_ == null) {
          return sprites_.size();
        } else {
          return spritesBuilder_.getCount();
        }
      }
      /**
       * <pre>
       *怪物、敌对英雄
       * </pre>
       *
       * <code>repeated .pb.PbSprite sprites = 2;</code>
       */
      public pb.xiugou.x1.protobuf.battle.Battle.PbSprite getSprites(int index) {
        if (spritesBuilder_ == null) {
          return sprites_.get(index);
        } else {
          return spritesBuilder_.getMessage(index);
        }
      }
      /**
       * <pre>
       *怪物、敌对英雄
       * </pre>
       *
       * <code>repeated .pb.PbSprite sprites = 2;</code>
       */
      public Builder setSprites(
          int index, pb.xiugou.x1.protobuf.battle.Battle.PbSprite value) {
        if (spritesBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureSpritesIsMutable();
          sprites_.set(index, value);
          onChanged();
        } else {
          spritesBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * <pre>
       *怪物、敌对英雄
       * </pre>
       *
       * <code>repeated .pb.PbSprite sprites = 2;</code>
       */
      public Builder setSprites(
          int index, pb.xiugou.x1.protobuf.battle.Battle.PbSprite.Builder builderForValue) {
        if (spritesBuilder_ == null) {
          ensureSpritesIsMutable();
          sprites_.set(index, builderForValue.build());
          onChanged();
        } else {
          spritesBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       *怪物、敌对英雄
       * </pre>
       *
       * <code>repeated .pb.PbSprite sprites = 2;</code>
       */
      public Builder addSprites(pb.xiugou.x1.protobuf.battle.Battle.PbSprite value) {
        if (spritesBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureSpritesIsMutable();
          sprites_.add(value);
          onChanged();
        } else {
          spritesBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * <pre>
       *怪物、敌对英雄
       * </pre>
       *
       * <code>repeated .pb.PbSprite sprites = 2;</code>
       */
      public Builder addSprites(
          int index, pb.xiugou.x1.protobuf.battle.Battle.PbSprite value) {
        if (spritesBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureSpritesIsMutable();
          sprites_.add(index, value);
          onChanged();
        } else {
          spritesBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * <pre>
       *怪物、敌对英雄
       * </pre>
       *
       * <code>repeated .pb.PbSprite sprites = 2;</code>
       */
      public Builder addSprites(
          pb.xiugou.x1.protobuf.battle.Battle.PbSprite.Builder builderForValue) {
        if (spritesBuilder_ == null) {
          ensureSpritesIsMutable();
          sprites_.add(builderForValue.build());
          onChanged();
        } else {
          spritesBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       *怪物、敌对英雄
       * </pre>
       *
       * <code>repeated .pb.PbSprite sprites = 2;</code>
       */
      public Builder addSprites(
          int index, pb.xiugou.x1.protobuf.battle.Battle.PbSprite.Builder builderForValue) {
        if (spritesBuilder_ == null) {
          ensureSpritesIsMutable();
          sprites_.add(index, builderForValue.build());
          onChanged();
        } else {
          spritesBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       *怪物、敌对英雄
       * </pre>
       *
       * <code>repeated .pb.PbSprite sprites = 2;</code>
       */
      public Builder addAllSprites(
          java.lang.Iterable<? extends pb.xiugou.x1.protobuf.battle.Battle.PbSprite> values) {
        if (spritesBuilder_ == null) {
          ensureSpritesIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, sprites_);
          onChanged();
        } else {
          spritesBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * <pre>
       *怪物、敌对英雄
       * </pre>
       *
       * <code>repeated .pb.PbSprite sprites = 2;</code>
       */
      public Builder clearSprites() {
        if (spritesBuilder_ == null) {
          sprites_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000001);
          onChanged();
        } else {
          spritesBuilder_.clear();
        }
        return this;
      }
      /**
       * <pre>
       *怪物、敌对英雄
       * </pre>
       *
       * <code>repeated .pb.PbSprite sprites = 2;</code>
       */
      public Builder removeSprites(int index) {
        if (spritesBuilder_ == null) {
          ensureSpritesIsMutable();
          sprites_.remove(index);
          onChanged();
        } else {
          spritesBuilder_.remove(index);
        }
        return this;
      }
      /**
       * <pre>
       *怪物、敌对英雄
       * </pre>
       *
       * <code>repeated .pb.PbSprite sprites = 2;</code>
       */
      public pb.xiugou.x1.protobuf.battle.Battle.PbSprite.Builder getSpritesBuilder(
          int index) {
        return getSpritesFieldBuilder().getBuilder(index);
      }
      /**
       * <pre>
       *怪物、敌对英雄
       * </pre>
       *
       * <code>repeated .pb.PbSprite sprites = 2;</code>
       */
      public pb.xiugou.x1.protobuf.battle.Battle.PbSpriteOrBuilder getSpritesOrBuilder(
          int index) {
        if (spritesBuilder_ == null) {
          return sprites_.get(index);  } else {
          return spritesBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * <pre>
       *怪物、敌对英雄
       * </pre>
       *
       * <code>repeated .pb.PbSprite sprites = 2;</code>
       */
      public java.util.List<? extends pb.xiugou.x1.protobuf.battle.Battle.PbSpriteOrBuilder> 
           getSpritesOrBuilderList() {
        if (spritesBuilder_ != null) {
          return spritesBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(sprites_);
        }
      }
      /**
       * <pre>
       *怪物、敌对英雄
       * </pre>
       *
       * <code>repeated .pb.PbSprite sprites = 2;</code>
       */
      public pb.xiugou.x1.protobuf.battle.Battle.PbSprite.Builder addSpritesBuilder() {
        return getSpritesFieldBuilder().addBuilder(
            pb.xiugou.x1.protobuf.battle.Battle.PbSprite.getDefaultInstance());
      }
      /**
       * <pre>
       *怪物、敌对英雄
       * </pre>
       *
       * <code>repeated .pb.PbSprite sprites = 2;</code>
       */
      public pb.xiugou.x1.protobuf.battle.Battle.PbSprite.Builder addSpritesBuilder(
          int index) {
        return getSpritesFieldBuilder().addBuilder(
            index, pb.xiugou.x1.protobuf.battle.Battle.PbSprite.getDefaultInstance());
      }
      /**
       * <pre>
       *怪物、敌对英雄
       * </pre>
       *
       * <code>repeated .pb.PbSprite sprites = 2;</code>
       */
      public java.util.List<pb.xiugou.x1.protobuf.battle.Battle.PbSprite.Builder> 
           getSpritesBuilderList() {
        return getSpritesFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilderV3<
          pb.xiugou.x1.protobuf.battle.Battle.PbSprite, pb.xiugou.x1.protobuf.battle.Battle.PbSprite.Builder, pb.xiugou.x1.protobuf.battle.Battle.PbSpriteOrBuilder> 
          getSpritesFieldBuilder() {
        if (spritesBuilder_ == null) {
          spritesBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
              pb.xiugou.x1.protobuf.battle.Battle.PbSprite, pb.xiugou.x1.protobuf.battle.Battle.PbSprite.Builder, pb.xiugou.x1.protobuf.battle.Battle.PbSpriteOrBuilder>(
                  sprites_,
                  ((bitField0_ & 0x00000001) != 0),
                  getParentForChildren(),
                  isClean());
          sprites_ = null;
        }
        return spritesBuilder_;
      }

      private java.util.List<pb.xiugou.x1.protobuf.battle.Battle.PbHarvest> harvests_ =
        java.util.Collections.emptyList();
      private void ensureHarvestsIsMutable() {
        if (!((bitField0_ & 0x00000002) != 0)) {
          harvests_ = new java.util.ArrayList<pb.xiugou.x1.protobuf.battle.Battle.PbHarvest>(harvests_);
          bitField0_ |= 0x00000002;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilderV3<
          pb.xiugou.x1.protobuf.battle.Battle.PbHarvest, pb.xiugou.x1.protobuf.battle.Battle.PbHarvest.Builder, pb.xiugou.x1.protobuf.battle.Battle.PbHarvestOrBuilder> harvestsBuilder_;

      /**
       * <pre>
       *资源点
       * </pre>
       *
       * <code>repeated .pb.PbHarvest harvests = 3;</code>
       */
      public java.util.List<pb.xiugou.x1.protobuf.battle.Battle.PbHarvest> getHarvestsList() {
        if (harvestsBuilder_ == null) {
          return java.util.Collections.unmodifiableList(harvests_);
        } else {
          return harvestsBuilder_.getMessageList();
        }
      }
      /**
       * <pre>
       *资源点
       * </pre>
       *
       * <code>repeated .pb.PbHarvest harvests = 3;</code>
       */
      public int getHarvestsCount() {
        if (harvestsBuilder_ == null) {
          return harvests_.size();
        } else {
          return harvestsBuilder_.getCount();
        }
      }
      /**
       * <pre>
       *资源点
       * </pre>
       *
       * <code>repeated .pb.PbHarvest harvests = 3;</code>
       */
      public pb.xiugou.x1.protobuf.battle.Battle.PbHarvest getHarvests(int index) {
        if (harvestsBuilder_ == null) {
          return harvests_.get(index);
        } else {
          return harvestsBuilder_.getMessage(index);
        }
      }
      /**
       * <pre>
       *资源点
       * </pre>
       *
       * <code>repeated .pb.PbHarvest harvests = 3;</code>
       */
      public Builder setHarvests(
          int index, pb.xiugou.x1.protobuf.battle.Battle.PbHarvest value) {
        if (harvestsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureHarvestsIsMutable();
          harvests_.set(index, value);
          onChanged();
        } else {
          harvestsBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * <pre>
       *资源点
       * </pre>
       *
       * <code>repeated .pb.PbHarvest harvests = 3;</code>
       */
      public Builder setHarvests(
          int index, pb.xiugou.x1.protobuf.battle.Battle.PbHarvest.Builder builderForValue) {
        if (harvestsBuilder_ == null) {
          ensureHarvestsIsMutable();
          harvests_.set(index, builderForValue.build());
          onChanged();
        } else {
          harvestsBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       *资源点
       * </pre>
       *
       * <code>repeated .pb.PbHarvest harvests = 3;</code>
       */
      public Builder addHarvests(pb.xiugou.x1.protobuf.battle.Battle.PbHarvest value) {
        if (harvestsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureHarvestsIsMutable();
          harvests_.add(value);
          onChanged();
        } else {
          harvestsBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * <pre>
       *资源点
       * </pre>
       *
       * <code>repeated .pb.PbHarvest harvests = 3;</code>
       */
      public Builder addHarvests(
          int index, pb.xiugou.x1.protobuf.battle.Battle.PbHarvest value) {
        if (harvestsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureHarvestsIsMutable();
          harvests_.add(index, value);
          onChanged();
        } else {
          harvestsBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * <pre>
       *资源点
       * </pre>
       *
       * <code>repeated .pb.PbHarvest harvests = 3;</code>
       */
      public Builder addHarvests(
          pb.xiugou.x1.protobuf.battle.Battle.PbHarvest.Builder builderForValue) {
        if (harvestsBuilder_ == null) {
          ensureHarvestsIsMutable();
          harvests_.add(builderForValue.build());
          onChanged();
        } else {
          harvestsBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       *资源点
       * </pre>
       *
       * <code>repeated .pb.PbHarvest harvests = 3;</code>
       */
      public Builder addHarvests(
          int index, pb.xiugou.x1.protobuf.battle.Battle.PbHarvest.Builder builderForValue) {
        if (harvestsBuilder_ == null) {
          ensureHarvestsIsMutable();
          harvests_.add(index, builderForValue.build());
          onChanged();
        } else {
          harvestsBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       *资源点
       * </pre>
       *
       * <code>repeated .pb.PbHarvest harvests = 3;</code>
       */
      public Builder addAllHarvests(
          java.lang.Iterable<? extends pb.xiugou.x1.protobuf.battle.Battle.PbHarvest> values) {
        if (harvestsBuilder_ == null) {
          ensureHarvestsIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, harvests_);
          onChanged();
        } else {
          harvestsBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * <pre>
       *资源点
       * </pre>
       *
       * <code>repeated .pb.PbHarvest harvests = 3;</code>
       */
      public Builder clearHarvests() {
        if (harvestsBuilder_ == null) {
          harvests_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000002);
          onChanged();
        } else {
          harvestsBuilder_.clear();
        }
        return this;
      }
      /**
       * <pre>
       *资源点
       * </pre>
       *
       * <code>repeated .pb.PbHarvest harvests = 3;</code>
       */
      public Builder removeHarvests(int index) {
        if (harvestsBuilder_ == null) {
          ensureHarvestsIsMutable();
          harvests_.remove(index);
          onChanged();
        } else {
          harvestsBuilder_.remove(index);
        }
        return this;
      }
      /**
       * <pre>
       *资源点
       * </pre>
       *
       * <code>repeated .pb.PbHarvest harvests = 3;</code>
       */
      public pb.xiugou.x1.protobuf.battle.Battle.PbHarvest.Builder getHarvestsBuilder(
          int index) {
        return getHarvestsFieldBuilder().getBuilder(index);
      }
      /**
       * <pre>
       *资源点
       * </pre>
       *
       * <code>repeated .pb.PbHarvest harvests = 3;</code>
       */
      public pb.xiugou.x1.protobuf.battle.Battle.PbHarvestOrBuilder getHarvestsOrBuilder(
          int index) {
        if (harvestsBuilder_ == null) {
          return harvests_.get(index);  } else {
          return harvestsBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * <pre>
       *资源点
       * </pre>
       *
       * <code>repeated .pb.PbHarvest harvests = 3;</code>
       */
      public java.util.List<? extends pb.xiugou.x1.protobuf.battle.Battle.PbHarvestOrBuilder> 
           getHarvestsOrBuilderList() {
        if (harvestsBuilder_ != null) {
          return harvestsBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(harvests_);
        }
      }
      /**
       * <pre>
       *资源点
       * </pre>
       *
       * <code>repeated .pb.PbHarvest harvests = 3;</code>
       */
      public pb.xiugou.x1.protobuf.battle.Battle.PbHarvest.Builder addHarvestsBuilder() {
        return getHarvestsFieldBuilder().addBuilder(
            pb.xiugou.x1.protobuf.battle.Battle.PbHarvest.getDefaultInstance());
      }
      /**
       * <pre>
       *资源点
       * </pre>
       *
       * <code>repeated .pb.PbHarvest harvests = 3;</code>
       */
      public pb.xiugou.x1.protobuf.battle.Battle.PbHarvest.Builder addHarvestsBuilder(
          int index) {
        return getHarvestsFieldBuilder().addBuilder(
            index, pb.xiugou.x1.protobuf.battle.Battle.PbHarvest.getDefaultInstance());
      }
      /**
       * <pre>
       *资源点
       * </pre>
       *
       * <code>repeated .pb.PbHarvest harvests = 3;</code>
       */
      public java.util.List<pb.xiugou.x1.protobuf.battle.Battle.PbHarvest.Builder> 
           getHarvestsBuilderList() {
        return getHarvestsFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilderV3<
          pb.xiugou.x1.protobuf.battle.Battle.PbHarvest, pb.xiugou.x1.protobuf.battle.Battle.PbHarvest.Builder, pb.xiugou.x1.protobuf.battle.Battle.PbHarvestOrBuilder> 
          getHarvestsFieldBuilder() {
        if (harvestsBuilder_ == null) {
          harvestsBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
              pb.xiugou.x1.protobuf.battle.Battle.PbHarvest, pb.xiugou.x1.protobuf.battle.Battle.PbHarvest.Builder, pb.xiugou.x1.protobuf.battle.Battle.PbHarvestOrBuilder>(
                  harvests_,
                  ((bitField0_ & 0x00000002) != 0),
                  getParentForChildren(),
                  isClean());
          harvests_ = null;
        }
        return harvestsBuilder_;
      }

      private pb.xiugou.x1.protobuf.battle.Battle.PbSprite aidSprite_;
      private com.google.protobuf.SingleFieldBuilderV3<
          pb.xiugou.x1.protobuf.battle.Battle.PbSprite, pb.xiugou.x1.protobuf.battle.Battle.PbSprite.Builder, pb.xiugou.x1.protobuf.battle.Battle.PbSpriteOrBuilder> aidSpriteBuilder_;
      /**
       * <pre>
       *援军
       * </pre>
       *
       * <code>.pb.PbSprite aid_sprite = 4;</code>
       * @return Whether the aidSprite field is set.
       */
      public boolean hasAidSprite() {
        return aidSpriteBuilder_ != null || aidSprite_ != null;
      }
      /**
       * <pre>
       *援军
       * </pre>
       *
       * <code>.pb.PbSprite aid_sprite = 4;</code>
       * @return The aidSprite.
       */
      public pb.xiugou.x1.protobuf.battle.Battle.PbSprite getAidSprite() {
        if (aidSpriteBuilder_ == null) {
          return aidSprite_ == null ? pb.xiugou.x1.protobuf.battle.Battle.PbSprite.getDefaultInstance() : aidSprite_;
        } else {
          return aidSpriteBuilder_.getMessage();
        }
      }
      /**
       * <pre>
       *援军
       * </pre>
       *
       * <code>.pb.PbSprite aid_sprite = 4;</code>
       */
      public Builder setAidSprite(pb.xiugou.x1.protobuf.battle.Battle.PbSprite value) {
        if (aidSpriteBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          aidSprite_ = value;
          onChanged();
        } else {
          aidSpriteBuilder_.setMessage(value);
        }

        return this;
      }
      /**
       * <pre>
       *援军
       * </pre>
       *
       * <code>.pb.PbSprite aid_sprite = 4;</code>
       */
      public Builder setAidSprite(
          pb.xiugou.x1.protobuf.battle.Battle.PbSprite.Builder builderForValue) {
        if (aidSpriteBuilder_ == null) {
          aidSprite_ = builderForValue.build();
          onChanged();
        } else {
          aidSpriteBuilder_.setMessage(builderForValue.build());
        }

        return this;
      }
      /**
       * <pre>
       *援军
       * </pre>
       *
       * <code>.pb.PbSprite aid_sprite = 4;</code>
       */
      public Builder mergeAidSprite(pb.xiugou.x1.protobuf.battle.Battle.PbSprite value) {
        if (aidSpriteBuilder_ == null) {
          if (aidSprite_ != null) {
            aidSprite_ =
              pb.xiugou.x1.protobuf.battle.Battle.PbSprite.newBuilder(aidSprite_).mergeFrom(value).buildPartial();
          } else {
            aidSprite_ = value;
          }
          onChanged();
        } else {
          aidSpriteBuilder_.mergeFrom(value);
        }

        return this;
      }
      /**
       * <pre>
       *援军
       * </pre>
       *
       * <code>.pb.PbSprite aid_sprite = 4;</code>
       */
      public Builder clearAidSprite() {
        if (aidSpriteBuilder_ == null) {
          aidSprite_ = null;
          onChanged();
        } else {
          aidSprite_ = null;
          aidSpriteBuilder_ = null;
        }

        return this;
      }
      /**
       * <pre>
       *援军
       * </pre>
       *
       * <code>.pb.PbSprite aid_sprite = 4;</code>
       */
      public pb.xiugou.x1.protobuf.battle.Battle.PbSprite.Builder getAidSpriteBuilder() {
        
        onChanged();
        return getAidSpriteFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       *援军
       * </pre>
       *
       * <code>.pb.PbSprite aid_sprite = 4;</code>
       */
      public pb.xiugou.x1.protobuf.battle.Battle.PbSpriteOrBuilder getAidSpriteOrBuilder() {
        if (aidSpriteBuilder_ != null) {
          return aidSpriteBuilder_.getMessageOrBuilder();
        } else {
          return aidSprite_ == null ?
              pb.xiugou.x1.protobuf.battle.Battle.PbSprite.getDefaultInstance() : aidSprite_;
        }
      }
      /**
       * <pre>
       *援军
       * </pre>
       *
       * <code>.pb.PbSprite aid_sprite = 4;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          pb.xiugou.x1.protobuf.battle.Battle.PbSprite, pb.xiugou.x1.protobuf.battle.Battle.PbSprite.Builder, pb.xiugou.x1.protobuf.battle.Battle.PbSpriteOrBuilder> 
          getAidSpriteFieldBuilder() {
        if (aidSpriteBuilder_ == null) {
          aidSpriteBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              pb.xiugou.x1.protobuf.battle.Battle.PbSprite, pb.xiugou.x1.protobuf.battle.Battle.PbSprite.Builder, pb.xiugou.x1.protobuf.battle.Battle.PbSpriteOrBuilder>(
                  getAidSprite(),
                  getParentForChildren(),
                  isClean());
          aidSprite_ = null;
        }
        return aidSpriteBuilder_;
      }

      private int removeSpriteId_ ;
      /**
       * <pre>
       *需要移除的作战单位ID
       * </pre>
       *
       * <code>int32 remove_sprite_id = 5;</code>
       * @return The removeSpriteId.
       */
      public int getRemoveSpriteId() {
        return removeSpriteId_;
      }
      /**
       * <pre>
       *需要移除的作战单位ID
       * </pre>
       *
       * <code>int32 remove_sprite_id = 5;</code>
       * @param value The removeSpriteId to set.
       * @return This builder for chaining.
       */
      public Builder setRemoveSpriteId(int value) {
        
        removeSpriteId_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       *需要移除的作战单位ID
       * </pre>
       *
       * <code>int32 remove_sprite_id = 5;</code>
       * @return This builder for chaining.
       */
      public Builder clearRemoveSpriteId() {
        
        removeSpriteId_ = 0;
        onChanged();
        return this;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

      @java.lang.Override
      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.mergeUnknownFields(unknownFields);
      }


      // @@protoc_insertion_point(builder_scope:pb.PbZone)
    }

    // @@protoc_insertion_point(class_scope:pb.PbZone)
    private static final pb.xiugou.x1.protobuf.battle.Battle.PbZone DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new pb.xiugou.x1.protobuf.battle.Battle.PbZone();
    }

    public static pb.xiugou.x1.protobuf.battle.Battle.PbZone getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<PbZone>
        PARSER = new com.google.protobuf.AbstractParser<PbZone>() {
      @java.lang.Override
      public PbZone parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return new PbZone(input, extensionRegistry);
      }
    };

    public static com.google.protobuf.Parser<PbZone> parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser<PbZone> getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public pb.xiugou.x1.protobuf.battle.Battle.PbZone getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface PbHarvestOrBuilder extends
      // @@protoc_insertion_point(interface_extends:pb.PbHarvest)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     *资源点唯一ID
     * </pre>
     *
     * <code>int32 id = 1;</code>
     * @return The id.
     */
    int getId();

    /**
     * <pre>
     *资源标识（对应S收割资源类型表），树木、草堆、矿石、大矿石等等
     * </pre>
     *
     * <code>int32 identity = 2;</code>
     * @return The identity.
     */
    int getIdentity();

    /**
     * <pre>
     *重生时间，毫秒
     * </pre>
     *
     * <code>int64 reborn_time = 3;</code>
     * @return The rebornTime.
     */
    long getRebornTime();

    /**
     * <pre>
     *刷新方式1世界坐标附近区域随机刷新，2世界坐标定点刷新
     * </pre>
     *
     * <code>int32 ctype = 4;</code>
     * @return The ctype.
     */
    int getCtype();

    /**
     * <pre>
     *地图文件中的世界坐标
     * </pre>
     *
     * <code>int32 cx = 5;</code>
     * @return The cx.
     */
    int getCx();

    /**
     * <pre>
     *地图文件中的世界坐标
     * </pre>
     *
     * <code>int32 cy = 6;</code>
     * @return The cy.
     */
    int getCy();

    /**
     * <pre>
     *迷雾ID
     * </pre>
     *
     * <code>int32 fog_area = 7;</code>
     * @return The fogArea.
     */
    int getFogArea();
  }
  /**
   * <pre>
   *可被收割的资源点
   * </pre>
   *
   * Protobuf type {@code pb.PbHarvest}
   */
  public  static final class PbHarvest extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:pb.PbHarvest)
      PbHarvestOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use PbHarvest.newBuilder() to construct.
    private PbHarvest(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private PbHarvest() {
    }

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new PbHarvest();
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private PbHarvest(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      if (extensionRegistry == null) {
        throw new java.lang.NullPointerException();
      }
      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder();
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            case 8: {

              id_ = input.readInt32();
              break;
            }
            case 16: {

              identity_ = input.readInt32();
              break;
            }
            case 24: {

              rebornTime_ = input.readInt64();
              break;
            }
            case 32: {

              ctype_ = input.readInt32();
              break;
            }
            case 40: {

              cx_ = input.readInt32();
              break;
            }
            case 48: {

              cy_ = input.readInt32();
              break;
            }
            case 56: {

              fogArea_ = input.readInt32();
              break;
            }
            default: {
              if (!parseUnknownField(
                  input, unknownFields, extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e).setUnfinishedMessage(this);
      } finally {
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return pb.xiugou.x1.protobuf.battle.Battle.internal_static_pb_PbHarvest_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return pb.xiugou.x1.protobuf.battle.Battle.internal_static_pb_PbHarvest_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              pb.xiugou.x1.protobuf.battle.Battle.PbHarvest.class, pb.xiugou.x1.protobuf.battle.Battle.PbHarvest.Builder.class);
    }

    public static final int ID_FIELD_NUMBER = 1;
    private int id_;
    /**
     * <pre>
     *资源点唯一ID
     * </pre>
     *
     * <code>int32 id = 1;</code>
     * @return The id.
     */
    public int getId() {
      return id_;
    }

    public static final int IDENTITY_FIELD_NUMBER = 2;
    private int identity_;
    /**
     * <pre>
     *资源标识（对应S收割资源类型表），树木、草堆、矿石、大矿石等等
     * </pre>
     *
     * <code>int32 identity = 2;</code>
     * @return The identity.
     */
    public int getIdentity() {
      return identity_;
    }

    public static final int REBORN_TIME_FIELD_NUMBER = 3;
    private long rebornTime_;
    /**
     * <pre>
     *重生时间，毫秒
     * </pre>
     *
     * <code>int64 reborn_time = 3;</code>
     * @return The rebornTime.
     */
    public long getRebornTime() {
      return rebornTime_;
    }

    public static final int CTYPE_FIELD_NUMBER = 4;
    private int ctype_;
    /**
     * <pre>
     *刷新方式1世界坐标附近区域随机刷新，2世界坐标定点刷新
     * </pre>
     *
     * <code>int32 ctype = 4;</code>
     * @return The ctype.
     */
    public int getCtype() {
      return ctype_;
    }

    public static final int CX_FIELD_NUMBER = 5;
    private int cx_;
    /**
     * <pre>
     *地图文件中的世界坐标
     * </pre>
     *
     * <code>int32 cx = 5;</code>
     * @return The cx.
     */
    public int getCx() {
      return cx_;
    }

    public static final int CY_FIELD_NUMBER = 6;
    private int cy_;
    /**
     * <pre>
     *地图文件中的世界坐标
     * </pre>
     *
     * <code>int32 cy = 6;</code>
     * @return The cy.
     */
    public int getCy() {
      return cy_;
    }

    public static final int FOG_AREA_FIELD_NUMBER = 7;
    private int fogArea_;
    /**
     * <pre>
     *迷雾ID
     * </pre>
     *
     * <code>int32 fog_area = 7;</code>
     * @return The fogArea.
     */
    public int getFogArea() {
      return fogArea_;
    }

    private byte memoizedIsInitialized = -1;
    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (id_ != 0) {
        output.writeInt32(1, id_);
      }
      if (identity_ != 0) {
        output.writeInt32(2, identity_);
      }
      if (rebornTime_ != 0L) {
        output.writeInt64(3, rebornTime_);
      }
      if (ctype_ != 0) {
        output.writeInt32(4, ctype_);
      }
      if (cx_ != 0) {
        output.writeInt32(5, cx_);
      }
      if (cy_ != 0) {
        output.writeInt32(6, cy_);
      }
      if (fogArea_ != 0) {
        output.writeInt32(7, fogArea_);
      }
      unknownFields.writeTo(output);
    }

    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      if (id_ != 0) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt32Size(1, id_);
      }
      if (identity_ != 0) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt32Size(2, identity_);
      }
      if (rebornTime_ != 0L) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt64Size(3, rebornTime_);
      }
      if (ctype_ != 0) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt32Size(4, ctype_);
      }
      if (cx_ != 0) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt32Size(5, cx_);
      }
      if (cy_ != 0) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt32Size(6, cy_);
      }
      if (fogArea_ != 0) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt32Size(7, fogArea_);
      }
      size += unknownFields.getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof pb.xiugou.x1.protobuf.battle.Battle.PbHarvest)) {
        return super.equals(obj);
      }
      pb.xiugou.x1.protobuf.battle.Battle.PbHarvest other = (pb.xiugou.x1.protobuf.battle.Battle.PbHarvest) obj;

      if (getId()
          != other.getId()) return false;
      if (getIdentity()
          != other.getIdentity()) return false;
      if (getRebornTime()
          != other.getRebornTime()) return false;
      if (getCtype()
          != other.getCtype()) return false;
      if (getCx()
          != other.getCx()) return false;
      if (getCy()
          != other.getCy()) return false;
      if (getFogArea()
          != other.getFogArea()) return false;
      if (!unknownFields.equals(other.unknownFields)) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      hash = (37 * hash) + ID_FIELD_NUMBER;
      hash = (53 * hash) + getId();
      hash = (37 * hash) + IDENTITY_FIELD_NUMBER;
      hash = (53 * hash) + getIdentity();
      hash = (37 * hash) + REBORN_TIME_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
          getRebornTime());
      hash = (37 * hash) + CTYPE_FIELD_NUMBER;
      hash = (53 * hash) + getCtype();
      hash = (37 * hash) + CX_FIELD_NUMBER;
      hash = (53 * hash) + getCx();
      hash = (37 * hash) + CY_FIELD_NUMBER;
      hash = (53 * hash) + getCy();
      hash = (37 * hash) + FOG_AREA_FIELD_NUMBER;
      hash = (53 * hash) + getFogArea();
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static pb.xiugou.x1.protobuf.battle.Battle.PbHarvest parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static pb.xiugou.x1.protobuf.battle.Battle.PbHarvest parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static pb.xiugou.x1.protobuf.battle.Battle.PbHarvest parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static pb.xiugou.x1.protobuf.battle.Battle.PbHarvest parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static pb.xiugou.x1.protobuf.battle.Battle.PbHarvest parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static pb.xiugou.x1.protobuf.battle.Battle.PbHarvest parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static pb.xiugou.x1.protobuf.battle.Battle.PbHarvest parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static pb.xiugou.x1.protobuf.battle.Battle.PbHarvest parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }
    public static pb.xiugou.x1.protobuf.battle.Battle.PbHarvest parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static pb.xiugou.x1.protobuf.battle.Battle.PbHarvest parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static pb.xiugou.x1.protobuf.battle.Battle.PbHarvest parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static pb.xiugou.x1.protobuf.battle.Battle.PbHarvest parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(pb.xiugou.x1.protobuf.battle.Battle.PbHarvest prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * <pre>
     *可被收割的资源点
     * </pre>
     *
     * Protobuf type {@code pb.PbHarvest}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:pb.PbHarvest)
        pb.xiugou.x1.protobuf.battle.Battle.PbHarvestOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return pb.xiugou.x1.protobuf.battle.Battle.internal_static_pb_PbHarvest_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return pb.xiugou.x1.protobuf.battle.Battle.internal_static_pb_PbHarvest_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                pb.xiugou.x1.protobuf.battle.Battle.PbHarvest.class, pb.xiugou.x1.protobuf.battle.Battle.PbHarvest.Builder.class);
      }

      // Construct using pb.xiugou.x1.protobuf.battle.Battle.PbHarvest.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
        }
      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        id_ = 0;

        identity_ = 0;

        rebornTime_ = 0L;

        ctype_ = 0;

        cx_ = 0;

        cy_ = 0;

        fogArea_ = 0;

        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return pb.xiugou.x1.protobuf.battle.Battle.internal_static_pb_PbHarvest_descriptor;
      }

      @java.lang.Override
      public pb.xiugou.x1.protobuf.battle.Battle.PbHarvest getDefaultInstanceForType() {
        return pb.xiugou.x1.protobuf.battle.Battle.PbHarvest.getDefaultInstance();
      }

      @java.lang.Override
      public pb.xiugou.x1.protobuf.battle.Battle.PbHarvest build() {
        pb.xiugou.x1.protobuf.battle.Battle.PbHarvest result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public pb.xiugou.x1.protobuf.battle.Battle.PbHarvest buildPartial() {
        pb.xiugou.x1.protobuf.battle.Battle.PbHarvest result = new pb.xiugou.x1.protobuf.battle.Battle.PbHarvest(this);
        result.id_ = id_;
        result.identity_ = identity_;
        result.rebornTime_ = rebornTime_;
        result.ctype_ = ctype_;
        result.cx_ = cx_;
        result.cy_ = cy_;
        result.fogArea_ = fogArea_;
        onBuilt();
        return result;
      }

      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }
      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.setField(field, value);
      }
      @java.lang.Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @java.lang.Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }
      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof pb.xiugou.x1.protobuf.battle.Battle.PbHarvest) {
          return mergeFrom((pb.xiugou.x1.protobuf.battle.Battle.PbHarvest)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(pb.xiugou.x1.protobuf.battle.Battle.PbHarvest other) {
        if (other == pb.xiugou.x1.protobuf.battle.Battle.PbHarvest.getDefaultInstance()) return this;
        if (other.getId() != 0) {
          setId(other.getId());
        }
        if (other.getIdentity() != 0) {
          setIdentity(other.getIdentity());
        }
        if (other.getRebornTime() != 0L) {
          setRebornTime(other.getRebornTime());
        }
        if (other.getCtype() != 0) {
          setCtype(other.getCtype());
        }
        if (other.getCx() != 0) {
          setCx(other.getCx());
        }
        if (other.getCy() != 0) {
          setCy(other.getCy());
        }
        if (other.getFogArea() != 0) {
          setFogArea(other.getFogArea());
        }
        this.mergeUnknownFields(other.unknownFields);
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        pb.xiugou.x1.protobuf.battle.Battle.PbHarvest parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (pb.xiugou.x1.protobuf.battle.Battle.PbHarvest) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }

      private int id_ ;
      /**
       * <pre>
       *资源点唯一ID
       * </pre>
       *
       * <code>int32 id = 1;</code>
       * @return The id.
       */
      public int getId() {
        return id_;
      }
      /**
       * <pre>
       *资源点唯一ID
       * </pre>
       *
       * <code>int32 id = 1;</code>
       * @param value The id to set.
       * @return This builder for chaining.
       */
      public Builder setId(int value) {
        
        id_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       *资源点唯一ID
       * </pre>
       *
       * <code>int32 id = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearId() {
        
        id_ = 0;
        onChanged();
        return this;
      }

      private int identity_ ;
      /**
       * <pre>
       *资源标识（对应S收割资源类型表），树木、草堆、矿石、大矿石等等
       * </pre>
       *
       * <code>int32 identity = 2;</code>
       * @return The identity.
       */
      public int getIdentity() {
        return identity_;
      }
      /**
       * <pre>
       *资源标识（对应S收割资源类型表），树木、草堆、矿石、大矿石等等
       * </pre>
       *
       * <code>int32 identity = 2;</code>
       * @param value The identity to set.
       * @return This builder for chaining.
       */
      public Builder setIdentity(int value) {
        
        identity_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       *资源标识（对应S收割资源类型表），树木、草堆、矿石、大矿石等等
       * </pre>
       *
       * <code>int32 identity = 2;</code>
       * @return This builder for chaining.
       */
      public Builder clearIdentity() {
        
        identity_ = 0;
        onChanged();
        return this;
      }

      private long rebornTime_ ;
      /**
       * <pre>
       *重生时间，毫秒
       * </pre>
       *
       * <code>int64 reborn_time = 3;</code>
       * @return The rebornTime.
       */
      public long getRebornTime() {
        return rebornTime_;
      }
      /**
       * <pre>
       *重生时间，毫秒
       * </pre>
       *
       * <code>int64 reborn_time = 3;</code>
       * @param value The rebornTime to set.
       * @return This builder for chaining.
       */
      public Builder setRebornTime(long value) {
        
        rebornTime_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       *重生时间，毫秒
       * </pre>
       *
       * <code>int64 reborn_time = 3;</code>
       * @return This builder for chaining.
       */
      public Builder clearRebornTime() {
        
        rebornTime_ = 0L;
        onChanged();
        return this;
      }

      private int ctype_ ;
      /**
       * <pre>
       *刷新方式1世界坐标附近区域随机刷新，2世界坐标定点刷新
       * </pre>
       *
       * <code>int32 ctype = 4;</code>
       * @return The ctype.
       */
      public int getCtype() {
        return ctype_;
      }
      /**
       * <pre>
       *刷新方式1世界坐标附近区域随机刷新，2世界坐标定点刷新
       * </pre>
       *
       * <code>int32 ctype = 4;</code>
       * @param value The ctype to set.
       * @return This builder for chaining.
       */
      public Builder setCtype(int value) {
        
        ctype_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       *刷新方式1世界坐标附近区域随机刷新，2世界坐标定点刷新
       * </pre>
       *
       * <code>int32 ctype = 4;</code>
       * @return This builder for chaining.
       */
      public Builder clearCtype() {
        
        ctype_ = 0;
        onChanged();
        return this;
      }

      private int cx_ ;
      /**
       * <pre>
       *地图文件中的世界坐标
       * </pre>
       *
       * <code>int32 cx = 5;</code>
       * @return The cx.
       */
      public int getCx() {
        return cx_;
      }
      /**
       * <pre>
       *地图文件中的世界坐标
       * </pre>
       *
       * <code>int32 cx = 5;</code>
       * @param value The cx to set.
       * @return This builder for chaining.
       */
      public Builder setCx(int value) {
        
        cx_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       *地图文件中的世界坐标
       * </pre>
       *
       * <code>int32 cx = 5;</code>
       * @return This builder for chaining.
       */
      public Builder clearCx() {
        
        cx_ = 0;
        onChanged();
        return this;
      }

      private int cy_ ;
      /**
       * <pre>
       *地图文件中的世界坐标
       * </pre>
       *
       * <code>int32 cy = 6;</code>
       * @return The cy.
       */
      public int getCy() {
        return cy_;
      }
      /**
       * <pre>
       *地图文件中的世界坐标
       * </pre>
       *
       * <code>int32 cy = 6;</code>
       * @param value The cy to set.
       * @return This builder for chaining.
       */
      public Builder setCy(int value) {
        
        cy_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       *地图文件中的世界坐标
       * </pre>
       *
       * <code>int32 cy = 6;</code>
       * @return This builder for chaining.
       */
      public Builder clearCy() {
        
        cy_ = 0;
        onChanged();
        return this;
      }

      private int fogArea_ ;
      /**
       * <pre>
       *迷雾ID
       * </pre>
       *
       * <code>int32 fog_area = 7;</code>
       * @return The fogArea.
       */
      public int getFogArea() {
        return fogArea_;
      }
      /**
       * <pre>
       *迷雾ID
       * </pre>
       *
       * <code>int32 fog_area = 7;</code>
       * @param value The fogArea to set.
       * @return This builder for chaining.
       */
      public Builder setFogArea(int value) {
        
        fogArea_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       *迷雾ID
       * </pre>
       *
       * <code>int32 fog_area = 7;</code>
       * @return This builder for chaining.
       */
      public Builder clearFogArea() {
        
        fogArea_ = 0;
        onChanged();
        return this;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

      @java.lang.Override
      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.mergeUnknownFields(unknownFields);
      }


      // @@protoc_insertion_point(builder_scope:pb.PbHarvest)
    }

    // @@protoc_insertion_point(class_scope:pb.PbHarvest)
    private static final pb.xiugou.x1.protobuf.battle.Battle.PbHarvest DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new pb.xiugou.x1.protobuf.battle.Battle.PbHarvest();
    }

    public static pb.xiugou.x1.protobuf.battle.Battle.PbHarvest getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<PbHarvest>
        PARSER = new com.google.protobuf.AbstractParser<PbHarvest>() {
      @java.lang.Override
      public PbHarvest parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return new PbHarvest(input, extensionRegistry);
      }
    };

    public static com.google.protobuf.Parser<PbHarvest> parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser<PbHarvest> getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public pb.xiugou.x1.protobuf.battle.Battle.PbHarvest getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface PbBattleEndDataOrBuilder extends
      // @@protoc_insertion_point(interface_extends:pb.PbBattleEndData)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     *战斗结束状态
     * </pre>
     *
     * <code>.pb.PbBattleEndStatus status = 1;</code>
     * @return The enum numeric value on the wire for status.
     */
    int getStatusValue();
    /**
     * <pre>
     *战斗结束状态
     * </pre>
     *
     * <code>.pb.PbBattleEndStatus status = 1;</code>
     * @return The status.
     */
    pb.xiugou.x1.protobuf.battle.Battle.PbBattleEndStatus getStatus();

    /**
     * <pre>
     *战斗结束的数据，根据战斗类型进行解释
     * </pre>
     *
     * <code>bytes data = 2;</code>
     * @return The data.
     */
    com.google.protobuf.ByteString getData();
  }
  /**
   * Protobuf type {@code pb.PbBattleEndData}
   */
  public  static final class PbBattleEndData extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:pb.PbBattleEndData)
      PbBattleEndDataOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use PbBattleEndData.newBuilder() to construct.
    private PbBattleEndData(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private PbBattleEndData() {
      status_ = 0;
      data_ = com.google.protobuf.ByteString.EMPTY;
    }

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new PbBattleEndData();
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private PbBattleEndData(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      if (extensionRegistry == null) {
        throw new java.lang.NullPointerException();
      }
      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder();
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            case 8: {
              int rawValue = input.readEnum();

              status_ = rawValue;
              break;
            }
            case 18: {

              data_ = input.readBytes();
              break;
            }
            default: {
              if (!parseUnknownField(
                  input, unknownFields, extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e).setUnfinishedMessage(this);
      } finally {
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return pb.xiugou.x1.protobuf.battle.Battle.internal_static_pb_PbBattleEndData_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return pb.xiugou.x1.protobuf.battle.Battle.internal_static_pb_PbBattleEndData_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              pb.xiugou.x1.protobuf.battle.Battle.PbBattleEndData.class, pb.xiugou.x1.protobuf.battle.Battle.PbBattleEndData.Builder.class);
    }

    public static final int STATUS_FIELD_NUMBER = 1;
    private int status_;
    /**
     * <pre>
     *战斗结束状态
     * </pre>
     *
     * <code>.pb.PbBattleEndStatus status = 1;</code>
     * @return The enum numeric value on the wire for status.
     */
    public int getStatusValue() {
      return status_;
    }
    /**
     * <pre>
     *战斗结束状态
     * </pre>
     *
     * <code>.pb.PbBattleEndStatus status = 1;</code>
     * @return The status.
     */
    public pb.xiugou.x1.protobuf.battle.Battle.PbBattleEndStatus getStatus() {
      @SuppressWarnings("deprecation")
      pb.xiugou.x1.protobuf.battle.Battle.PbBattleEndStatus result = pb.xiugou.x1.protobuf.battle.Battle.PbBattleEndStatus.valueOf(status_);
      return result == null ? pb.xiugou.x1.protobuf.battle.Battle.PbBattleEndStatus.UNRECOGNIZED : result;
    }

    public static final int DATA_FIELD_NUMBER = 2;
    private com.google.protobuf.ByteString data_;
    /**
     * <pre>
     *战斗结束的数据，根据战斗类型进行解释
     * </pre>
     *
     * <code>bytes data = 2;</code>
     * @return The data.
     */
    public com.google.protobuf.ByteString getData() {
      return data_;
    }

    private byte memoizedIsInitialized = -1;
    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (status_ != pb.xiugou.x1.protobuf.battle.Battle.PbBattleEndStatus.NO_STATUS.getNumber()) {
        output.writeEnum(1, status_);
      }
      if (!data_.isEmpty()) {
        output.writeBytes(2, data_);
      }
      unknownFields.writeTo(output);
    }

    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      if (status_ != pb.xiugou.x1.protobuf.battle.Battle.PbBattleEndStatus.NO_STATUS.getNumber()) {
        size += com.google.protobuf.CodedOutputStream
          .computeEnumSize(1, status_);
      }
      if (!data_.isEmpty()) {
        size += com.google.protobuf.CodedOutputStream
          .computeBytesSize(2, data_);
      }
      size += unknownFields.getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof pb.xiugou.x1.protobuf.battle.Battle.PbBattleEndData)) {
        return super.equals(obj);
      }
      pb.xiugou.x1.protobuf.battle.Battle.PbBattleEndData other = (pb.xiugou.x1.protobuf.battle.Battle.PbBattleEndData) obj;

      if (status_ != other.status_) return false;
      if (!getData()
          .equals(other.getData())) return false;
      if (!unknownFields.equals(other.unknownFields)) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      hash = (37 * hash) + STATUS_FIELD_NUMBER;
      hash = (53 * hash) + status_;
      hash = (37 * hash) + DATA_FIELD_NUMBER;
      hash = (53 * hash) + getData().hashCode();
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static pb.xiugou.x1.protobuf.battle.Battle.PbBattleEndData parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static pb.xiugou.x1.protobuf.battle.Battle.PbBattleEndData parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static pb.xiugou.x1.protobuf.battle.Battle.PbBattleEndData parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static pb.xiugou.x1.protobuf.battle.Battle.PbBattleEndData parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static pb.xiugou.x1.protobuf.battle.Battle.PbBattleEndData parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static pb.xiugou.x1.protobuf.battle.Battle.PbBattleEndData parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static pb.xiugou.x1.protobuf.battle.Battle.PbBattleEndData parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static pb.xiugou.x1.protobuf.battle.Battle.PbBattleEndData parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }
    public static pb.xiugou.x1.protobuf.battle.Battle.PbBattleEndData parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static pb.xiugou.x1.protobuf.battle.Battle.PbBattleEndData parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static pb.xiugou.x1.protobuf.battle.Battle.PbBattleEndData parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static pb.xiugou.x1.protobuf.battle.Battle.PbBattleEndData parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(pb.xiugou.x1.protobuf.battle.Battle.PbBattleEndData prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code pb.PbBattleEndData}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:pb.PbBattleEndData)
        pb.xiugou.x1.protobuf.battle.Battle.PbBattleEndDataOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return pb.xiugou.x1.protobuf.battle.Battle.internal_static_pb_PbBattleEndData_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return pb.xiugou.x1.protobuf.battle.Battle.internal_static_pb_PbBattleEndData_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                pb.xiugou.x1.protobuf.battle.Battle.PbBattleEndData.class, pb.xiugou.x1.protobuf.battle.Battle.PbBattleEndData.Builder.class);
      }

      // Construct using pb.xiugou.x1.protobuf.battle.Battle.PbBattleEndData.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
        }
      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        status_ = 0;

        data_ = com.google.protobuf.ByteString.EMPTY;

        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return pb.xiugou.x1.protobuf.battle.Battle.internal_static_pb_PbBattleEndData_descriptor;
      }

      @java.lang.Override
      public pb.xiugou.x1.protobuf.battle.Battle.PbBattleEndData getDefaultInstanceForType() {
        return pb.xiugou.x1.protobuf.battle.Battle.PbBattleEndData.getDefaultInstance();
      }

      @java.lang.Override
      public pb.xiugou.x1.protobuf.battle.Battle.PbBattleEndData build() {
        pb.xiugou.x1.protobuf.battle.Battle.PbBattleEndData result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public pb.xiugou.x1.protobuf.battle.Battle.PbBattleEndData buildPartial() {
        pb.xiugou.x1.protobuf.battle.Battle.PbBattleEndData result = new pb.xiugou.x1.protobuf.battle.Battle.PbBattleEndData(this);
        result.status_ = status_;
        result.data_ = data_;
        onBuilt();
        return result;
      }

      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }
      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.setField(field, value);
      }
      @java.lang.Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @java.lang.Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }
      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof pb.xiugou.x1.protobuf.battle.Battle.PbBattleEndData) {
          return mergeFrom((pb.xiugou.x1.protobuf.battle.Battle.PbBattleEndData)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(pb.xiugou.x1.protobuf.battle.Battle.PbBattleEndData other) {
        if (other == pb.xiugou.x1.protobuf.battle.Battle.PbBattleEndData.getDefaultInstance()) return this;
        if (other.status_ != 0) {
          setStatusValue(other.getStatusValue());
        }
        if (other.getData() != com.google.protobuf.ByteString.EMPTY) {
          setData(other.getData());
        }
        this.mergeUnknownFields(other.unknownFields);
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        pb.xiugou.x1.protobuf.battle.Battle.PbBattleEndData parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (pb.xiugou.x1.protobuf.battle.Battle.PbBattleEndData) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }

      private int status_ = 0;
      /**
       * <pre>
       *战斗结束状态
       * </pre>
       *
       * <code>.pb.PbBattleEndStatus status = 1;</code>
       * @return The enum numeric value on the wire for status.
       */
      public int getStatusValue() {
        return status_;
      }
      /**
       * <pre>
       *战斗结束状态
       * </pre>
       *
       * <code>.pb.PbBattleEndStatus status = 1;</code>
       * @param value The enum numeric value on the wire for status to set.
       * @return This builder for chaining.
       */
      public Builder setStatusValue(int value) {
        status_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       *战斗结束状态
       * </pre>
       *
       * <code>.pb.PbBattleEndStatus status = 1;</code>
       * @return The status.
       */
      public pb.xiugou.x1.protobuf.battle.Battle.PbBattleEndStatus getStatus() {
        @SuppressWarnings("deprecation")
        pb.xiugou.x1.protobuf.battle.Battle.PbBattleEndStatus result = pb.xiugou.x1.protobuf.battle.Battle.PbBattleEndStatus.valueOf(status_);
        return result == null ? pb.xiugou.x1.protobuf.battle.Battle.PbBattleEndStatus.UNRECOGNIZED : result;
      }
      /**
       * <pre>
       *战斗结束状态
       * </pre>
       *
       * <code>.pb.PbBattleEndStatus status = 1;</code>
       * @param value The status to set.
       * @return This builder for chaining.
       */
      public Builder setStatus(pb.xiugou.x1.protobuf.battle.Battle.PbBattleEndStatus value) {
        if (value == null) {
          throw new NullPointerException();
        }
        
        status_ = value.getNumber();
        onChanged();
        return this;
      }
      /**
       * <pre>
       *战斗结束状态
       * </pre>
       *
       * <code>.pb.PbBattleEndStatus status = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearStatus() {
        
        status_ = 0;
        onChanged();
        return this;
      }

      private com.google.protobuf.ByteString data_ = com.google.protobuf.ByteString.EMPTY;
      /**
       * <pre>
       *战斗结束的数据，根据战斗类型进行解释
       * </pre>
       *
       * <code>bytes data = 2;</code>
       * @return The data.
       */
      public com.google.protobuf.ByteString getData() {
        return data_;
      }
      /**
       * <pre>
       *战斗结束的数据，根据战斗类型进行解释
       * </pre>
       *
       * <code>bytes data = 2;</code>
       * @param value The data to set.
       * @return This builder for chaining.
       */
      public Builder setData(com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        data_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       *战斗结束的数据，根据战斗类型进行解释
       * </pre>
       *
       * <code>bytes data = 2;</code>
       * @return This builder for chaining.
       */
      public Builder clearData() {
        
        data_ = getDefaultInstance().getData();
        onChanged();
        return this;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

      @java.lang.Override
      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.mergeUnknownFields(unknownFields);
      }


      // @@protoc_insertion_point(builder_scope:pb.PbBattleEndData)
    }

    // @@protoc_insertion_point(class_scope:pb.PbBattleEndData)
    private static final pb.xiugou.x1.protobuf.battle.Battle.PbBattleEndData DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new pb.xiugou.x1.protobuf.battle.Battle.PbBattleEndData();
    }

    public static pb.xiugou.x1.protobuf.battle.Battle.PbBattleEndData getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<PbBattleEndData>
        PARSER = new com.google.protobuf.AbstractParser<PbBattleEndData>() {
      @java.lang.Override
      public PbBattleEndData parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return new PbBattleEndData(input, extensionRegistry);
      }
    };

    public static com.google.protobuf.Parser<PbBattleEndData> parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser<PbBattleEndData> getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public pb.xiugou.x1.protobuf.battle.Battle.PbBattleEndData getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_pb_EnterBattleRequest_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_pb_EnterBattleRequest_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_pb_EnterBattleResponse_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_pb_EnterBattleResponse_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_pb_EnterZoneRequest_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_pb_EnterZoneRequest_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_pb_EnterZoneResponse_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_pb_EnterZoneResponse_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_pb_ZoneInfoRequest_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_pb_ZoneInfoRequest_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_pb_ZoneInfoResponse_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_pb_ZoneInfoResponse_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_pb_BattleReviveRequest_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_pb_BattleReviveRequest_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_pb_BattleReviveResponse_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_pb_BattleReviveResponse_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_pb_BattleGiveUpRequest_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_pb_BattleGiveUpRequest_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_pb_BattleGiveUpResponse_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_pb_BattleGiveUpResponse_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_pb_BattleKillSpriteRequest_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_pb_BattleKillSpriteRequest_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_pb_BattleKillSpriteResponse_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_pb_BattleKillSpriteResponse_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_pb_BattleSyncKillMonsterRequest_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_pb_BattleSyncKillMonsterRequest_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_pb_BattleSyncKillMonsterResponse_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_pb_BattleSyncKillMonsterResponse_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_pb_BattleRebornSpriteRequest_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_pb_BattleRebornSpriteRequest_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_pb_BattleRebornSpriteResponse_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_pb_BattleRebornSpriteResponse_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_pb_BattleSettleRequest_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_pb_BattleSettleRequest_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_pb_BattleSettleResponse_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_pb_BattleSettleResponse_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_pb_BattleSpawnMonsterGmMessage_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_pb_BattleSpawnMonsterGmMessage_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_pb_SwitchBattleHeroRequest_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_pb_SwitchBattleHeroRequest_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_pb_SwitchBattleHeroResponse_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_pb_SwitchBattleHeroResponse_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_pb_PbTreasureEvent_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_pb_PbTreasureEvent_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_pb_PbSprite_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_pb_PbSprite_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_pb_PbKillSprite_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_pb_PbKillSprite_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_pb_PbZone_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_pb_PbZone_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_pb_PbHarvest_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_pb_PbHarvest_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_pb_PbBattleEndData_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_pb_PbBattleEndData_fieldAccessorTable;

  public static com.google.protobuf.Descriptors.FileDescriptor
      getDescriptor() {
    return descriptor;
  }
  private static  com.google.protobuf.Descriptors.FileDescriptor
      descriptor;
  static {
    java.lang.String[] descriptorData = {
      "\n\014Battle.proto\022\002pb\032\020MiniStruct.proto\032\017Fo" +
      "rmation.proto\032\020BattleAttr.proto\"\267\001\n\022Ente" +
      "rBattleRequest\022\023\n\013battle_type\030\001 \001(\005\022\016\n\006m" +
      "ap_id\030\002 \001(\005\022\021\n\tmain_hero\030\003 \001(\005\022\025\n\rbattle" +
      "_params\030\004 \001(\014\022$\n\010pos_list\030\005 \003(\0132\022.pb.PbF" +
      "ormationPos\022\014\n\004type\030\006 \001(\005\"\036\n\005Proto\022\013\n\007UN" +
      "KNOWN\020\000\022\010\n\002ID\020\341\247\022\"\260\001\n\023EnterBattleRespons" +
      "e\022\023\n\013battle_type\030\001 \001(\005\022\016\n\006map_id\030\002 \001(\005\022\034" +
      "\n\006heroes\030\003 \003(\0132\014.pb.PbSprite\022\021\n\tmain_her" +
      "o\030\004 \001(\005\022\025\n\rbattle_params\030\005 \001(\014\022\014\n\004type\030\006" +
      " \001(\005\"\036\n\005Proto\022\013\n\007UNKNOWN\020\000\022\010\n\002ID\020\341\247\022\"C\n\020" +
      "EnterZoneRequest\022\017\n\007zone_id\030\001 \001(\005\"\036\n\005Pro" +
      "to\022\013\n\007UNKNOWN\020\000\022\010\n\002ID\020\342\247\022\"D\n\021EnterZoneRe" +
      "sponse\022\017\n\007zone_id\030\001 \001(\005\"\036\n\005Proto\022\013\n\007UNKN" +
      "OWN\020\000\022\010\n\002ID\020\342\247\022\"B\n\017ZoneInfoRequest\022\017\n\007zo" +
      "ne_id\030\001 \001(\005\"\036\n\005Proto\022\013\n\007UNKNOWN\020\000\022\010\n\002ID\020" +
      "\343\247\022\"L\n\020ZoneInfoResponse\022\030\n\004zone\030\001 \001(\0132\n." +
      "pb.PbZone\"\036\n\005Proto\022\013\n\007UNKNOWN\020\000\022\010\n\002ID\020\343\247" +
      "\022\"5\n\023BattleReviveRequest\"\036\n\005Proto\022\013\n\007UNK" +
      "NOWN\020\000\022\010\n\002ID\020\346\247\022\"T\n\024BattleReviveResponse" +
      "\022\034\n\006heroes\030\001 \003(\0132\014.pb.PbSprite\"\036\n\005Proto\022" +
      "\013\n\007UNKNOWN\020\000\022\010\n\002ID\020\346\247\022\"5\n\023BattleGiveUpRe" +
      "quest\"\036\n\005Proto\022\013\n\007UNKNOWN\020\000\022\010\n\002ID\020\347\247\022\"6\n" +
      "\024BattleGiveUpResponse\"\036\n\005Proto\022\013\n\007UNKNOW" +
      "N\020\000\022\010\n\002ID\020\347\247\022\"`\n\027BattleKillSpriteRequest" +
      "\022\022\n\nsprite_ids\030\001 \003(\005\022\021\n\tserial_id\030\002 \001(\005\"" +
      "\036\n\005Proto\022\013\n\007UNKNOWN\020\000\022\010\n\002ID\020\350\247\022\"\227\001\n\030Batt" +
      "leKillSpriteResponse\022!\n\007sprites\030\001 \003(\0132\020." +
      "pb.PbKillSprite\022\021\n\tserial_id\030\002 \001(\005\022%\n\010en" +
      "d_data\030\003 \001(\0132\023.pb.PbBattleEndData\"\036\n\005Pro" +
      "to\022\013\n\007UNKNOWN\020\000\022\010\n\002ID\020\350\247\022\"a\n\034BattleSyncK" +
      "illMonsterRequest\022!\n\rkill_monsters\030\001 \003(\013" +
      "2\n.pb.PbKeyV\"\036\n\005Proto\022\013\n\007UNKNOWN\020\000\022\010\n\002ID" +
      "\020\351\247\022\"?\n\035BattleSyncKillMonsterResponse\"\036\n" +
      "\005Proto\022\013\n\007UNKNOWN\020\000\022\010\n\002ID\020\351\247\022\"O\n\031BattleR" +
      "ebornSpriteRequest\022\022\n\nsprite_ids\030\001 \003(\005\"\036" +
      "\n\005Proto\022\013\n\007UNKNOWN\020\000\022\010\n\002ID\020\353\247\022\"[\n\032Battle" +
      "RebornSpriteResponse\022\035\n\007sprites\030\001 \003(\0132\014." +
      "pb.PbSprite\"\036\n\005Proto\022\013\n\007UNKNOWN\020\000\022\010\n\002ID\020" +
      "\353\247\022\"5\n\023BattleSettleRequest\"\036\n\005Proto\022\013\n\007U" +
      "NKNOWN\020\000\022\010\n\002ID\020\354\247\022\"]\n\024BattleSettleRespon" +
      "se\022%\n\010end_data\030\001 \001(\0132\023.pb.PbBattleEndDat" +
      "a\"\036\n\005Proto\022\013\n\007UNKNOWN\020\000\022\010\n\002ID\020\354\247\022\"p\n\033Bat" +
      "tleSpawnMonsterGmMessage\022\023\n\013battle_type\030" +
      "\001 \001(\005\022\034\n\006sprite\030\002 \001(\0132\014.pb.PbSprite\"\036\n\005P" +
      "roto\022\013\n\007UNKNOWN\020\000\022\010\n\002ID\020\355\247\022\"r\n\027SwitchBat" +
      "tleHeroRequest\022\021\n\tmain_hero\030\001 \001(\005\022$\n\010pos" +
      "_list\030\002 \003(\0132\022.pb.PbFormationPos\"\036\n\005Proto" +
      "\022\013\n\007UNKNOWN\020\000\022\010\n\002ID\020\305\250\022\"k\n\030SwitchBattleH" +
      "eroResponse\022\034\n\006heroes\030\001 \003(\0132\014.pb.PbSprit" +
      "e\022\021\n\tmain_hero\030\002 \001(\005\"\036\n\005Proto\022\013\n\007UNKNOWN" +
      "\020\000\022\010\n\002ID\020\305\250\022\"k\n\017PbTreasureEvent\022\017\n\007item_" +
      "id\030\001 \001(\005\022\013\n\003num\030\002 \001(\003\022\022\n\nup_item_id\030\003 \001(" +
      "\005\022\016\n\006up_num\030\004 \001(\003\022\026\n\016disappear_time\030\005 \001(" +
      "\003\"\337\001\n\010PbSprite\022\n\n\002id\030\001 \001(\005\022\036\n\004type\030\002 \001(\016" +
      "2\020.pb.PbSpriteType\022\020\n\010identity\030\003 \001(\005\022\r\n\005" +
      "level\030\004 \001(\005\022\023\n\013reborn_time\030\005 \001(\003\022\r\n\005ctyp" +
      "e\030\006 \001(\005\022\n\n\002cx\030\007 \001(\005\022\n\n\002cy\030\010 \001(\005\022%\n\013battl" +
      "e_attr\030\t \001(\0132\020.pb.PbBattleAttr\022\021\n\tconfig" +
      "_id\030\n \001(\005\022\020\n\010fog_area\030\013 \001(\005\"i\n\014PbKillSpr" +
      "ite\022\n\n\002id\030\001 \001(\005\022\023\n\013reborn_time\030\002 \001(\003\022\031\n\005" +
      "drops\030\003 \003(\0132\n.pb.PbItem\022\017\n\007has_box\030\004 \001(\010" +
      "\022\014\n\004book\030\005 \001(\005\"\225\001\n\006PbZone\022\017\n\007zone_id\030\001 \001" +
      "(\005\022\035\n\007sprites\030\002 \003(\0132\014.pb.PbSprite\022\037\n\010har" +
      "vests\030\003 \003(\0132\r.pb.PbHarvest\022 \n\naid_sprite" +
      "\030\004 \001(\0132\014.pb.PbSprite\022\030\n\020remove_sprite_id" +
      "\030\005 \001(\005\"w\n\tPbHarvest\022\n\n\002id\030\001 \001(\005\022\020\n\010ident" +
      "ity\030\002 \001(\005\022\023\n\013reborn_time\030\003 \001(\003\022\r\n\005ctype\030" +
      "\004 \001(\005\022\n\n\002cx\030\005 \001(\005\022\n\n\002cy\030\006 \001(\005\022\020\n\010fog_are" +
      "a\030\007 \001(\005\"F\n\017PbBattleEndData\022%\n\006status\030\001 \001" +
      "(\0162\025.pb.PbBattleEndStatus\022\014\n\004data\030\002 \001(\014*" +
      ">\n\014PbSpriteType\022\027\n\023UNKNOWN_SPRITE_TYPE\020\000" +
      "\022\010\n\004HERO\020\001\022\013\n\007MONSTER\020\002*\205\001\n\021PbBattleEndS" +
      "tatus\022\r\n\tNO_STATUS\020\000\022\014\n\010BATTLING\020\001\022\017\n\013WA" +
      "IT_REVIVE\020\002\022\030\n\024ATK_ALL_DEAD_CAMPING\020\003\022\025\n" +
      "\021DEF_ALL_DEAD_NEXT\020\004\022\007\n\003WIN\020\005\022\010\n\004FAIL\020\006B" +
      "6\n\034pb.xiugou.x1.protobuf.battle\252\002\025pb.xiu" +
      "gou.x1.protobufb\006proto3"
    };
    descriptor = com.google.protobuf.Descriptors.FileDescriptor
      .internalBuildGeneratedFileFrom(descriptorData,
        new com.google.protobuf.Descriptors.FileDescriptor[] {
          pb.xiugou.x1.protobuf.ministruct.MiniStruct.getDescriptor(),
          pb.xiugou.x1.protobuf.formation.Formation.getDescriptor(),
          pb.xiugou.x1.protobuf.battleattr.BattleAttr.getDescriptor(),
        });
    internal_static_pb_EnterBattleRequest_descriptor =
      getDescriptor().getMessageTypes().get(0);
    internal_static_pb_EnterBattleRequest_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_pb_EnterBattleRequest_descriptor,
        new java.lang.String[] { "BattleType", "MapId", "MainHero", "BattleParams", "PosList", "Type", });
    internal_static_pb_EnterBattleResponse_descriptor =
      getDescriptor().getMessageTypes().get(1);
    internal_static_pb_EnterBattleResponse_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_pb_EnterBattleResponse_descriptor,
        new java.lang.String[] { "BattleType", "MapId", "Heroes", "MainHero", "BattleParams", "Type", });
    internal_static_pb_EnterZoneRequest_descriptor =
      getDescriptor().getMessageTypes().get(2);
    internal_static_pb_EnterZoneRequest_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_pb_EnterZoneRequest_descriptor,
        new java.lang.String[] { "ZoneId", });
    internal_static_pb_EnterZoneResponse_descriptor =
      getDescriptor().getMessageTypes().get(3);
    internal_static_pb_EnterZoneResponse_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_pb_EnterZoneResponse_descriptor,
        new java.lang.String[] { "ZoneId", });
    internal_static_pb_ZoneInfoRequest_descriptor =
      getDescriptor().getMessageTypes().get(4);
    internal_static_pb_ZoneInfoRequest_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_pb_ZoneInfoRequest_descriptor,
        new java.lang.String[] { "ZoneId", });
    internal_static_pb_ZoneInfoResponse_descriptor =
      getDescriptor().getMessageTypes().get(5);
    internal_static_pb_ZoneInfoResponse_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_pb_ZoneInfoResponse_descriptor,
        new java.lang.String[] { "Zone", });
    internal_static_pb_BattleReviveRequest_descriptor =
      getDescriptor().getMessageTypes().get(6);
    internal_static_pb_BattleReviveRequest_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_pb_BattleReviveRequest_descriptor,
        new java.lang.String[] { });
    internal_static_pb_BattleReviveResponse_descriptor =
      getDescriptor().getMessageTypes().get(7);
    internal_static_pb_BattleReviveResponse_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_pb_BattleReviveResponse_descriptor,
        new java.lang.String[] { "Heroes", });
    internal_static_pb_BattleGiveUpRequest_descriptor =
      getDescriptor().getMessageTypes().get(8);
    internal_static_pb_BattleGiveUpRequest_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_pb_BattleGiveUpRequest_descriptor,
        new java.lang.String[] { });
    internal_static_pb_BattleGiveUpResponse_descriptor =
      getDescriptor().getMessageTypes().get(9);
    internal_static_pb_BattleGiveUpResponse_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_pb_BattleGiveUpResponse_descriptor,
        new java.lang.String[] { });
    internal_static_pb_BattleKillSpriteRequest_descriptor =
      getDescriptor().getMessageTypes().get(10);
    internal_static_pb_BattleKillSpriteRequest_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_pb_BattleKillSpriteRequest_descriptor,
        new java.lang.String[] { "SpriteIds", "SerialId", });
    internal_static_pb_BattleKillSpriteResponse_descriptor =
      getDescriptor().getMessageTypes().get(11);
    internal_static_pb_BattleKillSpriteResponse_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_pb_BattleKillSpriteResponse_descriptor,
        new java.lang.String[] { "Sprites", "SerialId", "EndData", });
    internal_static_pb_BattleSyncKillMonsterRequest_descriptor =
      getDescriptor().getMessageTypes().get(12);
    internal_static_pb_BattleSyncKillMonsterRequest_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_pb_BattleSyncKillMonsterRequest_descriptor,
        new java.lang.String[] { "KillMonsters", });
    internal_static_pb_BattleSyncKillMonsterResponse_descriptor =
      getDescriptor().getMessageTypes().get(13);
    internal_static_pb_BattleSyncKillMonsterResponse_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_pb_BattleSyncKillMonsterResponse_descriptor,
        new java.lang.String[] { });
    internal_static_pb_BattleRebornSpriteRequest_descriptor =
      getDescriptor().getMessageTypes().get(14);
    internal_static_pb_BattleRebornSpriteRequest_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_pb_BattleRebornSpriteRequest_descriptor,
        new java.lang.String[] { "SpriteIds", });
    internal_static_pb_BattleRebornSpriteResponse_descriptor =
      getDescriptor().getMessageTypes().get(15);
    internal_static_pb_BattleRebornSpriteResponse_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_pb_BattleRebornSpriteResponse_descriptor,
        new java.lang.String[] { "Sprites", });
    internal_static_pb_BattleSettleRequest_descriptor =
      getDescriptor().getMessageTypes().get(16);
    internal_static_pb_BattleSettleRequest_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_pb_BattleSettleRequest_descriptor,
        new java.lang.String[] { });
    internal_static_pb_BattleSettleResponse_descriptor =
      getDescriptor().getMessageTypes().get(17);
    internal_static_pb_BattleSettleResponse_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_pb_BattleSettleResponse_descriptor,
        new java.lang.String[] { "EndData", });
    internal_static_pb_BattleSpawnMonsterGmMessage_descriptor =
      getDescriptor().getMessageTypes().get(18);
    internal_static_pb_BattleSpawnMonsterGmMessage_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_pb_BattleSpawnMonsterGmMessage_descriptor,
        new java.lang.String[] { "BattleType", "Sprite", });
    internal_static_pb_SwitchBattleHeroRequest_descriptor =
      getDescriptor().getMessageTypes().get(19);
    internal_static_pb_SwitchBattleHeroRequest_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_pb_SwitchBattleHeroRequest_descriptor,
        new java.lang.String[] { "MainHero", "PosList", });
    internal_static_pb_SwitchBattleHeroResponse_descriptor =
      getDescriptor().getMessageTypes().get(20);
    internal_static_pb_SwitchBattleHeroResponse_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_pb_SwitchBattleHeroResponse_descriptor,
        new java.lang.String[] { "Heroes", "MainHero", });
    internal_static_pb_PbTreasureEvent_descriptor =
      getDescriptor().getMessageTypes().get(21);
    internal_static_pb_PbTreasureEvent_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_pb_PbTreasureEvent_descriptor,
        new java.lang.String[] { "ItemId", "Num", "UpItemId", "UpNum", "DisappearTime", });
    internal_static_pb_PbSprite_descriptor =
      getDescriptor().getMessageTypes().get(22);
    internal_static_pb_PbSprite_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_pb_PbSprite_descriptor,
        new java.lang.String[] { "Id", "Type", "Identity", "Level", "RebornTime", "Ctype", "Cx", "Cy", "BattleAttr", "ConfigId", "FogArea", });
    internal_static_pb_PbKillSprite_descriptor =
      getDescriptor().getMessageTypes().get(23);
    internal_static_pb_PbKillSprite_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_pb_PbKillSprite_descriptor,
        new java.lang.String[] { "Id", "RebornTime", "Drops", "HasBox", "Book", });
    internal_static_pb_PbZone_descriptor =
      getDescriptor().getMessageTypes().get(24);
    internal_static_pb_PbZone_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_pb_PbZone_descriptor,
        new java.lang.String[] { "ZoneId", "Sprites", "Harvests", "AidSprite", "RemoveSpriteId", });
    internal_static_pb_PbHarvest_descriptor =
      getDescriptor().getMessageTypes().get(25);
    internal_static_pb_PbHarvest_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_pb_PbHarvest_descriptor,
        new java.lang.String[] { "Id", "Identity", "RebornTime", "Ctype", "Cx", "Cy", "FogArea", });
    internal_static_pb_PbBattleEndData_descriptor =
      getDescriptor().getMessageTypes().get(26);
    internal_static_pb_PbBattleEndData_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_pb_PbBattleEndData_descriptor,
        new java.lang.String[] { "Status", "Data", });
    pb.xiugou.x1.protobuf.ministruct.MiniStruct.getDescriptor();
    pb.xiugou.x1.protobuf.formation.Formation.getDescriptor();
    pb.xiugou.x1.protobuf.battleattr.BattleAttr.getDescriptor();
  }

  // @@protoc_insertion_point(outer_class_scope)
}
