You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
31 lines
1003 B
31 lines
1003 B
package wow.doge.mygame.game.entities.character
|
|
|
|
import cats.Show
|
|
import cats.kernel.Eq
|
|
|
|
object CharacterStates {
|
|
sealed trait AliveSubstate
|
|
object AliveSubstate {
|
|
final case class InCombat(substate: CombatSubstate) extends AliveSubstate
|
|
final case class Moving(substate: MovementSubstate) extends AliveSubstate
|
|
case object Idle extends AliveSubstate
|
|
implicit val eq = Eq.fromUniversalEquals[AliveSubstate]
|
|
implicit val show = Show.fromToString[AliveSubstate]
|
|
}
|
|
|
|
sealed trait CombatSubstate
|
|
object CombatSubstate {
|
|
final case class Moving(substate: MovementSubstate) extends CombatSubstate
|
|
final case class Attacking(victimName: String) extends CombatSubstate
|
|
}
|
|
|
|
sealed trait MovementSubstate
|
|
case object Walking extends MovementSubstate
|
|
case object Running extends MovementSubstate
|
|
|
|
sealed trait DeadSubstate
|
|
object DeadSubstate {
|
|
implicit val eq = Eq.fromUniversalEquals[DeadSubstate]
|
|
implicit val show = Show.fromToString[DeadSubstate]
|
|
}
|
|
}
|