Mercurial > hg > early-roguelike
comparison 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 |
comparison
equal
deleted
inserted
replaced
| 35:05018c63a721 | 36:2128c7dc8a40 |
|---|---|
| 1 /* | |
| 2 * Super-Rogue | |
| 3 * Copyright (C) 1984 Robert D. Kindelberger | |
| 4 * All rights reserved. | |
| 5 * | |
| 6 * See the file LICENSE.TXT for full copyright and licensing information. | |
| 7 */ | |
| 8 | |
| 9 #include <stdio.h> | |
| 10 #include <sgtty.h> | |
| 11 | |
| 12 #define bool char /* boolean variable */ | |
| 13 #define reg register /* register abbr. */ | |
| 14 | |
| 15 #define TRUE (1) | |
| 16 #define FALSE (0) | |
| 17 #define ERR (0) /* default return on error */ | |
| 18 #define OK (1) /* default return on good run */ | |
| 19 | |
| 20 #define _SUBWIN 01 /* window is a subwindow */ | |
| 21 #define _ENDLINE 02 /* lines go to end of screen */ | |
| 22 #define _FULLWIN 04 /* window is entire screen */ | |
| 23 #define _SCROLLWIN 010 /* window could cause scroll */ | |
| 24 #define _STANDOUT 0200 /* standout mode in effect */ | |
| 25 #define _NOCHANGE -1 /* no change on this line */ | |
| 26 | |
| 27 #define _puts(s) tputs(s, 0, _putchar); | |
| 28 | |
| 29 typedef struct sgttyb SGTTY; | |
| 30 | |
| 31 #ifndef WINDOW | |
| 32 | |
| 33 #define WINDOW struct _win_st | |
| 34 | |
| 35 /* window description structure */ | |
| 36 struct _win_st { | |
| 37 short _cury, _curx; /* current y,x positions */ | |
| 38 short _maxy, _maxx; /* maximum y,x positions */ | |
| 39 short _begy, _begx; /* start y,x positions */ | |
| 40 short _flags; /* various window flags */ | |
| 41 bool _clear; /* need to clear */ | |
| 42 bool _leave; /* leave cur x,y at last update */ | |
| 43 bool _scroll; /* scrolls allowed */ | |
| 44 char **_y; /* actual window */ | |
| 45 short *_firstch; /* first change on line */ | |
| 46 short *_lastch; /* last change on line */ | |
| 47 }; | |
| 48 | |
| 49 extern bool My_term, /* user specied terminal */ | |
| 50 _echoit, /* set if echoing characters */ | |
| 51 _rawmode; /* set if terminal in raw mode */ | |
| 52 | |
| 53 extern char *Def_term, /* default terminal type */ | |
| 54 ttytype[]; /* long name of current term */ | |
| 55 # ifdef DEBUG | |
| 56 extern FILE *outf; /* error outfile */ | |
| 57 # endif | |
| 58 | |
| 59 extern int LINES, COLS; /* # of lines & columns */ | |
| 60 extern int _tty_ch; /* channel with tty on it */ | |
| 61 extern WINDOW *stdscr, *curscr; | |
| 62 | |
| 63 static SGTTY _tty, _res_flg; | |
| 64 | |
| 65 /* | |
| 66 * Define VOID to stop lint from generating "null effect" | |
| 67 * comments. | |
| 68 */ | |
| 69 # ifdef lint | |
| 70 int __void__; /* place to assign to */ | |
| 71 | |
| 72 # define VOID(x) (__void__ = (int) (x)) | |
| 73 # else | |
| 74 # define VOID(x) (x) | |
| 75 # endif | |
| 76 | |
| 77 # endif | |
| 78 | |
| 79 /* | |
| 80 * psuedo functions for standard screen | |
| 81 */ | |
| 82 #define addch(ch) VOID(waddch(stdscr, ch)) | |
| 83 #define getch() VOID(wgetch(stdscr)) | |
| 84 #define addstr(str) VOID(waddstr(stdscr, str)) | |
| 85 #define getstr(str) VOID(wgetstr(stdscr, str)) | |
| 86 #define move(y, x) VOID(wmove(stdscr, y, x)) | |
| 87 #define clear() VOID(wclear(stdscr)) | |
| 88 #define erase() VOID(werase(stdscr)) | |
| 89 #define clrtobot() VOID(wclrtobot(stdscr)) | |
| 90 #define clrtoeol() VOID(wclrtoeol(stdscr)) | |
| 91 #define insertln() VOID(winsertln(stdscr)) | |
| 92 #define deleteln() VOID(wdeleteln(stdscr)) | |
| 93 #define refresh() VOID(wrefresh(stdscr)) | |
| 94 #define inch() VOID(winch(stdscr)) | |
| 95 | |
| 96 #ifdef STANDOUT | |
| 97 #define standout() VOID(wstandout(stdscr)) | |
| 98 #define standend() VOID(wstandend(stdscr)) | |
| 99 #endif | |
| 100 | |
| 101 /* | |
| 102 # define CBREAK FALSE | |
| 103 # define _IOSTRG 01 | |
| 104 */ | |
| 105 | |
| 106 /* | |
| 107 * mv functions | |
| 108 */ | |
| 109 #define mvwaddch(win,y,x,ch) VOID(wmove(win,y,x)==ERR?ERR:waddch(win,ch)) | |
| 110 #define mvwgetch(win,y,x,ch) VOID(wmove(win,y,x)==ERR?ERR:wgetch(win,ch)) | |
| 111 #define mvwaddstr(win,y,x,str) VOID(wmove(win,y,x)==ERR?ERR:waddstr(win,str)) | |
| 112 #define mvwgetstr(win,y,x,str) VOID(wmove(win,y,x)==ERR?ERR:wgetstr(win,str)) | |
| 113 #define mvwinch(win,y,x) VOID(wmove(win,y,x) == ERR ? ERR : winch(win)) | |
| 114 #define mvaddch(y,x,ch) mvwaddch(stdscr,y,x,ch) | |
| 115 #define mvgetch(y,x,ch) mvwgetch(stdscr,y,x,ch) | |
| 116 #define mvaddstr(y,x,str) mvwaddstr(stdscr,y,x,str) | |
| 117 #define mvgetstr(y,x,str) mvwgetstr(stdscr,y,x,str) | |
| 118 #define mvinch(y,x) mvwinch(stdscr,y,x) | |
| 119 | |
| 120 /* | |
| 121 * psuedo functions | |
| 122 */ | |
| 123 | |
| 124 #define clearok(win,bf) (win->_clear = bf) | |
| 125 #define leaveok(win,bf) (win->_leave = bf) | |
| 126 #define scrollok(win,bf) (win->_scroll = bf) | |
| 127 #define getyx(win,y,x) y = win->_cury, x = win->_curx | |
| 128 #define winch(win) (win->_y[win->_cury][win->_curx]) | |
| 129 | |
| 130 WINDOW *initscr(), *newwin(); |
