From e1e89322079fbb809412bc953b3b4b7420845a3b Mon Sep 17 00:00:00 2001 From: David Masad Date: Sat, 20 Feb 2021 21:11:19 -0500 Subject: [PATCH] Creating and testing macro --- examples/duchess_party.html | 44 ++++++++++++++++++------------ examples/duchess_party.tw | 7 ++--- examples/simple_space_example.html | 33 ++++++++++++++-------- examples/simple_space_example.tw | 3 +- examples/tutorial.html | 44 ++++++++++++++++++++---------- examples/tutorial.tw | 13 +++++---- storymanager.js | 18 ++++++++++++ 7 files changed, 108 insertions(+), 54 deletions(-) diff --git a/examples/duchess_party.html b/examples/duchess_party.html index e45a7b9..fb691cb 100644 --- a/examples/duchess_party.html +++ b/examples/duchess_party.html @@ -100,7 +100,7 @@ var saveAs=saveAs||navigator.msSaveBlob&&navigator.msSaveBlob.bind(navigator)||f
Your browser lacks required capabilities. Please upgrade it or switch to another to continue.
Loading…
- diff --git a/examples/duchess_party.tw b/examples/duchess_party.tw index a3ad561..9be2e9e 100644 --- a/examples/duchess_party.tw +++ b/examples/duchess_party.tw @@ -16,15 +16,12 @@ Of course it isn't. The hall is filled with aristocrats in evening-wear, making :: Circulating You mingle through the crowd, keeping a wary eye around you.
-<> -<> - +<> :: Conversation <> You talk with $talkingTo.name.
-<> -<> +<> [[Keep circulating | Circulating]] :: Being approached diff --git a/examples/simple_space_example.html b/examples/simple_space_example.html index 5b58789..3259378 100644 --- a/examples/simple_space_example.html +++ b/examples/simple_space_example.html @@ -100,7 +100,7 @@ var saveAs=saveAs||navigator.msSaveBlob&&navigator.msSaveBlob.bind(navigator)||f
Your browser lacks required capabilities. Please upgrade it or switch to another to continue.
Loading…
- <<widget ShowStoryletLinks>> - <<for _storylet range $args[0]>> - <<capture _storylet>> - [[_storylet.description|_storylet.passage][$currentStorylet=_storylet]]<br> - <</capture>> - <</for>> -<</widget>>You stand at the edge of the grand ballroom in the Duchess's palace.<br> -<<set _possibleStories = window.SM.getStorylets(3, "circulating")>> -<<ShowStoryletLinks _possibleStories>><<set $talkingTo = $currentStorylet.character>> +};You stand at the edge of the grand ballroom in the Duchess's palace.<br> +<<getStoryletLinks 3 "circulating">><<set $talkingTo = $currentStorylet.character>> You talk with $talkingTo.name. <br> -<<set _possibleStories = window.SM.getStorylets(3, "during conversation")>> -<<ShowStoryletLinks _possibleStories>> -[[Keep circulating | Start]]$currentStorylet.character.name is coming toward you to talk. <br> -You can [[talk to them | Conversation]], or risk snubbing them by [[trying to get away | Start]].<<set $topic = $currentStorylet.topic>> +<<getStoryletLinks 3 "during conversation">> +[[Keep circulating | Start]]$currentStorylet.character.name is coming toward you to talk. <br> +You can [[talk to them | Conversation]], or risk snubbing them by [[trying to get away | Start]].<<set $topic = $currentStorylet.topic>> <<if $playerKnowledge[$topic] < $talkingTo[$topic] >> <<set $playerKnowledge[$topic] = $playerKnowledge[$topic] + 1>> (They tell you about $topic) (Knowledge of $topic goes up) diff --git a/examples/tutorial.tw b/examples/tutorial.tw index fddc870..374b6fd 100644 --- a/examples/tutorial.tw +++ b/examples/tutorial.tw @@ -27,6 +27,12 @@ State.variables.characters = [ } ] +// Choose one of an array +var randomChoice = function(vals) { + return vals[Math.floor(Math.random() * vals.length)]; +}; + + StoryManager.storylets["Conversation"] = { name: "Conversation", tags: ["circulating"], @@ -82,15 +88,12 @@ StoryManager.storylets["Conversation topic"] = { :: Start You stand at the edge of the grand ballroom in the Duchess's palace.
-<> -<> - +<> :: Conversation <> You talk with $talkingTo.name.
-<> -<> +<> [[Keep circulating | Start]] :: Being approached diff --git a/storymanager.js b/storymanager.js index 42d782f..130f705 100644 --- a/storymanager.js +++ b/storymanager.js @@ -63,4 +63,22 @@ StoryManager.getStorylets = function(n=null, tag=null, respect_interrupt=true) { return selectedStorylets; } +// Set up macros + +Macro.add("getStoryletLinks", { + handler: function() { + let n, tag; + [n=null, tag=null] = this.args; + State.temporary.nextStorylets = StoryManager.getStorylets(n, tag); + $(this.output).wiki(` + <> \ + <> \ + [[_storylet.description|_storylet.passage][$currentStorylet=_storylet]]
+ <
> \ + <
> \ + `); + } +}) + + window.SM = StoryManager; \ No newline at end of file