package wow.doge.mygame.subsystems.events

import wow.doge.mygame.game.entities.CharacterStats

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: CharacterStats.DamageHealth
  ) extends StatsEvent
}
