comparison srogue/disply.c @ 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 94a0d9dd5ce1
comparison
equal deleted inserted replaced
35:05018c63a721 36:2128c7dc8a40
1 /*
2 * various display routines and flag checking functions
3 *
4 * @(#)disply.c 9.0 (rdk) 7/17/84
5 *
6 * Super-Rogue
7 * Copyright (C) 1984 Robert D. Kindelberger
8 * All rights reserved.
9 *
10 * See the file LICENSE.TXT for full copyright and licensing information.
11 */
12
13 #include "rogue.h"
14 #include <ctype.h>
15 #include "rogue.ext"
16
17 /*
18 * displevl:
19 * Display detailed level for wizard and scroll
20 */
21 displevl()
22 {
23 reg char ch, mch;
24 reg int i,j;
25 reg struct room *rp;
26
27 for (rp = rooms; rp < &rooms[MAXROOMS]; rp++)
28 rp->r_flags &= ~ISDARK;
29
30 for (i = 0; i < LINES - 2; i++) {
31 for (j = 0; j < COLS - 1; j++) {
32 ch = mvinch(i,j);
33 if (isatrap(ch)) {
34 struct trap *what;
35
36 what = trap_at(i, j);
37 if (what != NULL)
38 what->tr_flags |= ISFOUND;
39 }
40 else if (ch == SECRETDOOR) {
41 ch = DOOR;
42 mvaddch(i, j, ch);
43 }
44 else if (illeg_ch(ch)) {
45 ch = FLOOR;
46 mvaddch(i, j, ch);
47 }
48 if (mvwinch(mw, i, j) != ' ') {
49 struct linked_list *what;
50 struct thing *it;
51
52 what = find_mons(i, j);
53 if (what == NULL) {
54 ch = FLOOR;
55 mvaddch(i, j, ch);
56 }
57 else {
58 it = THINGPTR(what);
59 it->t_oldch = ch;
60 }
61 }
62 mch = mvwinch(cw, i, j);
63 if (isalpha(mch))
64 ch = mch;
65 mvwaddch(cw, i, j, ch);
66 }
67 }
68 nochange = FALSE; /* display status again */
69 draw(cw);
70 }
71
72 /*
73 * dispmons:
74 * Show monsters for wizard and potion
75 */
76 dispmons()
77 {
78 reg int ch, y, x;
79 reg struct thing *it;
80 reg struct linked_list *item;
81
82 for (item = mlist; item != NULL; item = next(item)) {
83 it = THINGPTR(item);
84 y = it->t_pos.y;
85 x = it->t_pos.x;
86 mvwaddch(cw, y, x, it->t_type);
87 it->t_flags |= ISFOUND;
88 if (it->t_type == 'M') /* if a mimic */
89 it->t_disguise = 'M'; /* give it away */
90 }
91 draw(cw);
92 }
93
94 /*
95 * winat:
96 * Get whatever character is at a location on the screen
97 */
98 winat(y, x)
99 int x, y;
100 {
101 reg char ch;
102
103 if (mvwinch(mw,y,x) == ' ')
104 ch = mvinch(y, x); /* non-monsters */
105 else
106 ch = winch(mw); /* monsters */
107 return ch;
108 }
109
110 /*
111 * cordok:
112 * Returns TRUE if coordinate is on usable screen
113 */
114 cordok(y, x)
115 int y, x;
116 {
117 if (x < 0 || y < 0 || x >= COLS || y >= LINES - 1)
118 return FALSE;
119 return TRUE;
120 }
121
122 /*
123 * pl_on:
124 * Returns TRUE if the player's flag is set
125 */
126 pl_on(what)
127 long what;
128 {
129 return (player.t_flags & what);
130 }
131
132
133 /*
134 * pl_off:
135 * Returns TRUE when player's flag is reset
136 */
137 pl_off(what)
138 long what;
139 {
140 return (!(player.t_flags & what));
141 }
142
143
144 /*
145 * o_on:
146 * Returns TRUE in the objects flag is set
147 */
148 o_on(what,bit)
149 struct object *what;
150 long bit;
151 {
152 reg int flag;
153
154 flag = FALSE;
155 if (what != NULL)
156 flag = (what->o_flags & bit);
157 return flag;
158 }
159
160
161 /*
162 * o_off:
163 * Returns TRUE is the objects flag is reset
164 */
165 o_off(what,bit)
166 struct object *what;
167 long bit;
168 {
169 reg int flag;
170
171 flag = FALSE;
172 if (what != NULL)
173 flag = !(what->o_flags & bit);
174 return flag;
175 }
176
177
178 /*
179 * setoflg:
180 * Set the specified flag for the object
181 */
182 setoflg(what,bit)
183 struct object *what;
184 long bit;
185 {
186 what->o_flags |= bit;
187 }
188
189
190 /*
191 * resoflg:
192 * Reset the specified flag for the object
193 */
194 resoflg(what,bit)
195 struct object *what;
196 long bit;
197 {
198 what->o_flags &= ~bit;
199 }