Mercurial > hg > early-roguelike
diff srogue/cx.h @ 36:2128c7dc8a40
Import Super-Rogue 9.0 from the Roguelike Restoration Project (r1490)
author | elwin |
---|---|
date | Thu, 25 Nov 2010 12:21:41 +0000 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/srogue/cx.h Thu Nov 25 12:21:41 2010 +0000 @@ -0,0 +1,130 @@ +/* + * Super-Rogue + * Copyright (C) 1984 Robert D. Kindelberger + * All rights reserved. + * + * See the file LICENSE.TXT for full copyright and licensing information. + */ + +#include <stdio.h> +#include <sgtty.h> + +#define bool char /* boolean variable */ +#define reg register /* register abbr. */ + +#define TRUE (1) +#define FALSE (0) +#define ERR (0) /* default return on error */ +#define OK (1) /* default return on good run */ + +#define _SUBWIN 01 /* window is a subwindow */ +#define _ENDLINE 02 /* lines go to end of screen */ +#define _FULLWIN 04 /* window is entire screen */ +#define _SCROLLWIN 010 /* window could cause scroll */ +#define _STANDOUT 0200 /* standout mode in effect */ +#define _NOCHANGE -1 /* no change on this line */ + +#define _puts(s) tputs(s, 0, _putchar); + +typedef struct sgttyb SGTTY; + +#ifndef WINDOW + +#define WINDOW struct _win_st + +/* window description structure */ +struct _win_st { + short _cury, _curx; /* current y,x positions */ + short _maxy, _maxx; /* maximum y,x positions */ + short _begy, _begx; /* start y,x positions */ + short _flags; /* various window flags */ + bool _clear; /* need to clear */ + bool _leave; /* leave cur x,y at last update */ + bool _scroll; /* scrolls allowed */ + char **_y; /* actual window */ + short *_firstch; /* first change on line */ + short *_lastch; /* last change on line */ +}; + +extern bool My_term, /* user specied terminal */ + _echoit, /* set if echoing characters */ + _rawmode; /* set if terminal in raw mode */ + +extern char *Def_term, /* default terminal type */ + ttytype[]; /* long name of current term */ +# ifdef DEBUG +extern FILE *outf; /* error outfile */ +# endif + +extern int LINES, COLS; /* # of lines & columns */ +extern int _tty_ch; /* channel with tty on it */ +extern WINDOW *stdscr, *curscr; + +static SGTTY _tty, _res_flg; + +/* + * Define VOID to stop lint from generating "null effect" + * comments. + */ +# ifdef lint +int __void__; /* place to assign to */ + +# define VOID(x) (__void__ = (int) (x)) +# else +# define VOID(x) (x) +# endif + +# endif + +/* + * psuedo functions for standard screen + */ +#define addch(ch) VOID(waddch(stdscr, ch)) +#define getch() VOID(wgetch(stdscr)) +#define addstr(str) VOID(waddstr(stdscr, str)) +#define getstr(str) VOID(wgetstr(stdscr, str)) +#define move(y, x) VOID(wmove(stdscr, y, x)) +#define clear() VOID(wclear(stdscr)) +#define erase() VOID(werase(stdscr)) +#define clrtobot() VOID(wclrtobot(stdscr)) +#define clrtoeol() VOID(wclrtoeol(stdscr)) +#define insertln() VOID(winsertln(stdscr)) +#define deleteln() VOID(wdeleteln(stdscr)) +#define refresh() VOID(wrefresh(stdscr)) +#define inch() VOID(winch(stdscr)) + +#ifdef STANDOUT +#define standout() VOID(wstandout(stdscr)) +#define standend() VOID(wstandend(stdscr)) +#endif + +/* +# define CBREAK FALSE +# define _IOSTRG 01 +*/ + +/* + * mv functions + */ +#define mvwaddch(win,y,x,ch) VOID(wmove(win,y,x)==ERR?ERR:waddch(win,ch)) +#define mvwgetch(win,y,x,ch) VOID(wmove(win,y,x)==ERR?ERR:wgetch(win,ch)) +#define mvwaddstr(win,y,x,str) VOID(wmove(win,y,x)==ERR?ERR:waddstr(win,str)) +#define mvwgetstr(win,y,x,str) VOID(wmove(win,y,x)==ERR?ERR:wgetstr(win,str)) +#define mvwinch(win,y,x) VOID(wmove(win,y,x) == ERR ? ERR : winch(win)) +#define mvaddch(y,x,ch) mvwaddch(stdscr,y,x,ch) +#define mvgetch(y,x,ch) mvwgetch(stdscr,y,x,ch) +#define mvaddstr(y,x,str) mvwaddstr(stdscr,y,x,str) +#define mvgetstr(y,x,str) mvwgetstr(stdscr,y,x,str) +#define mvinch(y,x) mvwinch(stdscr,y,x) + +/* + * psuedo functions + */ + +#define clearok(win,bf) (win->_clear = bf) +#define leaveok(win,bf) (win->_leave = bf) +#define scrollok(win,bf) (win->_scroll = bf) +#define getyx(win,y,x) y = win->_cury, x = win->_curx +#define winch(win) (win->_y[win->_cury][win->_curx]) + +WINDOW *initscr(), *newwin();