from strenum import StrEnum


class Action(StrEnum):
    ACTION = "ACTION"
    AIM = "aim"
    ANGLE = "angle"
    CREATE = "CREATE"
    DEC_AMMO = "dec_ammo"
    DEC_HEALTH = "dec_health"
    DESTROY = "DESTROY"
    DISTANCE = "distance"
    FOV = "fov"
    HEAD_X = "headx"
    HEAD_Y = "heady"
    HEAD_Z = "headz"
    MAP = "map"
    PACKS = "PACKS"
    QTY = "qty"
    SHOTS = "shots"
    VEL_X = "xvel"
    TYPE = "type"
    VEL_Y = "yvel"
    VEL_Z = "zvel"
    X = "x"
    Y = "y"
    Z = "z"


class Performative(StrEnum):
    PERFORMATIVE = "performative"
    BDI = "BDI"
    CFA = "cfa"
    CFB = "cfb"
    CFM = "cfm"
    DATA = "data"
    DEREGISTER_AGENT = "deregister_agent"
    DEREGISTER_SERVICE = "deregister_service"
    GAME = "game"
    GET = "get"
    INFORM = "inform"
    INIT = "init"
    MOVE = "move"
    OBJECTIVE = "objective"
    PACK = "pack"
    PACK_LOST = "pack_lost"
    REGISTER_AGENT = "register_agent"
    REGISTER_SERVICE = "register"
    SERVICES = "services"
    SIGHT = "sight"
    SHOOT = "shot"


class Service(StrEnum):
    AMMO = "fieldops"
    BACKUP = "backup"
    MANAGEMENT = "management"
    MEDIC = "medic"


class Belief(StrEnum):
    AMMO = "ammo"
    BASE = "base"
    CLASS = "class"
    DESTINATION = "destination"
    ENEMIES_IN_FOV = "enemies_in_fov"
    FRIENDS_IN_FOV = "friends_in_fov"
    FLAG = "flag"
    HEADING = "heading"
    HEALTH = "health"
    NAME = "name"
    MY_MEDICS = "myMedics"
    MY_FIELDOPS = "myFieldops"
    MY_BACKUPS = "myBackups"
    PACKS_IN_FOV = "packs_in_fov"
    PACK_TAKEN = "pack_taken"
    TARGET_REACHED = "target_reached"
    FLAG_TAKEN = "flag_taken"
    POSITION = "position"
    TEAM = "team"
    THRESHOLD_HEALTH = "threshold_health"
    THRESHOLD_AMMO = "threshold_ammo"
    THRESHOLD_AIM = "threshold_aim"
    THRESHOLD_SHOTS = "threshold_shots"
    VELOCITY = "velocity"
