[BACK]Return to disply.c CVS log [TXT][DIR] Up to [contributed] / early-roguelike / srogue

Annotation of early-roguelike/srogue/disply.c, Revision 1.1.1.1

1.1       rubenllo    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: void
                     22: displevl(void)
                     23: {
                     24:        reg char ch, mch;
                     25:        reg int i,j;
                     26:        reg struct room *rp;
                     27:
                     28:        for (rp = rooms; rp < &rooms[MAXROOMS]; rp++)
                     29:                rp->r_flags &= ~ISDARK;
                     30:
                     31:        for (i = 0; i < LINES - 2; i++) {
                     32:                for (j = 0; j < COLS - 1; j++) {
                     33:                        ch = mvinch(i,j);
                     34:                        if (isatrap(ch)) {
                     35:                                struct trap *what;
                     36:
                     37:                                what = trap_at(i, j);
                     38:                                if (what != NULL)
                     39:                                        what->tr_flags |= ISFOUND;
                     40:                        }
                     41:                        else if (ch == SECRETDOOR) {
                     42:                                ch = DOOR;
                     43:                                mvaddch(i, j, ch);
                     44:                        }
                     45:                        else if (illeg_ch(ch)) {
                     46:                                ch = FLOOR;
                     47:                                mvaddch(i, j, ch);
                     48:                        }
                     49:                        if (mvwinch(mw, i, j) != ' ') {
                     50:                                struct linked_list *what;
                     51:                                struct thing *it;
                     52:
                     53:                                what = find_mons(i, j);
                     54:                                if (what == NULL) {
                     55:                                        ch = FLOOR;
                     56:                                        mvaddch(i, j, ch);
                     57:                                }
                     58:                                else {
                     59:                                        it = THINGPTR(what);
                     60:                                        it->t_oldch = ch;
                     61:                                }
                     62:                        }
                     63:                        mch = mvwinch(cw, i, j);
                     64:                        if (isalpha(mch))
                     65:                                ch = mch;
                     66:                        mvwaddch(cw, i, j, ch);
                     67:                }
                     68:        }
                     69:        nochange = FALSE;       /* display status again */
                     70:        draw(cw);
                     71: }
                     72:
                     73: /*
                     74:  * dispmons:
                     75:  *     Show monsters for wizard and potion
                     76:  */
                     77: void
                     78: dispmons(void)
                     79: {
                     80:        reg int ch, y, x;
                     81:        reg struct thing *it;
                     82:        reg struct linked_list *item;
                     83:
                     84:        for (item = mlist; item != NULL; item = next(item)) {
                     85:                it = THINGPTR(item);
                     86:                y = it->t_pos.y;
                     87:                x = it->t_pos.x;
                     88:                mvwaddch(cw, y, x, it->t_type);
                     89:                it->t_flags |= ISFOUND;
                     90:                if (it->t_type == 'M')                  /* if a mimic */
                     91:                        it->t_disguise = 'M';           /* give it away */
                     92:        }
                     93:        draw(cw);
                     94: }
                     95:
                     96: /*
                     97:  * winat:
                     98:  *     Get whatever character is at a location on the screen
                     99:  */
                    100: char
                    101: winat(int y, int x)
                    102: {
                    103:        reg char ch;
                    104:
                    105:        if (mvwinch(mw,y,x) == ' ')
                    106:                ch = mvinch(y, x);                      /* non-monsters */
                    107:        else
                    108:                ch = winch(mw);                         /* monsters */
                    109:        return ch;
                    110: }
                    111:
                    112: /*
                    113:  * cordok:
                    114:  *     Returns TRUE if coordinate is on usable screen
                    115:  */
                    116: bool
                    117: cordok(int y, int x)
                    118: {
                    119:        if (x < 0 || y < 0 || x >= COLS || y >= LINES - 1)
                    120:                return FALSE;
                    121:        return TRUE;
                    122: }
                    123:
                    124: /*
                    125:  * pl_on:
                    126:  *     Returns TRUE if the player's flag is set
                    127:  */
                    128: bool
                    129: pl_on(long what)
                    130: {
                    131:        return (player.t_flags & what);
                    132: }
                    133:
                    134:
                    135: /*
                    136:  * pl_off:
                    137:  *     Returns TRUE when player's flag is reset
                    138:  */
                    139: bool
                    140: pl_off(long what)
                    141: {
                    142:        return (!(player.t_flags & what));
                    143: }
                    144:
                    145:
                    146: /*
                    147:  * o_on:
                    148:  *     Returns TRUE in the objects flag is set
                    149:  */
                    150: bool
                    151: o_on(struct object *what, long bit)
                    152: {
                    153:        reg int flag;
                    154:
                    155:        flag = FALSE;
                    156:        if (what != NULL)
                    157:                flag = (what->o_flags & bit);
                    158:        return flag;
                    159: }
                    160:
                    161:
                    162: /*
                    163:  * o_off:
                    164:  *     Returns TRUE is the objects flag is reset
                    165:  */
                    166: bool
                    167: o_off(struct object *what, 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: void
                    183: setoflg(struct object *what, long bit)
                    184: {
                    185:        what->o_flags |= bit;
                    186: }
                    187:
                    188:
                    189: /*
                    190:  * resoflg:
                    191:  *     Reset the specified flag for the object
                    192:  */
                    193: void
                    194: resoflg(struct object *what, long bit)
                    195: {
                    196:        what->o_flags &= ~bit;
                    197: }

CVSweb