My game has
class Enemy
who’s AI/functionality I can change with
trait Moving
trait VerticalMover extends Moving
trait RandomMover extends Moving
and so on. Now I need to fetch preloaded stuff based on trait. What I would like to do is have a Map that accepts all traits that extend Moving as keys and then some EnemyContainer as value that would have trait related content preloaded.
But how do I define such a Map and how do format my .get() to get the container by an instance of some Enemy. Something like:
val myEnemy = new Enemy with RandomMover
val myDetails:EnemyContainer = enemyDetailsStore.get(myEnemy.getClass)
Well, I assume that your enemy details store is of type
Map[Class[_ <: Moving], EnemyDetails]. I suspect that something like:Or:
Or even just:
Will do for you. The only “issue” with this code is that it’s O(N), in that it requires a traversal of the map, rather than a simple lookup, which would be O(1), or O(log N)