mapglyph level-related function calls are done once per level
This commit is contained in:
@@ -13,6 +13,8 @@ improvements to pronoun usage when hallucinating
|
|||||||
message "your knapsack can't accomodate any more items" when picking stuff up
|
message "your knapsack can't accomodate any more items" when picking stuff up
|
||||||
or removing such from container was inaccurate if there was some gold
|
or removing such from container was inaccurate if there was some gold
|
||||||
pending; vary the message rather than add more convoluted pickup code
|
pending; vary the message rather than add more convoluted pickup code
|
||||||
|
function calls made from mapglyph based on dungeon level are now called once
|
||||||
|
per level
|
||||||
|
|
||||||
|
|
||||||
Fixes to Pre-3.7.0 Problems that Were Exposed Via git Repository
|
Fixes to Pre-3.7.0 Problems that Were Exposed Via git Repository
|
||||||
|
|||||||
@@ -1260,6 +1260,9 @@ struct instance_globals {
|
|||||||
char lua_ver[LUA_VER_BUFSIZ];
|
char lua_ver[LUA_VER_BUFSIZ];
|
||||||
char lua_copyright[LUA_COPYRIGHT_BUFSIZ];
|
char lua_copyright[LUA_COPYRIGHT_BUFSIZ];
|
||||||
|
|
||||||
|
/* per-level glyph mapping flags */
|
||||||
|
long glyphmap_perlevel_flags;
|
||||||
|
|
||||||
unsigned long magic; /* validate that structure layout is preserved */
|
unsigned long magic; /* validate that structure layout is preserved */
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@@ -695,6 +695,9 @@ const struct instance_globals g_init = {
|
|||||||
DUMMY, /* lua_ver[LUA_VER_BUFSIZ] */
|
DUMMY, /* lua_ver[LUA_VER_BUFSIZ] */
|
||||||
DUMMY, /* lua_copyright[LUA_COPYRIGHT_BUFSIZ] */
|
DUMMY, /* lua_copyright[LUA_COPYRIGHT_BUFSIZ] */
|
||||||
|
|
||||||
|
/* per-level glyph mapping flags */
|
||||||
|
0L, /* glyphmap_perlevel_flags */
|
||||||
|
|
||||||
IVMAGIC /* used to validate that structure layout has been preserved */
|
IVMAGIC /* used to validate that structure layout has been preserved */
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
1
src/do.c
1
src/do.c
@@ -1578,6 +1578,7 @@ boolean at_stairs, falling, portal;
|
|||||||
|
|
||||||
/* Reset the screen. */
|
/* Reset the screen. */
|
||||||
vision_reset(); /* reset the blockages */
|
vision_reset(); /* reset the blockages */
|
||||||
|
g.glyphmap_perlevel_flags = 0L; /* force per-level mapglyph() changes */
|
||||||
docrt(); /* does a full vision recalc */
|
docrt(); /* does a full vision recalc */
|
||||||
flush_screen(-1);
|
flush_screen(-1);
|
||||||
|
|
||||||
|
|||||||
@@ -9,9 +9,11 @@
|
|||||||
#include "color.h"
|
#include "color.h"
|
||||||
#define HI_DOMESTIC CLR_WHITE /* monst.c */
|
#define HI_DOMESTIC CLR_WHITE /* monst.c */
|
||||||
|
|
||||||
|
#if 0
|
||||||
#if !defined(TTY_GRAPHICS)
|
#if !defined(TTY_GRAPHICS)
|
||||||
#define has_color(n) TRUE
|
#define has_color(n) TRUE
|
||||||
#endif
|
#endif
|
||||||
|
#endif
|
||||||
|
|
||||||
#ifdef TEXTCOLOR
|
#ifdef TEXTCOLOR
|
||||||
static const int explcolors[] = {
|
static const int explcolors[] = {
|
||||||
@@ -57,6 +59,10 @@ static const int explcolors[] = {
|
|||||||
#define is_objpile(x,y) (!Hallucination && g.level.objects[(x)][(y)] \
|
#define is_objpile(x,y) (!Hallucination && g.level.objects[(x)][(y)] \
|
||||||
&& g.level.objects[(x)][(y)]->nexthere)
|
&& g.level.objects[(x)][(y)]->nexthere)
|
||||||
|
|
||||||
|
#define GMAP_SET 0x00000001
|
||||||
|
#define GMAP_ROGUELEVEL 0x00000002
|
||||||
|
#define GMAP_ALTARCOLOR 0x00000004
|
||||||
|
|
||||||
/*ARGSUSED*/
|
/*ARGSUSED*/
|
||||||
int
|
int
|
||||||
mapglyph(glyph, ochar, ocolor, ospecial, x, y, mgflags)
|
mapglyph(glyph, ochar, ocolor, ospecial, x, y, mgflags)
|
||||||
@@ -75,6 +81,21 @@ unsigned mgflags;
|
|||||||
has_rogue_color = (has_rogue_ibm_graphics
|
has_rogue_color = (has_rogue_ibm_graphics
|
||||||
&& g.symset[g.currentgraphics].nocolor == 0);
|
&& g.symset[g.currentgraphics].nocolor == 0);
|
||||||
|
|
||||||
|
if (!g.glyphmap_perlevel_flags) {
|
||||||
|
/*
|
||||||
|
* GMAP_SET 0x00000001
|
||||||
|
* GMAP_ROGUELEVEL 0x00000002
|
||||||
|
* GMAP_ALTARCOLOR 0x00000004
|
||||||
|
*/
|
||||||
|
g.glyphmap_perlevel_flags |= GMAP_SET;
|
||||||
|
|
||||||
|
if (Is_rogue_level(&u.uz)) {
|
||||||
|
g.glyphmap_perlevel_flags |= GMAP_ROGUELEVEL;
|
||||||
|
} else if ((Is_astralevel(&u.uz) || Is_sanctum(&u.uz))) {
|
||||||
|
g.glyphmap_perlevel_flags |= GMAP_ALTARCOLOR;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Map the glyph back to a character and color.
|
* Map the glyph back to a character and color.
|
||||||
*
|
*
|
||||||
@@ -142,7 +163,7 @@ unsigned mgflags;
|
|||||||
== g.showsyms[S_water + SYM_OFF_P])) {
|
== g.showsyms[S_water + SYM_OFF_P])) {
|
||||||
special |= MG_BW_LAVA;
|
special |= MG_BW_LAVA;
|
||||||
} else if (offset == S_altar && iflags.use_color) {
|
} else if (offset == S_altar && iflags.use_color) {
|
||||||
if ((Is_astralevel(&u.uz) || Is_sanctum(&u.uz))
|
if ((g.glyphmap_perlevel_flags & GMAP_ALTARCOLOR)
|
||||||
&& (levl[x][y].altarmask & AM_SHRINE)) {
|
&& (levl[x][y].altarmask & AM_SHRINE)) {
|
||||||
/* high altar */
|
/* high altar */
|
||||||
color = CLR_BRIGHT_MAGENTA;
|
color = CLR_BRIGHT_MAGENTA;
|
||||||
@@ -273,14 +294,16 @@ unsigned mgflags;
|
|||||||
|
|
||||||
if ((special & MG_PET) != 0) {
|
if ((special & MG_PET) != 0) {
|
||||||
ovidx = SYM_PET_OVERRIDE + SYM_OFF_X;
|
ovidx = SYM_PET_OVERRIDE + SYM_OFF_X;
|
||||||
if (Is_rogue_level(&u.uz) ? g.ov_rogue_syms[ovidx]
|
if ((g.glyphmap_perlevel_flags & GMAP_ROGUELEVEL)
|
||||||
: g.ov_primary_syms[ovidx])
|
? g.ov_rogue_syms[ovidx]
|
||||||
|
: g.ov_primary_syms[ovidx])
|
||||||
idx = ovidx;
|
idx = ovidx;
|
||||||
}
|
}
|
||||||
if (is_you) {
|
if (is_you) {
|
||||||
ovidx = SYM_HERO_OVERRIDE + SYM_OFF_X;
|
ovidx = SYM_HERO_OVERRIDE + SYM_OFF_X;
|
||||||
if (Is_rogue_level(&u.uz) ? g.ov_rogue_syms[ovidx]
|
if ((g.glyphmap_perlevel_flags & GMAP_ROGUELEVEL)
|
||||||
: g.ov_primary_syms[ovidx])
|
? g.ov_rogue_syms[ovidx]
|
||||||
|
: g.ov_primary_syms[ovidx])
|
||||||
idx = ovidx;
|
idx = ovidx;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -288,7 +311,8 @@ unsigned mgflags;
|
|||||||
ch = g.showsyms[idx];
|
ch = g.showsyms[idx];
|
||||||
#ifdef TEXTCOLOR
|
#ifdef TEXTCOLOR
|
||||||
/* Turn off color if no color defined, or rogue level w/o PC graphics. */
|
/* Turn off color if no color defined, or rogue level w/o PC graphics. */
|
||||||
if (!has_color(color) || (Is_rogue_level(&u.uz) && !has_rogue_color))
|
if (!has_color(color) ||
|
||||||
|
((g.glyphmap_perlevel_flags & GMAP_ROGUELEVEL) && !has_rogue_color))
|
||||||
#endif
|
#endif
|
||||||
color = NO_COLOR;
|
color = NO_COLOR;
|
||||||
*ochar = (int) ch;
|
*ochar = (int) ch;
|
||||||
|
|||||||
Reference in New Issue
Block a user