package wow.doge.mygame.subsystems.events import wow.doge.mygame.game.subsystems.movement.CanMove sealed trait EntityMovementEvent object EntityMovementEvent { final case class MovedLeft[T: CanMove](pressed: Boolean, movable: T) extends EntityMovementEvent final case class MovedUp[T: CanMove](pressed: Boolean, movable: T) extends EntityMovementEvent final case class MovedRight[T: CanMove](pressed: Boolean, movable: T) extends EntityMovementEvent final case class MovedDown[T: CanMove](pressed: Boolean, movable: T) extends EntityMovementEvent sealed trait PlayerMovementEvent extends EntityMovementEvent 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 } }