// Code generated by protocol buffer compiler. Do not edit!
package emu.lunarcore.proto;

import us.hebi.quickbuf.ProtoEnum;
import us.hebi.quickbuf.ProtoUtil;

public final class HeroBasicTypeOuterClass {
  /**
   * Protobuf enum {@code HeroBasicType}
   */
  public enum HeroBasicType implements ProtoEnum<HeroBasicType> {
    /**
     * <code>None = 0;</code>
     */
    None("None", 0),

    /**
     * <code>BoyWarrior = 8001;</code>
     */
    BoyWarrior("BoyWarrior", 8001),

    /**
     * <code>GirlWarrior = 8002;</code>
     */
    GirlWarrior("GirlWarrior", 8002),

    /**
     * <code>BoyKnight = 8003;</code>
     */
    BoyKnight("BoyKnight", 8003),

    /**
     * <code>GirlKnight = 8004;</code>
     */
    GirlKnight("GirlKnight", 8004),

    /**
     * <code>BoyRogue = 8005;</code>
     */
    BoyRogue("BoyRogue", 8005),

    /**
     * <code>GirlRogue = 8006;</code>
     */
    GirlRogue("GirlRogue", 8006),

    /**
     * <code>BoyMage = 8007;</code>
     */
    BoyMage("BoyMage", 8007),

    /**
     * <code>GirlMage = 8008;</code>
     */
    GirlMage("GirlMage", 8008),

    /**
     * <code>BoyShaman = 8009;</code>
     */
    BoyShaman("BoyShaman", 8009),

    /**
     * <code>GirlShaman = 8010;</code>
     */
    GirlShaman("GirlShaman", 8010),

    /**
     * <code>BoyWarlock = 8011;</code>
     */
    BoyWarlock("BoyWarlock", 8011),

    /**
     * <code>GirlWarlock = 8012;</code>
     */
    GirlWarlock("GirlWarlock", 8012),

    /**
     * <code>BoyPriest = 8013;</code>
     */
    BoyPriest("BoyPriest", 8013),

    /**
     * <code>GirlPriest = 8014;</code>
     */
    GirlPriest("GirlPriest", 8014);

    /**
     * <code>None = 0;</code>
     */
    public static final int None_VALUE = 0;

    /**
     * <code>BoyWarrior = 8001;</code>
     */
    public static final int BoyWarrior_VALUE = 8001;

    /**
     * <code>GirlWarrior = 8002;</code>
     */
    public static final int GirlWarrior_VALUE = 8002;

    /**
     * <code>BoyKnight = 8003;</code>
     */
    public static final int BoyKnight_VALUE = 8003;

    /**
     * <code>GirlKnight = 8004;</code>
     */
    public static final int GirlKnight_VALUE = 8004;

    /**
     * <code>BoyRogue = 8005;</code>
     */
    public static final int BoyRogue_VALUE = 8005;

    /**
     * <code>GirlRogue = 8006;</code>
     */
    public static final int GirlRogue_VALUE = 8006;

    /**
     * <code>BoyMage = 8007;</code>
     */
    public static final int BoyMage_VALUE = 8007;

    /**
     * <code>GirlMage = 8008;</code>
     */
    public static final int GirlMage_VALUE = 8008;

    /**
     * <code>BoyShaman = 8009;</code>
     */
    public static final int BoyShaman_VALUE = 8009;

    /**
     * <code>GirlShaman = 8010;</code>
     */
    public static final int GirlShaman_VALUE = 8010;

    /**
     * <code>BoyWarlock = 8011;</code>
     */
    public static final int BoyWarlock_VALUE = 8011;

    /**
     * <code>GirlWarlock = 8012;</code>
     */
    public static final int GirlWarlock_VALUE = 8012;

    /**
     * <code>BoyPriest = 8013;</code>
     */
    public static final int BoyPriest_VALUE = 8013;

    /**
     * <code>GirlPriest = 8014;</code>
     */
    public static final int GirlPriest_VALUE = 8014;

