(do_map): New. map() was split into two parts map() and do_map().
(map): Call new function do_map(). (display_region_map): Modify to use do_map() instead of map(). (tran_nmap, tran_pmap, cmd_move_map): Modify to accomodate the modified display_region_map() function.
This commit is contained in:
parent
fa38aef700
commit
51275c753f
5 changed files with 76 additions and 70 deletions
|
@ -305,9 +305,11 @@ extern void loginit(char *);
|
||||||
extern void logerror(char *, ...) ATTRIBUTE((format (printf, 1, 2)));
|
extern void logerror(char *, ...) ATTRIBUTE((format (printf, 1, 2)));
|
||||||
/* more in misc.h */
|
/* more in misc.h */
|
||||||
/* maps.c */
|
/* maps.c */
|
||||||
|
extern int do_map(int bmap, int unit_type, char *arg1, char *arg2);
|
||||||
extern int draw_map(int, char, int, struct nstr_sect *);
|
extern int draw_map(int, char, int, struct nstr_sect *);
|
||||||
extern int unit_map(int, int, struct nstr_sect *, char *);
|
extern int unit_map(int, int, struct nstr_sect *, char *);
|
||||||
extern int display_region_map(char *cmd, coord curx, coord cury, char *arg);
|
extern int display_region_map(int bmap, int unit_type, coord curx,
|
||||||
|
coord cury, char *arg);
|
||||||
extern int bmaps_intersect(natid, natid);
|
extern int bmaps_intersect(natid, natid);
|
||||||
extern int share_bmap(natid, natid, struct nstr_sect *, char, char *);
|
extern int share_bmap(natid, natid, struct nstr_sect *, char, char *);
|
||||||
/* move.c */
|
/* move.c */
|
||||||
|
|
|
@ -43,13 +43,9 @@
|
||||||
int
|
int
|
||||||
map(void)
|
map(void)
|
||||||
{
|
{
|
||||||
char *b;
|
|
||||||
int unit_type = EF_BAD;
|
int unit_type = EF_BAD;
|
||||||
int bmap = 0;
|
int bmap = 0;
|
||||||
char *str;
|
char *str;
|
||||||
struct nstr_sect ns;
|
|
||||||
char origin = '\0';
|
|
||||||
int map_flags = 0;
|
|
||||||
char buf[1024];
|
char buf[1024];
|
||||||
char prompt[128];
|
char prompt[128];
|
||||||
|
|
||||||
|
@ -91,53 +87,5 @@ map(void)
|
||||||
} else
|
} else
|
||||||
str = player->argp[1];
|
str = player->argp[1];
|
||||||
|
|
||||||
if (!snxtsct(&ns, str)) {
|
return do_map(bmap, unit_type, str, player->argp[2]);
|
||||||
if (unit_map(unit_type, atoi(str), &ns, &origin))
|
|
||||||
return RET_FAIL;
|
|
||||||
}
|
|
||||||
for (b = player->argp[2]; b && *b; b++) {
|
|
||||||
switch (*b) {
|
|
||||||
case 's':
|
|
||||||
case 'S':
|
|
||||||
map_flags |= MAP_SHIP;
|
|
||||||
break;
|
|
||||||
case 'l':
|
|
||||||
case 'L':
|
|
||||||
map_flags |= MAP_LAND;
|
|
||||||
break;
|
|
||||||
case 'p':
|
|
||||||
case 'P':
|
|
||||||
map_flags |= MAP_PLANE;
|
|
||||||
break;
|
|
||||||
case 'n':
|
|
||||||
case 'N':
|
|
||||||
map_flags |= MAP_NUKE;
|
|
||||||
break;
|
|
||||||
case 'h':
|
|
||||||
case 'H':
|
|
||||||
map_flags |= MAP_HIGH;
|
|
||||||
break;
|
|
||||||
case '*':
|
|
||||||
map_flags |= MAP_ALL;
|
|
||||||
break;
|
|
||||||
case 't':
|
|
||||||
if (bmap != 'b')
|
|
||||||
goto bad_flag;
|
|
||||||
bmap = 't';
|
|
||||||
*(b + 1) = 0;
|
|
||||||
break;
|
|
||||||
case 'r':
|
|
||||||
if (bmap != 'b')
|
|
||||||
goto bad_flag;
|
|
||||||
bmap = 'r';
|
|
||||||
*(b + 1) = 0;
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
bad_flag:
|
|
||||||
pr("Bad flag %c!\n", *b);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return draw_map(bmap, origin, map_flags, &ns);
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -343,7 +343,7 @@ move(void)
|
||||||
static int
|
static int
|
||||||
cmd_move_map(coord curx, coord cury, char *arg)
|
cmd_move_map(coord curx, coord cury, char *arg)
|
||||||
{
|
{
|
||||||
return display_region_map("map", curx, cury, arg);
|
return display_region_map(0, EF_BAD, curx, cury, arg);
|
||||||
}
|
}
|
||||||
|
|
||||||
int
|
int
|
||||||
|
|
|
@ -246,12 +246,12 @@ tran_plane(void)
|
||||||
static int
|
static int
|
||||||
tran_pmap(coord curx, coord cury, char *arg)
|
tran_pmap(coord curx, coord cury, char *arg)
|
||||||
{
|
{
|
||||||
return display_region_map("pmap", curx, cury, arg);
|
return display_region_map(0, EF_PLANE, curx, cury, arg);
|
||||||
}
|
}
|
||||||
|
|
||||||
static int
|
static int
|
||||||
tran_nmap(coord curx, coord cury, char *arg)
|
tran_nmap(coord curx, coord cury, char *arg)
|
||||||
{
|
{
|
||||||
return display_region_map("nmap", curx, cury, arg);
|
return display_region_map(0, EF_NUKE, curx, cury, arg);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -55,6 +55,64 @@
|
||||||
static int bmnxtsct(struct nstr_sect *);
|
static int bmnxtsct(struct nstr_sect *);
|
||||||
static char map_char(unsigned char type, natid own, int owner_or_god);
|
static char map_char(unsigned char type, natid own, int owner_or_god);
|
||||||
|
|
||||||
|
int
|
||||||
|
do_map(int bmap, int unit_type, char *arg, char *map_flags_arg)
|
||||||
|
{
|
||||||
|
struct nstr_sect ns;
|
||||||
|
char origin = '\0';
|
||||||
|
char *b;
|
||||||
|
int map_flags = 0;
|
||||||
|
|
||||||
|
if (!snxtsct(&ns, arg)) {
|
||||||
|
if (unit_map(unit_type, atoi(arg), &ns, &origin))
|
||||||
|
return RET_FAIL;
|
||||||
|
}
|
||||||
|
for (b = map_flags_arg; b && *b; b++) {
|
||||||
|
switch (*b) {
|
||||||
|
case 's':
|
||||||
|
case 'S':
|
||||||
|
map_flags |= MAP_SHIP;
|
||||||
|
break;
|
||||||
|
case 'l':
|
||||||
|
case 'L':
|
||||||
|
map_flags |= MAP_LAND;
|
||||||
|
break;
|
||||||
|
case 'p':
|
||||||
|
case 'P':
|
||||||
|
map_flags |= MAP_PLANE;
|
||||||
|
break;
|
||||||
|
case 'n':
|
||||||
|
case 'N':
|
||||||
|
map_flags |= MAP_NUKE;
|
||||||
|
break;
|
||||||
|
case 'h':
|
||||||
|
case 'H':
|
||||||
|
map_flags |= MAP_HIGH;
|
||||||
|
break;
|
||||||
|
case '*':
|
||||||
|
map_flags |= MAP_ALL;
|
||||||
|
break;
|
||||||
|
case 't':
|
||||||
|
if (bmap != 'b')
|
||||||
|
goto bad_flag;
|
||||||
|
bmap = 't';
|
||||||
|
*(b + 1) = 0;
|
||||||
|
break;
|
||||||
|
case 'r':
|
||||||
|
if (bmap != 'b')
|
||||||
|
goto bad_flag;
|
||||||
|
bmap = 'r';
|
||||||
|
*(b + 1) = 0;
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
bad_flag:
|
||||||
|
pr("Bad flag %c!\n", *b);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return draw_map(bmap, origin, map_flags, &ns);
|
||||||
|
}
|
||||||
|
|
||||||
int
|
int
|
||||||
draw_map(int bmap, char origin, int map_flags, struct nstr_sect *nsp)
|
draw_map(int bmap, char origin, int map_flags, struct nstr_sect *nsp)
|
||||||
{
|
{
|
||||||
|
@ -359,11 +417,12 @@ unit_map(int unit_type, int uid, struct nstr_sect *nsp, char *originp)
|
||||||
}
|
}
|
||||||
|
|
||||||
int
|
int
|
||||||
display_region_map(char *cmd, coord curx, coord cury, char *arg)
|
display_region_map(int bmap, int unit_type, coord curx, coord cury,
|
||||||
|
char *arg)
|
||||||
{
|
{
|
||||||
char coordinates[80], *cp;
|
char coordinates[80], *cp;
|
||||||
|
char *map_flag_arg;
|
||||||
|
|
||||||
player->argp[0] = cmd;
|
|
||||||
if (!arg || !*arg) {
|
if (!arg || !*arg) {
|
||||||
struct natstr *np;
|
struct natstr *np;
|
||||||
|
|
||||||
|
@ -371,20 +430,17 @@ display_region_map(char *cmd, coord curx, coord cury, char *arg)
|
||||||
sprintf(coordinates, "%d:%d,%d:%d",
|
sprintf(coordinates, "%d:%d,%d:%d",
|
||||||
xrel(np, curx - 10), xrel(np, curx + 11),
|
xrel(np, curx - 10), xrel(np, curx + 11),
|
||||||
yrel(np, cury - 5), yrel(np, cury + 6));
|
yrel(np, cury - 5), yrel(np, cury + 6));
|
||||||
player->argp[1] = coordinates;
|
arg = coordinates;
|
||||||
player->argp[2] = NULL;
|
map_flag_arg = NULL;
|
||||||
} else {
|
} else {
|
||||||
player->argp[1] = arg;
|
map_flag_arg = strchr(arg, ' ');
|
||||||
cp = strchr(arg, ' ');
|
if (map_flag_arg != NULL) {
|
||||||
if (cp != NULL) {
|
*map_flag_arg++ = '\0';
|
||||||
*cp++ = '\0';
|
while (isspace(*map_flag_arg)) map_flag_arg++;
|
||||||
while (isspace(*cp)) cp++;
|
}
|
||||||
player->argp[2] = cp;
|
|
||||||
} else
|
|
||||||
player->argp[2] = NULL;
|
|
||||||
}
|
}
|
||||||
player->condarg = NULL;
|
player->condarg = NULL;
|
||||||
return map();
|
return do_map(bmap, unit_type, arg, map_flag_arg);
|
||||||
}
|
}
|
||||||
|
|
||||||
int
|
int
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue