package wow.doge.mygame.subsystems.events sealed trait Event case object BulletFired extends Event // type BulletFired = BulletFired.type final case class EventWithData(data: Int) extends Event sealed trait TickEvent extends Event object TickEvent { case object RenderTick extends TickEvent case object PhysicsTick extends TickEvent } sealed trait EntityMovementEvent extends Event object EntityMovementEvent { final case class MovedLeft(name: String, pressed: Boolean) extends EntityMovementEvent final case class MovedUp(name: String, pressed: Boolean) extends EntityMovementEvent final case class MovedRight(name: String, pressed: Boolean) extends EntityMovementEvent final case class MovedDown(name: String, pressed: Boolean) extends EntityMovementEvent } sealed trait StatsEvent extends Event object StatsEvent { case class DamageEvent(hitBy: String, victimName: String, amount: Int) extends StatsEvent }