Factor bridge building out of buil()
Also avoids a "may be used uninitialized" compiler warning (the code was safe despite the warning).
This commit is contained in:
parent
bc09ffde00
commit
0ec19fe81e
1 changed files with 68 additions and 37 deletions
|
@ -56,6 +56,7 @@ static int build_land(struct sctstr *sp,
|
||||||
struct lchrstr *lp, short *vec, int tlev);
|
struct lchrstr *lp, short *vec, int tlev);
|
||||||
static int build_plane(struct sctstr *sp,
|
static int build_plane(struct sctstr *sp,
|
||||||
struct plchrstr *pp, short *vec, int tlev);
|
struct plchrstr *pp, short *vec, int tlev);
|
||||||
|
static int build_bridge(char);
|
||||||
static int build_bspan(struct sctstr *sp, short *vec);
|
static int build_bspan(struct sctstr *sp, short *vec);
|
||||||
static int build_btower(struct sctstr *sp, short *vec);
|
static int build_btower(struct sctstr *sp, short *vec);
|
||||||
static int build_can_afford(double, char *);
|
static int build_can_afford(double, char *);
|
||||||
|
@ -93,22 +94,8 @@ buil(void)
|
||||||
what = *p;
|
what = *p;
|
||||||
switch (what) {
|
switch (what) {
|
||||||
case 'b':
|
case 'b':
|
||||||
if (natp->nat_level[NAT_TLEV] + 0.005 < buil_bt) {
|
|
||||||
pr("Building a span requires a tech of %.0f\n", buil_bt);
|
|
||||||
return RET_FAIL;
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
case 't':
|
case 't':
|
||||||
if (!opt_BRIDGETOWERS) {
|
return build_bridge(what);
|
||||||
pr("Bridge tower building is disabled.\n");
|
|
||||||
return RET_FAIL;
|
|
||||||
}
|
|
||||||
if (natp->nat_level[NAT_TLEV] + 0.005 < buil_tower_bt) {
|
|
||||||
pr("Building a tower requires a tech of %.0f\n",
|
|
||||||
buil_tower_bt);
|
|
||||||
return RET_FAIL;
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
case 's':
|
case 's':
|
||||||
case 'p':
|
case 'p':
|
||||||
case 'l':
|
case 'l':
|
||||||
|
@ -188,9 +175,6 @@ buil(void)
|
||||||
return RET_FAIL;
|
return RET_FAIL;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case 'b':
|
|
||||||
case 't':
|
|
||||||
break;
|
|
||||||
case 'n':
|
case 'n':
|
||||||
p = getstarg(player->argp[3], "Nuke type? ", buf);
|
p = getstarg(player->argp[3], "Nuke type? ", buf);
|
||||||
if (!p || !*p)
|
if (!p || !*p)
|
||||||
|
@ -221,7 +205,6 @@ buil(void)
|
||||||
}
|
}
|
||||||
|
|
||||||
number = 1;
|
number = 1;
|
||||||
if (what != 'b' && what != 't') {
|
|
||||||
if (player->argp[4]) {
|
if (player->argp[4]) {
|
||||||
number = atoi(player->argp[4]);
|
number = atoi(player->argp[4]);
|
||||||
if (number > 20) {
|
if (number > 20) {
|
||||||
|
@ -234,9 +217,8 @@ buil(void)
|
||||||
return RET_SYN;
|
return RET_SYN;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
if (what != 'b' && what != 'n' && what != 't') {
|
if (what != 'n') {
|
||||||
if (player->argp[5]) {
|
if (player->argp[5]) {
|
||||||
tlev = atoi(player->argp[5]);
|
tlev = atoi(player->argp[5]);
|
||||||
if (tlev > natp->nat_level[NAT_TLEV] && !player->god) {
|
if (tlev > natp->nat_level[NAT_TLEV] && !player->god) {
|
||||||
|
@ -264,12 +246,6 @@ buil(void)
|
||||||
case 's':
|
case 's':
|
||||||
built = build_ship(§, mp, sect.sct_item, tlev);
|
built = build_ship(§, mp, sect.sct_item, tlev);
|
||||||
break;
|
break;
|
||||||
case 'b':
|
|
||||||
built = build_bspan(§, sect.sct_item);
|
|
||||||
break;
|
|
||||||
case 't':
|
|
||||||
built = build_btower(§, sect.sct_item);
|
|
||||||
break;
|
|
||||||
case 'n':
|
case 'n':
|
||||||
built = build_nuke(§, np, sect.sct_item, tlev);
|
built = build_nuke(§, np, sect.sct_item, tlev);
|
||||||
break;
|
break;
|
||||||
|
@ -662,6 +638,61 @@ build_plane(struct sctstr *sp, struct plchrstr *pp, short *vec, int tlev)
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static int
|
||||||
|
build_bridge(char what)
|
||||||
|
{
|
||||||
|
struct natstr *natp = getnatp(player->cnum);
|
||||||
|
struct nstr_sect nstr;
|
||||||
|
int gotsect, built;
|
||||||
|
struct sctstr sect;
|
||||||
|
|
||||||
|
switch (what) {
|
||||||
|
case 'b':
|
||||||
|
if (natp->nat_level[NAT_TLEV] + 0.005 < buil_bt) {
|
||||||
|
pr("Building a span requires a tech of %.0f\n", buil_bt);
|
||||||
|
return RET_FAIL;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case 't':
|
||||||
|
if (!opt_BRIDGETOWERS) {
|
||||||
|
pr("Bridge tower building is disabled.\n");
|
||||||
|
return RET_FAIL;
|
||||||
|
}
|
||||||
|
if (natp->nat_level[NAT_TLEV] + 0.005 < buil_tower_bt) {
|
||||||
|
pr("Building a tower requires a tech of %.0f\n",
|
||||||
|
buil_tower_bt);
|
||||||
|
return RET_FAIL;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
CANT_REACH();
|
||||||
|
return RET_FAIL;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!snxtsct(&nstr, player->argp[2]))
|
||||||
|
return RET_SYN;
|
||||||
|
gotsect = 0;
|
||||||
|
while (nxtsct(&nstr, §)) {
|
||||||
|
gotsect++;
|
||||||
|
if (!player->owner)
|
||||||
|
continue;
|
||||||
|
switch (what) {
|
||||||
|
case 'b':
|
||||||
|
built = build_bspan(§, sect.sct_item);
|
||||||
|
break;
|
||||||
|
case 't':
|
||||||
|
built = build_btower(§, sect.sct_item);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
if (built)
|
||||||
|
putsect(§);
|
||||||
|
}
|
||||||
|
if (!gotsect) {
|
||||||
|
pr("Bad sector specification.\n");
|
||||||
|
}
|
||||||
|
return RET_OK;
|
||||||
|
}
|
||||||
|
|
||||||
static int
|
static int
|
||||||
build_bspan(struct sctstr *sp, short *vec)
|
build_bspan(struct sctstr *sp, short *vec)
|
||||||
{
|
{
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue