mirror of
https://github.com/ganelson/inform.git
synced 2024-06-28 21:14:57 +03:00
Minor feature added to dialogue flow markers allowing variable beats
This commit is contained in:
parent
4cb22eea4e
commit
2b7d85d300
|
@ -1,6 +1,6 @@
|
|||
# Inform 7
|
||||
|
||||
[Version](notes/versioning.md): 10.2.0-beta+6X33 'Krypton' (26 January 2024)
|
||||
[Version](notes/versioning.md): 10.2.0-beta+6X34 'Krypton' (7 February 2024)
|
||||
|
||||
## About Inform
|
||||
|
||||
|
|
|
@ -1,3 +1,3 @@
|
|||
Prerelease: beta
|
||||
Build Date: 26 January 2024
|
||||
Build Number: 6X33
|
||||
Build Date: 7 February 2024
|
||||
Build Number: 6X34
|
||||
|
|
|
@ -178,7 +178,7 @@ looks to see if the current action matches the given action pattern.
|
|||
<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="identifier-syntax">DirectorFollowFlowMarker</span><span class="plain-syntax"> </span><span class="identifier-syntax">dc</span><span class="plain-syntax"> </span><span class="identifier-syntax">chdata</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">[ </span><span class="identifier-syntax">DirectorFollowFlowMarker</span><span class="plain-syntax"> </span><span class="identifier-syntax">dc</span><span class="plain-syntax"> </span><span class="identifier-syntax">chdata</span><span class="plain-syntax"> </span><span class="identifier-syntax">b</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">dc</span><span class="plain-syntax"> <= </span><span class="constant-syntax">0</span><span class="plain-syntax">) || (</span><span class="identifier-syntax">dc</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">WriteGProperty</span><span class="plain-syntax">(</span><span class="identifier-syntax">DIALOGUE_CHOICE_TY</span><span class="plain-syntax">, </span><span class="identifier-syntax">dc</span><span class="plain-syntax">, </span><span class="identifier-syntax">performed</span><span class="plain-syntax">, </span><span class="reserved-syntax">true</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">chdata</span><span class="plain-syntax"> = </span><span class="identifier-syntax">TableOfDialogueChoices</span><span class="plain-syntax">--></span><span class="identifier-syntax">dc</span><span class="plain-syntax">;</span>
|
||||
|
@ -198,7 +198,10 @@ looks to see if the current action matches the given action pattern.
|
|||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">chdata</span><span class="plain-syntax">--></span><span class="identifier-syntax">TYPE_DCMETADATA</span><span class="plain-syntax"> == </span><span class="identifier-syntax">ENDING_FINALLY_DSEL</span><span class="plain-syntax"> </span><span class="reserved-syntax">or</span><span class="plain-syntax"> </span><span class="identifier-syntax">ENDING_FINALLY_SAYING_DSEL</span><span class="plain-syntax">)</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">story_complete</span><span class="plain-syntax"> = </span><span class="reserved-syntax">true</span><span class="plain-syntax">;</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">PERFORM_DSEL</span><span class="plain-syntax">: </span><span class="identifier-syntax">DirectorPerformBeat</span><span class="plain-syntax">(</span><span class="identifier-syntax">chdata</span><span class="plain-syntax">--></span><span class="identifier-syntax">CONTENT_DCMETADATA</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">PERFORM_DSEL</span><span class="plain-syntax">:</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">b</span><span class="plain-syntax"> = </span><span class="identifier-syntax">chdata</span><span class="plain-syntax">--></span><span class="identifier-syntax">CONTENT_DCMETADATA</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">b</span><span class="plain-syntax"> </span><span class="reserved-syntax">ofclass</span><span class="plain-syntax"> </span><span class="identifier-syntax">Routine</span><span class="plain-syntax">) </span><span class="identifier-syntax">b</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">DirectorPerformBeat</span><span class="plain-syntax">(</span><span class="identifier-syntax">b</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">default</span><span class="plain-syntax">: </span><span class="reserved-syntax">print</span><span class="plain-syntax"> </span><span class="string-syntax">"*** Unimplemented choice ***^"</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="reserved-syntax">rtrue</span><span class="plain-syntax">;</span>
|
||||
|
|
|
@ -101,6 +101,7 @@ function togglePopup(material_id) {
|
|||
<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">selection</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">wording</span><span class="plain-syntax"> </span><span class="identifier-syntax">selection_parameter</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">struct</span><span class="plain-syntax"> </span><span class="reserved-syntax">dialogue_beat</span><span class="plain-syntax"> *</span><span class="identifier-syntax">to_perform</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">to_perform_expression</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">dialogue_choice_compilation_data</span><span class="plain-syntax"> </span><span class="identifier-syntax">compilation_data</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">selection_type</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">CLASS_DEFINITION</span>
|
||||
|
@ -117,6 +118,7 @@ function togglePopup(material_id) {
|
|||
<span class="plain-syntax"> </span><span class="identifier-syntax">dc</span><span class="plain-syntax">-></span><span class="element-syntax">selection</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">dc</span><span class="plain-syntax">-></span><span class="element-syntax">selection_parameter</span><span class="plain-syntax"> = </span><span class="identifier-syntax">EMPTY_WORDING</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">dc</span><span class="plain-syntax">-></span><span class="element-syntax">to_perform</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">dc</span><span class="plain-syntax">-></span><span class="element-syntax">to_perform_expression</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">dc</span><span class="plain-syntax">-></span><span class="element-syntax">selection_type</span><span class="plain-syntax"> = </span><span class="constant-syntax">AGAIN_DSEL</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">dc</span><span class="plain-syntax">-></span><span class="element-syntax">compilation_data</span><span class="plain-syntax"> = </span><span class="identifier-syntax">RTDialogueChoices::new</span><span class="plain-syntax">(</span><span class="identifier-syntax">PN</span><span class="plain-syntax">, </span><span class="identifier-syntax">dc</span><span class="plain-syntax">);</span>
|
||||
</pre>
|
||||
|
@ -392,6 +394,11 @@ is one.
|
|||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Wordings::match</span><span class="plain-syntax">(</span><span class="identifier-syntax">dc</span><span class="plain-syntax">-></span><span class="element-syntax">selection_parameter</span><span class="plain-syntax">, </span><span class="identifier-syntax">db</span><span class="plain-syntax">-></span><span class="element-syntax">beat_name</span><span class="plain-syntax">))</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">dc</span><span class="plain-syntax">-></span><span class="element-syntax">to_perform</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">dc</span><span class="plain-syntax">-></span><span class="element-syntax">to_perform</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="function-syntax"><s-value>(dc-></span><span class="element-syntax">selection_parameter</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">val</span><span class="plain-syntax"> = </span><span class="function-syntax"><<rp>></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">Dash::check_value</span><span class="plain-syntax">(</span><span class="identifier-syntax">val</span><span class="plain-syntax">, </span><span class="identifier-syntax">K_dialogue_beat</span><span class="plain-syntax">) == </span><span class="identifier-syntax">ALWAYS_MATCH</span><span class="plain-syntax">)</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">dc</span><span class="plain-syntax">-></span><span class="element-syntax">to_perform_expression</span><span class="plain-syntax"> = </span><span class="identifier-syntax">val</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>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Problems::quote_wording</span><span class="plain-syntax">(2, </span><span class="identifier-syntax">dc</span><span class="plain-syntax">-></span><span class="element-syntax">selection_parameter</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">StandardProblems::handmade_problem</span><span class="plain-syntax">(</span><span class="identifier-syntax">Task::syntax_tree</span><span class="plain-syntax">(),</span>
|
||||
|
@ -400,8 +407,7 @@ is one.
|
|||
<span class="plain-syntax"> </span><span class="string-syntax">"The dialogue choice offered by %1 asks to perform the beat '%2', "</span>
|
||||
<span class="plain-syntax"> </span><span class="string-syntax">"but I don't recognise that as the name of any beat in the story."</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Problems::issue_problem_end</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">LOG</span><span class="plain-syntax">(</span><span class="string-syntax">"Dialogue beat: $O\n"</span><span class="plain-syntax">, </span><span class="identifier-syntax">dc</span><span class="plain-syntax">-></span><span class="element-syntax">to_perform</span><span class="plain-syntax">-></span><span class="element-syntax">as_instance</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>
|
||||
|
|
File diff suppressed because one or more lines are too long
|
@ -1110,6 +1110,7 @@ and <a href="../pipeline-module/4-tsk.html" class="internal">The Standard Kits (
|
|||
<span class="definition-keyword">enum</span> <span class="constant-syntax">CHOICE_ARRAY_HL</span>
|
||||
<span class="definition-keyword">enum</span> <span class="constant-syntax">CHOICE_AVAILABLE_FN_HL</span>
|
||||
<span class="definition-keyword">enum</span> <span class="constant-syntax">CHOICE_ACTION_MATCH_FN_HL</span>
|
||||
<span class="definition-keyword">enum</span> <span class="constant-syntax">CHOICE_PERFORMANCE_FN_HL</span>
|
||||
</pre>
|
||||
<p class="commentary firstcommentary"><a id="SP8_1_24" class="paragraph-anchor"></a><b>§8.1.24. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Establish instances</span><span class="named-paragraph-number">8.1.24</span></span><span class="comment-syntax"> =</span>
|
||||
</p>
|
||||
|
@ -1230,6 +1231,7 @@ and <a href="../pipeline-module/4-tsk.html" class="internal">The Standard Kits (
|
|||
<span class="plain-syntax"> </span><span class="identifier-syntax">H_C_U</span><span class="plain-syntax">(</span><span class="constant-syntax">CHOICE_ARRAY_HL</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"choice_data"</span><span class="plain-syntax">)</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">H_F_U</span><span class="plain-syntax">(</span><span class="constant-syntax">CHOICE_AVAILABLE_FN_HL</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"available_fn"</span><span class="plain-syntax">)</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">H_F_U</span><span class="plain-syntax">(</span><span class="constant-syntax">CHOICE_ACTION_MATCH_FN_HL</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"action_match_fn"</span><span class="plain-syntax">)</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">H_F_U</span><span class="plain-syntax">(</span><span class="constant-syntax">CHOICE_PERFORMANCE_FN_HL</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"performance_fn"</span><span class="plain-syntax">)</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">H_F_U</span><span class="plain-syntax">(</span><span class="constant-syntax">INST_SHOWME_FN_HL</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"showme_fn"</span><span class="plain-syntax">)</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">H_BEGIN_AP</span><span class="plain-syntax">(</span><span class="constant-syntax">INLINE_PROPERTIES_HAP</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"inline_property"</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"_inline_property"</span><span class="plain-syntax">)</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">H_C_U</span><span class="plain-syntax">(</span><span class="constant-syntax">INLINE_PROPERTY_HL</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"inline"</span><span class="plain-syntax">)</span>
|
||||
|
|
|
@ -69,6 +69,7 @@ function togglePopup(material_id) {
|
|||
<span class="plain-syntax"> </span><span class="reserved-syntax">struct</span><span class="plain-syntax"> </span><span class="identifier-syntax">inter_name</span><span class="plain-syntax"> *</span><span class="identifier-syntax">choice_array_iname</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">inter_name</span><span class="plain-syntax"> *</span><span class="identifier-syntax">available_fn_iname</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">inter_name</span><span class="plain-syntax"> *</span><span class="identifier-syntax">action_match_fn_iname</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">inter_name</span><span class="plain-syntax"> *</span><span class="identifier-syntax">performance_fn_iname</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">} </span><span class="reserved-syntax">dialogue_choice_compilation_data</span><span class="plain-syntax">;</span>
|
||||
|
||||
<span class="reserved-syntax">dialogue_choice_compilation_data</span><span class="plain-syntax"> </span><span class="function-syntax">RTDialogueChoices::new</span><span class="plain-syntax">(</span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">PN</span><span class="plain-syntax">, </span><span class="identifier-syntax">dialogue_choice</span><span class="plain-syntax"> *</span><span class="identifier-syntax">dc</span><span class="plain-syntax">) {</span>
|
||||
|
@ -77,6 +78,7 @@ function togglePopup(material_id) {
|
|||
<span class="plain-syntax"> </span><span class="identifier-syntax">dccd</span><span class="plain-syntax">.</span><span class="element-syntax">choice_array_iname</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">dccd</span><span class="plain-syntax">.</span><span class="element-syntax">available_fn_iname</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">dccd</span><span class="plain-syntax">.</span><span class="element-syntax">action_match_fn_iname</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">dccd</span><span class="plain-syntax">.</span><span class="element-syntax">performance_fn_iname</span><span class="plain-syntax"> = </span><span class="identifier-syntax">NULL</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">dccd</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
|
||||
|
@ -99,12 +101,19 @@ function togglePopup(material_id) {
|
|||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">dc</span><span class="plain-syntax">-></span><span class="identifier-syntax">compilation_data</span><span class="plain-syntax">.</span><span class="element-syntax">available_fn_iname</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
|
||||
<span class="identifier-syntax">inter_name</span><span class="plain-syntax"> *</span><span class="function-syntax">RTDialogueChoices::action_match_fn_iname</span><button class="popup" onclick="togglePopup('usagePopup4')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup4">Usage of <span class="code-font"><span class="function-syntax">RTDialogueChoices::action_match_fn_iname</span></span>:<br/><a href="5-dci.html#SP3_4">§3.4</a>, <a href="5-dci.html#SP3_7">§3.7</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">dialogue_choice</span><span class="plain-syntax"> *</span><span class="identifier-syntax">dc</span><span class="plain-syntax">) {</span>
|
||||
<span class="identifier-syntax">inter_name</span><span class="plain-syntax"> *</span><span class="function-syntax">RTDialogueChoices::action_match_fn_iname</span><button class="popup" onclick="togglePopup('usagePopup4')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup4">Usage of <span class="code-font"><span class="function-syntax">RTDialogueChoices::action_match_fn_iname</span></span>:<br/><a href="5-dci.html#SP3_4">§3.4</a>, <a href="5-dci.html#SP3_8">§3.8</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">dialogue_choice</span><span class="plain-syntax"> *</span><span class="identifier-syntax">dc</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">dc</span><span class="plain-syntax">-></span><span class="identifier-syntax">compilation_data</span><span class="plain-syntax">.</span><span class="element-syntax">action_match_fn_iname</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">dc</span><span class="plain-syntax">-></span><span class="identifier-syntax">compilation_data</span><span class="plain-syntax">.</span><span class="element-syntax">action_match_fn_iname</span><span class="plain-syntax"> =</span>
|
||||
<span class="plain-syntax"> </span><a href="2-hrr.html#SP12" class="function-link"><span class="function-syntax">Hierarchy::make_iname_in</span></a><span class="plain-syntax">(</span><span class="constant-syntax">CHOICE_ACTION_MATCH_FN_HL</span><span class="plain-syntax">, </span><a href="5-dci.html#SP1" class="function-link"><span class="function-syntax">RTDialogueChoices::package</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">dc</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">dc</span><span class="plain-syntax">-></span><span class="identifier-syntax">compilation_data</span><span class="plain-syntax">.</span><span class="element-syntax">action_match_fn_iname</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
|
||||
<span class="identifier-syntax">inter_name</span><span class="plain-syntax"> *</span><span class="function-syntax">RTDialogueChoices::performance_fn_iname</span><button class="popup" onclick="togglePopup('usagePopup5')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup5">Usage of <span class="code-font"><span class="function-syntax">RTDialogueChoices::performance_fn_iname</span></span>:<br/><a href="5-dci.html#SP3_4">§3.4</a>, <a href="5-dci.html#SP3_7">§3.7</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">dialogue_choice</span><span class="plain-syntax"> *</span><span class="identifier-syntax">dc</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">dc</span><span class="plain-syntax">-></span><span class="identifier-syntax">compilation_data</span><span class="plain-syntax">.</span><span class="element-syntax">performance_fn_iname</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">dc</span><span class="plain-syntax">-></span><span class="identifier-syntax">compilation_data</span><span class="plain-syntax">.</span><span class="element-syntax">performance_fn_iname</span><span class="plain-syntax"> =</span>
|
||||
<span class="plain-syntax"> </span><a href="2-hrr.html#SP12" class="function-link"><span class="function-syntax">Hierarchy::make_iname_in</span></a><span class="plain-syntax">(</span><span class="constant-syntax">CHOICE_PERFORMANCE_FN_HL</span><span class="plain-syntax">, </span><a href="5-dci.html#SP1" class="function-link"><span class="function-syntax">RTDialogueChoices::package</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">dc</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">dc</span><span class="plain-syntax">-></span><span class="identifier-syntax">compilation_data</span><span class="plain-syntax">.</span><span class="element-syntax">performance_fn_iname</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>The structure dialogue_choice_compilation_data is accessed in 3/uo, 5/mlt, 5/tbl, 5/dbi, 5/dli, 5/prp, 5/lp, 5/act2, 5/nap and here.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP2" class="paragraph-anchor"></a><b>§2. Compilation of dialogue. </b></p>
|
||||
|
@ -123,7 +132,7 @@ function togglePopup(material_id) {
|
|||
<p class="commentary firstcommentary"><a id="SP3" class="paragraph-anchor"></a><b>§3. </b></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">RTDialogueChoices::choice_compilation_agent</span><button class="popup" onclick="togglePopup('usagePopup5')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup5">Usage of <span class="code-font"><span class="function-syntax">RTDialogueChoices::choice_compilation_agent</span></span>:<br/><a href="5-dci.html#SP2">§2</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">compilation_subtask</span><span class="plain-syntax"> *</span><span class="identifier-syntax">ct</span><span class="plain-syntax">) {</span>
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">RTDialogueChoices::choice_compilation_agent</span><button class="popup" onclick="togglePopup('usagePopup6')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup6">Usage of <span class="code-font"><span class="function-syntax">RTDialogueChoices::choice_compilation_agent</span></span>:<br/><a href="5-dci.html#SP2">§2</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">compilation_subtask</span><span class="plain-syntax"> *</span><span class="identifier-syntax">ct</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">dialogue_choice</span><span class="plain-syntax"> *</span><span class="identifier-syntax">dc</span><span class="plain-syntax"> = </span><span class="identifier-syntax">RETRIEVE_POINTER_dialogue_choice</span><span class="plain-syntax">(</span><span class="identifier-syntax">ct</span><span class="plain-syntax">-></span><span class="identifier-syntax">data</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">current_sentence</span><span class="plain-syntax"> = </span><span class="identifier-syntax">dc</span><span class="plain-syntax">-></span><span class="identifier-syntax">compilation_data</span><span class="plain-syntax">.</span><span class="element-syntax">where_created</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">package_request</span><span class="plain-syntax"> *</span><span class="identifier-syntax">PR</span><span class="plain-syntax"> = </span><a href="5-dci.html#SP1" class="function-link"><span class="function-syntax">RTDialogueChoices::package</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">dc</span><span class="plain-syntax">);</span>
|
||||
|
@ -141,7 +150,8 @@ function togglePopup(material_id) {
|
|||
<span class="plain-syntax"> </span><a href="2-ea.html#SP5" class="function-link"><span class="function-syntax">EmitArrays::end</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">save</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">make_availability_function</span><span class="plain-syntax">) </span><span class="named-paragraph-container code-font"><a href="5-dci.html#SP3_6" class="named-paragraph-link"><span class="named-paragraph">Compile the available function</span><span class="named-paragraph-number">3.6</span></a></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">Wordings::nonempty</span><span class="plain-syntax">(</span><span class="identifier-syntax">APW</span><span class="plain-syntax">)) </span><span class="named-paragraph-container code-font"><a href="5-dci.html#SP3_7" class="named-paragraph-link"><span class="named-paragraph">Compile the action-matching function</span><span class="named-paragraph-number">3.7</span></a></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">dc</span><span class="plain-syntax">-></span><span class="identifier-syntax">to_perform_expression</span><span class="plain-syntax">) </span><span class="named-paragraph-container code-font"><a href="5-dci.html#SP3_7" class="named-paragraph-link"><span class="named-paragraph">Compile the performance function</span><span class="named-paragraph-number">3.7</span></a></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">Wordings::nonempty</span><span class="plain-syntax">(</span><span class="identifier-syntax">APW</span><span class="plain-syntax">)) </span><span class="named-paragraph-container code-font"><a href="5-dci.html#SP3_8" class="named-paragraph-link"><span class="named-paragraph">Compile the action-matching function</span><span class="named-paragraph-number">3.8</span></a></span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<p class="commentary firstcommentary"><a id="SP3_1" class="paragraph-anchor"></a><b>§3.1. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Scan the clauses further</span><span class="named-paragraph-number">3.1</span></span><span class="comment-syntax"> =</span>
|
||||
|
@ -194,7 +204,10 @@ function togglePopup(material_id) {
|
|||
<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="reserved-syntax">case</span><span class="plain-syntax"> </span><span class="identifier-syntax">PERFORM_DSEL:</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">dc</span><span class="plain-syntax">-></span><span class="identifier-syntax">to_perform</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::iname_entry</span></a><span class="plain-syntax">(</span><a href="5-ins.html#SP1" class="function-link"><span class="function-syntax">RTInstances::value_iname</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">dc</span><span class="plain-syntax">-></span><span class="identifier-syntax">to_perform</span><span class="plain-syntax">-></span><span class="identifier-syntax">as_instance</span><span class="plain-syntax">));</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">else</span>
|
||||
<span class="plain-syntax"> </span><a href="2-ea.html#SP4" class="function-link"><span class="function-syntax">EmitArrays::iname_entry</span></a><span class="plain-syntax">(</span><a href="5-dci.html#SP1" class="function-link"><span class="function-syntax">RTDialogueChoices::performance_fn_iname</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">dc</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="reserved-syntax">case</span><span class="plain-syntax"> </span><span class="identifier-syntax">INSTEAD_OF_DSEL:</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">case</span><span class="plain-syntax"> </span><span class="identifier-syntax">AFTER_DSEL:</span>
|
||||
|
@ -292,7 +305,19 @@ function togglePopup(material_id) {
|
|||
<span class="plain-syntax"> }</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="5-dci.html#SP3_6">§3.6</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP3_7" class="paragraph-anchor"></a><b>§3.7. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Compile the action-matching function</span><span class="named-paragraph-number">3.7</span></span><span class="comment-syntax"> =</span>
|
||||
<p class="commentary firstcommentary"><a id="SP3_7" class="paragraph-anchor"></a><b>§3.7. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Compile the performance function</span><span class="named-paragraph-number">3.7</span></span><span class="comment-syntax"> =</span>
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">packaging_state</span><span class="plain-syntax"> </span><span class="identifier-syntax">save</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Functions::begin</span><span class="plain-syntax">(</span><a href="5-dci.html#SP1" class="function-link"><span class="function-syntax">RTDialogueChoices::performance_fn_iname</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">dc</span><span class="plain-syntax">));</span>
|
||||
<span class="plain-syntax"> </span><a href="2-ec.html#SP14" class="function-link"><span class="function-syntax">EmitCode::inv</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">RETURN_BIP</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="2-ec.html#SP3" class="function-link"><span class="function-syntax">EmitCode::down</span></a><span class="plain-syntax">();</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">CompileValues::to_code_val_of_kind</span><span class="plain-syntax">(</span><span class="identifier-syntax">dc</span><span class="plain-syntax">-></span><span class="identifier-syntax">to_perform_expression</span><span class="plain-syntax">, </span><span class="identifier-syntax">K_dialogue_beat</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="2-ec.html#SP3" class="function-link"><span class="function-syntax">EmitCode::up</span></a><span class="plain-syntax">();</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Functions::end</span><span class="plain-syntax">(</span><span class="identifier-syntax">save</span><span class="plain-syntax">);</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="5-dci.html#SP3">§3</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP3_8" class="paragraph-anchor"></a><b>§3.8. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Compile the action-matching function</span><span class="named-paragraph-number">3.8</span></span><span class="comment-syntax"> =</span>
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
Total memory consumption was 141945K = 139 MB
|
||||
Total memory consumption was 141946K = 139 MB
|
||||
|
||||
---- was used for 2127403 objects, in 374858 frames in 0 x 800K = 0K = 0 MB:
|
||||
---- was used for 2127404 objects, in 374859 frames in 0 x 800K = 0K = 0 MB:
|
||||
|
||||
29.7% inter_tree_node_array 60 x 8192 = 491520 objects, 43255680 bytes
|
||||
19.0% text_stream_array 4926 x 100 = 492600 objects, 27743232 bytes
|
||||
|
@ -44,7 +44,7 @@ Total memory consumption was 141945K = 139 MB
|
|||
0.1% inter_annotation_array 2 x 8192 = 16384 objects, 262208 bytes
|
||||
0.1% vanilla_function 3823 objects, 244672 bytes
|
||||
0.1% binary_predicate 330 objects, 174240 bytes
|
||||
0.1% hierarchy_location 1190 objects, 171360 bytes
|
||||
0.1% hierarchy_location 1191 objects, 171504 bytes
|
||||
0.1% linguistic_stock_item 3338 objects, 160224 bytes
|
||||
0.1% rule_family_data 404 objects, 148672 bytes
|
||||
---- nonterminal 773 objects, 142232 bytes
|
||||
|
@ -57,7 +57,7 @@ Total memory consumption was 141945K = 139 MB
|
|||
---- imperative_defn 1418 objects, 102096 bytes
|
||||
---- noun_usage 2419 objects, 96760 bytes
|
||||
---- anl_entry_array 2 x 1000 = 2000 objects, 96064 bytes
|
||||
---- inter_tree 7 objects, 95928 bytes
|
||||
---- inter_tree 7 objects, 95984 bytes
|
||||
---- preposition 274 objects, 87680 bytes
|
||||
---- lexical_cluster 2535 objects, 81120 bytes
|
||||
---- kind_variable_declaration 1659 objects, 79632 bytes
|
||||
|
@ -262,9 +262,9 @@ Total memory consumption was 141945K = 139 MB
|
|||
---- loop_over_scope 1 object, 40 bytes
|
||||
---- kind_template_definition 1 object, 40 bytes
|
||||
|
||||
99.9% was used for memory not allocated for objects:
|
||||
100.0% was used for memory not allocated for objects:
|
||||
|
||||
63.0% text stream storage 91603788 bytes in 513069 claims
|
||||
63.0% text stream storage 91604284 bytes in 513073 claims
|
||||
3.7% dictionary storage 5497920 bytes in 7767 claims
|
||||
---- sorting 2624 bytes in 531 claims
|
||||
4.9% source text 7200000 bytes in 3 claims
|
||||
|
@ -282,5 +282,5 @@ Total memory consumption was 141945K = 139 MB
|
|||
---- code generation workspace for objects 3528 bytes in 19 claims
|
||||
0.1% emitter array storage 281184 bytes in 2006 claims
|
||||
|
||||
-134.-3% was overhead - -195282544 bytes = -190705K = -186 MB
|
||||
-134.-3% was overhead - -195282744 bytes = -190705K = -186 MB
|
||||
|
||||
|
|
|
@ -1,29 +1,29 @@
|
|||
100.0% in inform7 run
|
||||
67.2% in compilation to Inter
|
||||
45.3% in //Sequence::undertake_queued_tasks//
|
||||
67.5% in compilation to Inter
|
||||
45.2% in //Sequence::undertake_queued_tasks//
|
||||
4.3% in //MajorNodes::pre_pass//
|
||||
3.5% in //MajorNodes::pass_1//
|
||||
2.1% in //RTPhrasebook::compile_entries//
|
||||
1.7% in //ImperativeDefinitions::assess_all//
|
||||
3.6% in //MajorNodes::pass_1//
|
||||
1.8% in //ImperativeDefinitions::assess_all//
|
||||
1.8% in //RTPhrasebook::compile_entries//
|
||||
1.4% in //RTKindConstructors::compile//
|
||||
1.0% in //Sequence::lint_inter//
|
||||
0.7% in //ImperativeDefinitions::compile_first_block//
|
||||
0.7% in //Sequence::undertake_queued_tasks//
|
||||
0.7% in //World::stage_V//
|
||||
0.3% in //CompletionModule::compile//
|
||||
0.3% in //MajorNodes::pass_2//
|
||||
0.3% in //Sequence::undertake_queued_tasks//
|
||||
0.3% in //World::stage_V//
|
||||
4.7% not specifically accounted for
|
||||
27.6% in running Inter pipeline
|
||||
8.9% in step 14/15: generate inform6 -> auto.inf
|
||||
7.1% in step 5/15: load-binary-kits
|
||||
6.1% in step 6/15: make-synoptic-module
|
||||
1.7% in step 9/15: make-identifiers-unique
|
||||
4.8% not specifically accounted for
|
||||
27.7% in running Inter pipeline
|
||||
9.1% in step 14/15: generate inform6 -> auto.inf
|
||||
6.9% in step 5/15: load-binary-kits
|
||||
5.8% in step 6/15: make-synoptic-module
|
||||
1.8% in step 9/15: make-identifiers-unique
|
||||
0.3% in step 11/15: eliminate-redundant-labels
|
||||
0.3% in step 12/15: eliminate-redundant-operations
|
||||
0.3% in step 4/15: compile-splats
|
||||
0.3% in step 7/15: shorten-wiring
|
||||
0.3% in step 8/15: detect-indirect-calls
|
||||
1.8% not specifically accounted for
|
||||
4.3% in supervisor
|
||||
2.2% not specifically accounted for
|
||||
4.0% in supervisor
|
||||
0.8% not specifically accounted for
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
"is": {
|
||||
"type": "kit",
|
||||
"title": "Architecture16Kit",
|
||||
"version": "10.2.0-beta+6X33"
|
||||
"version": "10.2.0-beta+6X34"
|
||||
},
|
||||
"compatibility": "16-bit",
|
||||
"kit-details": {
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
"is": {
|
||||
"type": "kit",
|
||||
"title": "Architecture32Kit",
|
||||
"version": "10.2.0-beta+6X33"
|
||||
"version": "10.2.0-beta+6X34"
|
||||
},
|
||||
"compatibility": "32-bit",
|
||||
"kit-details": {
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
"is": {
|
||||
"type": "kit",
|
||||
"title": "BasicInformKit",
|
||||
"version": "10.2.0-beta+6X33"
|
||||
"version": "10.2.0-beta+6X34"
|
||||
},
|
||||
"needs": [ {
|
||||
"need": {
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
"is": {
|
||||
"type": "kit",
|
||||
"title": "CommandParserKit",
|
||||
"version": "10.2.0-beta+6X33"
|
||||
"version": "10.2.0-beta+6X34"
|
||||
},
|
||||
"needs": [ {
|
||||
"need": {
|
||||
|
|
|
@ -132,7 +132,7 @@ Constant OR_DSEL = 19; ! -- or
|
|||
rtrue;
|
||||
];
|
||||
|
||||
[ DirectorFollowFlowMarker dc chdata;
|
||||
[ DirectorFollowFlowMarker dc chdata b;
|
||||
if ((dc <= 0) || (dc > NO_DIALOGUE_CHOICES)) rfalse;
|
||||
WriteGProperty(DIALOGUE_CHOICE_TY, dc, performed, true);
|
||||
chdata = TableOfDialogueChoices-->dc;
|
||||
|
@ -152,7 +152,10 @@ Constant OR_DSEL = 19; ! -- or
|
|||
if (chdata-->TYPE_DCMETADATA == ENDING_FINALLY_DSEL or ENDING_FINALLY_SAYING_DSEL)
|
||||
story_complete = true;
|
||||
rtrue;
|
||||
PERFORM_DSEL: DirectorPerformBeat(chdata-->CONTENT_DCMETADATA); rtrue;
|
||||
PERFORM_DSEL:
|
||||
b = chdata-->CONTENT_DCMETADATA;
|
||||
if (b ofclass Routine) b = b();
|
||||
DirectorPerformBeat(b); rtrue;
|
||||
default: print "*** Unimplemented choice ***^"; rfalse;
|
||||
}
|
||||
rtrue;
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
"is": {
|
||||
"type": "kit",
|
||||
"title": "EnglishLanguageKit",
|
||||
"version": "10.2.0-beta+6X33"
|
||||
"version": "10.2.0-beta+6X34"
|
||||
},
|
||||
"needs": [ {
|
||||
"need": {
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
"is": {
|
||||
"type": "kit",
|
||||
"title": "WorldModelKit",
|
||||
"version": "10.2.0-beta+6X33"
|
||||
"version": "10.2.0-beta+6X34"
|
||||
},
|
||||
"needs": [ {
|
||||
"need": {
|
||||
|
|
|
@ -38,6 +38,7 @@ typedef struct dialogue_choice {
|
|||
struct parse_node *selection;
|
||||
struct wording selection_parameter;
|
||||
struct dialogue_beat *to_perform;
|
||||
struct parse_node *to_perform_expression;
|
||||
struct dialogue_choice_compilation_data compilation_data;
|
||||
int selection_type;
|
||||
CLASS_DEFINITION
|
||||
|
@ -50,6 +51,7 @@ typedef struct dialogue_choice {
|
|||
dc->selection = NULL;
|
||||
dc->selection_parameter = EMPTY_WORDING;
|
||||
dc->to_perform = NULL;
|
||||
dc->to_perform_expression = NULL;
|
||||
dc->selection_type = AGAIN_DSEL;
|
||||
dc->compilation_data = RTDialogueChoices::new(PN, dc);
|
||||
|
||||
|
@ -305,6 +307,11 @@ void DialogueChoices::decide_choice_performs(void) {
|
|||
if (Wordings::match(dc->selection_parameter, db->beat_name))
|
||||
dc->to_perform = db;
|
||||
if (dc->to_perform == NULL) {
|
||||
if (<s-value>(dc->selection_parameter)) {
|
||||
parse_node *val = <<rp>>;
|
||||
if (Dash::check_value(val, K_dialogue_beat) == ALWAYS_MATCH)
|
||||
dc->to_perform_expression = val;
|
||||
} else {
|
||||
Problems::quote_source(1, current_sentence);
|
||||
Problems::quote_wording(2, dc->selection_parameter);
|
||||
StandardProblems::handmade_problem(Task::syntax_tree(),
|
||||
|
@ -313,8 +320,7 @@ void DialogueChoices::decide_choice_performs(void) {
|
|||
"The dialogue choice offered by %1 asks to perform the beat '%2', "
|
||||
"but I don't recognise that as the name of any beat in the story.");
|
||||
Problems::issue_problem_end();
|
||||
} else {
|
||||
LOG("Dialogue beat: $O\n", dc->to_perform->as_instance);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -990,6 +990,7 @@ void Hierarchy::establish(void) {
|
|||
@e CHOICE_ARRAY_HL
|
||||
@e CHOICE_AVAILABLE_FN_HL
|
||||
@e CHOICE_ACTION_MATCH_FN_HL
|
||||
@e CHOICE_PERFORMANCE_FN_HL
|
||||
|
||||
@<Establish instances@> =
|
||||
submodule_identity *instances = LargeScale::register_submodule_identity(I"instances");
|
||||
|
@ -1107,6 +1108,7 @@ void Hierarchy::establish(void) {
|
|||
H_C_U(CHOICE_ARRAY_HL, I"choice_data")
|
||||
H_F_U(CHOICE_AVAILABLE_FN_HL, I"available_fn")
|
||||
H_F_U(CHOICE_ACTION_MATCH_FN_HL, I"action_match_fn")
|
||||
H_F_U(CHOICE_PERFORMANCE_FN_HL, I"performance_fn")
|
||||
H_F_U(INST_SHOWME_FN_HL, I"showme_fn")
|
||||
H_BEGIN_AP(INLINE_PROPERTIES_HAP, I"inline_property", I"_inline_property")
|
||||
H_C_U(INLINE_PROPERTY_HL, I"inline")
|
||||
|
|
|
@ -11,6 +11,7 @@ typedef struct dialogue_choice_compilation_data {
|
|||
struct inter_name *choice_array_iname;
|
||||
struct inter_name *available_fn_iname;
|
||||
struct inter_name *action_match_fn_iname;
|
||||
struct inter_name *performance_fn_iname;
|
||||
} dialogue_choice_compilation_data;
|
||||
|
||||
dialogue_choice_compilation_data RTDialogueChoices::new(parse_node *PN, dialogue_choice *dc) {
|
||||
|
@ -19,6 +20,7 @@ dialogue_choice_compilation_data RTDialogueChoices::new(parse_node *PN, dialogue
|
|||
dccd.choice_array_iname = NULL;
|
||||
dccd.available_fn_iname = NULL;
|
||||
dccd.action_match_fn_iname = NULL;
|
||||
dccd.performance_fn_iname = NULL;
|
||||
return dccd;
|
||||
}
|
||||
|
||||
|
@ -48,6 +50,13 @@ inter_name *RTDialogueChoices::action_match_fn_iname(dialogue_choice *dc) {
|
|||
return dc->compilation_data.action_match_fn_iname;
|
||||
}
|
||||
|
||||
inter_name *RTDialogueChoices::performance_fn_iname(dialogue_choice *dc) {
|
||||
if (dc->compilation_data.performance_fn_iname == NULL)
|
||||
dc->compilation_data.performance_fn_iname =
|
||||
Hierarchy::make_iname_in(CHOICE_PERFORMANCE_FN_HL, RTDialogueChoices::package(dc));
|
||||
return dc->compilation_data.performance_fn_iname;
|
||||
}
|
||||
|
||||
@h Compilation of dialogue.
|
||||
|
||||
=
|
||||
|
@ -80,6 +89,7 @@ void RTDialogueChoices::choice_compilation_agent(compilation_subtask *ct) {
|
|||
EmitArrays::end(save);
|
||||
|
||||
if (make_availability_function) @<Compile the available function@>;
|
||||
if (dc->to_perform_expression) @<Compile the performance function@>;
|
||||
if (Wordings::nonempty(APW)) @<Compile the action-matching function@>;
|
||||
}
|
||||
|
||||
|
@ -118,7 +128,10 @@ void RTDialogueChoices::choice_compilation_agent(compilation_subtask *ct) {
|
|||
}
|
||||
break;
|
||||
case PERFORM_DSEL:
|
||||
if (dc->to_perform)
|
||||
EmitArrays::iname_entry(RTInstances::value_iname(dc->to_perform->as_instance));
|
||||
else
|
||||
EmitArrays::iname_entry(RTDialogueChoices::performance_fn_iname(dc));
|
||||
break;
|
||||
case INSTEAD_OF_DSEL:
|
||||
case AFTER_DSEL:
|
||||
|
@ -203,6 +216,14 @@ void RTDialogueChoices::choice_compilation_agent(compilation_subtask *ct) {
|
|||
}
|
||||
}
|
||||
|
||||
@<Compile the performance function@> =
|
||||
packaging_state save = Functions::begin(RTDialogueChoices::performance_fn_iname(dc));
|
||||
EmitCode::inv(RETURN_BIP);
|
||||
EmitCode::down();
|
||||
CompileValues::to_code_val_of_kind(dc->to_perform_expression, K_dialogue_beat);
|
||||
EmitCode::up();
|
||||
Functions::end(save);
|
||||
|
||||
@<Compile the action-matching function@> =
|
||||
packaging_state save = Functions::begin(RTDialogueChoices::action_match_fn_iname(dc));
|
||||
if (<s-action-pattern-as-value>(APW)) {
|
||||
|
|
Loading…
Reference in a new issue