export enum Direction {
  NORTH = "NORTH",
  SOUTH = "SOUTH",
  EAST = "EAST",
  WEST = "WEST",
}

export const directions: Direction[] = [
  Direction.NORTH,
  Direction.SOUTH,
  Direction.EAST,
  Direction.WEST,
];

export function rotateDirection(
  initialDirection: Direction,
  rotationAngle: 0 | 90 | 180 | 270,
): Direction {
  const angleToDirectionMap: Record<Direction, 0 | 90 | 180 | 270> = {
    [Direction.NORTH]: 0,
    [Direction.EAST]: 90,
    [Direction.SOUTH]: 180,
    [Direction.WEST]: 270,
  };
  const finalAngle =
    (360 + angleToDirectionMap[initialDirection] - rotationAngle) % 360;
  return (Object.keys(angleToDirectionMap) as Direction[]).find(
    (direction) => angleToDirectionMap[direction] === finalAngle,
  )!;
}
