/* maps.c */
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 bmaps_intersect(natid, natid);
extern int share_bmap(natid, natid, struct nstr_sect *, char, char *);
/* move.c */
static int
cmd_move_map(coord curx, coord cury, char *arg)
{
- player->argp[0] = "map";
- player->argp[1] = arg;
- player->argp[2] = NULL;
- player->condarg = NULL;
- return map();
+ return display_region_map("map", curx, cury, arg);
}
int
#include "land.h"
#include "commands.h"
-static int tran_map(coord curx, coord cury, char *arg);
+static int tran_pmap(coord curx, coord cury, char *arg);
+static int tran_nmap(coord curx, coord cury, char *arg);
static int tran_nuke(void);
static int tran_plane(void);
}
dam = 0;
mcost = move_ground(§, &endsect, weight,
- player->argp[3], tran_map, 0, &dam);
+ player->argp[3], tran_nmap, 0, &dam);
if (mcost < 0)
return 0;
}
dam = 1;
mcost = move_ground(§, &endsect, weight,
- player->argp[3], tran_map, 0, &dam);
+ player->argp[3], tran_pmap, 0, &dam);
dam /= count;
if (mcost < 0)
return 0;
*/
/*ARGSUSED*/
static int
-tran_map(coord curx, coord cury, char *arg)
+tran_pmap(coord curx, coord cury, char *arg)
{
- player->argp[0] = "map";
- player->argp[1] = arg;
- player->argp[2] = NULL;
- player->condarg = NULL;
- return map();
+ return display_region_map("pmap", curx, cury, arg);
}
+
+static int
+tran_nmap(coord curx, coord cury, char *arg)
+{
+ return display_region_map("nmap", curx, cury, arg);
+}
+
return RET_OK;
}
+int
+display_region_map(char *cmd, coord curx, coord cury, char *arg)
+{
+ char coordinates[80], *cp;
+
+ player->argp[0] = cmd;
+ if (!arg || !*arg) {
+ struct natstr *np;
+
+ np = getnatp(player->cnum);
+ 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;
+ } 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;
+ }
+ player->condarg = NULL;
+ return map();
+}
+
int
bmaps_intersect(natid a, natid b)
{