    private final String name;

    private final int number;

    private HeroBasicType(String name, int number) {
      this.name = name;
      this.number = number;
    }

    /**
     * @return the string representation of enum entry
     */
    @Override
    public String getName() {
      return name;
    }

    /**
     * @return the numeric wire value of this enum entry
     */
    @Override
    public int getNumber() {
      return number;
    }

    /**
     * @return a converter that maps between this enum's numeric and text representations
     */
    public static ProtoEnum.EnumConverter<HeroBasicType> converter() {
      return HeroBasicTypeConverter.INSTANCE;
    }

    /**
     * @param value The numeric wire value of the corresponding enum entry.
     * @return The enum associated with the given numeric wire value, or null if unknown.
     */
    public static HeroBasicType forNumber(int value) {
      return HeroBasicTypeConverter.INSTANCE.forNumber(value);
    }

    /**
     * @param value The numeric wire value of the corresponding enum entry.
     * @param other Fallback value in case the value is not known.
     * @return The enum associated with the given numeric wire value, or the fallback value if unknown.
     */
    public static HeroBasicType forNumberOr(int number, HeroBasicType other) {
      HeroBasicType value = forNumber(number);
      return value == null ? other : value;
    }

    enum HeroBasicTypeConverter implements ProtoEnum.EnumConverter<HeroBasicType> {
      INSTANCE;

      @Override
      public final HeroBasicType forNumber(final int value) {
        switch(value) {
          case 0: return None;
          case 8001: return BoyWarrior;
          case 8002: return GirlWarrior;
          case 8003: return BoyKnight;
          case 8004: return GirlKnight;
          case 8005: return BoyRogue;
          case 8006: return GirlRogue;
          case 8007: return BoyMage;
          case 8008: return GirlMage;
          case 8009: return BoyShaman;
          case 8010: return GirlShaman;
          case 8011: return BoyWarlock;
          case 8012: return GirlWarlock;
          case 8013: return BoyPriest;
          case 8014: return GirlPriest;
          default: return null;
        }
      }

      @Override
      public final HeroBasicType forName(final CharSequence value) {
        switch (value.length()) {
          case 4: {
            if (ProtoUtil.isEqual("None", value)) {
              return None;
            }
            break;
          }
          case 7: {
            if (ProtoUtil.isEqual("BoyMage", value)) {
              return BoyMage;
            }
            break;
          }
          case 8: {
            if (ProtoUtil.isEqual("BoyRogue", value)) {
              return BoyRogue;
            }
            if (ProtoUtil.isEqual("GirlMage", value)) {
              return GirlMage;
            }
            break;
          }
          case 9: {
            if (ProtoUtil.isEqual("BoyKnight", value)) {
              return BoyKnight;
            }
            if (ProtoUtil.isEqual("GirlRogue", value)) {
              return GirlRogue;
            }
            if (ProtoUtil.isEqual("BoyShaman", value)) {
              return BoyShaman;
            }
            if (ProtoUtil.isEqual("BoyPriest", value)) {
              return BoyPriest;
            }
            break;
          }
          case 10: {
            if (ProtoUtil.isEqual("BoyWarrior", value)) {
              return BoyWarrior;
            }
            if (ProtoUtil.isEqual("GirlKnight", value)) {
              return GirlKnight;
            }
            if (ProtoUtil.isEqual("GirlShaman", value)) {
              return GirlShaman;
            }
            if (ProtoUtil.isEqual("BoyWarlock", value)) {
              return BoyWarlock;
            }
            if (ProtoUtil.isEqual("GirlPriest", value)) {
              return GirlPriest;
            }
            break;
          }
          case 11: {
            if (ProtoUtil.isEqual("GirlWarrior", value)) {
              return GirlWarrior;
            }
            if (ProtoUtil.isEqual("GirlWarlock", value)) {
              return GirlWarlock;
            }
            break;
          }
        }
        return null;
      }
    }
  }
}
