aboutsummaryrefslogtreecommitdiff
path: root/src/scalevalapokalypsi/Model/Event.scala
diff options
context:
space:
mode:
Diffstat (limited to 'src/scalevalapokalypsi/Model/Event.scala')
-rw-r--r--src/scalevalapokalypsi/Model/Event.scala36
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