Use messages to interact with entities and, why not, other parts of the system. For entities, I'm considering to restrict entity's interaction to a method call like this:
entity.msg(msgType, msgData)
// Shortcut like Akka?
entity ! (msgSource, msgType, msgData)
// Example:
val source = someEntity
val amount = someNumber
entity ! (source, Damage, amount)
Proposal
Use messages to interact with entities and, why not, other parts of the system. For entities, I'm considering to restrict entity's interaction to a method call like this: