package wow.doge.mygame.subsystems.events import wow.doge.mygame.subsystems.movement.CanMove sealed trait MovementEvent object MovementEvent { final case class MovedLeft[T: CanMove](pressed: Boolean, movable: T) extends MovementEvent final case class MovedUp[T: CanMove](pressed: Boolean, movable: T) extends MovementEvent final case class MovedRight[T: CanMove](pressed: Boolean, movable: T) extends MovementEvent final case class MovedDown[T: CanMove](pressed: Boolean, movable: T) extends MovementEvent sealed trait PlayerMovementEvent extends MovementEvent object PlayerMovementEvent { final case class PlayerMovedLeft(pressed: Boolean) extends PlayerMovementEvent final case class PlayerMovedRight(pressed: Boolean) extends PlayerMovementEvent final case class PlayerMovedForward(pressed: Boolean) extends PlayerMovementEvent final case class PlayerMovedBackward(pressed: Boolean) extends PlayerMovementEvent final case object PlayerJumped extends PlayerMovementEvent final case object PlayerRotatedRight extends PlayerMovementEvent final case object PlayerRotatedLeft extends PlayerMovementEvent final case object PlayerCameraUp extends PlayerMovementEvent final case object PlayerCameraDown extends PlayerMovementEvent } }