mirror of
https://github.com/ganelson/inform.git
synced 2024-07-01 06:24:58 +03:00
Miscellaneous minor dialogue bugs fixed
This commit is contained in:
parent
c970317683
commit
77c69c60b7
|
@ -812,30 +812,45 @@
|
|||
<span class="plain-syntax"> </span><span class="reserved-syntax">rfalse</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">];</span>
|
||||
|
||||
<span class="plain-syntax">[ </span><span class="identifier-syntax">DirectorIntervenes</span><span class="plain-syntax"> </span><span class="identifier-syntax">obj</span><span class="plain-syntax"> </span><span class="identifier-syntax">tab</span><span class="plain-syntax"> </span><span class="identifier-syntax">fn</span><span class="plain-syntax"> </span><span class="identifier-syntax">db</span><span class="plain-syntax">;</span>
|
||||
<span class="reserved-syntax">Array</span><span class="plain-syntax"> </span><span class="identifier-syntax">DirectorMiniPool</span><span class="plain-syntax"> --> </span><span class="constant-syntax">0</span><span class="plain-syntax"> </span><span class="constant-syntax">0</span><span class="plain-syntax">;</span>
|
||||
|
||||
<span class="plain-syntax">[ </span><span class="identifier-syntax">DirectorIntervenes</span><span class="plain-syntax"> </span><span class="identifier-syntax">obj</span><span class="plain-syntax"> </span><span class="identifier-syntax">tab</span><span class="plain-syntax"> </span><span class="identifier-syntax">fn</span><span class="plain-syntax"> </span><span class="identifier-syntax">db</span><span class="plain-syntax"> </span><span class="identifier-syntax">saved</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">saved</span><span class="plain-syntax"> = </span><span class="identifier-syntax">DirectorMiniPool</span><span class="plain-syntax">-->0;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">DirectorMiniPool</span><span class="plain-syntax">-->0 = </span><span class="identifier-syntax">obj</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">for</span><span class="plain-syntax"> (</span><span class="identifier-syntax">db</span><span class="plain-syntax">=1: </span><span class="identifier-syntax">db</span><span class="plain-syntax"><=</span><span class="identifier-syntax">NO_DIALOGUE_BEATS</span><span class="plain-syntax">: </span><span class="identifier-syntax">db</span><span class="plain-syntax">++) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">DirectorBeatAvailableToPlayer</span><span class="plain-syntax">(</span><span class="identifier-syntax">db</span><span class="plain-syntax">)) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">tab</span><span class="plain-syntax"> = </span><span class="identifier-syntax">TableOfDialogueBeats</span><span class="plain-syntax">--></span><span class="identifier-syntax">db</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">fn</span><span class="plain-syntax"> = </span><span class="identifier-syntax">tab</span><span class="plain-syntax">-->0;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> ((</span><span class="identifier-syntax">fn</span><span class="plain-syntax"> == </span><span class="constant-syntax">0</span><span class="plain-syntax">) || ((</span><span class="identifier-syntax">fn</span><span class="plain-syntax">)(</span><span class="identifier-syntax">latest_performed_beat</span><span class="plain-syntax">))) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">fn</span><span class="plain-syntax"> = </span><span class="identifier-syntax">tab</span><span class="plain-syntax">-->1;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> ((</span><span class="identifier-syntax">fn</span><span class="plain-syntax">) && (</span><span class="identifier-syntax">fn</span><span class="plain-syntax">(</span><span class="identifier-syntax">DialogueTopicPool</span><span class="plain-syntax">))) { </span><span class="identifier-syntax">DirectorPerform</span><span class="plain-syntax">(</span><span class="identifier-syntax">db</span><span class="plain-syntax">); </span><span class="reserved-syntax">rtrue</span><span class="plain-syntax">; }</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> ((</span><span class="identifier-syntax">fn</span><span class="plain-syntax">) && (</span><span class="identifier-syntax">fn</span><span class="plain-syntax">(</span><span class="identifier-syntax">DirectorMiniPool</span><span class="plain-syntax">))) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">DirectorMiniPool</span><span class="plain-syntax">-->0 = </span><span class="identifier-syntax">saved</span><span class="plain-syntax">; </span><span class="identifier-syntax">DirectorPerform</span><span class="plain-syntax">(</span><span class="identifier-syntax">db</span><span class="plain-syntax">); </span><span class="reserved-syntax">rtrue</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">DirectorMiniPool</span><span class="plain-syntax">-->0 = </span><span class="identifier-syntax">saved</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">rfalse</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">];</span>
|
||||
|
||||
<span class="plain-syntax">[ </span><span class="identifier-syntax">DirectorTestLineContainment</span><span class="plain-syntax"> </span><span class="identifier-syntax">dl</span><span class="plain-syntax"> </span><span class="identifier-syntax">db</span><span class="plain-syntax"> </span><span class="identifier-syntax">tab</span><span class="plain-syntax"> </span><span class="identifier-syntax">structure</span><span class="plain-syntax"> </span><span class="identifier-syntax">pc</span><span class="plain-syntax"> </span><span class="identifier-syntax">instruction</span><span class="plain-syntax">;</span>
|
||||
<span class="comment-syntax">print "I.e. whether ", (PrintDialogueLineName) dl, " is in ", (PrintDialogueBeatName) db, "^";</span>
|
||||
<span class="plain-syntax">[ </span><span class="identifier-syntax">DirectorTestLineContainment</span><span class="plain-syntax"> </span><span class="identifier-syntax">X</span><span class="plain-syntax"> </span><span class="identifier-syntax">db</span><span class="plain-syntax"> </span><span class="identifier-syntax">tX</span><span class="plain-syntax"> </span><span class="identifier-syntax">tb</span><span class="plain-syntax"> </span><span class="identifier-syntax">tab</span><span class="plain-syntax"> </span><span class="identifier-syntax">structure</span><span class="plain-syntax"> </span><span class="identifier-syntax">pc</span><span class="plain-syntax"> </span><span class="identifier-syntax">instruction</span><span class="plain-syntax"> </span><span class="identifier-syntax">wanted</span><span class="plain-syntax">;</span>
|
||||
<span class="comment-syntax">print "I.e. whether ", (PrintDialogueLineName) X, " is in ", (PrintDialogueBeatName) db, "^";</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">tb</span><span class="plain-syntax"> ~= </span><span class="identifier-syntax">DIALOGUE_BEAT_TY</span><span class="plain-syntax">) { </span><span class="reserved-syntax">print</span><span class="plain-syntax"> </span><span class="string-syntax">"*** Not a db ***"</span><span class="plain-syntax">; </span><span class="reserved-syntax">rfalse</span><span class="plain-syntax">; }</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">tX</span><span class="plain-syntax"> ~= </span><span class="identifier-syntax">DIALOGUE_LINE_TY</span><span class="plain-syntax"> </span><span class="reserved-syntax">or</span><span class="plain-syntax"> </span><span class="identifier-syntax">DIALOGUE_CHOICE_TY</span><span class="plain-syntax">) { </span><span class="reserved-syntax">print</span><span class="plain-syntax"> </span><span class="string-syntax">"*** Not a dl/dc ***"</span><span class="plain-syntax">; </span><span class="reserved-syntax">rfalse</span><span class="plain-syntax">; }</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> ((</span><span class="identifier-syntax">db</span><span class="plain-syntax"> < </span><span class="constant-syntax">1</span><span class="plain-syntax">) || (</span><span class="identifier-syntax">db</span><span class="plain-syntax"> > </span><span class="identifier-syntax">NO_DIALOGUE_BEATS</span><span class="plain-syntax">)) </span><span class="reserved-syntax">rfalse</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> ((</span><span class="identifier-syntax">dl</span><span class="plain-syntax"> < </span><span class="constant-syntax">1</span><span class="plain-syntax">) || (</span><span class="identifier-syntax">dl</span><span class="plain-syntax"> > </span><span class="identifier-syntax">NO_DIALOGUE_LINES</span><span class="plain-syntax">)) </span><span class="reserved-syntax">rfalse</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">tX</span><span class="plain-syntax"> == </span><span class="identifier-syntax">DIALOGUE_LINE_TY</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> ((</span><span class="identifier-syntax">X</span><span class="plain-syntax"> < </span><span class="constant-syntax">1</span><span class="plain-syntax">) || (</span><span class="identifier-syntax">X</span><span class="plain-syntax"> > </span><span class="identifier-syntax">NO_DIALOGUE_LINES</span><span class="plain-syntax">)) </span><span class="reserved-syntax">rfalse</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">wanted</span><span class="plain-syntax"> = </span><span class="constant-syntax">1</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> } </span><span class="reserved-syntax">else</span><span class="plain-syntax"> {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> ((</span><span class="identifier-syntax">X</span><span class="plain-syntax"> < </span><span class="constant-syntax">1</span><span class="plain-syntax">) || (</span><span class="identifier-syntax">X</span><span class="plain-syntax"> > </span><span class="identifier-syntax">NO_DIALOGUE_CHOICES</span><span class="plain-syntax">)) </span><span class="reserved-syntax">rfalse</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">wanted</span><span class="plain-syntax"> = </span><span class="constant-syntax">2</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">tab</span><span class="plain-syntax"> = </span><span class="identifier-syntax">TableOfDialogueBeats</span><span class="plain-syntax">--></span><span class="identifier-syntax">db</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">structure</span><span class="plain-syntax"> = </span><span class="identifier-syntax">tab</span><span class="plain-syntax">-->2;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">pc</span><span class="plain-syntax"> = </span><span class="constant-syntax">0</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">instruction</span><span class="plain-syntax"> = (</span><span class="identifier-syntax">structure</span><span class="plain-syntax">--></span><span class="identifier-syntax">pc</span><span class="plain-syntax">)/100;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">while</span><span class="plain-syntax"> (</span><span class="identifier-syntax">instruction</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> ((</span><span class="identifier-syntax">instruction</span><span class="plain-syntax"> == </span><span class="constant-syntax">1</span><span class="plain-syntax">) && (</span><span class="identifier-syntax">structure</span><span class="plain-syntax">-->(</span><span class="identifier-syntax">pc</span><span class="plain-syntax">+1) == </span><span class="identifier-syntax">dl</span><span class="plain-syntax">)) </span><span class="reserved-syntax">rtrue</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> ((</span><span class="identifier-syntax">instruction</span><span class="plain-syntax"> == </span><span class="identifier-syntax">wanted</span><span class="plain-syntax">) && (</span><span class="identifier-syntax">structure</span><span class="plain-syntax">-->(</span><span class="identifier-syntax">pc</span><span class="plain-syntax">+1) == </span><span class="identifier-syntax">X</span><span class="plain-syntax">)) </span><span class="reserved-syntax">rtrue</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">pc</span><span class="plain-syntax"> = </span><span class="identifier-syntax">pc</span><span class="plain-syntax"> + </span><span class="constant-syntax">2</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">instruction</span><span class="plain-syntax"> = (</span><span class="identifier-syntax">structure</span><span class="plain-syntax">--></span><span class="identifier-syntax">pc</span><span class="plain-syntax">)/100;</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
|
|
|
@ -847,9 +847,12 @@ light to see by.
|
|||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="plain-syntax">[ </span><span class="identifier-syntax">TestAudibility</span><span class="plain-syntax"> </span><span class="identifier-syntax">A</span><span class="plain-syntax"> </span><span class="identifier-syntax">B</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">[ </span><span class="identifier-syntax">TestAudibility</span><span class="plain-syntax"> </span><span class="identifier-syntax">A</span><span class="plain-syntax"> </span><span class="identifier-syntax">B</span><span class="plain-syntax"> </span><span class="identifier-syntax">res</span><span class="plain-syntax"> </span><span class="identifier-syntax">saved</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">suppress_scope_loops</span><span class="plain-syntax">) </span><span class="reserved-syntax">rtrue</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">TestScope</span><span class="plain-syntax">(</span><span class="identifier-syntax">B</span><span class="plain-syntax">, </span><span class="identifier-syntax">A</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">saved</span><span class="plain-syntax"> = </span><span class="identifier-syntax">location</span><span class="plain-syntax">; </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">location</span><span class="plain-syntax"> == </span><span class="identifier-syntax">thedark</span><span class="plain-syntax">) </span><span class="identifier-syntax">location</span><span class="plain-syntax"> = </span><span class="identifier-syntax">real_location</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">res</span><span class="plain-syntax"> = </span><span class="identifier-syntax">TestScope</span><span class="plain-syntax">(</span><span class="identifier-syntax">B</span><span class="plain-syntax">, </span><span class="identifier-syntax">A</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">location</span><span class="plain-syntax"> = </span><span class="identifier-syntax">saved</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">res</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">];</span>
|
||||
</pre>
|
||||
<p class="commentary firstcommentary"><a id="SP26" class="paragraph-anchor"></a><b>§26. Touchability Relation. </b>We use <span class="extract"><span class="extract-syntax">ObjectIsUntouchable</span></span> to decide whether there is physical access from
|
||||
|
|
|
@ -84,7 +84,7 @@ module is used outside of Inform, of course, no <span class="extract"><span clas
|
|||
|
||||
<p class="commentary">A simple example of an <span class="extract"><span class="extract-syntax">i6_schema</span></span> might use the notation <span class="extract"><span class="extract-syntax">*1 == *2</span></span>; this
|
||||
will ultimately compile to a test that two quantities are numerically equal.
|
||||
As this example shows, <span class="extract"><span class="extract-syntax">*</span></span> is an escape character. See <a href="../building-module/2-is.html" class="internal">Inter Schemas (in building)</a>;
|
||||
As this example shows, <span class="extract"><span class="extract-syntax">*</span></span> is an escape character. See <a href="../building-module/2-pis.html" class="internal">Parsing Inter Schemas (in building)</a>;
|
||||
<span class="extract"><span class="extract-syntax">*1</span></span> is an example of what is called an "abbreviated command" there.
|
||||
</p>
|
||||
|
||||
|
|
|
@ -866,6 +866,8 @@ Note that a region cannot directly contain any object, except a backdrop.
|
|||
<span class="plain-syntax"> </span><span class="identifier-syntax">backdropping</span><span class="plain-syntax"> = </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> ((</span><span class="identifier-syntax">K_dialogue_beat</span><span class="plain-syntax">) && (</span><span class="identifier-syntax">Kinds::eq</span><span class="plain-syntax">(</span><span class="identifier-syntax">KB</span><span class="plain-syntax">, </span><span class="identifier-syntax">K_dialogue_line</span><span class="plain-syntax">)))</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">lined</span><span class="plain-syntax"> = </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> ((</span><span class="identifier-syntax">K_dialogue_choice</span><span class="plain-syntax">) && (</span><span class="identifier-syntax">Kinds::eq</span><span class="plain-syntax">(</span><span class="identifier-syntax">KB</span><span class="plain-syntax">, </span><span class="identifier-syntax">K_dialogue_choice</span><span class="plain-syntax">)))</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">lined</span><span class="plain-syntax"> = </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> ((</span><span class="identifier-syntax">regionality</span><span class="plain-syntax">) && (!</span><span class="identifier-syntax">backdropping</span><span class="plain-syntax">)) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">pl</span><span class="plain-syntax">-></span><span class="element-syntax">predicate</span><span class="plain-syntax"> = </span><span class="identifier-syntax">STORE_POINTER_binary_predicate</span><span class="plain-syntax">(</span><span class="identifier-syntax">R_regional_containment</span><span class="plain-syntax">);</span>
|
||||
|
|
|
@ -157,6 +157,7 @@ dialogue, so the internal error here should be impossible to hit.
|
|||
<span class="plain-syntax"> </span><span class="reserved-syntax">struct</span><span class="plain-syntax"> </span><span class="reserved-syntax">scene</span><span class="plain-syntax"> *</span><span class="identifier-syntax">as_scene</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">struct</span><span class="plain-syntax"> </span><span class="identifier-syntax">linked_list</span><span class="plain-syntax"> *</span><span class="identifier-syntax">required</span><span class="plain-syntax">; </span><span class="comment-syntax"> of </span><span class="extract"><span class="extract-syntax">instance</span></span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">starting_beat</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">requiring_nothing</span><span class="plain-syntax">;</span>
|
||||
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">struct</span><span class="plain-syntax"> </span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">immediately_after</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">struct</span><span class="plain-syntax"> </span><span class="identifier-syntax">linked_list</span><span class="plain-syntax"> *</span><span class="identifier-syntax">some_time_after</span><span class="plain-syntax">; </span><span class="comment-syntax"> of </span><span class="extract"><span class="extract-syntax">parse_node</span></span>
|
||||
|
@ -181,6 +182,7 @@ dialogue, so the internal error here should be impossible to hit.
|
|||
<span class="plain-syntax"> </span><span class="identifier-syntax">db</span><span class="plain-syntax">-></span><span class="element-syntax">as_scene</span><span class="plain-syntax"> = </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">db</span><span class="plain-syntax">-></span><span class="element-syntax">required</span><span class="plain-syntax"> = </span><span class="identifier-syntax">NEW_LINKED_LIST</span><span class="plain-syntax">(</span><span class="identifier-syntax">instance</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">db</span><span class="plain-syntax">-></span><span class="element-syntax">starting_beat</span><span class="plain-syntax"> = </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">db</span><span class="plain-syntax">-></span><span class="element-syntax">requiring_nothing</span><span class="plain-syntax"> = </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">db</span><span class="plain-syntax">-></span><span class="element-syntax">immediately_after</span><span class="plain-syntax"> = </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">db</span><span class="plain-syntax">-></span><span class="element-syntax">some_time_after</span><span class="plain-syntax"> = </span><span class="identifier-syntax">NEW_LINKED_LIST</span><span class="plain-syntax">(</span><span class="identifier-syntax">parse_node</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">db</span><span class="plain-syntax">-></span><span class="element-syntax">some_time_before</span><span class="plain-syntax"> = </span><span class="identifier-syntax">NEW_LINKED_LIST</span><span class="plain-syntax">(</span><span class="identifier-syntax">parse_node</span><span class="plain-syntax">);</span>
|
||||
|
@ -207,6 +209,7 @@ We annotate each clause with the answer. Thus we might have:
|
|||
<span class="definition-keyword">enum</span> <span class="constant-syntax">AFTER_DBC</span>
|
||||
<span class="definition-keyword">enum</span> <span class="constant-syntax">IMMEDIATELY_AFTER_DBC</span>
|
||||
<span class="definition-keyword">enum</span> <span class="constant-syntax">BEFORE_DBC</span>
|
||||
<span class="definition-keyword">enum</span> <span class="constant-syntax">REQUIRING_NOTHING_DBC</span>
|
||||
<span class="definition-keyword">enum</span> <span class="constant-syntax">REQUIRING_DBC</span>
|
||||
<span class="definition-keyword">enum</span> <span class="constant-syntax">LATER_DBC</span>
|
||||
<span class="definition-keyword">enum</span> <span class="constant-syntax">NEXT_DBC</span>
|
||||
|
@ -237,6 +240,7 @@ We annotate each clause with the answer. Thus we might have:
|
|||
<span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">after</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">...</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">|</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">==></span><span class="Preform-plain-syntax"> { AFTER_DBC, - }</span>
|
||||
<span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">immediately</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">after</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">...</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">|</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">==></span><span class="Preform-plain-syntax"> { IMMEDIATELY_AFTER_DBC, - }</span>
|
||||
<span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">before</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">...</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">|</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">==></span><span class="Preform-plain-syntax"> { BEFORE_DBC, - }</span>
|
||||
<span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">requiring</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">nothing</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">|</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">==></span><span class="Preform-plain-syntax"> { REQUIRING_NOTHING_DBC, - }</span>
|
||||
<span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">requiring</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">...</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">|</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">==></span><span class="Preform-plain-syntax"> { REQUIRING_DBC, - }</span>
|
||||
<span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">later</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">|</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">==></span><span class="Preform-plain-syntax"> { LATER_DBC, - }</span>
|
||||
<span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">next</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">|</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">==></span><span class="Preform-plain-syntax"> { NEXT_DBC, - }</span>
|
||||
|
@ -261,6 +265,7 @@ We annotate each clause with the answer. Thus we might have:
|
|||
<span class="plain-syntax"> </span><span class="reserved-syntax">case</span><span class="plain-syntax"> </span><span class="identifier-syntax">IMMEDIATELY_AFTER_DBC:</span><span class="plain-syntax"> </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"IMMEDIATELY_AFTER"</span><span class="plain-syntax">); </span><span class="reserved-syntax">break</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">case</span><span class="plain-syntax"> </span><span class="identifier-syntax">BEFORE_DBC:</span><span class="plain-syntax"> </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"BEFORE"</span><span class="plain-syntax">); </span><span class="reserved-syntax">break</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">case</span><span class="plain-syntax"> </span><span class="identifier-syntax">REQUIRING_DBC:</span><span class="plain-syntax"> </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"REQUIRING"</span><span class="plain-syntax">); </span><span class="reserved-syntax">break</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">case</span><span class="plain-syntax"> </span><span class="identifier-syntax">REQUIRING_NOTHING_DBC:</span><span class="plain-syntax"> </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"REQUIRING_NOTHING"</span><span class="plain-syntax">); </span><span class="reserved-syntax">break</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">case</span><span class="plain-syntax"> </span><span class="identifier-syntax">LATER_DBC:</span><span class="plain-syntax"> </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"LATER"</span><span class="plain-syntax">); </span><span class="reserved-syntax">break</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">case</span><span class="plain-syntax"> </span><span class="identifier-syntax">NEXT_DBC:</span><span class="plain-syntax"> </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"NEXT"</span><span class="plain-syntax">); </span><span class="reserved-syntax">break</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">case</span><span class="plain-syntax"> </span><span class="identifier-syntax">PROPERTY_DBC:</span><span class="plain-syntax"> </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"PROPERTY"</span><span class="plain-syntax">); </span><span class="reserved-syntax">break</span><span class="plain-syntax">;</span>
|
||||
|
@ -451,6 +456,9 @@ performed only after or before other beats.
|
|||
<span class="plain-syntax"> </span><a href="6-db.html#SP7" class="function-link"><span class="function-syntax">DialogueBeats::parse_required_speaker_list</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">db</span><span class="plain-syntax">, </span><span class="identifier-syntax">AL</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">break</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">case</span><span class="plain-syntax"> </span><span class="identifier-syntax">REQUIRING_NOTHING_DBC:</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">db</span><span class="plain-syntax">-></span><span class="element-syntax">requiring_nothing</span><span class="plain-syntax"> = </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">break</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">iac</span><span class="plain-syntax"> > </span><span class="constant-syntax">1</span><span class="plain-syntax">)</span>
|
||||
|
@ -614,7 +622,7 @@ in the <span class="extract"><span class="extract-syntax">UNPARSED_NOUN_NT</span
|
|||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="function-syntax"><s-type-expression-uncached></span><span class="plain-syntax">(</span><span class="identifier-syntax">A</span><span class="plain-syntax">)) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">desc</span><span class="plain-syntax"> = </span><span class="function-syntax"><<rp>></span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">kind</span><span class="plain-syntax"> *</span><span class="identifier-syntax">K</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Specifications::to_kind</span><span class="plain-syntax">(</span><span class="identifier-syntax">desc</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Kinds::Behaviour::is_subkind_of_object</span><span class="plain-syntax">(</span><span class="identifier-syntax">K</span><span class="plain-syntax">)) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> ((</span><span class="identifier-syntax">Kinds::eq</span><span class="plain-syntax">(</span><span class="identifier-syntax">K</span><span class="plain-syntax">, </span><span class="identifier-syntax">K_object</span><span class="plain-syntax">)) || (</span><span class="identifier-syntax">Kinds::Behaviour::is_subkind_of_object</span><span class="plain-syntax">(</span><span class="identifier-syntax">K</span><span class="plain-syntax">))) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">ADD_TO_LINKED_LIST</span><span class="plain-syntax">(</span><span class="identifier-syntax">desc</span><span class="plain-syntax">, </span><span class="identifier-syntax">parse_node</span><span class="plain-syntax">, </span><span class="identifier-syntax">about_list</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> } </span><span class="reserved-syntax">else</span><span class="plain-syntax"> {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Problems::quote_source</span><span class="plain-syntax">(1, </span><span class="identifier-syntax">current_sentence</span><span class="plain-syntax">);</span>
|
||||
|
|
|
@ -84,9 +84,9 @@ function togglePopup(material_id) {
|
|||
<span class="plain-syntax"> </span><span class="identifier-syntax">R_dialogue_containment</span><span class="plain-syntax"> =</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">BinaryPredicates::make_pair</span><span class="plain-syntax">(</span><span class="identifier-syntax">spatial_bp_family</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">BPTerms::new</span><span class="plain-syntax">(</span><span class="identifier-syntax">KindSubjects::from_kind</span><span class="plain-syntax">(</span><span class="identifier-syntax">K_dialogue_beat</span><span class="plain-syntax">)),</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">BPTerms::new</span><span class="plain-syntax">(</span><span class="identifier-syntax">KindSubjects::from_kind</span><span class="plain-syntax">(</span><span class="identifier-syntax">K_dialogue_line</span><span class="plain-syntax">)),</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">BPTerms::new</span><span class="plain-syntax">(</span><span class="identifier-syntax">KindSubjects::from_kind</span><span class="plain-syntax">(</span><span class="identifier-syntax">K_value</span><span class="plain-syntax">)),</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">I</span><span class="string-syntax">"dialogue-contains"</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"in-dialogue"</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">, </span><span class="identifier-syntax">Calculus::Schemas::new</span><span class="plain-syntax">(</span><span class="string-syntax">"DirectorTestLineContainment(*2,*1)"</span><span class="plain-syntax">),</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">, </span><span class="identifier-syntax">Calculus::Schemas::new</span><span class="plain-syntax">(</span><span class="string-syntax">"DirectorTestLineContainment(*2,*1,*#2,*#1)"</span><span class="plain-syntax">),</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">PreformUtilities::wording</span><span class="plain-syntax">(</span><span class="function-syntax"><relation-names></span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">DIALOGUE_CONTAINMENT_RELATION_NAME</span><span class="plain-syntax">));</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">BinaryPredicates::set_index_details</span><span class="plain-syntax">(</span><span class="identifier-syntax">R_dialogue_containment</span><span class="plain-syntax">, </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">, </span><span class="string-syntax">"dialogue line"</span><span class="plain-syntax">);</span>
|
||||
|
@ -99,7 +99,22 @@ function togglePopup(material_id) {
|
|||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">DialogueRelations::typecheck</span><button class="popup" onclick="togglePopup('usagePopup2')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup2">Usage of <span class="code-font"><span class="function-syntax">DialogueRelations::typecheck</span></span>:<br/><a href="6-dr.html#SP2">§2</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">bp_family</span><span class="plain-syntax"> *</span><span class="identifier-syntax">self</span><span class="plain-syntax">, </span><span class="identifier-syntax">binary_predicate</span><span class="plain-syntax"> *</span><span class="identifier-syntax">bp</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">kind</span><span class="plain-syntax"> **</span><span class="identifier-syntax">kinds_of_terms</span><span class="plain-syntax">, </span><span class="identifier-syntax">kind</span><span class="plain-syntax"> **</span><span class="identifier-syntax">kinds_required</span><span class="plain-syntax">, </span><span class="identifier-syntax">tc_problem_kit</span><span class="plain-syntax"> *</span><span class="identifier-syntax">tck</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">DECLINE_TO_MATCH</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> ((</span><span class="identifier-syntax">K_dialogue_beat</span><span class="plain-syntax">) &&</span>
|
||||
<span class="plain-syntax"> (</span><span class="identifier-syntax">Kinds::compatible</span><span class="plain-syntax">(</span><span class="identifier-syntax">kinds_of_terms</span><span class="plain-syntax">[1], </span><span class="identifier-syntax">K_dialogue_beat</span><span class="plain-syntax">) == </span><span class="identifier-syntax">NEVER_MATCH</span><span class="plain-syntax">)) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">LOG</span><span class="plain-syntax">(</span><span class="string-syntax">"Term 0 is %u not %u\n"</span><span class="plain-syntax">, </span><span class="identifier-syntax">kinds_of_terms</span><span class="plain-syntax">[1], </span><span class="identifier-syntax">K_dialogue_beat</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">TypecheckPropositions::issue_bp_typecheck_error</span><span class="plain-syntax">(</span><span class="identifier-syntax">bp</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">kinds_of_terms</span><span class="plain-syntax">[0], </span><span class="identifier-syntax">kinds_of_terms</span><span class="plain-syntax">[1], </span><span class="identifier-syntax">tck</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">NEVER_MATCH</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (((</span><span class="identifier-syntax">K_dialogue_line</span><span class="plain-syntax">) || (</span><span class="identifier-syntax">K_dialogue_choice</span><span class="plain-syntax">)) &&</span>
|
||||
<span class="plain-syntax"> (</span><span class="identifier-syntax">Kinds::compatible</span><span class="plain-syntax">(</span><span class="identifier-syntax">kinds_of_terms</span><span class="plain-syntax">[0], </span><span class="identifier-syntax">K_dialogue_line</span><span class="plain-syntax">) == </span><span class="identifier-syntax">NEVER_MATCH</span><span class="plain-syntax">) &&</span>
|
||||
<span class="plain-syntax"> (</span><span class="identifier-syntax">Kinds::compatible</span><span class="plain-syntax">(</span><span class="identifier-syntax">kinds_of_terms</span><span class="plain-syntax">[0], </span><span class="identifier-syntax">K_dialogue_choice</span><span class="plain-syntax">) == </span><span class="identifier-syntax">NEVER_MATCH</span><span class="plain-syntax">)) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">LOG</span><span class="plain-syntax">(</span><span class="string-syntax">"Term 0 is %u not %u\n"</span><span class="plain-syntax">, </span><span class="identifier-syntax">kinds_of_terms</span><span class="plain-syntax">[0], </span><span class="identifier-syntax">kinds_required</span><span class="plain-syntax">[0]);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">TypecheckPropositions::issue_bp_typecheck_error</span><span class="plain-syntax">(</span><span class="identifier-syntax">bp</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">kinds_of_terms</span><span class="plain-syntax">[0], </span><span class="identifier-syntax">kinds_of_terms</span><span class="plain-syntax">[1], </span><span class="identifier-syntax">tck</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">NEVER_MATCH</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">ALWAYS_MATCH</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<p class="commentary firstcommentary"><a id="SP4" class="paragraph-anchor"></a><b>§4. </b>"In" requires delicate handling, because of the way that English uses it
|
||||
|
|
|
@ -151,7 +151,7 @@ which would be a typesafe list in I7, so they can be absolutely any data.
|
|||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">EmitArrays::numeric_entry</span><button class="popup" onclick="togglePopup('usagePopup10')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup10">Usage of <span class="code-font"><span class="function-syntax">EmitArrays::numeric_entry</span></span>:<br/>The Heap - <a href="2-th.html#SP6">§6</a><br/>List Literals - <a href="4-ll.html#SP1">§1</a>, <a href="4-ll.html#SP2">§2</a>, <a href="4-ll.html#SP7_1">§7.1</a><br/>Box Quotations - <a href="4-bq.html#SP2">§2</a><br/>Relation Literals - <a href="4-rl.html#SP1">§1</a><br/>Stored Action Literals - <a href="4-sal.html#SP1">§1</a><br/>Instances - <a href="5-ins.html#SP4">§4</a><br/>Multimedia - <a href="5-mlt.html#SP2_1">§2.1</a>, <a href="5-mlt.html#SP2_2">§2.2</a><br/>Tables - <a href="5-tbl.html#SP2_1_1_1_4">§2.1.1.1.4</a>, <a href="5-tbl.html#SP2_2_3">§2.2.3</a><br/>Dialogue Beat Instances - <a href="5-dbi.html#SP2">§2</a>, <a href="5-dbi.html#SP2_1">§2.1</a>, <a href="5-dbi.html#SP2_2">§2.2</a>, <a href="5-dbi.html#SP2_4">§2.4</a>, <a href="5-dbi.html#SP2_5">§2.5</a>, <a href="5-dbi.html#SP2_8">§2.8</a>, <a href="5-dbi.html#SP3">§3</a><br/>Dialogue - <a href="5-dli.html#SP3_2">§3.2</a>, <a href="5-dli.html#SP3_3">§3.3</a>, <a href="5-dli.html#SP3_4">§3.4</a>, <a href="5-dli.html#SP3_7">§3.7</a>, <a href="5-dli.html#SP3_8">§3.8</a><br/>Dialogue Choice Instances - <a href="5-dci.html#SP3_2">§3.2</a>, <a href="5-dci.html#SP3_3">§3.3</a>, <a href="5-dci.html#SP3_4">§3.4</a><br/>Relations - <a href="5-rlt.html#SP6_3">§6.3</a>, <a href="5-rlt.html#SP6_3_3">§6.3.3</a>, <a href="5-rlt.html#SP7">§7</a>, <a href="5-rlt.html#SP9">§9</a>, <a href="5-rlt.html#SP10_2">§10.2</a>, <a href="5-rlt.html#SP10_3">§10.3</a><br/>Kind IDs - <a href="5-ki.html#SP9_1_1_1">§9.1.1.1</a>, <a href="5-ki.html#SP9_1_1_2">§9.1.1.2</a><br/>Test Scripts - <a href="5-ts.html#SP4">§4</a><br/>The Player - <a href="6-tp.html#SP1">§1</a><br/>The Map - <a href="6-tm.html#SP1">§1</a><br/>Action Bitmap Property - <a href="6-abp.html#SP1">§1</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">inter_ti</span><span class="plain-syntax"> </span><span class="identifier-syntax">N</span><span class="plain-syntax">) {</span>
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">EmitArrays::numeric_entry</span><button class="popup" onclick="togglePopup('usagePopup10')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup10">Usage of <span class="code-font"><span class="function-syntax">EmitArrays::numeric_entry</span></span>:<br/>The Heap - <a href="2-th.html#SP6">§6</a><br/>List Literals - <a href="4-ll.html#SP1">§1</a>, <a href="4-ll.html#SP2">§2</a>, <a href="4-ll.html#SP7_1">§7.1</a><br/>Box Quotations - <a href="4-bq.html#SP2">§2</a><br/>Relation Literals - <a href="4-rl.html#SP1">§1</a><br/>Stored Action Literals - <a href="4-sal.html#SP1">§1</a><br/>Instances - <a href="5-ins.html#SP4">§4</a><br/>Multimedia - <a href="5-mlt.html#SP2_1">§2.1</a>, <a href="5-mlt.html#SP2_2">§2.2</a><br/>Tables - <a href="5-tbl.html#SP2_1_1_1_4">§2.1.1.1.4</a>, <a href="5-tbl.html#SP2_2_3">§2.2.3</a><br/>Dialogue Beat Instances - <a href="5-dbi.html#SP2">§2</a>, <a href="5-dbi.html#SP2_1">§2.1</a>, <a href="5-dbi.html#SP2_2">§2.2</a>, <a href="5-dbi.html#SP2_4">§2.4</a>, <a href="5-dbi.html#SP2_5">§2.5</a>, <a href="5-dbi.html#SP2_8">§2.8</a>, <a href="5-dbi.html#SP3">§3</a><br/>Dialogue - <a href="5-dli.html#SP3_2">§3.2</a>, <a href="5-dli.html#SP3_3">§3.3</a>, <a href="5-dli.html#SP3_4">§3.4</a>, <a href="5-dli.html#SP3_7">§3.7</a>, <a href="5-dli.html#SP3_8">§3.8</a>, <a href="5-dli.html#SP3_9">§3.9</a><br/>Dialogue Choice Instances - <a href="5-dci.html#SP3_2">§3.2</a>, <a href="5-dci.html#SP3_3">§3.3</a>, <a href="5-dci.html#SP3_4">§3.4</a><br/>Relations - <a href="5-rlt.html#SP6_3">§6.3</a>, <a href="5-rlt.html#SP6_3_3">§6.3.3</a>, <a href="5-rlt.html#SP7">§7</a>, <a href="5-rlt.html#SP9">§9</a>, <a href="5-rlt.html#SP10_2">§10.2</a>, <a href="5-rlt.html#SP10_3">§10.3</a><br/>Kind IDs - <a href="5-ki.html#SP9_1_1_1">§9.1.1.1</a>, <a href="5-ki.html#SP9_1_1_2">§9.1.1.2</a><br/>Test Scripts - <a href="5-ts.html#SP4">§4</a><br/>The Player - <a href="6-tp.html#SP1">§1</a><br/>The Map - <a href="6-tm.html#SP1">§1</a><br/>Action Bitmap Property - <a href="6-abp.html#SP1">§1</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">inter_ti</span><span class="plain-syntax"> </span><span class="identifier-syntax">N</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><a href="2-ea.html#SP9" class="function-link"><span class="function-syntax">EmitArrays::entry_inner</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">InterValuePairs::number</span><span class="plain-syntax">(</span><span class="identifier-syntax">N</span><span class="plain-syntax">));</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
|
||||
|
|
|
@ -261,7 +261,7 @@ function togglePopup(material_id) {
|
|||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">linked_list</span><span class="plain-syntax"> *</span><span class="identifier-syntax">L</span><span class="plain-syntax"> = </span><span class="identifier-syntax">db</span><span class="plain-syntax">-></span><span class="identifier-syntax">required</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">LinkedLists::len</span><span class="plain-syntax">(</span><span class="identifier-syntax">L</span><span class="plain-syntax">) == </span><span class="constant-syntax">0</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> ((</span><span class="identifier-syntax">LinkedLists::len</span><span class="plain-syntax">(</span><span class="identifier-syntax">L</span><span class="plain-syntax">) == </span><span class="constant-syntax">0</span><span class="plain-syntax">) && (</span><span class="identifier-syntax">db</span><span class="plain-syntax">-></span><span class="identifier-syntax">requiring_nothing</span><span class="plain-syntax"> == </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">)) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">L</span><span class="plain-syntax"> = </span><span class="identifier-syntax">NEW_LINKED_LIST</span><span class="plain-syntax">(</span><span class="identifier-syntax">instance</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="5-dbi.html#SP5" class="function-link"><span class="function-syntax">RTDialogueBeats::find_speakers_r</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">L</span><span class="plain-syntax">, </span><span class="identifier-syntax">db</span><span class="plain-syntax">-></span><span class="identifier-syntax">root</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
|
|
|
@ -352,6 +352,7 @@ function togglePopup(material_id) {
|
|||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">dl</span><span class="plain-syntax">-></span><span class="identifier-syntax">without_speaking</span><span class="plain-syntax">) </span><span class="identifier-syntax">flags</span><span class="plain-syntax"> |= </span><span class="constant-syntax">2</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">ending</span><span class="plain-syntax">) </span><span class="identifier-syntax">flags</span><span class="plain-syntax"> |= </span><span class="constant-syntax">4</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">ending_finally</span><span class="plain-syntax">) </span><span class="identifier-syntax">flags</span><span class="plain-syntax"> |= </span><span class="constant-syntax">8</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><a href="2-ea.html#SP4" class="function-link"><span class="function-syntax">EmitArrays::numeric_entry</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">flags</span><span class="plain-syntax">);</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="5-dli.html#SP3">§3</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP3_10" class="paragraph-anchor"></a><b>§3.10. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Compile the available function</span><span class="named-paragraph-number">3.10</span></span><span class="comment-syntax"> =</span>
|
||||
|
|
|
@ -5172,7 +5172,7 @@
|
|||
<np-operand> {called} <np-articled-bal>
|
||||
(hits 57/393) (matched long text) constraint DS = {8} extremes [1, infinity)
|
||||
<np-operand> <np-with-or-having-tail>
|
||||
(hits 0/531) constraint DS = {30} extremes [2, infinity)
|
||||
(hits 0/532) constraint DS = {30} extremes [2, infinity)
|
||||
<np-operand> <np-and-tail>
|
||||
(hits 87/490) (matched long text) constraint DS = {6} extremes [1, infinity)
|
||||
<np-kind-phrase>
|
||||
|
@ -5193,16 +5193,16 @@
|
|||
<np-nonrelative>
|
||||
(hits 431/431) (matched long text) constraint (none) extremes [1, infinity)
|
||||
|
||||
<np-with-or-having-tail> hits 0/10198 nti 30 constraint DS = {30} extremes [2, infinity)
|
||||
<np-with-or-having-tail> hits 0/10204 nti 30 constraint DS = {30} extremes [2, infinity)
|
||||
English:
|
||||
it with action {***}
|
||||
(hits 0/3883) constraint DS = {30} extremes [3, infinity)
|
||||
(hits 0/3887) constraint DS = {30} extremes [3, infinity)
|
||||
{with/having} (/) {***}
|
||||
(hits 0/4091) constraint DS = {30} extremes [2, infinity)
|
||||
(hits 0/4095) constraint DS = {30} extremes [2, infinity)
|
||||
{with/having} {...} ( <response-letter> )
|
||||
(hits 0/3477) constraint DS = {30} extremes [5, infinity)
|
||||
(hits 0/3479) constraint DS = {30} extremes [5, infinity)
|
||||
{with/having} <np-new-property-list>
|
||||
(hits 0/4091) constraint DS = {30} extremes [2, infinity)
|
||||
(hits 0/4095) constraint DS = {30} extremes [2, infinity)
|
||||
|
||||
<np-new-property-list> nti 29 constraint (none) extremes [1, infinity)
|
||||
English:
|
||||
|
@ -6303,7 +6303,7 @@
|
|||
<article> activity
|
||||
(hits 34/42) (matched: 'an activity') constraint DS = {30} extremes [2, 2]
|
||||
activity
|
||||
constraint CS = {30} extremes [1, 1]
|
||||
(hits 0/1) constraint CS = {30} extremes [1, 1]
|
||||
|
||||
<specifies-sentence-subject> nti 8 constraint (none) extremes [1, infinity)
|
||||
English:
|
||||
|
@ -9828,6 +9828,8 @@
|
|||
constraint DS = {30} extremes [3, infinity)
|
||||
before {...}
|
||||
constraint DS = {30} extremes [2, infinity)
|
||||
requiring nothing
|
||||
constraint CS = {30} extremes [2, 2]
|
||||
requiring {...}
|
||||
constraint DS = {30} extremes [2, infinity)
|
||||
later
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
Total memory consumption was 121163K = 118 MB
|
||||
Total memory consumption was 121166K = 118 MB
|
||||
|
||||
---- was used for 2051924 objects, in 365755 frames in 0 x 800K = 0K = 0 MB:
|
||||
---- was used for 2051934 objects, in 365765 frames in 0 x 800K = 0K = 0 MB:
|
||||
|
||||
33.7% inter_tree_node_array 58 x 8192 = 475136 objects, 41813824 bytes
|
||||
21.0% text_stream_array 4630 x 100 = 463000 objects, 26076160 bytes
|
||||
|
@ -15,7 +15,7 @@ Total memory consumption was 121163K = 118 MB
|
|||
2.1% kind_array 66 x 1000 = 66000 objects, 2642112 bytes
|
||||
1.7% scan_directory 528 objects, 2179584 bytes
|
||||
1.6% inter_name_generator_array 51 x 1000 = 51000 objects, 2041632 bytes
|
||||
1.6% inter_schema_token 14112 objects, 2032128 bytes
|
||||
1.6% inter_schema_token 14116 objects, 2032704 bytes
|
||||
1.5% package_request 21170 objects, 1862960 bytes
|
||||
1.4% vocabulary_entry_array 162 x 100 = 16200 objects, 1819584 bytes
|
||||
1.2% dict_entry_array 475 x 100 = 47500 objects, 1535200 bytes
|
||||
|
@ -27,16 +27,16 @@ Total memory consumption was 121163K = 118 MB
|
|||
0.8% id_body 945 objects, 1081080 bytes
|
||||
0.8% adjective_meaning 202 objects, 1000304 bytes
|
||||
0.7% excerpt_meaning 3117 objects, 972504 bytes
|
||||
0.7% production 3939 objects, 913848 bytes
|
||||
0.7% ptoken 8544 objects, 888576 bytes
|
||||
0.7% production 3940 objects, 914080 bytes
|
||||
0.7% ptoken 8546 objects, 888784 bytes
|
||||
0.7% grammatical_usage 3638 objects, 873120 bytes
|
||||
0.6% inter_schema_node 9045 objects, 868320 bytes
|
||||
0.6% inter_schema_node 9047 objects, 868512 bytes
|
||||
0.6% individual_form 2568 objects, 862848 bytes
|
||||
0.5% unary_predicate_array 16 x 1000 = 16000 objects, 640512 bytes
|
||||
0.3% local_variable_array 47 x 100 = 4700 objects, 452704 bytes
|
||||
0.3% verb_usage 1148 objects, 394912 bytes
|
||||
0.2% rule 470 objects, 368480 bytes
|
||||
0.2% dictionary 7603 objects, 364944 bytes
|
||||
0.2% dictionary 7604 objects, 364992 bytes
|
||||
0.2% verb_form 388 objects, 350752 bytes
|
||||
0.2% noun 2387 objects, 286440 bytes
|
||||
0.2% compilation_subtask 3365 objects, 269200 bytes
|
||||
|
@ -247,8 +247,8 @@ Total memory consumption was 121163K = 118 MB
|
|||
|
||||
100.0% was used for memory not allocated for objects:
|
||||
|
||||
56.8% text stream storage 70531652 bytes in 480174 claims
|
||||
4.2% dictionary storage 5303296 bytes in 7603 claims
|
||||
56.8% text stream storage 70534016 bytes in 480195 claims
|
||||
4.2% dictionary storage 5303808 bytes in 7604 claims
|
||||
---- sorting 1560 bytes in 159 claims
|
||||
5.8% source text 7200000 bytes in 3 claims
|
||||
8.7% source text details 10800000 bytes in 2 claims
|
||||
|
@ -265,5 +265,5 @@ Total memory consumption was 121163K = 118 MB
|
|||
---- code generation workspace for objects 3480 bytes in 19 claims
|
||||
0.2% emitter array storage 280544 bytes in 2001 claims
|
||||
|
||||
-150.-2% was overhead - -186421096 bytes = -182051K = -177 MB
|
||||
-150.-2% was overhead - -186422352 bytes = -182053K = -177 MB
|
||||
|
||||
|
|
|
@ -1,11 +1,11 @@
|
|||
100.0% in inform7 run
|
||||
71.4% in compilation to Inter
|
||||
51.0% in //Sequence::undertake_queued_tasks//
|
||||
71.1% in compilation to Inter
|
||||
50.9% in //Sequence::undertake_queued_tasks//
|
||||
4.6% in //MajorNodes::pre_pass//
|
||||
3.4% in //MajorNodes::pass_1//
|
||||
1.8% in //ImperativeDefinitions::assess_all//
|
||||
1.6% in //RTPhrasebook::compile_entries//
|
||||
1.4% in //RTKindConstructors::compile//
|
||||
1.6% in //RTKindConstructors::compile//
|
||||
1.4% in //RTPhrasebook::compile_entries//
|
||||
1.0% in //Sequence::lint_inter//
|
||||
0.6% in //MajorNodes::pass_2//
|
||||
0.6% in //Sequence::undertake_queued_tasks//
|
||||
|
@ -16,18 +16,18 @@
|
|||
0.2% in //InferenceSubjects::emit_all//
|
||||
0.2% in //RTKindConstructors::compile_permissions//
|
||||
0.2% in //Task::make_built_in_kind_constructors//
|
||||
3.2% not specifically accounted for
|
||||
0.2% in //World::stages_II_and_III//
|
||||
2.8% not specifically accounted for
|
||||
25.8% in running Inter pipeline
|
||||
10.0% in step 14/15: generate inform6 -> auto.inf
|
||||
10.2% in step 14/15: generate inform6 -> auto.inf
|
||||
5.6% in step 5/15: load-binary-kits
|
||||
5.6% in step 6/15: make-synoptic-module
|
||||
5.4% in step 6/15: make-synoptic-module
|
||||
1.4% in step 9/15: make-identifiers-unique
|
||||
0.4% in step 12/15: eliminate-redundant-operations
|
||||
0.4% in step 4/15: compile-splats
|
||||
0.4% in step 7/15: shorten-wiring
|
||||
0.4% in step 8/15: detect-indirect-calls
|
||||
0.2% in step 10/15: reconcile-verbs
|
||||
0.2% in step 11/15: eliminate-redundant-labels
|
||||
1.2% not specifically accounted for
|
||||
0.2% in step 8/15: detect-indirect-calls
|
||||
1.6% not specifically accounted for
|
||||
2.6% in supervisor
|
||||
0.2% not specifically accounted for
|
||||
0.5% not specifically accounted for
|
||||
|
|
|
@ -761,30 +761,45 @@ Global director_is_active = false;
|
|||
rfalse;
|
||||
];
|
||||
|
||||
[ DirectorIntervenes obj tab fn db;
|
||||
Array DirectorMiniPool --> 0 0;
|
||||
|
||||
[ DirectorIntervenes obj tab fn db saved;
|
||||
saved = DirectorMiniPool-->0;
|
||||
DirectorMiniPool-->0 = obj;
|
||||
for (db=1: db<=NO_DIALOGUE_BEATS: db++) {
|
||||
if (DirectorBeatAvailableToPlayer(db)) {
|
||||
tab = TableOfDialogueBeats-->db;
|
||||
fn = tab-->0;
|
||||
if ((fn == 0) || ((fn)(latest_performed_beat))) {
|
||||
fn = tab-->1;
|
||||
if ((fn) && (fn(DialogueTopicPool))) { DirectorPerform(db); rtrue; }
|
||||
if ((fn) && (fn(DirectorMiniPool))) {
|
||||
DirectorMiniPool-->0 = saved; DirectorPerform(db); rtrue;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
DirectorMiniPool-->0 = saved;
|
||||
rfalse;
|
||||
];
|
||||
|
||||
[ DirectorTestLineContainment dl db tab structure pc instruction;
|
||||
! print "I.e. whether ", (PrintDialogueLineName) dl, " is in ", (PrintDialogueBeatName) db, "^";
|
||||
[ DirectorTestLineContainment X db tX tb tab structure pc instruction wanted;
|
||||
! print "I.e. whether ", (PrintDialogueLineName) X, " is in ", (PrintDialogueBeatName) db, "^";
|
||||
if (tb ~= DIALOGUE_BEAT_TY) { print "*** Not a db ***"; rfalse; }
|
||||
if (tX ~= DIALOGUE_LINE_TY or DIALOGUE_CHOICE_TY) { print "*** Not a dl/dc ***"; rfalse; }
|
||||
if ((db < 1) || (db > NO_DIALOGUE_BEATS)) rfalse;
|
||||
if ((dl < 1) || (dl > NO_DIALOGUE_LINES)) rfalse;
|
||||
if (tX == DIALOGUE_LINE_TY) {
|
||||
if ((X < 1) || (X > NO_DIALOGUE_LINES)) rfalse;
|
||||
wanted = 1;
|
||||
} else {
|
||||
if ((X < 1) || (X > NO_DIALOGUE_CHOICES)) rfalse;
|
||||
wanted = 2;
|
||||
}
|
||||
tab = TableOfDialogueBeats-->db;
|
||||
structure = tab-->2;
|
||||
pc = 0;
|
||||
instruction = (structure-->pc)/100;
|
||||
while (instruction) {
|
||||
if ((instruction == 1) && (structure-->(pc+1) == dl)) rtrue;
|
||||
if ((instruction == wanted) && (structure-->(pc+1) == X)) rtrue;
|
||||
pc = pc + 2;
|
||||
instruction = (structure-->pc)/100;
|
||||
}
|
||||
|
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
|
@ -763,9 +763,12 @@ For now, this is the same test as visibility except that it does not require
|
|||
light to see by.
|
||||
|
||||
=
|
||||
[ TestAudibility A B;
|
||||
[ TestAudibility A B res saved;
|
||||
if (suppress_scope_loops) rtrue;
|
||||
return TestScope(B, A);
|
||||
saved = location; if (location == thedark) location = real_location;
|
||||
res = TestScope(B, A);
|
||||
location = saved;
|
||||
return res;
|
||||
];
|
||||
|
||||
@h Touchability Relation.
|
||||
|
|
|
@ -36,5 +36,6 @@ PM_ChoiceLeftArrowExpected
|
|||
PM_ChoiceRightArrowExpected
|
||||
PM_InstancesExplicit
|
||||
PM_NotASpeaker
|
||||
Dialogue
|
||||
DialogueBeats
|
||||
LBW
|
||||
|
|
138
inform7/Tests/Test Cases/Dialogue.txt
Normal file
138
inform7/Tests/Test Cases/Dialogue.txt
Normal file
|
@ -0,0 +1,138 @@
|
|||
Laboratory is a room.
|
||||
|
||||
Alice, Belle and Camilla are women in the Laboratory.
|
||||
|
||||
East of the Laboratory is the Annexe. Diego and Eric are men in the Annexe. The Annexe is dark.
|
||||
|
||||
South of the Laboratory is the Garden. The stumps, bat and ball are in the Garden.
|
||||
Fiona is a woman in the Garden.
|
||||
|
||||
When play begins:
|
||||
showme audibility relation;
|
||||
showme visibility relation;
|
||||
showme the list of people who can see Alice;
|
||||
showme the list of people who can hear Alice;
|
||||
showme the list of people who can see Diego;
|
||||
showme the list of people who can hear Diego;
|
||||
showme the list of dialogue choices in the nested decisions beat;
|
||||
showme the list of dialogue lines in the test only present speakers beat.
|
||||
|
||||
Instead of jumping:
|
||||
if dialogue about Alice intervenes:
|
||||
stop the action.
|
||||
|
||||
Instead of listening:
|
||||
showme the list of people who can hear the player;
|
||||
showme the list of people who can be heard by the player;
|
||||
|
||||
After going south to the Garden:
|
||||
make the dialogue director active;
|
||||
clear conversational subjects;
|
||||
perform the going active beat.
|
||||
|
||||
After going north from the Garden:
|
||||
make the dialog director passive;
|
||||
perform the going inactive beat.
|
||||
|
||||
Before examining something (called the objet d'art) in the Garden:
|
||||
make the objet d'art a live conversational subject.
|
||||
|
||||
Every turn when the player is in the Garden or the player is in the Lake:
|
||||
showme the live conversational subject list.
|
||||
|
||||
The Lake is east of the Garden. The sea monster and the mermaid are in the Lake.
|
||||
|
||||
After going to the Lake:
|
||||
alter the live conversational subject list to { sea monster, mermaid }.
|
||||
|
||||
To say report on (D - a dialogue beat):
|
||||
say "Report on completion of [D].";
|
||||
repeat with L running through dialogue lines in D:
|
||||
say "[L] is [if L is unperformed]un[end if]performed; [if L is non-recurring]non-[end if]recurring; [if L is unnarrated]un[end if]narrated; [if L is unelaborated]un[end if]elaborated; [if L is unavailable]un[end if]available; [if L is non-verbal]non-[end if]verbal[if L is story-ending]; story-ending[end if].";
|
||||
|
||||
Section A (dialog)
|
||||
|
||||
(This is the starting beat.)
|
||||
|
||||
-> perform the test only present speakers beat
|
||||
|
||||
-> perform the test repeated speech beat
|
||||
|
||||
-> perform the test repeated speech beat
|
||||
|
||||
-> perform the nested decisions beat
|
||||
|
||||
(This is the test only present speakers beat.)
|
||||
|
||||
Diego (this is the d1 line): "I am Diego, though you'll never hear this."
|
||||
|
||||
Alice (this is the a1 line): "I am Alice."
|
||||
|
||||
Belle (this is the b1 line; recurring): "I am Belle."
|
||||
|
||||
Diego (this is the d2 line; if 1 is 2): "I am always 'Diego' you know."
|
||||
|
||||
Eric (to Alice; without speaking; this is the e1 line): "Eric points insulting at Alice."
|
||||
|
||||
Alice (this is the a2 line; ending the story): "Still Alice."
|
||||
|
||||
Narration (this is the reporting narration line): "[report on the test only present speakers beat]"
|
||||
|
||||
Section B (dialogue)
|
||||
|
||||
(This is the test repeated speech beat.)
|
||||
|
||||
Alice: "I tell you just once, I am Alice."
|
||||
|
||||
Belle (recurring): "I tell you as often as necessary, I am Alice."
|
||||
|
||||
(This is the nested decisions beat.)
|
||||
|
||||
-- (this is the gouda choice) "My favourite cheese is vintage gouda."
|
||||
|
||||
-- (this is the white seedless choice) "My preferred grapes are white seedless."
|
||||
|
||||
-- (this is the red choice) "My preferred grapes are red."
|
||||
|
||||
-- (this is the camembert choice) "My favourite cheese is camembert."
|
||||
|
||||
-- (this is the white seeded choice) "My preferred grapes are white yet seeded."
|
||||
|
||||
-- (this is the black choice) "My preferred grapes are black."
|
||||
|
||||
Narration: "You would appear to have selected: [list of performed dialogue choices in the nested decisions beat]."
|
||||
|
||||
(This is the going active beat.)
|
||||
|
||||
Narration: "Bong! The director activity chime goes off."
|
||||
|
||||
(This is the going inactive beat.)
|
||||
|
||||
Narration: "Gnob! The director activity chime sounds in reverse."
|
||||
|
||||
Section C (dialogue)
|
||||
|
||||
(About Alice; recurring; requiring nothing.)
|
||||
|
||||
Alice: "I am self-explanatory."
|
||||
|
||||
-> stop
|
||||
|
||||
Diego: "Alice is kind of exhausting."
|
||||
|
||||
(About the bat and ball.)
|
||||
|
||||
Fiona: "The bat is willow and the ball is cork, I think."
|
||||
|
||||
(About the ball.)
|
||||
|
||||
Fiona (mentioning the bat and the stumps):
|
||||
"The idea's to use the bat to defend the stumps."
|
||||
|
||||
(About the stumps.)
|
||||
|
||||
Fiona: "There are three of them, for some reason."
|
||||
|
||||
(About the mermaid.)
|
||||
|
||||
Sea monster: "Blubbble."
|
21
inform7/Tests/Test Cases/_Command_Scripts/Dialogue.txt
Normal file
21
inform7/Tests/Test Cases/_Command_Scripts/Dialogue.txt
Normal file
|
@ -0,0 +1,21 @@
|
|||
2
|
||||
1
|
||||
listen
|
||||
jump
|
||||
e
|
||||
listen
|
||||
jump
|
||||
w
|
||||
s
|
||||
examine ball
|
||||
z
|
||||
z
|
||||
z
|
||||
z
|
||||
e
|
||||
z
|
||||
z
|
||||
w
|
||||
n
|
||||
quit
|
||||
y
|
134
inform7/Tests/Test Cases/_Results_Ideal/Dialogue.txt
Normal file
134
inform7/Tests/Test Cases/_Results_Ideal/Dialogue.txt
Normal file
|
@ -0,0 +1,134 @@
|
|||
|
||||
relation of things: audibility relation
|
||||
relation of things: visibility relation
|
||||
"list of people who can see Alice" = list of people: {yourself, Alice, Belle, Camilla}
|
||||
"list of people who can hear Alice" = list of people: {yourself, Alice, Belle, Camilla}
|
||||
"list of people who can see Diego" = list of people: {}
|
||||
"list of people who can hear Diego" = list of people: {Diego, Eric}
|
||||
"list of dialogue choices in the nested decisions beat" = list of dialogue choices: {gouda choice, white seedless choice, red choice, camembert choice, white seeded choice, black choice}
|
||||
"list of dialogue lines in the test only present speakers beat" = list of dialogue lines: {d1 line, a1 line, b1 line, d2 line, e1 line, a2 line, reporting narration line}
|
||||
|
||||
Welcome
|
||||
An Interactive Fiction
|
||||
Release 1 / Serial number 160428 / Inform 7 v10.2.0 / D
|
||||
|
||||
Laboratory
|
||||
You can see Alice, Belle and Camilla here.
|
||||
|
||||
Alice: "I am Alice."
|
||||
|
||||
Belle: "I am Belle."
|
||||
|
||||
Report on completion of test only present speakers beat.
|
||||
d1 line is unperformed; non-recurring; unnarrated; unelaborated; available; verbal.
|
||||
a1 line is performed; non-recurring; unnarrated; unelaborated; available; verbal.
|
||||
b1 line is performed; recurring; unnarrated; unelaborated; available; verbal.
|
||||
d2 line is unperformed; non-recurring; unnarrated; elaborated; unavailable; verbal.
|
||||
e1 line is unperformed; non-recurring; unnarrated; unelaborated; available; non-verbal.
|
||||
a2 line is unperformed; non-recurring; unnarrated; unelaborated; available; verbal; story-ending.
|
||||
reporting narration line is unperformed; non-recurring; narrated; unelaborated; available; verbal.
|
||||
|
||||
|
||||
Alice: "I tell you just once, I am Alice."
|
||||
|
||||
Belle: "I tell you as often as necessary, I am Alice."
|
||||
|
||||
Belle: "I tell you as often as necessary, I am Alice."
|
||||
|
||||
(1) My favourite cheese is vintage gouda.
|
||||
(2) My favourite cheese is camembert.
|
||||
|
||||
> >
|
||||
My favourite cheese is camembert.
|
||||
|
||||
(1) My preferred grapes are white yet seeded.
|
||||
(2) My preferred grapes are black.
|
||||
|
||||
> > Laboratory
|
||||
My preferred grapes are white yet seeded.
|
||||
|
||||
You would appear to have selected: camembert choice and white seeded choice.
|
||||
|
||||
> > Laboratory
|
||||
"list of people who can hear the player" = list of people: {yourself, Alice, Belle, Camilla}
|
||||
"list of people who can be heard by the player" = list of people: {yourself, Alice, Belle, Camilla}
|
||||
|
||||
> > Laboratory
|
||||
Alice: "I am self-explanatory."
|
||||
|
||||
> > Darkness
|
||||
Darkness
|
||||
It is pitch dark, and you can't see a thing.
|
||||
|
||||
> > Darkness
|
||||
"list of people who can hear the player" = list of people: {yourself, Diego, Eric}
|
||||
"list of people who can be heard by the player" = list of people: {yourself, Diego, Eric}
|
||||
|
||||
> > Darkness
|
||||
Diego: "Alice is kind of exhausting."
|
||||
|
||||
> > Laboratory
|
||||
Laboratory
|
||||
You can see Alice, Belle and Camilla here.
|
||||
|
||||
> > Garden
|
||||
Bong! The director activity chime goes off.
|
||||
|
||||
"live conversational subject list" = list of objects: {}
|
||||
> > Garden
|
||||
You see nothing special about ball.
|
||||
|
||||
"live conversational subject list" = list of objects: {ball}
|
||||
|
||||
Fiona: "The bat is willow and the ball is cork, I think."
|
||||
|
||||
> > Garden
|
||||
Time passes.
|
||||
|
||||
"live conversational subject list" = list of objects: {bat, ball}
|
||||
|
||||
Fiona: "The idea's to use the bat to defend the stumps."
|
||||
|
||||
> > Garden
|
||||
Time passes.
|
||||
|
||||
"live conversational subject list" = list of objects: {stumps, bat, ball}
|
||||
|
||||
Fiona: "There are three of them, for some reason."
|
||||
|
||||
> > Garden
|
||||
Time passes.
|
||||
|
||||
"live conversational subject list" = list of objects: {stumps, bat, ball}
|
||||
|
||||
> > Garden
|
||||
Time passes.
|
||||
|
||||
"live conversational subject list" = list of objects: {stumps, bat, ball}
|
||||
|
||||
> > Lake
|
||||
"live conversational subject list" = list of objects: {sea monster, mermaid}
|
||||
|
||||
The sea monster: "Blubbble."
|
||||
|
||||
> > Lake
|
||||
Time passes.
|
||||
|
||||
"live conversational subject list" = list of objects: {sea monster, mermaid}
|
||||
|
||||
> > Lake
|
||||
Time passes.
|
||||
|
||||
"live conversational subject list" = list of objects: {sea monster, mermaid}
|
||||
|
||||
> > Garden
|
||||
Garden
|
||||
You can see a stumps, bat, ball and Fiona here.
|
||||
|
||||
"live conversational subject list" = list of objects: {sea monster, mermaid}
|
||||
|
||||
> > Laboratory
|
||||
Gnob! The director activity chime sounds in reverse.
|
||||
|
||||
> > Laboratory
|
||||
> Are you sure you want to quit?
|
|
@ -86,6 +86,7 @@ typedef struct dialogue_beat {
|
|||
struct scene *as_scene;
|
||||
struct linked_list *required; /* of |instance| */
|
||||
int starting_beat;
|
||||
int requiring_nothing;
|
||||
|
||||
struct parse_node *immediately_after;
|
||||
struct linked_list *some_time_after; /* of |parse_node| */
|
||||
|
@ -106,6 +107,7 @@ typedef struct dialogue_beat {
|
|||
db->as_scene = NULL;
|
||||
db->required = NEW_LINKED_LIST(instance);
|
||||
db->starting_beat = FALSE;
|
||||
db->requiring_nothing = FALSE;
|
||||
db->immediately_after = NULL;
|
||||
db->some_time_after = NEW_LINKED_LIST(parse_node);
|
||||
db->some_time_before = NEW_LINKED_LIST(parse_node);
|
||||
|
@ -130,6 +132,7 @@ We annotate each clause with the answer. Thus we might have:
|
|||
@e AFTER_DBC
|
||||
@e IMMEDIATELY_AFTER_DBC
|
||||
@e BEFORE_DBC
|
||||
@e REQUIRING_NOTHING_DBC
|
||||
@e REQUIRING_DBC
|
||||
@e LATER_DBC
|
||||
@e NEXT_DBC
|
||||
|
@ -156,6 +159,7 @@ We annotate each clause with the answer. Thus we might have:
|
|||
after ... | ==> { AFTER_DBC, - }
|
||||
immediately after ... | ==> { IMMEDIATELY_AFTER_DBC, - }
|
||||
before ... | ==> { BEFORE_DBC, - }
|
||||
requiring nothing | ==> { REQUIRING_NOTHING_DBC, - }
|
||||
requiring ... | ==> { REQUIRING_DBC, - }
|
||||
later | ==> { LATER_DBC, - }
|
||||
next | ==> { NEXT_DBC, - }
|
||||
|
@ -178,6 +182,7 @@ void DialogueBeats::write_dbc(OUTPUT_STREAM, int c) {
|
|||
case IMMEDIATELY_AFTER_DBC: WRITE("IMMEDIATELY_AFTER"); break;
|
||||
case BEFORE_DBC: WRITE("BEFORE"); break;
|
||||
case REQUIRING_DBC: WRITE("REQUIRING"); break;
|
||||
case REQUIRING_NOTHING_DBC: WRITE("REQUIRING_NOTHING"); break;
|
||||
case LATER_DBC: WRITE("LATER"); break;
|
||||
case NEXT_DBC: WRITE("NEXT"); break;
|
||||
case PROPERTY_DBC: WRITE("PROPERTY"); break;
|
||||
|
@ -350,6 +355,9 @@ performed only after or before other beats.
|
|||
DialogueBeats::parse_required_speaker_list(db, AL);
|
||||
break;
|
||||
}
|
||||
case REQUIRING_NOTHING_DBC:
|
||||
db->requiring_nothing = TRUE;
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (iac > 1)
|
||||
|
@ -505,7 +513,7 @@ void DialogueBeats::parse_topic(linked_list *about_list, parse_node *AL, unsigne
|
|||
if (<s-type-expression-uncached>(A)) {
|
||||
parse_node *desc = <<rp>>;
|
||||
kind *K = Specifications::to_kind(desc);
|
||||
if (Kinds::Behaviour::is_subkind_of_object(K)) {
|
||||
if ((Kinds::eq(K, K_object)) || (Kinds::Behaviour::is_subkind_of_object(K))) {
|
||||
ADD_TO_LINKED_LIST(desc, parse_node, about_list);
|
||||
} else {
|
||||
Problems::quote_source(1, current_sentence);
|
||||
|
|
|
@ -23,9 +23,9 @@ void DialogueRelations::stock(bp_family *self, int n) {
|
|||
R_dialogue_containment =
|
||||
BinaryPredicates::make_pair(spatial_bp_family,
|
||||
BPTerms::new(KindSubjects::from_kind(K_dialogue_beat)),
|
||||
BPTerms::new(KindSubjects::from_kind(K_dialogue_line)),
|
||||
BPTerms::new(KindSubjects::from_kind(K_value)),
|
||||
I"dialogue-contains", I"in-dialogue",
|
||||
NULL, Calculus::Schemas::new("DirectorTestLineContainment(*2,*1)"),
|
||||
NULL, Calculus::Schemas::new("DirectorTestLineContainment(*2,*1,*#2,*#1)"),
|
||||
PreformUtilities::wording(<relation-names>,
|
||||
DIALOGUE_CONTAINMENT_RELATION_NAME));
|
||||
BinaryPredicates::set_index_details(R_dialogue_containment, NULL, "dialogue line");
|
||||
|
@ -37,7 +37,22 @@ void DialogueRelations::stock(bp_family *self, int n) {
|
|||
=
|
||||
int DialogueRelations::typecheck(bp_family *self, binary_predicate *bp,
|
||||
kind **kinds_of_terms, kind **kinds_required, tc_problem_kit *tck) {
|
||||
return DECLINE_TO_MATCH;
|
||||
if ((K_dialogue_beat) &&
|
||||
(Kinds::compatible(kinds_of_terms[1], K_dialogue_beat) == NEVER_MATCH)) {
|
||||
LOG("Term 0 is %u not %u\n", kinds_of_terms[1], K_dialogue_beat);
|
||||
TypecheckPropositions::issue_bp_typecheck_error(bp,
|
||||
kinds_of_terms[0], kinds_of_terms[1], tck);
|
||||
return NEVER_MATCH;
|
||||
}
|
||||
if (((K_dialogue_line) || (K_dialogue_choice)) &&
|
||||
(Kinds::compatible(kinds_of_terms[0], K_dialogue_line) == NEVER_MATCH) &&
|
||||
(Kinds::compatible(kinds_of_terms[0], K_dialogue_choice) == NEVER_MATCH)) {
|
||||
LOG("Term 0 is %u not %u\n", kinds_of_terms[0], kinds_required[0]);
|
||||
TypecheckPropositions::issue_bp_typecheck_error(bp,
|
||||
kinds_of_terms[0], kinds_of_terms[1], tck);
|
||||
return NEVER_MATCH;
|
||||
}
|
||||
return ALWAYS_MATCH;
|
||||
}
|
||||
|
||||
@ "In" requires delicate handling, because of the way that English uses it
|
||||
|
|
|
@ -182,7 +182,7 @@ void RTDialogueBeats::beat_compilation_agent(compilation_subtask *ct) {
|
|||
|
||||
@<Write the speaker list@> =
|
||||
linked_list *L = db->required;
|
||||
if (LinkedLists::len(L) == 0) {
|
||||
if ((LinkedLists::len(L) == 0) && (db->requiring_nothing == FALSE)) {
|
||||
L = NEW_LINKED_LIST(instance);
|
||||
RTDialogueBeats::find_speakers_r(L, db->root);
|
||||
}
|
||||
|
|
|
@ -254,6 +254,7 @@ void RTDialogueLines::line_compilation_agent(compilation_subtask *ct) {
|
|||
if (dl->without_speaking) flags |= 2;
|
||||
if (ending) flags |= 4;
|
||||
if (ending_finally) flags |= 8;
|
||||
EmitArrays::numeric_entry(flags);
|
||||
|
||||
@<Compile the available function@> =
|
||||
packaging_state save = Functions::begin(RTDialogueLines::available_fn_iname(dl));
|
||||
|
|
|
@ -23,7 +23,7 @@ module is used outside of Inform, of course, no |inter_schema| will exist.
|
|||
|
||||
A simple example of an |i6_schema| might use the notation |*1 == *2|; this
|
||||
will ultimately compile to a test that two quantities are numerically equal.
|
||||
As this example shows, |*| is an escape character. See //building: Inter Schemas//;
|
||||
As this example shows, |*| is an escape character. See //building: Parsing Inter Schemas//;
|
||||
|*1| is an example of what is called an "abbreviated command" there.
|
||||
|
||||
@ The //i6_schema// structure is very simple, then. Schemas can be of unlimited
|
||||
|
|
|
@ -714,6 +714,8 @@ pcalc_prop *Simplifications::region_containment(pcalc_prop *prop, int *changed)
|
|||
backdropping = TRUE;
|
||||
if ((K_dialogue_beat) && (Kinds::eq(KB, K_dialogue_line)))
|
||||
lined = TRUE;
|
||||
if ((K_dialogue_choice) && (Kinds::eq(KB, K_dialogue_choice)))
|
||||
lined = TRUE;
|
||||
}
|
||||
if ((regionality) && (!backdropping)) {
|
||||
pl->predicate = STORE_POINTER_binary_predicate(R_regional_containment);
|
||||
|
|
Loading…
Reference in a new issue