From 51275c753fcdd435449b32a85cecb01c24b24791 Mon Sep 17 00:00:00 2001 From: Ron Koenderink Date: Wed, 12 Jul 2006 18:14:31 +0000 Subject: [PATCH] (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. --- include/prototypes.h | 4 +- src/lib/commands/map.c | 54 +-------------------------- src/lib/commands/move.c | 2 +- src/lib/commands/tran.c | 4 +- src/lib/common/maps.c | 82 ++++++++++++++++++++++++++++++++++------- 5 files changed, 76 insertions(+), 70 deletions(-) diff --git a/include/prototypes.h b/include/prototypes.h index 0bb5d1afe..d4c20b3ab 100644 --- a/include/prototypes.h +++ b/include/prototypes.h @@ -305,9 +305,11 @@ extern void loginit(char *); extern void logerror(char *, ...) ATTRIBUTE((format (printf, 1, 2))); /* more in misc.h */ /* 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 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 share_bmap(natid, natid, struct nstr_sect *, char, char *); /* move.c */ diff --git a/src/lib/commands/map.c b/src/lib/commands/map.c index 6fda3bf4a..db0e38c1c 100644 --- a/src/lib/commands/map.c +++ b/src/lib/commands/map.c @@ -43,13 +43,9 @@ int map(void) { - char *b; int unit_type = EF_BAD; int bmap = 0; char *str; - struct nstr_sect ns; - char origin = '\0'; - int map_flags = 0; char buf[1024]; char prompt[128]; @@ -91,53 +87,5 @@ map(void) } else str = player->argp[1]; - if (!snxtsct(&ns, str)) { - 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); + return do_map(bmap, unit_type, str, player->argp[2]); } diff --git a/src/lib/commands/move.c b/src/lib/commands/move.c index 0953eb39b..02cd4fdae 100644 --- a/src/lib/commands/move.c +++ b/src/lib/commands/move.c @@ -343,7 +343,7 @@ move(void) static int 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 diff --git a/src/lib/commands/tran.c b/src/lib/commands/tran.c index d810c0c5d..873c851e5 100644 --- a/src/lib/commands/tran.c +++ b/src/lib/commands/tran.c @@ -246,12 +246,12 @@ tran_plane(void) static int 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 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); } diff --git a/src/lib/common/maps.c b/src/lib/common/maps.c index 44eef4594..47cb5fa58 100644 --- a/src/lib/common/maps.c +++ b/src/lib/common/maps.c @@ -55,6 +55,64 @@ static int bmnxtsct(struct nstr_sect *); 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 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 -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 *map_flag_arg; - player->argp[0] = cmd; if (!arg || !*arg) { struct natstr *np; @@ -371,20 +430,17 @@ display_region_map(char *cmd, coord curx, coord cury, char *arg) sprintf(coordinates, "%d:%d,%d:%d", xrel(np, curx - 10), xrel(np, curx + 11), yrel(np, cury - 5), yrel(np, cury + 6)); - player->argp[1] = coordinates; - player->argp[2] = NULL; + arg = coordinates; + map_flag_arg = NULL; } else { - player->argp[1] = arg; - cp = strchr(arg, ' '); - if (cp != NULL) { - *cp++ = '\0'; - while (isspace(*cp)) cp++; - player->argp[2] = cp; - } else - player->argp[2] = NULL; + map_flag_arg = strchr(arg, ' '); + if (map_flag_arg != NULL) { + *map_flag_arg++ = '\0'; + while (isspace(*map_flag_arg)) map_flag_arg++; + } } player->condarg = NULL; - return map(); + return do_map(bmap, unit_type, arg, map_flag_arg); } int -- 2.43.0