diff options
Diffstat (limited to 'src/scalevalapokalypsi/Model/Entities/NPCs/Villager.scala')
-rw-r--r-- | src/scalevalapokalypsi/Model/Entities/NPCs/Villager.scala | 79 |
1 files changed, 79 insertions, 0 deletions
diff --git a/src/scalevalapokalypsi/Model/Entities/NPCs/Villager.scala b/src/scalevalapokalypsi/Model/Entities/NPCs/Villager.scala new file mode 100644 index 0000000..1b9629f --- /dev/null +++ b/src/scalevalapokalypsi/Model/Entities/NPCs/Villager.scala @@ -0,0 +1,79 @@ + +package scalevalapokalypsi.Model.Entities.NPCs + +import scalevalapokalypsi.Model.{Area,Event,Item,Adventure} + +class Villager( + adventure: Adventure, + name: String, + initialLocation: Area, + dialogs: Vector[(String, Option[Villager => Event])] +) extends NPC(adventure, name, initialLocation, 100, 100): + + private var dialogIndex = 0 + + def getDialog: String = + val (dialog, effect) = this.dialogs(dialogIndex) + effect.map(_(this)).map(this.location.observeEvent(_)) + this.dialogIndex += + (if dialogIndex < this.dialogs.length-1 + then 1 + else 0) + dialog + + def act(): Unit = () + +end Villager + +/* +package scalevalapokalypsi.Model.Entities.NPCs + +import scalevalapokalypsi.Model.{Area,Event,Item,Adventure} +import scala.math.min + +class Bartender( + adventure: Adventure, + initialLocation: Area +) extends NPC( + adventure, + "baarimikko", + initialLocation, + 100, + 100 +): + + + private var dialogIndex = 0 + + private val dialogs = Vector( + "Onnea matkaan. Tarjoan sinulle tuopin olutta rohkaisuksi.", + "Onnea matkaan." + ) + + def getDialog: String = + + if dialogIndex == 0 then + this.location.addItem(Item( + "oluttuoppi", + "Tuopillinen kuohuvaa ja raikasta olutta. Se tuoksuu aika vahvalta.", + 1 + )) + this.location.observeEvent( + Event( + Map.empty, + "Baarimikko kaataa tuoppiin olutta ja asettaa oluttuopin pöydälle." + ) + ) + + dialogIndex = min(dialogIndex + 1, this.dialogs.length) + + dialogs(dialogIndex - 1) + + end getDialog + + + def act(): Unit = () + + +end Bartender +*/ |