diff options
Diffstat (limited to 'src/scalevalapokalypsi/Model/Event.scala')
-rw-r--r-- | src/scalevalapokalypsi/Model/Event.scala | 36 |
1 files changed, 21 insertions, 15 deletions
diff --git a/src/scalevalapokalypsi/Model/Event.scala b/src/scalevalapokalypsi/Model/Event.scala index cba611d..9055fd8 100644 --- a/src/scalevalapokalypsi/Model/Event.scala +++ b/src/scalevalapokalypsi/Model/Event.scala @@ -1,28 +1,34 @@ package scalevalapokalypsi.Model import scalevalapokalypsi.Model.Entities.Entity +import scala.collection.immutable.Map /** A description of an action. - * - * @param target the entity that was as a target in this event - * @param inFirstPerson textual description of the event in first person - * @param inThirdPerson textual description of the event in third person - */ + * + * @param inFirstPersons a Map of descriptions in first person for entities + * given as keys + * @param inThirdPerson textual description of the event in third person + */ class Event( - val target: Entity, - val inFirstPerson: String, + val inFirstPersons: Map[Entity, String], val inThirdPerson: String ): + // And why are we not just using a map with a default value? + // Wrapping this in an Event creates a more specific abstraction. + // It indicates, that instances of this class are precisely descriptions + // of events, and it allows changing the private implementation without + // touching the public interface. + private val values = inFirstPersons.withDefaultValue(inThirdPerson) + /** Gets the description of this event as seen by the given - * entity. Note that this method does no checks whether the given entity - * could even see the event, only what it would have looked like to them. - * - * @param entity the entity whose perspective to use - * @return a textual description of the event - */ + * entity. Note that this method does no checks whether the given entity + * could even see the event, only what it would have looked like to them. + * + * @param entity the entity whose perspective to use + * @return a textual description of the event + */ def descriptionFor(entity: Entity): String = - if entity == target then inFirstPerson - else inThirdPerson + this.values.apply(entity) end Event
\ No newline at end of file |