! "BannerPause.inf" Library extension for Inform 6.21 Library 6/10 ! ! Implemented by Jay Goemmer (downbelow@ltlink.com), 16 Dec 2002. ! ! ! This source code will enable the Inform implementor to "pause" the ! accompanying "Banner2" routine before displaying a game's initial ! location and drawing the status line. It's been hacked from the ! "Banner" routine in the original "Parserm.h" Inform library file. ! ! Please send any comments or suggestions you may have to the ! address above. Thanks! Serial "021216"; Release 1; Constant Story "BANNER PAUSE"; Constant Headline "^^An Inform Source Code Example ^Implemented by Jay Goemmer (downbelow@@64ltlink.com) ^^^"; ! See "BannerPause" routine. Insert this line in your .inf source ! code file before including "Parser.h" Constant BANNER_PAUSE; Include "Parser"; Object LibraryMessages ! Include between Parser and VerbLib with before [; Prompt: print "^> "; rtrue; ]; Include "Verblib"; ! Banner2 routine -- Hacked from "Verblibm.h" (Library 6/10). ! ! Insert after "Verblib.h" and before "Grammar.h" [ Banner2 i; if (Story ~= 0) { #IFV5; style bold; #ENDIF; print (string) Story; #IFV5; style roman; #ENDIF; } if (Headline ~= 0) print (string) Headline; print "Release ", (0-->1) & $03ff, " / Serial number "; for (i=18:i<24:i++) print (char) 0->i; print " / Inform v"; inversion; print " Library ", (string) LibRelease, " "; #ifdef STRICT_MODE; print "S"; #endif; #ifdef INFIX; print "X"; #ifnot; #ifdef DEBUG; print "D"; #endif; #endif; new_line; new_line; ! Added 2 more lines -- one here... #ifdef BANNER_PAUSE; ! Making Banner pause before 'Looking At Opening Room.' BannerPause(); #endif; new_line; ! ...and one here, so it looks better -- 14 Dec 2002. ]; Object Opening_Room "Opening Room" with description "^ The opening room's description is displayed first, and then the status line is printed. That's pretty much all there is to this programming example, so you may ~quit~ at any time.", has light; [ Initialise; Location = Opening_Room; print "^^ Usually, the best storytellers don't tell you the end of the story first. They'll wait to reveal certain details until the point in the story which will have the greatest dramatic impact. ^^ Interactive fiction implementors are no exception. This ~BannerPause~ programming example will allow you to place a ~MORE~ prompt after printing the Inform ~Banner~ routine -- and delay the initial appearance of the game's opening location. ^^ If you have any comments, please e-mail me at the address below. Thanks! ^^^"; Banner2(); ! "Calls" modified "Banner" routine above. return 2; ! Prevents "standard" Inform banner from printing. ]; Include "Grammar"; ! Insert the following "BannerPause" routine in your .inf source ! code file after including "Grammar.h" ! Pauses Banner2 before "looking at" opening room. [ BannerPause i; ! "ClearScreen" routine minus "erase window" command. style roman; ! (Doesn't "wipe" upper and lower windows.) print "^[MORE]"; do { @read_char 1 0 0 i; } until (i==32 or 10 or 13); print "^"; ]; Verb meta "help" "hint" "hints" "menu" "menus" "about" "thanks" "credits" * -> Help; [ HelpSub; print "^ Obviously, the best way to use this programming example is to paste it into the existing source code for the game to which you'd like to add this ~BANNER PAUSE~ option."; style bold; print "^^ Special thanks to Andrew ~Zarf~ Plotkin for pointing out, ~If you want the banner message to contain extra newlines, hack the library Banner routine. I mean, once you've decided to mess with library code...~ ^^(rec.arts.int-fiction, 27 Jan 2003)"; style roman; print "^^^ Intriguing, since that was the first Inform library hack I'd done -- just six weeks before. (chuckling) ^^"; ]; End;