diff options
Diffstat (limited to 'src/scalevalapokalypsi/Model/Action.scala')
-rw-r--r-- | src/scalevalapokalypsi/Model/Action.scala | 41 |
1 files changed, 41 insertions, 0 deletions
diff --git a/src/scalevalapokalypsi/Model/Action.scala b/src/scalevalapokalypsi/Model/Action.scala index 75ce68c..94d13a5 100644 --- a/src/scalevalapokalypsi/Model/Action.scala +++ b/src/scalevalapokalypsi/Model/Action.scala @@ -3,6 +3,8 @@ package scalevalapokalypsi.Model import scalevalapokalypsi.Model.Entities.* import scalevalapokalypsi.Model.Entities.NPCs.* +import scala.collection.immutable + /** The class `Action` represents actions that a player may take in a text * adventure game. `Action` objects are constructed on the basis of textual * commands and are, in effect, parsers for such commands. An action object is @@ -25,6 +27,44 @@ class Action(input: String): * @return Boolean indicating whether the action possibly taken takes a * turn or not. */ + def help(actor: Entity): Event = + Event( + immutable.Map.from(Vector((actor, "Tässä ovat komennot," + + " joita voit" + + " käyttää pelin aikana:\n\napua/?/help:" + + " Näyttää pelaajalle saatavilla olevat" + + " komennot ja" + + " kertoo mitä ne tekevät.\n\nkäytä [esine]:" + + " Käyttää kyseisen esineen." + + " Vaikutus vaihtelee esineiden välillä." + + "\n\nlaula [olento] suohon: Laulaa toisen" + + " olennon suohon.\n\nlepää:" + + " Pelaaja levähtää, ei mitään sen" + + " erikoisempaa vaikutusta." + + "\n\nmene [suunta]: Vaihtaa pelaajan" + + " paikkaa/sijaintia pelissä," + + " jos se on mahdollista. Komennon perään laitetaan" + + " ilmansuunta," + + " joka kertoo, mihin suuntaan pelaaja liikkuu." + + "\n\npoimi/ota [esine]:" + + " Lisää kyseisen esineen pelaajan tavaraluetteloon," + + " jos se on saatavilla" + + " kyseisessä sijainnissa. Komennon perään kirjoitetaan" + + " esineen nimi, mikä halutaan ottaa. \n\npuhu [pelaaja]:" + + " Välittää viestin olennolle, joka ei ole pelaaja." + + "\n\nsano [olento]: Välittää viestin toiselle" + + " pelaajalle.\n\ntavaraluettelo:" + + " Näyttää, mitä esineitä pelaajalla on" + + " tavaraluettelossaan. Näyttää lisäksi esineiden määrän." + + " Jos pelaajalla ei ole esineitä tavaraluettelossaan" + + ", niin komento kertoo tavaraluettelon olevan tyhjä." + + "\n\ntiputa/pudota [esine]:" + + " Pudottaa kyseisen esineen pelaajan tavaraluettelosta," + + " jolloin se myös vähennetään pelaajan tavaraluettelosta." + + " \n\nxyzzy: Nam nam "))), + s"" + ) + def execute(actor: Player): Boolean = val oldLocation = actor.location val resOption: Option[(Boolean, Event)] = this.verb match @@ -35,6 +75,7 @@ class Action(input: String): oldLocation.observeEvent(r) ) result.map((true, _)) + case "help" | "?" | "apua" => Some((false, this.help(actor))) case "lepää" => Some((true, actor.rest())) case "poimi" | "ota" => Some((false, actor.pickUp(this.modifiers))) case "tavaraluettelo" => Some((false, actor.inventory)) |