Factor parse_map_flags() out of do_map()
This commit is contained in:
parent
5da60a5abb
commit
457f797972
1 changed files with 26 additions and 14 deletions
|
@ -69,6 +69,7 @@
|
||||||
/* whether to revert bmap, internal to do_map() */
|
/* whether to revert bmap, internal to do_map() */
|
||||||
#define MAP_BMAP_REVERT bit(7)
|
#define MAP_BMAP_REVERT bit(7)
|
||||||
|
|
||||||
|
static int parse_map_flags(int, char *);
|
||||||
static int revert_bmap(struct nstr_sect *);
|
static int revert_bmap(struct nstr_sect *);
|
||||||
static int draw_map(char, int, struct nstr_sect *);
|
static int draw_map(char, int, struct nstr_sect *);
|
||||||
static int bmnxtsct(struct nstr_sect *);
|
static int bmnxtsct(struct nstr_sect *);
|
||||||
|
@ -80,7 +81,6 @@ do_map(int bmap, int unit_type, char *arg, char *map_flags_arg)
|
||||||
{
|
{
|
||||||
struct nstr_sect ns;
|
struct nstr_sect ns;
|
||||||
char origin = '\0';
|
char origin = '\0';
|
||||||
char *b;
|
|
||||||
int map_flags;
|
int map_flags;
|
||||||
|
|
||||||
switch (sarg_type(arg)) {
|
switch (sarg_type(arg)) {
|
||||||
|
@ -95,6 +95,21 @@ do_map(int bmap, int unit_type, char *arg, char *map_flags_arg)
|
||||||
return RET_FAIL;
|
return RET_FAIL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
map_flags = parse_map_flags(bmap, map_flags_arg);
|
||||||
|
if (map_flags < 0)
|
||||||
|
return RET_SYN;
|
||||||
|
|
||||||
|
if (map_flags & MAP_BMAP_REVERT)
|
||||||
|
return revert_bmap(&ns);
|
||||||
|
return draw_map(origin, map_flags, &ns);
|
||||||
|
}
|
||||||
|
|
||||||
|
static int
|
||||||
|
parse_map_flags(int bmap, char *str)
|
||||||
|
{
|
||||||
|
int map_flags;
|
||||||
|
char *p;
|
||||||
|
|
||||||
switch (bmap) {
|
switch (bmap) {
|
||||||
default: CANT_REACH();
|
default: CANT_REACH();
|
||||||
/* fall through */
|
/* fall through */
|
||||||
|
@ -103,8 +118,11 @@ do_map(int bmap, int unit_type, char *arg, char *map_flags_arg)
|
||||||
case 0: map_flags = 0;
|
case 0: map_flags = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
for (b = map_flags_arg; b && *b; b++) {
|
if (!str)
|
||||||
switch (*b) {
|
return map_flags;
|
||||||
|
|
||||||
|
for (p = str; *p; p++) {
|
||||||
|
switch (*p) {
|
||||||
case 's':
|
case 's':
|
||||||
case 'S':
|
case 'S':
|
||||||
map_flags |= MAP_SHIP;
|
map_flags |= MAP_SHIP;
|
||||||
|
@ -131,25 +149,19 @@ do_map(int bmap, int unit_type, char *arg, char *map_flags_arg)
|
||||||
case 't':
|
case 't':
|
||||||
if (bmap != 'b')
|
if (bmap != 'b')
|
||||||
goto bad_flag;
|
goto bad_flag;
|
||||||
map_flags |= MAP_ALT;
|
return map_flags | MAP_ALT;
|
||||||
*(b + 1) = 0;
|
|
||||||
break;
|
|
||||||
case 'r':
|
case 'r':
|
||||||
if (bmap != 'b')
|
if (bmap != 'b')
|
||||||
goto bad_flag;
|
goto bad_flag;
|
||||||
map_flags = MAP_BMAP_REVERT;
|
return MAP_BMAP_REVERT;
|
||||||
*(b + 1) = 0;
|
|
||||||
break;
|
|
||||||
default:
|
default:
|
||||||
bad_flag:
|
bad_flag:
|
||||||
pr("Bad flag %c!\n", *b);
|
pr("Bad flag %c!\n", *p);
|
||||||
return RET_SYN;
|
return -1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (map_flags & MAP_BMAP_REVERT)
|
return map_flags;
|
||||||
return revert_bmap(&ns);
|
|
||||||
return draw_map(origin, map_flags, &ns);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static int
|
static int
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue