build: Report missing stuff more nicely for ship, plane, land units

If both materials and avail are missing, report missing avail instead
of materials, to avoid tempting the player to move in materials only
to discover avail is lacking, too.

Report what materials are missing instead of just "Not enough
materials".  Does not yet include military for planes, but that's
next.

Signed-off-by: Markus Armbruster <armbru@pond.sub.org>
This commit is contained in:
Markus Armbruster 2014-01-12 18:33:13 +01:00
parent 1227d2c931
commit e2d176fd8a
3 changed files with 29 additions and 22 deletions

View file

@ -34,6 +34,7 @@
#include <config.h>
#include <limits.h>
#include <math.h>
#include "chance.h"
#include "commands.h"
#include "game.h"
@ -714,7 +715,7 @@ static int
sector_can_build(struct sctstr *sp, short mat[], int work,
int effic, char *what)
{
int i, avail;
int i, avail, ret;
double needed;
if (sp->sct_effic < 60 && !player->god) {
@ -723,16 +724,6 @@ sector_can_build(struct sctstr *sp, short mat[], int work,
return 0;
}
for (i = I_NONE + 1; i <= I_MAX; i++) {
needed = mat[i] * (effic / 100.0);
if (sp->sct_item[i] < needed) {
pr("Not enough materials in %s\n",
xyas(sp->sct_x, sp->sct_y, player->cnum));
return 0;
}
mat[i] = roundavg(needed);
}
avail = (work * effic + 99) / 100;
if (sp->sct_avail < avail) {
pr("Not enough available work in %s to build a %s\n",
@ -741,7 +732,19 @@ sector_can_build(struct sctstr *sp, short mat[], int work,
return 0;
}
return 1;
ret = 1;
for (i = I_NONE + 1; i <= I_MAX; i++) {
needed = mat[i] * (effic / 100.0);
if (sp->sct_item[i] < needed) {
pr("Not enough %s in %s (need %g more)\n",
ichr[i].i_name, xyas(sp->sct_x, sp->sct_y, player->cnum),
ceil(needed - sp->sct_item[i]));
ret = 0;
}
mat[i] = roundavg(needed);
}
return ret;
}
static void

View file

@ -11,7 +11,7 @@ owner xloc yloc des effic mobil off loyal terr0 terr1 terr2 terr3 dterr xdist yd
0 -4 0 0 0 0 0 0 0 0 0 0 0 -4 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 healthy 0 0 0 0 0 0 0 0
1 -2 0 5 100 127 0 0 0 0 0 0 0 -2 0 0 0 0 1 5 0 0 0 0 0 1 100 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 healthy 0 0 0 0 0 0 0 0
2 1 1 14 100 127 0 0 0 0 0 0 0 1 1 3 0 0 0 14 0 0 0 0 0 2 100 2 0 0 0 0 0 0 0 0 2 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 healthy 0 0 0 0 0 0 0 0
2 3 1 14 60 127 0 0 0 0 0 0 0 3 1 7 0 0 0 14 0 0 0 0 0 2 100 3 0 0 0 0 0 0 0 0 3 4 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 healthy 0 0 0 0 0 0 0 0
2 3 1 14 60 127 0 0 0 0 0 0 0 3 1 7 0 0 0 14 0 0 0 0 0 2 100 3 0 0 0 0 0 0 0 0 3 3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 healthy 0 0 0 0 0 0 0 0
2 5 1 14 59 127 0 0 0 0 0 0 0 5 1 11 0 0 1 14 0 0 0 0 0 2 100 50 0 0 0 0 0 0 0 500 500 500 0 500 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 healthy 0 0 0 0 0 0 0 0
0 7 1 0 0 0 0 0 0 0 0 0 0 7 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 healthy 0 0 0 0 0 0 0 0
0 9 1 0 0 0 0 0 0 0 0 0 0 9 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 healthy 0 0 0 0 0 0 0 0

View file

@ -61,7 +61,8 @@
Play#1 output Play#1 6 0 635
Play#1 input build s 4:6,0 pt
Play#1 command build
Play#1 output Play#1 1 Not enough materials in 4,0
Play#1 output Play#1 1 Not enough light products in 4,0 (need 4 more)
Play#1 output Play#1 1 Not enough heavy products in 4,0 (need 2 more)
Play#1 output Play#1 1 Sector 6,0 is not 60% efficient.
Play#1 output Play#1 6 0 634
Play#1 input move l 0,0 4 jh
@ -86,8 +87,8 @@
Play#1 output Play#1 6 0 630
Play#1 input build s 2:4,0 pt
Play#1 command build
Play#1 output Play#1 1 Not enough materials in 2,0
Play#1 output Play#1 1 Not enough materials in 4,0
Play#1 output Play#1 1 Not enough heavy products in 2,0 (need 1 more)
Play#1 output Play#1 1 Not enough light products in 4,0 (need 1 more)
Play#1 output Play#1 6 0 629
Play#1 input move l 0,0 12 jh
Play#1 command move
@ -268,7 +269,8 @@
Play#2 output Play#2 6 0 635
Play#2 input build p 3:5,1 f2
Play#2 command build
Play#2 output Play#2 1 Not enough materials in 3,1
Play#2 output Play#2 1 Not enough light products in 3,1 (need 1 more)
Play#2 output Play#2 1 Not enough heavy products in 3,1 (need 1 more)
Play#2 output Play#2 1 Sector 5,1 is not 60% efficient.
Play#2 output Play#2 6 0 634
Play#2 input move m -1,1 1 jh
@ -288,7 +290,8 @@
Play#2 output Play#2 6 0 631
Play#2 input build p 1:3,1 f2
Play#2 command build
Play#2 output Play#2 1 Not enough materials in 1,1
Play#2 output Play#2 1 Not enough light products in 1,1 (need 1 more)
Play#2 output Play#2 1 Not enough heavy products in 1,1 (need 1 more)
Play#2 output Play#2 1 Not enough military for crew in 3,1
Play#2 output Play#2 6 0 630
Play#2 input move m -1,1 3 jh
@ -372,7 +375,7 @@
Play#2 output Play#2 1 COMMODITIES deliver-- distribute
Play#2 output Play#2 1 sect sgpidbolhr sgpidbolhr sh gun pet iron dust bar oil lcm hcm rad
Play#2 output Play#2 1 1,1 * .......... .......... 0 0 0 0 0 0 0 2 2 0
Play#2 output Play#2 1 3,1 * .......... .......... 0 0 0 0 0 0 0 3 4 0
Play#2 output Play#2 1 3,1 * .......... .......... 0 0 0 0 0 0 0 3 3 0
Play#2 output Play#2 1 5,1 * .......... .......... 0 0 0 0 0 0 500 500 500 500
Play#2 output Play#2 1 3 sectors
Play#2 output Play#2 6 0 621
@ -428,7 +431,8 @@
Play#3 output Play#3 6 0 635
Play#3 input build l 4:6,2 linf
Play#3 command build
Play#3 output Play#3 1 Not enough materials in 4,2
Play#3 output Play#3 1 Not enough light products in 4,2 (need 1 more)
Play#3 output Play#3 1 Not enough heavy products in 4,2 (need 1 more)
Play#3 output Play#3 1 Sector 6,2 is not 60% efficient.
Play#3 output Play#3 6 0 634
Play#3 input move l 0,2 1 jjh
@ -443,8 +447,8 @@
Play#3 output Play#3 6 0 632
Play#3 input build l 2:4,2 linf
Play#3 command build
Play#3 output Play#3 1 Not enough materials in 2,2
Play#3 output Play#3 1 Not enough materials in 4,2
Play#3 output Play#3 1 Not enough light products in 2,2 (need 1 more)
Play#3 output Play#3 1 Not enough heavy products in 4,2 (need 1 more)
Play#3 output Play#3 6 0 631
Play#3 input move l 0,2 4 jh
Play#3 command move