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

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

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

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

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