package wow.doge.mygame.implicits import enumeratum._ sealed trait TestEnum extends EnumEntry object TestEnum extends Enum[TestEnum] { val values = findValues case object Test2 extends TestEnum } sealed trait Greeting extends EnumEntry object Greeting extends Enum[Greeting] { /* `findValues` is a protected method that invokes a macro to find all `Greeting` object declarations inside an `Enum` You use it to implement the `val values` member */ val values = findValues case object Hello extends Greeting case object GoodBye extends Greeting case object Hi extends Greeting case object Bye extends Greeting } object ObsTest {} sealed trait PlayerMovementEnum extends EnumEntry { def test: String } object PlayerMovementEnum extends Enum[PlayerMovementEnum] { val values = findValues case object MOVE_RIGHT extends PlayerMovementEnum { val test = "hmm" } case object MOVE_LEFT extends PlayerMovementEnum { val test = "mmh" } }