Simplify buil(): factor getting third argument out of switch cases

This commit is contained in:
Markus Armbruster 2011-04-23 08:42:37 +02:00
parent 98a9b53c0f
commit 164b90760f

View file

@ -70,7 +70,7 @@ buil(void)
int tlev; int tlev;
int type; int type;
char what; char what;
char *p; char *p, *prompt;
int gotsect = 0; int gotsect = 0;
int (*build_it)(struct sctstr *, int, short[], int); int (*build_it)(struct sctstr *, int, short[], int);
int number; int number;
@ -90,12 +90,15 @@ buil(void)
case 't': case 't':
return build_bridge(what); return build_bridge(what);
case 's': case 's':
prompt = "Ship type? ";
build_it = build_ship; build_it = build_ship;
break; break;
case 'p': case 'p':
prompt = "Plane type? ";
build_it = build_plane; build_it = build_plane;
break; break;
case 'l': case 'l':
prompt = "Land unit type? ";
build_it = build_land; build_it = build_land;
break; break;
case 'n': case 'n':
@ -106,6 +109,7 @@ buil(void)
if (drnuke_const > MIN_DRNUKE_CONST) if (drnuke_const > MIN_DRNUKE_CONST)
tlev = MIN(tlev, tlev = MIN(tlev,
(int)(natp->nat_level[NAT_RLEV] / drnuke_const)); (int)(natp->nat_level[NAT_RLEV] / drnuke_const));
prompt = "Nuke type? ";
build_it = build_nuke; build_it = build_nuke;
break; break;
default: default:
@ -116,11 +120,12 @@ buil(void)
if (!snxtsct(&nstr, player->argp[2])) if (!snxtsct(&nstr, player->argp[2]))
return RET_SYN; return RET_SYN;
p = getstarg(player->argp[3], prompt, buf);
if (!p || !*p)
return RET_SYN;
switch (what) { switch (what) {
case 'p': case 'p':
p = getstarg(player->argp[3], "Plane type? ", buf);
if (!p || !*p)
return RET_SYN;
type = ef_elt_byname(EF_PLANE_CHR, p); type = ef_elt_byname(EF_PLANE_CHR, p);
if (type >= 0) { if (type >= 0) {
rqtech = plchr[type].pl_tech; rqtech = plchr[type].pl_tech;
@ -135,9 +140,6 @@ buil(void)
} }
break; break;
case 's': case 's':
p = getstarg(player->argp[3], "Ship type? ", buf);
if (!p || !*p)
return RET_SYN;
type = ef_elt_byname(EF_SHIP_CHR, p); type = ef_elt_byname(EF_SHIP_CHR, p);
if (type >= 0) { if (type >= 0) {
rqtech = mchr[type].m_tech; rqtech = mchr[type].m_tech;
@ -154,9 +156,6 @@ buil(void)
} }
break; break;
case 'l': case 'l':
p = getstarg(player->argp[3], "Land unit type? ", buf);
if (!p || !*p)
return RET_SYN;
type = ef_elt_byname(EF_LAND_CHR, p); type = ef_elt_byname(EF_LAND_CHR, p);
if (type >= 0) { if (type >= 0) {
rqtech = lchr[type].l_tech; rqtech = lchr[type].l_tech;
@ -173,9 +172,6 @@ buil(void)
} }
break; break;
case 'n': case 'n':
p = getstarg(player->argp[3], "Nuke type? ", buf);
if (!p || !*p)
return RET_SYN;
type = ef_elt_byname(EF_NUKE_CHR, p); type = ef_elt_byname(EF_NUKE_CHR, p);
if (type >= 0) { if (type >= 0) {
rqtech = nchr[type].n_tech; rqtech = nchr[type].n_tech;