mirror of
https://github.com/ganelson/inform.git
synced 2024-07-08 10:04:21 +03:00
522 lines
70 KiB
HTML
522 lines
70 KiB
HTML
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
|
|
<html>
|
|
<head>
|
|
<title>Printing Template</title>
|
|
<meta name="viewport" content="width=device-width initial-scale=1">
|
|
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
|
<meta http-equiv="Content-Language" content="en-gb">
|
|
<link href="../inweb.css" rel="stylesheet" rev="stylesheet" type="text/css">
|
|
|
|
</head>
|
|
<body>
|
|
<nav role="navigation">
|
|
<h1><a href="../index.html">
|
|
<img src="../docs-src/Figures/Inform.png" height=72">
|
|
</a></h1>
|
|
<ul><li><a href="../compiler.html">compiler tools</a></li>
|
|
<li><a href="../other.html">other tools</a></li>
|
|
<li><a href="../extensions.html">extensions and kits</a></li>
|
|
<li><a href="../units.html">unit test tools</a></li>
|
|
</ul><h2>Extensions</h2><ul>
|
|
<li><a href="../basic_inform/index.html">basic_inform</a></li>
|
|
<li><a href="../standard_rules/index.html">standard_rules</a></li>
|
|
</ul><h2>Kits</h2><ul>
|
|
<li><a href="../BasicInformKit/index.html">BasicInformKit</a></li>
|
|
<li><a href="../BasicInformExtrasKit/index.html">BasicInformExtrasKit</a></li>
|
|
<li><a href="../CommandParserKit/index.html">CommandParserKit</a></li>
|
|
<li><a href="../EnglishLanguageKit/index.html">EnglishLanguageKit</a></li>
|
|
<li><a href="index.html"><span class="selectedlink">WorldModelKit</span></a></li>
|
|
|
|
</ul>
|
|
</nav>
|
|
<main role="main">
|
|
|
|
<!--Weave of 'Printing Template' generated by 7-->
|
|
<ul class="crumbs"><li><a href="../index.html">Home</a></li><li><a href="../extensions.html">Kits</a></li><li><a href="index.html">WorldModelKit</a></li><li><b>Printing Template</b></li></ul><p class="purpose">To manage the line skips which space paragraphs out, and to handle the printing of names of objects, pieces of text and numbers.</p>
|
|
|
|
<ul class="toc"><li><a href="#SP1">§1. Prompt</a></li><li><a href="#SP2">§2. Boxed Quotations</a></li><li><a href="#SP3">§3. Score Notification</a></li><li><a href="#SP4">§4. Print Rank</a></li><li><a href="#SP5">§5. Status Line</a></li><li><a href="#SP6">§6. Status Line Utilities</a></li><li><a href="#SP7">§7. Banner</a></li><li><a href="#SP8">§8. Short Name Storage</a></li><li><a href="#SP9">§9. Object Names I</a></li><li><a href="#SP10">§10. Standard Name Printing Rule</a></li><li><a href="#SP11">§11. Internal Rule</a></li><li><a href="#SP12">§12. Object Names II</a></li><li><a href="#SP13">§13. Object Names III</a></li><li><a href="#SP14">§14. Standard Response Issuing Rule</a></li></ul><hr class="tocbar">
|
|
|
|
<p class="inwebparagraph"><a id="SP1"></a><b>§1. Prompt. </b>This is the text printed just before we wait for the player's command: it
|
|
prompts him to type.
|
|
</p>
|
|
|
|
<pre class="display">
|
|
<span class="plain">[ </span><span class="identifier">PrintPrompt</span><span class="plain"> </span><span class="identifier">i</span><span class="plain">;</span>
|
|
<span class="identifier">RunTimeProblemShow</span><span class="plain">();</span>
|
|
<span class="identifier">ClearRTP</span><span class="plain">();</span>
|
|
<span class="reserved">style</span><span class="plain"> </span><span class="identifier">roman</span><span class="plain">;</span>
|
|
<span class="identifier">EnsureBreakBeforePrompt</span><span class="plain">();</span>
|
|
<span class="identifier">TEXT_TY_Say</span><span class="plain">(</span><span class="identifier">CommandPromptText</span><span class="plain">());</span>
|
|
<span class="identifier">ClearBoxedText</span><span class="plain">();</span>
|
|
<span class="identifier">ClearParagraphing</span><span class="plain">(14);</span>
|
|
<span class="plain">];</span>
|
|
</pre>
|
|
|
|
<p class="inwebparagraph"></p>
|
|
|
|
<p class="inwebparagraph"><a id="SP2"></a><b>§2. Boxed Quotations. </b>These appear once only, and happen outside of the paragraphing scheme: they
|
|
are normally overlaid as windows on top of the regular text. We can request
|
|
one at any time, but it will appear only at prompt time, when the screen is
|
|
fairly well guaranteed not to be scrolling. (Only fairly well since it's just
|
|
possible that {\it Border Zone}-like tricks with real-time play might be
|
|
going on, but whatever happens, there is at least a human-appreciable pause
|
|
in which the quotation can be read before being taken away again.)
|
|
</p>
|
|
|
|
<pre class="display">
|
|
<span class="identifier">Global</span><span class="plain"> </span><span class="identifier">pending_boxed_quotation</span><span class="plain">; </span><span class="comment">a routine to overlay the quotation on screen</span>
|
|
|
|
<span class="plain">[ </span><span class="identifier">DisplayBoxedQuotation</span><span class="plain"> </span><span class="identifier">Q</span><span class="plain">;</span>
|
|
<span class="identifier">pending_boxed_quotation</span><span class="plain"> = </span><span class="identifier">Q</span><span class="plain">;</span>
|
|
<span class="plain">];</span>
|
|
|
|
<span class="plain">[ </span><span class="identifier">ClearBoxedText</span><span class="plain"> </span><span class="identifier">i</span><span class="plain">;</span>
|
|
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">pending_boxed_quotation</span><span class="plain">) {</span>
|
|
<span class="reserved">for</span><span class="plain"> (</span><span class="identifier">i</span><span class="plain">=0: </span><span class="identifier">Runtime_Quotations_Displayed</span><span class="plain">--></span><span class="identifier">i</span><span class="plain">: </span><span class="identifier">i</span><span class="plain">++)</span>
|
|
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">Runtime_Quotations_Displayed</span><span class="plain">--></span><span class="identifier">i</span><span class="plain"> == </span><span class="identifier">pending_boxed_quotation</span><span class="plain">) {</span>
|
|
<span class="identifier">pending_boxed_quotation</span><span class="plain"> = </span><span class="constant">0</span><span class="plain">;</span>
|
|
<span class="reserved">return</span><span class="plain">;</span>
|
|
<span class="plain">}</span>
|
|
<span class="identifier">Runtime_Quotations_Displayed</span><span class="plain">--></span><span class="identifier">i</span><span class="plain"> = </span><span class="identifier">pending_boxed_quotation</span><span class="plain">;</span>
|
|
|
|
<span class="identifier">ClearParagraphing</span><span class="plain">(15);</span>
|
|
<span class="identifier">pending_boxed_quotation</span><span class="plain">();</span>
|
|
<span class="identifier">ClearParagraphing</span><span class="plain">(16);</span>
|
|
|
|
<span class="identifier">pending_boxed_quotation</span><span class="plain"> = </span><span class="constant">0</span><span class="plain">;</span>
|
|
<span class="plain">}</span>
|
|
<span class="plain">];</span>
|
|
</pre>
|
|
|
|
<p class="inwebparagraph"></p>
|
|
|
|
<p class="inwebparagraph"><a id="SP3"></a><b>§3. Score Notification. </b>This doesn't really deserve to be at I6 level at all, but since we want a
|
|
fancy text style for Glulx, ...
|
|
</p>
|
|
|
|
<pre class="display">
|
|
<span class="plain">[ </span><span class="identifier">NotifyTheScore</span><span class="plain"> </span><span class="identifier">d</span><span class="plain">;</span>
|
|
<span class="reserved">if</span><span class="plain"> ((</span><span class="identifier">TEMPLATE_CONFIGURATION_BITMAP</span><span class="plain"> & </span><span class="identifier">USE_SCORING_TCBIT</span><span class="plain">) && (</span><span class="identifier">notify_mode</span><span class="plain"> == </span><span class="constant">1</span><span class="plain">)) {</span>
|
|
<span class="identifier">DivideParagraphPoint</span><span class="plain">();</span>
|
|
<span class="identifier">VM_Style</span><span class="plain">(</span><span class="identifier">NOTE_VMSTY</span><span class="plain">);</span>
|
|
<span class="identifier">d</span><span class="plain"> = </span><span class="identifier">score</span><span class="plain">-</span><span class="identifier">last_score</span><span class="plain">;</span>
|
|
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">d</span><span class="plain"> > </span><span class="constant">0</span><span class="plain">) { </span><span class="identifier">ANNOUNCE_SCORE_RM</span><span class="plain">(</span><span class="character">'D'</span><span class="plain">, </span><span class="identifier">d</span><span class="plain">); }</span>
|
|
<span class="reserved">else</span><span class="plain"> </span><span class="reserved">if</span><span class="plain"> (</span><span class="identifier">d</span><span class="plain"> < </span><span class="constant">0</span><span class="plain">) { </span><span class="identifier">ANNOUNCE_SCORE_RM</span><span class="plain">(</span><span class="character">'E'</span><span class="plain">, -</span><span class="identifier">d</span><span class="plain">); }</span>
|
|
<span class="reserved">new_line</span><span class="plain">;</span>
|
|
<span class="identifier">VM_Style</span><span class="plain">(</span><span class="identifier">NORMAL_VMSTY</span><span class="plain">);</span>
|
|
<span class="plain">}</span>
|
|
<span class="plain">];</span>
|
|
</pre>
|
|
|
|
<p class="inwebparagraph"></p>
|
|
|
|
<p class="inwebparagraph"><a id="SP4"></a><b>§4. Print Rank. </b>The table of scoring ranks is a residue from the ancient times of early IF:
|
|
it gets a tiny amount of special treatment here, even though I7 works tend
|
|
not to use these now dated conventions.
|
|
</p>
|
|
|
|
<pre class="display">
|
|
<span class="plain">[ </span><span class="identifier">PrintRank</span><span class="plain"> </span><span class="identifier">i</span><span class="plain"> </span><span class="identifier">j</span><span class="plain"> </span><span class="identifier">v</span><span class="plain">;</span>
|
|
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">TEMPLATE_CONFIGURATION_BITMAP</span><span class="plain"> & </span><span class="identifier">RANKING_TABLE_TCBIT</span><span class="plain">) {</span>
|
|
<span class="identifier">ANNOUNCE_SCORE_RM</span><span class="plain">(</span><span class="character">'B'</span><span class="plain">);</span>
|
|
<span class="identifier">j</span><span class="plain"> = </span><span class="identifier">TableRows</span><span class="plain">(</span><span class="identifier">RANKING_TABLE</span><span class="plain">);</span>
|
|
<span class="reserved">for</span><span class="plain"> (</span><span class="identifier">i</span><span class="plain">=</span><span class="identifier">j</span><span class="plain">:</span><span class="identifier">i</span><span class="plain">>=1:</span><span class="identifier">i</span><span class="plain">--)</span>
|
|
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">score</span><span class="plain"> >= </span><span class="identifier">TableLookUpEntry</span><span class="plain">(</span><span class="identifier">RANKING_TABLE</span><span class="plain">, </span><span class="constant">1</span><span class="plain">, </span><span class="identifier">i</span><span class="plain">)) {</span>
|
|
<span class="identifier">v</span><span class="plain"> = </span><span class="identifier">TableLookUpEntry</span><span class="plain">(</span><span class="identifier">RANKING_TABLE</span><span class="plain">, </span><span class="constant">2</span><span class="plain">, </span><span class="identifier">i</span><span class="plain">);</span>
|
|
<span class="identifier">TEXT_TY_Say</span><span class="plain">(</span><span class="identifier">v</span><span class="plain">);</span>
|
|
<span class="string">"."</span><span class="plain">;</span>
|
|
<span class="plain">}</span>
|
|
<span class="plain">}</span>
|
|
<span class="string">"."</span><span class="plain">;</span>
|
|
<span class="plain">];</span>
|
|
</pre>
|
|
|
|
<p class="inwebparagraph"></p>
|
|
|
|
<p class="inwebparagraph"><a id="SP5"></a><b>§5. Status Line. </b>Status line printing happens on the upper screen window, and outside of the
|
|
paragraph control system.
|
|
</p>
|
|
|
|
<p class="inwebparagraph">Support for version 6 of the Z-machine is best described as grudging. It
|
|
requires a heavily rewritten <code class="display"><span class="extract">DrawStatusLine</span></code> equivalent, to be found
|
|
in "ZMachine.i6t".
|
|
</p>
|
|
|
|
<pre class="display">
|
|
<span class="plain">[ </span><span class="identifier">DrawStatusLine</span><span class="plain"> </span><span class="identifier">width</span><span class="plain"> </span><span class="identifier">posb</span><span class="plain">;</span>
|
|
<span class="plain">@</span><span class="identifier">push</span><span class="plain"> </span><span class="identifier">say__p</span><span class="plain">; @</span><span class="identifier">push</span><span class="plain"> </span><span class="identifier">say__pc</span><span class="plain">;</span>
|
|
<span class="identifier">BeginActivity</span><span class="plain">(</span><span class="identifier">CONSTRUCTING_STATUS_LINE_ACT</span><span class="plain">);</span>
|
|
<span class="identifier">VM_StatusLineHeight</span><span class="plain">(1); </span><span class="identifier">VM_MoveCursorInStatusLine</span><span class="plain">(1, </span><span class="constant">1</span><span class="plain">);</span>
|
|
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">statuswin_current</span><span class="plain">) {</span>
|
|
<span class="identifier">width</span><span class="plain"> = </span><span class="identifier">VM_ScreenWidth</span><span class="plain">(); </span><span class="identifier">posb</span><span class="plain"> = </span><span class="identifier">width</span><span class="plain">-15;</span>
|
|
<span class="reserved">spaces</span><span class="plain"> </span><span class="identifier">width</span><span class="plain">;</span>
|
|
<span class="identifier">ClearParagraphing</span><span class="plain">(17);</span>
|
|
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">ForActivity</span><span class="plain">(</span><span class="identifier">CONSTRUCTING_STATUS_LINE_ACT</span><span class="plain">) == </span><span class="reserved">false</span><span class="plain">) {</span>
|
|
<span class="identifier">VM_MoveCursorInStatusLine</span><span class="plain">(1, </span><span class="constant">2</span><span class="plain">);</span>
|
|
<span class="identifier">TEXT_TY_Say</span><span class="plain">(</span><span class="identifier">left_hand_status_line</span><span class="plain">);</span>
|
|
<span class="identifier">VM_MoveCursorInStatusLine</span><span class="plain">(1, </span><span class="identifier">posb</span><span class="plain">);</span>
|
|
<span class="identifier">TEXT_TY_Say</span><span class="plain">(</span><span class="identifier">right_hand_status_line</span><span class="plain">);</span>
|
|
<span class="plain">}</span>
|
|
<span class="identifier">VM_MoveCursorInStatusLine</span><span class="plain">(1, </span><span class="constant">1</span><span class="plain">); </span><span class="identifier">VM_MainWindow</span><span class="plain">();</span>
|
|
<span class="plain">}</span>
|
|
<span class="identifier">ClearParagraphing</span><span class="plain">(18);</span>
|
|
<span class="identifier">EndActivity</span><span class="plain">(</span><span class="identifier">CONSTRUCTING_STATUS_LINE_ACT</span><span class="plain">);</span>
|
|
<span class="plain">@</span><span class="identifier">pull</span><span class="plain"> </span><span class="identifier">say__pc</span><span class="plain">; @</span><span class="identifier">pull</span><span class="plain"> </span><span class="identifier">say__p</span><span class="plain">;</span>
|
|
<span class="plain">];</span>
|
|
</pre>
|
|
|
|
<p class="inwebparagraph"></p>
|
|
|
|
<p class="inwebparagraph"><a id="SP6"></a><b>§6. Status Line Utilities. </b>Two convenient routines for the default values of <code class="display"><span class="extract">right_hand_status_line</span></code>
|
|
and <code class="display"><span class="extract">left_hand_status_line</span></code> respectively. <code class="display"><span class="extract">SL_Location</span></code> also implements the
|
|
text substitution "[player's surroundings]".
|
|
</p>
|
|
|
|
<pre class="display">
|
|
<span class="reserved">Array</span><span class="plain"> </span><span class="identifier">T_SL_Score_Moves</span><span class="plain"> --> </span><span class="identifier">CONSTANT_PACKED_TEXT_STORAGE</span><span class="plain"> </span><span class="identifier">SL_Score_Moves</span><span class="plain">;</span>
|
|
|
|
<span class="plain">[ </span><span class="identifier">SL_Score_Moves</span><span class="plain">;</span>
|
|
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">not_yet_in_play</span><span class="plain">) </span><span class="reserved">return</span><span class="plain">;</span>
|
|
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">TEMPLATE_CONFIGURATION_BITMAP</span><span class="plain"> & </span><span class="identifier">USE_SCORING_TCBIT</span><span class="plain">)</span>
|
|
<span class="reserved">print</span><span class="plain"> </span><span class="identifier">sline1</span><span class="plain">, </span><span class="string">"/"</span><span class="plain">, </span><span class="identifier">sline2</span><span class="plain">;</span>
|
|
<span class="plain">];</span>
|
|
|
|
<span class="reserved">Array</span><span class="plain"> </span><span class="identifier">T_SL_Location</span><span class="plain"> --> </span><span class="identifier">CONSTANT_PACKED_TEXT_STORAGE</span><span class="plain"> </span><span class="identifier">SL_Location</span><span class="plain">;</span>
|
|
|
|
<span class="plain">[ </span><span class="identifier">SL_Location</span><span class="plain"> </span><span class="identifier">even_before</span><span class="plain">;</span>
|
|
<span class="reserved">if</span><span class="plain"> ((</span><span class="identifier">not_yet_in_play</span><span class="plain">) && (</span><span class="identifier">even_before</span><span class="plain"> == </span><span class="reserved">false</span><span class="plain">)) </span><span class="reserved">return</span><span class="plain">;</span>
|
|
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">location</span><span class="plain"> == </span><span class="identifier">thedark</span><span class="plain">) {</span>
|
|
<span class="identifier">BeginActivity</span><span class="plain">(</span><span class="identifier">PRINTING_NAME_OF_DARK_ROOM_ACT</span><span class="plain">);</span>
|
|
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">ForActivity</span><span class="plain">(</span><span class="identifier">PRINTING_NAME_OF_DARK_ROOM_ACT</span><span class="plain">) == </span><span class="reserved">false</span><span class="plain">)</span>
|
|
<span class="identifier">DARKNESS_NAME_INTERNAL_RM</span><span class="plain">(</span><span class="character">'A'</span><span class="plain">);</span>
|
|
<span class="identifier">EndActivity</span><span class="plain">(</span><span class="identifier">PRINTING_NAME_OF_DARK_ROOM_ACT</span><span class="plain">);</span>
|
|
<span class="plain">} </span><span class="reserved">else</span><span class="plain"> {</span>
|
|
<span class="identifier">FindVisibilityLevels</span><span class="plain">();</span>
|
|
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">visibility_ceiling</span><span class="plain"> == </span><span class="identifier">location</span><span class="plain">) </span><span class="reserved">print</span><span class="plain"> (</span><span class="identifier">name</span><span class="plain">) </span><span class="identifier">location</span><span class="plain">;</span>
|
|
<span class="reserved">else</span><span class="plain"> </span><span class="reserved">print</span><span class="plain"> (</span><span class="identifier">The</span><span class="plain">) </span><span class="identifier">visibility_ceiling</span><span class="plain">;</span>
|
|
<span class="plain">}</span>
|
|
<span class="plain">];</span>
|
|
|
|
<span class="plain">[ </span><span class="identifier">DARKNESS_NAME_INTERNAL_R</span><span class="plain">; ];</span>
|
|
</pre>
|
|
|
|
<p class="inwebparagraph"></p>
|
|
|
|
<p class="inwebparagraph"><a id="SP7"></a><b>§7. Banner. </b>Note that Inform always compiles <code class="display"><span class="extract">Story</span></code> and <code class="display"><span class="extract">Headline</span></code> texts, but does not always
|
|
compile a <code class="display"><span class="extract">Story_Author</span></code>.
|
|
</p>
|
|
|
|
<pre class="display">
|
|
<span class="plain">[ </span><span class="identifier">Banner</span><span class="plain">;</span>
|
|
<span class="plain"> </span><span class="identifier">BeginActivity</span><span class="plain">(</span><span class="identifier">PRINTING_BANNER_TEXT_ACT</span><span class="plain">);</span>
|
|
<span class="plain"> </span><span class="reserved">if</span><span class="plain"> (</span><span class="identifier">ForActivity</span><span class="plain">(</span><span class="identifier">PRINTING_BANNER_TEXT_ACT</span><span class="plain">) == </span><span class="reserved">false</span><span class="plain">) {</span>
|
|
<span class="identifier">VM_Style</span><span class="plain">(</span><span class="identifier">HEADER_VMSTY</span><span class="plain">);</span>
|
|
<span class="identifier">TEXT_TY_Say</span><span class="plain">(</span><span class="identifier">Story</span><span class="plain">);</span>
|
|
<span class="identifier">VM_Style</span><span class="plain">(</span><span class="identifier">NORMAL_VMSTY</span><span class="plain">);</span>
|
|
<span class="reserved">new_line</span><span class="plain">;</span>
|
|
<span class="identifier">TEXT_TY_Say</span><span class="plain">(</span><span class="identifier">Headline</span><span class="plain">);</span>
|
|
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">TEMPLATE_CONFIGURATION_BITMAP</span><span class="plain"> & </span><span class="identifier">STORY_AUTHOR_TCBIT</span><span class="plain">) {</span>
|
|
<span class="reserved">print</span><span class="plain"> </span><span class="string">" by "</span><span class="plain">; </span><span class="identifier">TEXT_TY_Say</span><span class="plain">(</span><span class="identifier">Story_Author</span><span class="plain">);</span>
|
|
<span class="plain">}</span>
|
|
<span class="reserved">new_line</span><span class="plain">;</span>
|
|
<span class="identifier">VM_Describe_Release</span><span class="plain">();</span>
|
|
<span class="reserved">print</span><span class="plain"> </span><span class="string">" / Inform 7 build "</span><span class="plain">, (</span><span class="identifier">PrintI6Text</span><span class="plain">) </span><span class="identifier">NI_BUILD_COUNT</span><span class="plain">, </span><span class="string">" "</span><span class="plain">;</span>
|
|
<span class="reserved">print</span><span class="plain"> </span><span class="string">"(I6/v"</span><span class="plain">; </span><span class="reserved">inversion</span><span class="plain">;</span>
|
|
<span class="reserved">print</span><span class="plain"> </span><span class="string">") "</span><span class="plain">;</span>
|
|
<span class="plain">#</span><span class="identifier">Ifdef</span><span class="plain"> </span><span class="identifier">STRICT_MODE</span><span class="plain">;</span>
|
|
<span class="reserved">print</span><span class="plain"> </span><span class="string">"S"</span><span class="plain">;</span>
|
|
<span class="plain">#</span><span class="identifier">Endif</span><span class="plain">; </span><span class="comment">STRICT_MODE</span>
|
|
<span class="plain">#</span><span class="identifier">Ifdef</span><span class="plain"> </span><span class="identifier">DEBUG</span><span class="plain">;</span>
|
|
<span class="reserved">print</span><span class="plain"> </span><span class="string">"D"</span><span class="plain">;</span>
|
|
<span class="plain">#</span><span class="identifier">Endif</span><span class="plain">; </span><span class="comment">DEBUG</span>
|
|
<span class="reserved">new_line</span><span class="plain">;</span>
|
|
<span class="plain">}</span>
|
|
<span class="identifier">EndActivity</span><span class="plain">(</span><span class="identifier">PRINTING_BANNER_TEXT_ACT</span><span class="plain">);</span>
|
|
<span class="plain">];</span>
|
|
</pre>
|
|
|
|
<p class="inwebparagraph"></p>
|
|
|
|
<p class="inwebparagraph"><a id="SP8"></a><b>§8. Short Name Storage. </b>None of the following functions should be called for the Z-machine if the
|
|
short name exceeds the size of the following buffer: whereas the Glulx
|
|
implementation of <code class="display"><span class="extract">VM_PrintToBuffer</span></code> will safely truncate overlong text,
|
|
that's impossible for the Z-machine, and horrible results will follow.
|
|
</p>
|
|
|
|
<p class="inwebparagraph"><code class="display"><span class="extract">CPrintOrRun</span></code> is a variation on <code class="display"><span class="extract">PrintOrRun</span></code>, simplified by not needing
|
|
to handle entire paragraphs (so, no fuss about dividing) but complicated
|
|
by having to capitalise the first letter. We do this by writing to the
|
|
buffer and then altering the first character.
|
|
</p>
|
|
|
|
<pre class="display">
|
|
<span class="reserved">Array</span><span class="plain"> </span><span class="identifier">StorageForShortName</span><span class="plain"> </span><span class="identifier">buffer</span><span class="plain"> </span><span class="constant">250</span><span class="plain">;</span>
|
|
|
|
<span class="plain">[ </span><span class="identifier">CPrintOrRun</span><span class="plain"> </span><span class="identifier">obj</span><span class="plain"> </span><span class="identifier">prop</span><span class="plain"> </span><span class="identifier">v</span><span class="plain"> </span><span class="identifier">length</span><span class="plain"> </span><span class="identifier">i</span><span class="plain">;</span>
|
|
<span class="reserved">if</span><span class="plain"> ((</span><span class="identifier">obj</span><span class="plain"> </span><span class="reserved">ofclass</span><span class="plain"> </span><span class="identifier">String</span><span class="plain"> </span><span class="reserved">or</span><span class="plain"> </span><span class="identifier">Routine</span><span class="plain">) || (</span><span class="identifier">prop</span><span class="plain"> == </span><span class="constant">0</span><span class="plain">))</span>
|
|
<span class="identifier">VM_PrintToBuffer</span><span class="plain"> (</span><span class="identifier">StorageForShortName</span><span class="plain">, </span><span class="constant">160</span><span class="plain">, </span><span class="identifier">obj</span><span class="plain">);</span>
|
|
<span class="reserved">else</span><span class="plain"> {</span>
|
|
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">obj</span><span class="plain">.</span><span class="identifier">prop</span><span class="plain"> == </span><span class="identifier">NULL</span><span class="plain">) </span><span class="reserved">rfalse</span><span class="plain">;</span>
|
|
<span class="reserved">if</span><span class="plain"> (</span><span class="reserved">metaclass</span><span class="plain">(</span><span class="identifier">obj</span><span class="plain">.</span><span class="identifier">prop</span><span class="plain">) == </span><span class="identifier">Routine</span><span class="plain"> </span><span class="reserved">or</span><span class="plain"> </span><span class="identifier">String</span><span class="plain">)</span>
|
|
<span class="identifier">VM_PrintToBuffer</span><span class="plain">(</span><span class="identifier">StorageForShortName</span><span class="plain">, </span><span class="constant">160</span><span class="plain">, </span><span class="identifier">obj</span><span class="plain">, </span><span class="identifier">prop</span><span class="plain">);</span>
|
|
<span class="reserved">else</span><span class="plain"> </span><span class="reserved">return</span><span class="plain"> </span><span class="identifier">RunTimeError</span><span class="plain">(2, </span><span class="identifier">obj</span><span class="plain">, </span><span class="identifier">prop</span><span class="plain">);</span>
|
|
<span class="plain">}</span>
|
|
|
|
<span class="identifier">length</span><span class="plain"> = </span><span class="identifier">StorageForShortName</span><span class="plain">-->0;</span>
|
|
|
|
<span class="identifier">StorageForShortName</span><span class="plain">-></span><span class="identifier">WORDSIZE</span><span class="plain"> = </span><span class="identifier">VM_LowerToUpperCase</span><span class="plain">(</span><span class="identifier">StorageForShortName</span><span class="plain">-></span><span class="identifier">WORDSIZE</span><span class="plain">);</span>
|
|
<span class="reserved">for</span><span class="plain"> (</span><span class="identifier">i</span><span class="plain">=</span><span class="identifier">WORDSIZE</span><span class="plain">: </span><span class="identifier">i</span><span class="plain"><</span><span class="identifier">length</span><span class="plain">+</span><span class="identifier">WORDSIZE</span><span class="plain">: </span><span class="identifier">i</span><span class="plain">++) </span><span class="reserved">print</span><span class="plain"> (</span><span class="identifier">char</span><span class="plain">) </span><span class="identifier">StorageForShortName</span><span class="plain">-></span><span class="identifier">i</span><span class="plain">;</span>
|
|
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">i</span><span class="plain">></span><span class="identifier">WORDSIZE</span><span class="plain">) </span><span class="identifier">say__p</span><span class="plain"> = </span><span class="constant">1</span><span class="plain">;</span>
|
|
|
|
<span class="reserved">return</span><span class="plain">;</span>
|
|
<span class="plain">];</span>
|
|
|
|
<span class="plain">[ </span><span class="identifier">Cap</span><span class="plain"> </span><span class="identifier">str</span><span class="plain"> </span><span class="identifier">nocaps</span><span class="plain">;</span>
|
|
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">nocaps</span><span class="plain">) </span><span class="reserved">print</span><span class="plain"> (</span><span class="reserved">string</span><span class="plain">) </span><span class="identifier">str</span><span class="plain">;</span>
|
|
<span class="reserved">else</span><span class="plain"> </span><span class="identifier">CPrintOrRun</span><span class="plain">(</span><span class="identifier">str</span><span class="plain">, </span><span class="constant">0</span><span class="plain">);</span>
|
|
<span class="plain">];</span>
|
|
</pre>
|
|
|
|
<p class="inwebparagraph"></p>
|
|
|
|
<p class="inwebparagraph"><a id="SP9"></a><b>§9. Object Names I. </b>We now begin the work of printing object names. In the lowest level of this
|
|
process we print just the name itself (without articles attached), and we
|
|
do it by carrying out an activity.
|
|
</p>
|
|
|
|
<pre class="display">
|
|
<span class="plain">[ </span><span class="identifier">PSN__</span><span class="plain"> </span><span class="identifier">o</span><span class="plain">;</span>
|
|
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">o</span><span class="plain"> == </span><span class="constant">0</span><span class="plain">) { </span><span class="identifier">LIST_WRITER_INTERNAL_RM</span><span class="plain">(</span><span class="character">'Y'</span><span class="plain">); </span><span class="reserved">rtrue</span><span class="plain">; }</span>
|
|
<span class="reserved">switch</span><span class="plain"> (</span><span class="reserved">metaclass</span><span class="plain">(</span><span class="identifier">o</span><span class="plain">)) {</span>
|
|
<span class="identifier">Routine</span><span class="plain">: </span><span class="reserved">print</span><span class="plain"> </span><span class="string">"<routine "</span><span class="plain">, </span><span class="identifier">o</span><span class="plain">, </span><span class="string">">"</span><span class="plain">; </span><span class="reserved">rtrue</span><span class="plain">;</span>
|
|
<span class="identifier">String</span><span class="plain">: </span><span class="reserved">print</span><span class="plain"> </span><span class="string">"<string ~"</span><span class="plain">, (</span><span class="reserved">string</span><span class="plain">) </span><span class="identifier">o</span><span class="plain">, </span><span class="string">"~>"</span><span class="plain">; </span><span class="reserved">rtrue</span><span class="plain">;</span>
|
|
<span class="reserved">nothing</span><span class="plain">: </span><span class="reserved">print</span><span class="plain"> </span><span class="string">"<illegal object number "</span><span class="plain">, </span><span class="identifier">o</span><span class="plain">, </span><span class="string">">"</span><span class="plain">; </span><span class="reserved">rtrue</span><span class="plain">;</span>
|
|
<span class="plain">}</span>
|
|
<span class="identifier">RegardingSingleObject</span><span class="plain">(</span><span class="identifier">o</span><span class="plain">);</span>
|
|
<span class="identifier">CarryOutActivity</span><span class="plain">(</span><span class="identifier">PRINTING_THE_NAME_ACT</span><span class="plain">, </span><span class="identifier">o</span><span class="plain">);</span>
|
|
<span class="plain">];</span>
|
|
|
|
<span class="plain">[ </span><span class="identifier">PrintShortName</span><span class="plain"> </span><span class="identifier">obj</span><span class="plain"> </span><span class="identifier">i</span><span class="plain">;</span>
|
|
<span class="identifier">i</span><span class="plain"> = </span><span class="identifier">indef_mode</span><span class="plain">; </span><span class="identifier">indef_mode</span><span class="plain"> = </span><span class="identifier">NULL</span><span class="plain">;</span>
|
|
<span class="identifier">PSN__</span><span class="plain">(</span><span class="identifier">obj</span><span class="plain">); </span><span class="identifier">indef_mode</span><span class="plain"> = </span><span class="identifier">i</span><span class="plain">;</span>
|
|
<span class="plain">];</span>
|
|
</pre>
|
|
|
|
<p class="inwebparagraph"></p>
|
|
|
|
<p class="inwebparagraph"><a id="SP10"></a><b>§10. Standard Name Printing Rule. </b>In its initial state, the "printing the name of" activity has just one rule:
|
|
the following "for" rule.
|
|
</p>
|
|
|
|
<pre class="display">
|
|
<span class="identifier">Global</span><span class="plain"> </span><span class="identifier">caps_mode</span><span class="plain"> = </span><span class="reserved">false</span><span class="plain">;</span>
|
|
|
|
<span class="plain">[ </span><span class="identifier">STANDARD_NAME_PRINTING_R</span><span class="plain"> </span><span class="identifier">obj</span><span class="plain">;</span>
|
|
<span class="identifier">obj</span><span class="plain"> = </span><span class="identifier">parameter_value</span><span class="plain">;</span>
|
|
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">obj</span><span class="plain"> == </span><span class="constant">0</span><span class="plain">) {</span>
|
|
<span class="identifier">LIST_WRITER_INTERNAL_RM</span><span class="plain">(</span><span class="character">'Y'</span><span class="plain">); </span><span class="reserved">return</span><span class="plain">;</span>
|
|
<span class="plain">}</span>
|
|
<span class="reserved">switch</span><span class="plain"> (</span><span class="reserved">metaclass</span><span class="plain">(</span><span class="identifier">obj</span><span class="plain">)) {</span>
|
|
<span class="identifier">Routine</span><span class="plain">: </span><span class="reserved">print</span><span class="plain"> </span><span class="string">"<routine "</span><span class="plain">, </span><span class="identifier">obj</span><span class="plain">, </span><span class="string">">"</span><span class="plain">; </span><span class="reserved">return</span><span class="plain">;</span>
|
|
<span class="identifier">String</span><span class="plain">: </span><span class="reserved">print</span><span class="plain"> </span><span class="string">"<string ~"</span><span class="plain">, (</span><span class="reserved">string</span><span class="plain">) </span><span class="identifier">obj</span><span class="plain">, </span><span class="string">"~>"</span><span class="plain">; </span><span class="reserved">return</span><span class="plain">;</span>
|
|
<span class="reserved">nothing</span><span class="plain">: </span><span class="reserved">print</span><span class="plain"> </span><span class="string">"<illegal object number "</span><span class="plain">, </span><span class="identifier">obj</span><span class="plain">, </span><span class="string">">"</span><span class="plain">; </span><span class="reserved">return</span><span class="plain">;</span>
|
|
<span class="plain">}</span>
|
|
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">obj</span><span class="plain"> == </span><span class="identifier">player</span><span class="plain">) {</span>
|
|
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">indef_mode</span><span class="plain"> == </span><span class="identifier">NULL</span><span class="plain"> && </span><span class="identifier">caps_mode</span><span class="plain">) </span><span class="identifier">PRINT_PROTAGONIST_INTERNAL_RM</span><span class="plain">(</span><span class="character">'A'</span><span class="plain">);</span>
|
|
<span class="reserved">else</span><span class="plain"> </span><span class="identifier">PRINT_PROTAGONIST_INTERNAL_RM</span><span class="plain">(</span><span class="character">'B'</span><span class="plain">);</span>
|
|
<span class="reserved">return</span><span class="plain">;</span>
|
|
<span class="plain">}</span>
|
|
<span class="plain">#</span><span class="identifier">Ifdef</span><span class="plain"> </span><span class="identifier">LanguagePrintShortName</span><span class="plain">;</span>
|
|
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">LanguagePrintShortName</span><span class="plain">(</span><span class="identifier">obj</span><span class="plain">)) </span><span class="reserved">return</span><span class="plain">;</span>
|
|
<span class="plain">#</span><span class="identifier">Endif</span><span class="plain">; </span><span class="comment">LanguagePrintShortName</span>
|
|
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">indef_mode</span><span class="plain"> && </span><span class="identifier">obj</span><span class="plain">.&</span><span class="identifier">short_name_indef</span><span class="plain"> ~= </span><span class="constant">0</span><span class="plain"> &&</span>
|
|
<span class="identifier">PrintOrRun</span><span class="plain">(</span><span class="identifier">obj</span><span class="plain">, </span><span class="identifier">short_name_indef</span><span class="plain">, </span><span class="reserved">true</span><span class="plain">) ~= </span><span class="constant">0</span><span class="plain">) </span><span class="reserved">return</span><span class="plain">;</span>
|
|
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">caps_mode</span><span class="plain"> &&</span>
|
|
<span class="identifier">obj</span><span class="plain">.&</span><span class="identifier">cap_short_name</span><span class="plain"> ~= </span><span class="constant">0</span><span class="plain"> && </span><span class="identifier">PrintOrRun</span><span class="plain">(</span><span class="identifier">obj</span><span class="plain">, </span><span class="identifier">cap_short_name</span><span class="plain">, </span><span class="reserved">true</span><span class="plain">) ~= </span><span class="constant">0</span><span class="plain">) {</span>
|
|
<span class="identifier">caps_mode</span><span class="plain"> = </span><span class="reserved">false</span><span class="plain">;</span>
|
|
<span class="reserved">return</span><span class="plain">;</span>
|
|
<span class="plain">}</span>
|
|
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">obj</span><span class="plain">.&</span><span class="identifier">short_name</span><span class="plain"> ~= </span><span class="constant">0</span><span class="plain"> && </span><span class="identifier">PrintOrRun</span><span class="plain">(</span><span class="identifier">obj</span><span class="plain">, </span><span class="identifier">short_name</span><span class="plain">, </span><span class="reserved">true</span><span class="plain">) ~= </span><span class="constant">0</span><span class="plain">) </span><span class="reserved">return</span><span class="plain">;</span>
|
|
<span class="reserved">print</span><span class="plain"> (</span><span class="identifier">object</span><span class="plain">) </span><span class="identifier">obj</span><span class="plain">;</span>
|
|
<span class="plain">];</span>
|
|
|
|
<span class="plain">[ </span><span class="identifier">STANDARD_PLURAL_NAME_PRINTING_R</span><span class="plain"> </span><span class="identifier">obj</span><span class="plain">;</span>
|
|
<span class="identifier">obj</span><span class="plain"> = </span><span class="identifier">parameter_value</span><span class="plain">;</span>
|
|
<span class="identifier">PrintOrRun</span><span class="plain">(</span><span class="identifier">obj</span><span class="plain">, </span><span class="identifier">plural</span><span class="plain">, </span><span class="reserved">true</span><span class="plain">);</span>
|
|
<span class="plain">];</span>
|
|
</pre>
|
|
|
|
<p class="inwebparagraph"></p>
|
|
|
|
<p class="inwebparagraph"><a id="SP11"></a><b>§11. Internal Rule. </b></p>
|
|
|
|
<pre class="display">
|
|
<span class="plain">[ </span><span class="identifier">PRINT_PROTAGONIST_INTERNAL_R</span><span class="plain">; ];</span>
|
|
</pre>
|
|
|
|
<p class="inwebparagraph"></p>
|
|
|
|
<p class="inwebparagraph"><a id="SP12"></a><b>§12. Object Names II. </b>The second level of the system for printing object names handles the placing
|
|
of articles in front of them: {\it the} red herring, {\it an} elephant,
|
|
{\it Some} bread. The following routine allows us to choose:
|
|
</p>
|
|
|
|
<p class="inwebparagraph"></p>
|
|
|
|
<ul class="items"><li>(a) <code class="display"><span class="extract">obj</span></code>, the object whose name is to be printed;
|
|
</li><li>(b) <code class="display"><span class="extract">acode</span></code>, the kind of article needed: capitalised definite (0), lower case
|
|
uncapitalised definite (1), or uncapitalised indefinite (2);
|
|
</li><li>(c) <code class="display"><span class="extract">pluralise</span></code>, a flag forcing to a plural form (e.g., "some" being the
|
|
pluralised form of an indefinite article in English);
|
|
</li><li>(d) <code class="display"><span class="extract">capitalise</span></code>, a flag forcing us to capitalise the article — it's by
|
|
setting this that we can achieve the fourth option missing from (b), viz.,
|
|
capitalised indefinite. (All of this is a legacy design from a time when
|
|
the I6 library did not support capitalised indefinite articles.)
|
|
</li></ul>
|
|
<p class="inwebparagraph">The routine then looks after issues such as which contraction form to
|
|
use: for instance, in English, whether to use "a" or "an" for the
|
|
indefinite singular depends on the text of the object's name.
|
|
</p>
|
|
|
|
<pre class="display">
|
|
<span class="identifier">Global</span><span class="plain"> </span><span class="identifier">short_name_case</span><span class="plain">;</span>
|
|
|
|
<span class="plain">[ </span><span class="identifier">PrefaceByArticle</span><span class="plain"> </span><span class="identifier">obj</span><span class="plain"> </span><span class="identifier">acode</span><span class="plain"> </span><span class="identifier">pluralise</span><span class="plain"> </span><span class="identifier">capitalise</span><span class="plain"> </span><span class="identifier">i</span><span class="plain"> </span><span class="identifier">artform</span><span class="plain"> </span><span class="identifier">findout</span><span class="plain"> </span><span class="identifier">artval</span><span class="plain">;</span>
|
|
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">obj</span><span class="plain"> </span><span class="reserved">provides</span><span class="plain"> </span><span class="identifier">articles</span><span class="plain">) {</span>
|
|
<span class="identifier">artval</span><span class="plain">=(</span><span class="identifier">obj</span><span class="plain">.&</span><span class="identifier">articles</span><span class="plain">)-->(</span><span class="identifier">acode</span><span class="plain">+</span><span class="identifier">short_name_case</span><span class="plain">*</span><span class="identifier">LanguageCases</span><span class="plain">);</span>
|
|
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">capitalise</span><span class="plain">)</span>
|
|
<span class="reserved">print</span><span class="plain"> (</span><span class="identifier">Cap</span><span class="plain">) </span><span class="identifier">artval</span><span class="plain">, </span><span class="string">" "</span><span class="plain">;</span>
|
|
<span class="reserved">else</span>
|
|
<span class="reserved">print</span><span class="plain"> (</span><span class="reserved">string</span><span class="plain">) </span><span class="identifier">artval</span><span class="plain">, </span><span class="string">" "</span><span class="plain">;</span>
|
|
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">pluralise</span><span class="plain">) </span><span class="reserved">return</span><span class="plain">;</span>
|
|
<span class="reserved">print</span><span class="plain"> (</span><span class="identifier">PSN__</span><span class="plain">) </span><span class="identifier">obj</span><span class="plain">; </span><span class="reserved">return</span><span class="plain">;</span>
|
|
<span class="plain">}</span>
|
|
|
|
<span class="identifier">i</span><span class="plain"> = </span><span class="identifier">GetGNAOfObject</span><span class="plain">(</span><span class="identifier">obj</span><span class="plain">);</span>
|
|
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">pluralise</span><span class="plain">) {</span>
|
|
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">i</span><span class="plain"> < </span><span class="constant">3</span><span class="plain"> || (</span><span class="identifier">i</span><span class="plain"> >= </span><span class="constant">6</span><span class="plain"> && </span><span class="identifier">i</span><span class="plain"> < </span><span class="constant">9</span><span class="plain">)) </span><span class="identifier">i</span><span class="plain"> = </span><span class="identifier">i</span><span class="plain"> + </span><span class="constant">3</span><span class="plain">;</span>
|
|
<span class="plain">}</span>
|
|
<span class="identifier">i</span><span class="plain"> = </span><span class="identifier">LanguageGNAsToArticles</span><span class="plain">--></span><span class="identifier">i</span><span class="plain">;</span>
|
|
|
|
<span class="identifier">artform</span><span class="plain"> = </span><span class="identifier">LanguageArticles</span>
|
|
<span class="plain">+ </span><span class="constant">3</span><span class="plain">*</span><span class="identifier">WORDSIZE</span><span class="plain">*</span><span class="identifier">LanguageContractionForms</span><span class="plain">*(</span><span class="identifier">short_name_case</span><span class="plain"> + </span><span class="identifier">i</span><span class="plain">*</span><span class="identifier">LanguageCases</span><span class="plain">);</span>
|
|
|
|
<span class="reserved">switch</span><span class="plain"> (</span><span class="identifier">LanguageContractionForms</span><span class="plain">) {</span>
|
|
<span class="constant">2</span><span class="plain">: </span><span class="reserved">if</span><span class="plain"> (</span><span class="identifier">artform</span><span class="plain">--></span><span class="identifier">acode</span><span class="plain"> ~= </span><span class="identifier">artform</span><span class="plain">-->(</span><span class="identifier">acode</span><span class="plain">+3)) </span><span class="identifier">findout</span><span class="plain"> = </span><span class="reserved">true</span><span class="plain">;</span>
|
|
<span class="constant">3</span><span class="plain">: </span><span class="reserved">if</span><span class="plain"> (</span><span class="identifier">artform</span><span class="plain">--></span><span class="identifier">acode</span><span class="plain"> ~= </span><span class="identifier">artform</span><span class="plain">-->(</span><span class="identifier">acode</span><span class="plain">+3)) </span><span class="identifier">findout</span><span class="plain"> = </span><span class="reserved">true</span><span class="plain">;</span>
|
|
<span class="plain"> </span><span class="reserved">if</span><span class="plain"> (</span><span class="identifier">artform</span><span class="plain">-->(</span><span class="identifier">acode</span><span class="plain">+3) ~= </span><span class="identifier">artform</span><span class="plain">-->(</span><span class="identifier">acode</span><span class="plain">+6)) </span><span class="identifier">findout</span><span class="plain"> = </span><span class="reserved">true</span><span class="plain">;</span>
|
|
<span class="constant">4</span><span class="plain">: </span><span class="reserved">if</span><span class="plain"> (</span><span class="identifier">artform</span><span class="plain">--></span><span class="identifier">acode</span><span class="plain"> ~= </span><span class="identifier">artform</span><span class="plain">-->(</span><span class="identifier">acode</span><span class="plain">+3)) </span><span class="identifier">findout</span><span class="plain"> = </span><span class="reserved">true</span><span class="plain">;</span>
|
|
<span class="plain"> </span><span class="reserved">if</span><span class="plain"> (</span><span class="identifier">artform</span><span class="plain">-->(</span><span class="identifier">acode</span><span class="plain">+3) ~= </span><span class="identifier">artform</span><span class="plain">-->(</span><span class="identifier">acode</span><span class="plain">+6)) </span><span class="identifier">findout</span><span class="plain"> = </span><span class="reserved">true</span><span class="plain">;</span>
|
|
<span class="plain"> </span><span class="reserved">if</span><span class="plain"> (</span><span class="identifier">artform</span><span class="plain">-->(</span><span class="identifier">acode</span><span class="plain">+6) ~= </span><span class="identifier">artform</span><span class="plain">-->(</span><span class="identifier">acode</span><span class="plain">+9)) </span><span class="identifier">findout</span><span class="plain"> = </span><span class="reserved">true</span><span class="plain">;</span>
|
|
<span class="reserved">default</span><span class="plain">: </span><span class="identifier">findout</span><span class="plain"> = </span><span class="reserved">true</span><span class="plain">;</span>
|
|
<span class="plain">}</span>
|
|
<span class="plain">#</span><span class="identifier">Ifdef</span><span class="plain"> </span><span class="identifier">TARGET_ZCODE</span><span class="plain">;</span>
|
|
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">standard_interpreter</span><span class="plain"> ~= </span><span class="constant">0</span><span class="plain"> && </span><span class="identifier">findout</span><span class="plain">) {</span>
|
|
<span class="identifier">StorageForShortName</span><span class="plain">-->0 = </span><span class="constant">160</span><span class="plain">;</span>
|
|
<span class="plain">@</span><span class="identifier">output_stream</span><span class="plain"> </span><span class="constant">3</span><span class="plain"> </span><span class="identifier">StorageForShortName</span><span class="plain">;</span>
|
|
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">pluralise</span><span class="plain">) </span><span class="reserved">print</span><span class="plain"> (</span><span class="identifier">number</span><span class="plain">) </span><span class="identifier">pluralise</span><span class="plain">; </span><span class="reserved">else</span><span class="plain"> </span><span class="reserved">print</span><span class="plain"> (</span><span class="identifier">PSN__</span><span class="plain">) </span><span class="identifier">obj</span><span class="plain">;</span>
|
|
<span class="plain">@</span><span class="identifier">output_stream</span><span class="plain"> -3;</span>
|
|
<span class="identifier">acode</span><span class="plain"> = </span><span class="identifier">acode</span><span class="plain"> + </span><span class="constant">3</span><span class="plain">*</span><span class="identifier">LanguageContraction</span><span class="plain">(</span><span class="identifier">StorageForShortName</span><span class="plain"> + </span><span class="constant">2</span><span class="plain">);</span>
|
|
<span class="plain">}</span>
|
|
<span class="plain">#</span><span class="identifier">Ifnot</span><span class="plain">; </span><span class="comment">TARGET_GLULX</span>
|
|
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">findout</span><span class="plain">) {</span>
|
|
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">pluralise</span><span class="plain">)</span>
|
|
<span class="identifier">Glulx_PrintAnyToArray</span><span class="plain">(</span><span class="identifier">StorageForShortName</span><span class="plain">, </span><span class="constant">160</span><span class="plain">, </span><span class="identifier">EnglishNumber</span><span class="plain">, </span><span class="identifier">pluralise</span><span class="plain">);</span>
|
|
<span class="reserved">else</span>
|
|
<span class="identifier">Glulx_PrintAnyToArray</span><span class="plain">(</span><span class="identifier">StorageForShortName</span><span class="plain">, </span><span class="constant">160</span><span class="plain">, </span><span class="identifier">PSN__</span><span class="plain">, </span><span class="identifier">obj</span><span class="plain">);</span>
|
|
<span class="identifier">acode</span><span class="plain"> = </span><span class="identifier">acode</span><span class="plain"> + </span><span class="constant">3</span><span class="plain">*</span><span class="identifier">LanguageContraction</span><span class="plain">(</span><span class="identifier">StorageForShortName</span><span class="plain">);</span>
|
|
<span class="plain">}</span>
|
|
<span class="plain">#</span><span class="identifier">Endif</span><span class="plain">; </span><span class="comment">TARGET_</span>
|
|
|
|
<span class="identifier">Cap</span><span class="plain"> (</span><span class="identifier">artform</span><span class="plain">--></span><span class="identifier">acode</span><span class="plain">, ~~</span><span class="identifier">capitalise</span><span class="plain">); </span><span class="comment">print article</span>
|
|
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">pluralise</span><span class="plain">) </span><span class="reserved">return</span><span class="plain">;</span>
|
|
<span class="reserved">print</span><span class="plain"> (</span><span class="identifier">PSN__</span><span class="plain">) </span><span class="identifier">obj</span><span class="plain">;</span>
|
|
<span class="plain">];</span>
|
|
</pre>
|
|
|
|
<p class="inwebparagraph"></p>
|
|
|
|
<p class="inwebparagraph"><a id="SP13"></a><b>§13. Object Names III. </b>The routines accessible from outside this segment.
|
|
</p>
|
|
|
|
<pre class="display">
|
|
<span class="plain">[ </span><span class="identifier">IndefArt</span><span class="plain"> </span><span class="identifier">obj</span><span class="plain"> </span><span class="identifier">i</span><span class="plain">;</span>
|
|
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">obj</span><span class="plain"> == </span><span class="constant">0</span><span class="plain">) { </span><span class="identifier">LIST_WRITER_INTERNAL_RM</span><span class="plain">(</span><span class="character">'Y'</span><span class="plain">); </span><span class="reserved">rtrue</span><span class="plain">; }</span>
|
|
<span class="identifier">i</span><span class="plain"> = </span><span class="identifier">indef_mode</span><span class="plain">; </span><span class="identifier">indef_mode</span><span class="plain"> = </span><span class="reserved">true</span><span class="plain">;</span>
|
|
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">obj</span><span class="plain"> </span><span class="reserved">has</span><span class="plain"> </span><span class="identifier">proper</span><span class="plain">) { </span><span class="identifier">indef_mode</span><span class="plain"> = </span><span class="identifier">NULL</span><span class="plain">; </span><span class="reserved">print</span><span class="plain"> (</span><span class="identifier">PSN__</span><span class="plain">) </span><span class="identifier">obj</span><span class="plain">; </span><span class="identifier">indef_mode</span><span class="plain"> = </span><span class="identifier">i</span><span class="plain">; </span><span class="reserved">return</span><span class="plain">; }</span>
|
|
<span class="reserved">if</span><span class="plain"> ((</span><span class="identifier">obj</span><span class="plain"> </span><span class="reserved">provides</span><span class="plain"> </span><span class="identifier">article</span><span class="plain">) && (</span><span class="identifier">TEXT_TY_Compare</span><span class="plain">(</span><span class="identifier">obj</span><span class="plain">.</span><span class="identifier">article</span><span class="plain">, </span><span class="identifier">EMPTY_TEXT_VALUE</span><span class="plain">) ~= </span><span class="constant">0</span><span class="plain">)) {</span>
|
|
<span class="identifier">PrintOrRun</span><span class="plain">(</span><span class="identifier">obj</span><span class="plain">, </span><span class="identifier">article</span><span class="plain">, </span><span class="reserved">true</span><span class="plain">); </span><span class="reserved">print</span><span class="plain"> </span><span class="string">" "</span><span class="plain">, (</span><span class="identifier">PSN__</span><span class="plain">) </span><span class="identifier">obj</span><span class="plain">; </span><span class="identifier">indef_mode</span><span class="plain"> = </span><span class="identifier">i</span><span class="plain">;</span>
|
|
<span class="reserved">return</span><span class="plain">;</span>
|
|
<span class="plain">}</span>
|
|
<span class="identifier">PrefaceByArticle</span><span class="plain">(</span><span class="identifier">obj</span><span class="plain">, </span><span class="constant">2</span><span class="plain">); </span><span class="identifier">indef_mode</span><span class="plain"> = </span><span class="identifier">i</span><span class="plain">;</span>
|
|
<span class="plain">];</span>
|
|
|
|
<span class="plain">[ </span><span class="identifier">CIndefArt</span><span class="plain"> </span><span class="identifier">obj</span><span class="plain"> </span><span class="identifier">i</span><span class="plain">;</span>
|
|
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">obj</span><span class="plain"> == </span><span class="constant">0</span><span class="plain">) { </span><span class="identifier">LIST_WRITER_INTERNAL_RM</span><span class="plain">(</span><span class="character">'X'</span><span class="plain">); </span><span class="reserved">rtrue</span><span class="plain">; }</span>
|
|
<span class="identifier">i</span><span class="plain"> = </span><span class="identifier">indef_mode</span><span class="plain">; </span><span class="identifier">indef_mode</span><span class="plain"> = </span><span class="reserved">true</span><span class="plain">;</span>
|
|
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">obj</span><span class="plain"> </span><span class="reserved">has</span><span class="plain"> </span><span class="identifier">proper</span><span class="plain">) {</span>
|
|
<span class="identifier">indef_mode</span><span class="plain"> = </span><span class="identifier">NULL</span><span class="plain">;</span>
|
|
<span class="identifier">caps_mode</span><span class="plain"> = </span><span class="reserved">true</span><span class="plain">;</span>
|
|
<span class="reserved">print</span><span class="plain"> (</span><span class="identifier">PSN__</span><span class="plain">) </span><span class="identifier">obj</span><span class="plain">;</span>
|
|
<span class="identifier">indef_mode</span><span class="plain"> = </span><span class="identifier">i</span><span class="plain">;</span>
|
|
<span class="identifier">caps_mode</span><span class="plain"> = </span><span class="reserved">false</span><span class="plain">;</span>
|
|
<span class="reserved">return</span><span class="plain">;</span>
|
|
<span class="plain">}</span>
|
|
<span class="reserved">if</span><span class="plain"> ((</span><span class="identifier">obj</span><span class="plain"> </span><span class="reserved">provides</span><span class="plain"> </span><span class="identifier">article</span><span class="plain">) && (</span><span class="identifier">TEXT_TY_Compare</span><span class="plain">(</span><span class="identifier">obj</span><span class="plain">.</span><span class="identifier">article</span><span class="plain">, </span><span class="identifier">EMPTY_TEXT_VALUE</span><span class="plain">) ~= </span><span class="constant">0</span><span class="plain">)) {</span>
|
|
<span class="identifier">TEXT_TY_Say_Capitalised</span><span class="plain">(</span><span class="identifier">obj</span><span class="plain">.</span><span class="identifier">article</span><span class="plain">); </span><span class="reserved">print</span><span class="plain"> </span><span class="string">" "</span><span class="plain">, (</span><span class="identifier">PSN__</span><span class="plain">) </span><span class="identifier">obj</span><span class="plain">; </span><span class="identifier">indef_mode</span><span class="plain"> = </span><span class="identifier">i</span><span class="plain">;</span>
|
|
<span class="reserved">return</span><span class="plain">;</span>
|
|
<span class="plain">}</span>
|
|
<span class="identifier">PrefaceByArticle</span><span class="plain">(</span><span class="identifier">obj</span><span class="plain">, </span><span class="constant">2</span><span class="plain">, </span><span class="constant">0</span><span class="plain">, </span><span class="constant">1</span><span class="plain">); </span><span class="identifier">indef_mode</span><span class="plain"> = </span><span class="identifier">i</span><span class="plain">;</span>
|
|
<span class="plain">];</span>
|
|
|
|
<span class="plain">[ </span><span class="identifier">DefArt</span><span class="plain"> </span><span class="identifier">obj</span><span class="plain"> </span><span class="identifier">i</span><span class="plain">;</span>
|
|
<span class="identifier">i</span><span class="plain"> = </span><span class="identifier">indef_mode</span><span class="plain">; </span><span class="identifier">indef_mode</span><span class="plain"> = </span><span class="reserved">false</span><span class="plain">;</span>
|
|
<span class="reserved">if</span><span class="plain"> ((~~</span><span class="identifier">obj</span><span class="plain"> </span><span class="reserved">ofclass</span><span class="plain"> </span><span class="identifier">Object</span><span class="plain">) || </span><span class="identifier">obj</span><span class="plain"> </span><span class="reserved">has</span><span class="plain"> </span><span class="identifier">proper</span><span class="plain">) {</span>
|
|
<span class="identifier">indef_mode</span><span class="plain"> = </span><span class="identifier">NULL</span><span class="plain">; </span><span class="reserved">print</span><span class="plain"> (</span><span class="identifier">PSN__</span><span class="plain">) </span><span class="identifier">obj</span><span class="plain">; </span><span class="identifier">indef_mode</span><span class="plain"> = </span><span class="identifier">i</span><span class="plain">;</span>
|
|
<span class="reserved">return</span><span class="plain">;</span>
|
|
<span class="plain">}</span>
|
|
<span class="identifier">PrefaceByArticle</span><span class="plain">(</span><span class="identifier">obj</span><span class="plain">, </span><span class="constant">1</span><span class="plain">); </span><span class="identifier">indef_mode</span><span class="plain"> = </span><span class="identifier">i</span><span class="plain">;</span>
|
|
<span class="plain">];</span>
|
|
|
|
<span class="plain">[ </span><span class="identifier">CDefArt</span><span class="plain"> </span><span class="identifier">obj</span><span class="plain"> </span><span class="identifier">i</span><span class="plain">;</span>
|
|
<span class="identifier">i</span><span class="plain"> = </span><span class="identifier">indef_mode</span><span class="plain">; </span><span class="identifier">indef_mode</span><span class="plain"> = </span><span class="reserved">false</span><span class="plain">;</span>
|
|
<span class="reserved">if</span><span class="plain"> ((</span><span class="identifier">obj</span><span class="plain"> </span><span class="reserved">ofclass</span><span class="plain"> </span><span class="identifier">Object</span><span class="plain">) && (</span><span class="identifier">obj</span><span class="plain"> </span><span class="reserved">has</span><span class="plain"> </span><span class="identifier">proper</span><span class="plain"> || </span><span class="identifier">obj</span><span class="plain"> == </span><span class="identifier">player</span><span class="plain">)) {</span>
|
|
<span class="identifier">indef_mode</span><span class="plain"> = </span><span class="identifier">NULL</span><span class="plain">;</span>
|
|
<span class="identifier">caps_mode</span><span class="plain"> = </span><span class="reserved">true</span><span class="plain">;</span>
|
|
<span class="reserved">print</span><span class="plain"> (</span><span class="identifier">PSN__</span><span class="plain">) </span><span class="identifier">obj</span><span class="plain">;</span>
|
|
<span class="identifier">indef_mode</span><span class="plain"> = </span><span class="identifier">i</span><span class="plain">;</span>
|
|
<span class="identifier">caps_mode</span><span class="plain"> = </span><span class="reserved">false</span><span class="plain">;</span>
|
|
<span class="reserved">return</span><span class="plain">;</span>
|
|
<span class="plain">}</span>
|
|
<span class="reserved">if</span><span class="plain"> ((~~</span><span class="identifier">obj</span><span class="plain"> </span><span class="reserved">ofclass</span><span class="plain"> </span><span class="identifier">Object</span><span class="plain">) || </span><span class="identifier">obj</span><span class="plain"> </span><span class="reserved">has</span><span class="plain"> </span><span class="identifier">proper</span><span class="plain">) {</span>
|
|
<span class="identifier">indef_mode</span><span class="plain"> = </span><span class="identifier">NULL</span><span class="plain">; </span><span class="reserved">print</span><span class="plain"> (</span><span class="identifier">PSN__</span><span class="plain">) </span><span class="identifier">obj</span><span class="plain">; </span><span class="identifier">indef_mode</span><span class="plain"> = </span><span class="identifier">i</span><span class="plain">;</span>
|
|
<span class="reserved">return</span><span class="plain">;</span>
|
|
<span class="plain">}</span>
|
|
<span class="identifier">PrefaceByArticle</span><span class="plain">(</span><span class="identifier">obj</span><span class="plain">, </span><span class="constant">0</span><span class="plain">); </span><span class="identifier">indef_mode</span><span class="plain"> = </span><span class="identifier">i</span><span class="plain">;</span>
|
|
<span class="plain">];</span>
|
|
</pre>
|
|
|
|
<p class="inwebparagraph"></p>
|
|
|
|
<p class="inwebparagraph"><a id="SP14"></a><b>§14. Standard Response Issuing Rule. </b>To print a response, we trigger off the response issuing activity. The following
|
|
is the default "for" rule for that activity:
|
|
</p>
|
|
|
|
<pre class="display">
|
|
<span class="plain">[ </span><span class="identifier">STANDARD_RESPONSE_ISSUING_R</span><span class="plain">;</span>
|
|
<span class="identifier">RegardingSingleObject</span><span class="plain">();</span>
|
|
<span class="identifier">TEXT_TY_Say</span><span class="plain">(</span><span class="identifier">ResponseTexts</span><span class="plain">-->(</span><span class="identifier">parameter_value</span><span class="plain"> - </span><span class="constant">1</span><span class="plain">));</span>
|
|
<span class="plain">];</span>
|
|
|
|
</pre>
|
|
|
|
<p class="inwebparagraph"></p>
|
|
|
|
<hr class="tocbar">
|
|
<ul class="toc"><li><a href="S-otf.html">Back to 'OutOfWorld Template'</a></li><li><a href="S-wrl.html">Continue with 'WorldModel Template'</a></li></ul><hr class="tocbar">
|
|
<!--End of weave-->
|
|
</main>
|
|
</body>
|
|
</html>
|
|
|