Close #803753:
(map_char): New. (draw_map): Use it. Wilderness and plains owned by other players are now displayed as '?'. (radmap2): Display wilderness and plains as '?'. (satmap): Call satdisp() for all sectors owned by other players.
This commit is contained in:
parent
57080e76f2
commit
064f0ef1f2
3 changed files with 47 additions and 63 deletions
|
@ -50,6 +50,7 @@
|
||||||
#include "optlist.h"
|
#include "optlist.h"
|
||||||
|
|
||||||
static int bmnxtsct(register struct nstr_sect *);
|
static int bmnxtsct(register struct nstr_sect *);
|
||||||
|
static s_char map_char(u_char type, natid own, int owner_or_god);
|
||||||
|
|
||||||
int
|
int
|
||||||
draw_map(int bmap, s_char origin, int map_flags, struct nstr_sect *nsp,
|
draw_map(int bmap, s_char origin, int map_flags, struct nstr_sect *nsp,
|
||||||
|
@ -130,8 +131,7 @@ draw_map(int bmap, s_char origin, int map_flags, struct nstr_sect *nsp,
|
||||||
ef_write(EF_BMAP, player->cnum, player->bmap);
|
ef_write(EF_BMAP, player->cnum, player->bmap);
|
||||||
break;
|
break;
|
||||||
case EF_NMAP:
|
case EF_NMAP:
|
||||||
do {
|
{
|
||||||
register s_char *ptr;
|
|
||||||
struct sctstr sect;
|
struct sctstr sect;
|
||||||
|
|
||||||
if ((!player->god || country)) {
|
if ((!player->god || country)) {
|
||||||
|
@ -144,34 +144,16 @@ draw_map(int bmap, s_char origin, int map_flags, struct nstr_sect *nsp,
|
||||||
if (!player->god)
|
if (!player->god)
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
ptr = &wmap[nsp->dy][nsp->dx];
|
wmap[nsp->dy][nsp->dx]
|
||||||
if (sect.sct_newtype > SCT_MAXDEF) {
|
= map_char(sect.sct_newtype, sect.sct_own,
|
||||||
*ptr = '?';
|
sect.sct_own == country || player->god);
|
||||||
} else {
|
|
||||||
*ptr = dchr[sect.sct_newtype].d_mnem;
|
|
||||||
switch (sect.sct_newtype) {
|
|
||||||
case SCT_WATER:
|
|
||||||
case SCT_RURAL:
|
|
||||||
case SCT_MOUNT:
|
|
||||||
case SCT_WASTE:
|
|
||||||
case SCT_PLAINS:
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
if (sect.sct_own != country &&
|
|
||||||
(!player->god || country)) {
|
|
||||||
if (!player->god)
|
|
||||||
*ptr = '?';
|
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
} while (0);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
} else {
|
} else {
|
||||||
register s_char *ptr;
|
|
||||||
struct sctstr sect;
|
struct sctstr sect;
|
||||||
|
s_char mapch;
|
||||||
int changed = 0;
|
int changed = 0;
|
||||||
|
|
||||||
if ((!player->god || country)) {
|
if ((!player->god || country)) {
|
||||||
|
@ -184,28 +166,10 @@ draw_map(int bmap, s_char origin, int map_flags, struct nstr_sect *nsp,
|
||||||
if (!player->god)
|
if (!player->god)
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
ptr = &wmap[nsp->dy][nsp->dx];
|
mapch = map_char(sect.sct_type, sect.sct_own,
|
||||||
if (sect.sct_type > SCT_MAXDEF) {
|
sect.sct_own == country || player->god);
|
||||||
*ptr = '?';
|
wmap[nsp->dy][nsp->dx] = mapch;
|
||||||
} else {
|
changed |= map_set(player->cnum, nsp->x, nsp->y, mapch, 0);
|
||||||
*ptr = dchr[sect.sct_type].d_mnem;
|
|
||||||
switch (sect.sct_type) {
|
|
||||||
case SCT_WATER:
|
|
||||||
case SCT_RURAL:
|
|
||||||
case SCT_MOUNT:
|
|
||||||
case SCT_WASTE:
|
|
||||||
case SCT_PLAINS:
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
if (sect.sct_own != country &&
|
|
||||||
(!player->god || country)) {
|
|
||||||
if (!player->god)
|
|
||||||
*ptr = '?';
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
changed += map_set(player->cnum, nsp->x, nsp->y, *ptr, 0);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
if (changed)
|
if (changed)
|
||||||
writemap(player->cnum);
|
writemap(player->cnum);
|
||||||
|
@ -326,6 +290,24 @@ bmnxtsct(register struct nstr_sect *np)
|
||||||
/*NOTREACHED*/
|
/*NOTREACHED*/
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Return character to use in maps for sector type TYPE owned by OWN.
|
||||||
|
* If OWNER_OR_GOD, the map is for the sector's owner or a deity.
|
||||||
|
*/
|
||||||
|
static s_char
|
||||||
|
map_char(u_char type, natid own, int owner_or_god)
|
||||||
|
{
|
||||||
|
if (type > SCT_MAXDEF) {
|
||||||
|
logerror("bad sector type %d\n", type);
|
||||||
|
return '?';
|
||||||
|
}
|
||||||
|
if (owner_or_god
|
||||||
|
|| type == SCT_WATER || type == SCT_MOUNT || type == SCT_WASTE
|
||||||
|
|| (!own && (type == SCT_RURAL || type == SCT_PLAINS)))
|
||||||
|
return dchr[type].d_mnem;
|
||||||
|
return '?';
|
||||||
|
}
|
||||||
|
|
||||||
int
|
int
|
||||||
unit_map(int unit_type, int i, struct nstr_sect *nsp, s_char *originp)
|
unit_map(int unit_type, int i, struct nstr_sect *nsp, s_char *originp)
|
||||||
{
|
{
|
||||||
|
|
|
@ -64,7 +64,7 @@ radmapupd(int own, int cx, int cy, int eff, int range, double seesub)
|
||||||
}
|
}
|
||||||
|
|
||||||
/* More dynamic world sized buffers. We create 'em once, and then
|
/* More dynamic world sized buffers. We create 'em once, and then
|
||||||
* never again. No need to keep creating/tearint apart. We may
|
* never again. No need to keep creating/tearing apart. We may
|
||||||
* want to do this in other places too where it doesn't matter. */
|
* want to do this in other places too where it doesn't matter. */
|
||||||
static s_char **rad;
|
static s_char **rad;
|
||||||
static s_char *radbuf;
|
static s_char *radbuf;
|
||||||
|
@ -121,8 +121,10 @@ radmap2(int owner,
|
||||||
snxtsct_dist(&ns, cx, cy, range);
|
snxtsct_dist(&ns, cx, cy, range);
|
||||||
blankfill((s_char *)radbuf, &ns.range, 1);
|
blankfill((s_char *)radbuf, &ns.range, 1);
|
||||||
while (nxtsct(&ns, §)) {
|
while (nxtsct(&ns, §)) {
|
||||||
if (sect.sct_own == owner ||
|
if (sect.sct_own == owner
|
||||||
(sect.sct_type <= SCT_RURAL && sect.sct_type != SCT_SANCT)
|
|| sect.sct_type == SCT_WATER
|
||||||
|
|| sect.sct_type == SCT_MOUNT
|
||||||
|
|| sect.sct_type == SCT_WASTE
|
||||||
|| ns.curdist <= range / 3)
|
|| ns.curdist <= range / 3)
|
||||||
rad[ns.dy][ns.dx] = dchr[sect.sct_type].d_mnem;
|
rad[ns.dy][ns.dx] = dchr[sect.sct_type].d_mnem;
|
||||||
else
|
else
|
||||||
|
|
|
@ -120,7 +120,7 @@ satmap(int x, int y, int eff, int range, int flags, int type)
|
||||||
if (noise[crackle])
|
if (noise[crackle])
|
||||||
continue;
|
continue;
|
||||||
if (flags & P_S) {
|
if (flags & P_S) {
|
||||||
if (sect.sct_type > SCT_RURAL) {
|
if (sect.sct_own && sect.sct_own != player->cnum) {
|
||||||
satdisp(§, acc, 0);
|
satdisp(§, acc, 0);
|
||||||
++count;
|
++count;
|
||||||
}
|
}
|
||||||
|
@ -290,7 +290,7 @@ satdisp(struct sctstr *sp, int acc, int showstuff)
|
||||||
|
|
||||||
if (getvec(VT_ITEM, vec, (caddr_t)sp, EF_SECTOR) < 0)
|
if (getvec(VT_ITEM, vec, (caddr_t)sp, EF_SECTOR) < 0)
|
||||||
return;
|
return;
|
||||||
prxy("%4d,%-4d ", sp->sct_x, sp->sct_y, player->cnum),
|
prxy("%4d,%-4d ", sp->sct_x, sp->sct_y, player->cnum);
|
||||||
pr("%c %3d %3d %3d %3d %3d %4d %4d %4d %4d %4d %4d %5d\n",
|
pr("%c %3d %3d %3d %3d %3d %4d %4d %4d %4d %4d %4d %5d\n",
|
||||||
dchr[sp->sct_type].d_mnem,
|
dchr[sp->sct_type].d_mnem,
|
||||||
sp->sct_own, roundintby((int)sp->sct_effic, acc / 2),
|
sp->sct_own, roundintby((int)sp->sct_effic, acc / 2),
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue