cfad47cfa3/tads2/runstat.c

User picture

Commiter: Nikos Chantziaras

Author: Nikos Chantziaras

Revision: cfad47cfa3


File Size: 1.75 KB

(June 01, 2009 20:54 UTC) Almost 3 years ago

Initial commit.

 
Show/hide line numbers
#ifdef RCSID
static char RCSid[] =
"$Header: d:/cvsroot/tads/TADS2/RUNSTAT.C,v 1.2 1999/05/17 02:52:13 MJRoberts Exp $";
#endif

/* 
 *   Copyright (c) 1992, 2002 Michael J. Roberts.  All Rights Reserved.
 *   
 *   Please see the accompanying license file, LICENSE.TXT, for information
 *   on using and copying this software.  
 */
/*
Name
  runstat.c - tads 1 compatible runstat()
Function
  generates status line
Notes
  none
Modified
  04/04/92 MJRoberts     - creation
*/

#include "os.h"
#include "std.h"
#include "mcm.h"
#include "obj.h"
#include "run.h"
#include "tio.h"
#include "voc.h"
#include "dat.h"

static runcxdef *runctx;
static voccxdef *vocctx;
static tiocxdef *tioctx;

void runstat(void)
{
    objnum  locobj;
    int     savemoremode;

    /* get the location of the Me object */
    runppr(runctx, vocctx->voccxme, PRP_LOCATION, 0);

    /* if that's no an object, there's nothing we can do */
    if (runtostyp(runctx) != DAT_OBJECT)
    {
        rundisc(runctx);
        return;
    }

    /* get Me.location */
    locobj = runpopobj(runctx);

    /* flush any pending output */
    outflushn(0);

    /* switch to output display mode 1 (status line) */
    os_status(1);

    /* turn off MORE mode */
    savemoremode = setmore(0);

    /* call the statusLine method of the current room */
    runppr(runctx, locobj, PRP_STATUSLINE, 0);

    /* if we're in the status line, make sure the line gets flushed */
    if (os_get_status() != 0)
        tioputs(tioctx, "\\n");
    outflushn(0);

    /* restore the previous MORE mode */
    setmore(savemoremode);

    /* switch to output display mode 0 (main text area) */
    os_status(0);
}

void runistat(voccxdef *vctx, runcxdef *rctx, tiocxdef *tctx)
{
    runctx = rctx;
    vocctx = vctx;
    tioctx = tctx;
}