export enum Colour {
  Black = "Black",
  Red = "Red",
  Orange = "Orange",
  Yellow = "Yellow",
  Green = "Green",
  Blue = "Blue",
  Pink = "Pink",
  Purple = "Purple",
  White = "White",
}

export type ColouredOpt<T extends string = string> = `${T} ${Colour}` | "None";

export enum Hats {
  Headtie = "Beginner Headtie",
  CommanderHat = "Commander Hat",
  TopHat = "Top Hat",
  BackCap = "Back Cap",
  TheItem = "The Item",
}

export enum Faces {
  DWI = "Deal with it",
  EyeMask = "Eye Mask",
}

export enum Eyes {
  Serious = "Serious",
  Angry = "Angry",
  Confused = "Confused",
  Cheerful = "Cheerful",
  Tired = "Tired",
  Excited = "Excited",
  Dizzy = "Dizzy",
  Worried = "Worried",
}

export enum Tops {
  Sash = "Sash",
  SideCloak = "Side Cloak",
  BizznizzTie = "Bizznizz Tie",
  HouseVibeHoodie = "House Vibe Hoo",
}

export enum Bottoms {
  KneePads = "Knee Pads",
  Skirt = "Skirt",
  BattlerDrip = "Battler Drip",
}

export enum Buddies {
  Battler = "Battler",
  HouseVibe = "House Vibe",
  LockBlock = "Lock Block",
  BattleSpecial = "Battle Special",
  BattleSupport = "Battle Support",
  Houseannor = "Houseannor",
  Ranger = "Ranger",
  PCSB = "PCSB",
  PLR = "PLR",
  Basketiballu = "Basketiballu",
  StartingMountain = "Starting Mountain",
  Olivia = "Olivia",
  PrototypeRanger = "Prototype Ranger",
  DEMUL = "DEMUL",
  IncomingSword = "Incoming Sword",
  MARZBall = "MARZ Ball",
  NoodleTheKitten = "Noodle the Kitten",
}

export enum Backs {
  BattleSword = "Battle Sword",
  Tail = "Tail",
  GenericPole = "Generic Pole",
  BattleHammer = "Battle Hammer",
  BattleScythe = "Battle Scythe",
  BattleSpear = "Battle Spear",
  THEFIRE = "THE FIRE",
}

export enum Necks {
  NeckChain = "Neck Chain",
  OneKChain = "1K Chain",
}

export enum Opponents {
  None = "None",
  BattleBeginner = "BattleBeginner",
  BattleBeginner2024 = "BattleBeginner2024",
  BattleCasual = "BattleCasual",
  BattlePro = "BattlePro",
  BattleMaster = "BattleMaster",
  Battler = "Battler",
  BattlerElite = "BattlerElite",
  RapStar = "RapStar",
  ArtMaster = "ArtMaster",
  TheInterrogator = "TheInterrogator",
  CommonOverseer = "CommonOverseer",
  Moonlite = "Moonlite",
  Dicey = "Dicey",
  Kacey = "Kacey",
  Lexa = "Lexa",
  Delta = "Delta",
  DoodlePro = "DoodlePro",
  GuitarHero = "GuitarHero",
  SmallKeyMaster = "SmallKeyMaster",
  RareOverseer = "RareOverseer",
  DEMUL = "DEMUL",
  AgentZ = "AgentZ",
  MediumKeyMaster = "MediumKeyMaster",
  IncomingSword = "IncomingSword",
  Eda = "Eda",
  TheFirewall = "TheFirewall",
  HouseannorSupport = "HouseannorSupport",
}


export type GenerateBattlerOptions = {
  colour: Colour;
  hat?: ColouredOpt<Hats>;
  face?: ColouredOpt<Faces>;
  top?: ColouredOpt<Tops>;
  bottom?: ColouredOpt<Bottoms>;
  buddy?: Buddies | "None";
  back?: ColouredOpt<Backs>;
  neck?: ColouredOpt<Necks>;
  glow?: Colour | "None";
  eye?: ColouredOpt<Eyes>;
};

export enum PlayerActions {
  AttackLeft = "Attack Left",
  DefendLeft = "Defend Left",
  ItemLeft   = "Item Left",
  AttackRight = "Attack Right",
  DefendRight = "Defend Right",
  ItemRight = "Item Right"
}

export type PlayerActionOptions = {
  action: PlayerActions;
  player: string;
};

export type GenerateBattleImageOptions = {
  opponent: Opponents;
  username: string;
};

export type CustomActionOptions = {
  background: string;
  player: string;
  position: "left" | "middle"
}