! Except in Version 3, the DrawStatusLine routine does just that: this is ! provided explicitly so that it can be Replace'd to change the style, and ! as written it emulates the ordinary Standard game status line, which is ! drawn in hardware ! ---------------------------------------------------------------------------- #Ifdef TARGET_ZCODE; #IfV5; #Iftrue (#version_number == 6); [ DrawStatusLine width x charw scw mvw; (0-->8) = (0-->8) &~ $$00000100; StatusLineHeight(gg_statuswin_size); ! Now clear the window. This isn't totally trivial. Our approach is to select the ! fixed space font, measure its width, and print an appropriate ! number of spaces. We round up if the screen isn't a whole number ! of characters wide, and rely on window 1 being set to clip by default. MoveCursor(1, 1); @set_font 4 -> x; width = ScreenWidth(); spaces width; ! Back to standard font for the display. We use output_stream 3 to ! measure the space required, the aim being to get 50 characters ! worth of space for the location name. MoveCursor(1, 2); @set_font 1 -> x; if (location == thedark) print (name) location; else { FindVisibilityLevels(); if (visibility_ceiling == location) print (name) location; else print (The) visibility_ceiling; } @get_wind_prop 1 3 -> width; @get_wind_prop 1 13 -> charw; charw = charw & $FF; @output_stream 3 StorageForShortName; print (string) SCORE__TX, "00000"; @output_stream -3; scw = HDR_PIXELSTO3-->0 + charw; @output_stream 3 StorageForShortName; print (string) MOVES__TX, "00000"; @output_stream -3; mvw = HDR_PIXELSTO3-->0 + charw; if (width - scw - mvw >= 50*charw) { x = 1+width-scw-mvw; @set_cursor 1 x; print (string) SCORE__TX, sline1; x = x+scw; @set_cursor 1 x; print (string) MOVES__TX, sline2; } else { @output_stream 3 StorageForShortName; print "00000/00000"; @output_stream -3; scw = HDR_PIXELSTO3-->0 + charw; if (width - scw >= 50*charw) { x = 1+width-scw; @set_cursor 1 x; print sline1, "/", sline2; } } ! Reselect roman, as Infocom's interpreters interpreters go funny ! if reverse is selected twice. MainWindow(); ];