package wow.doge.mygame.game.subsystems.input
import enumeratum.EnumEntry._
import enumeratum._

sealed trait PlayerMovementInput extends EnumEntry with UpperSnakecase
final object PlayerMovementInput extends Enum[PlayerMovementInput] {
  val values = findValues
  final case object WalkForward extends PlayerMovementInput
  final case object WalkRight extends PlayerMovementInput
  final case object WalkLeft extends PlayerMovementInput
  final case object WalkBackward extends PlayerMovementInput
  final case object Jump extends PlayerMovementInput
}

sealed trait PlayerAnalogMovementInput extends EnumEntry with UpperSnakecase
final object PlayerAnalogMovementInput extends Enum[PlayerAnalogMovementInput] {
  val values = findValues
  final case object TurnRight extends PlayerAnalogMovementInput
  final case object TurnLeft extends PlayerAnalogMovementInput
}

sealed trait PlayerCameraInput extends EnumEntry with UpperSnakecase
final object PlayerCameraInput extends Enum[PlayerCameraInput] {
  val values = findValues
  final case object CameraRotateLeft extends PlayerCameraInput
  final case object CameraRotateRight extends PlayerCameraInput
  final case object CameraRotateUp extends PlayerCameraInput
  final case object CameraRotateDown extends PlayerCameraInput
}

sealed trait MiscInput extends EnumEntry with UpperSnakecase
final object MiscInput extends Enum[MiscInput] {
  val values = findValues
  final case object ToggleCursor extends MiscInput
}
