prod() duplicates materials_cost(), clean up

Rename materials_cost() to prod_materials_cost(), give external
linkage, use it in prod().
This commit is contained in:
Markus Armbruster 2013-05-03 20:52:02 +02:00
parent ac60160355
commit f0927e7f64
4 changed files with 15 additions and 22 deletions

View file

@ -716,6 +716,7 @@ extern int bank_income(struct sctstr *, int);
/* produce.c */ /* produce.c */
extern int produce(struct natstr *, struct sctstr *, short *, int, int, extern int produce(struct natstr *, struct sctstr *, short *, int, int,
int, int *, int *); int, int *, int *);
extern int prod_materials_cost(struct pchrstr *, short[], int *);
extern double prod_eff(int, float); extern double prod_eff(int, float);
/* removewants.c */ /* removewants.c */
extern int update_removewants(void); extern int update_removewants(void);

View file

@ -48,6 +48,7 @@ struct nchrstr;
struct nstr_item; struct nstr_item;
struct nstr_sect; struct nstr_sect;
struct nukstr; struct nukstr;
struct pchrstr;
struct player; struct player;
struct plist; struct plist;
struct plnstr; struct plnstr;

View file

@ -29,7 +29,7 @@
* Known contributors to this file: * Known contributors to this file:
* David Muir Sharnoff, 1987 * David Muir Sharnoff, 1987
* Steve McClure, 1997-2000 * Steve McClure, 1997-2000
* Markus Armbruster, 2004-2010 * Markus Armbruster, 2004-2013
*/ */
#include <config.h> #include <config.h>
@ -202,13 +202,13 @@ prod(void)
if (dchr[type].d_prd < 0) if (dchr[type].d_prd < 0)
continue; continue;
unit_work = 0;
pp = &pchr[dchr[type].d_prd]; pp = &pchr[dchr[type].d_prd];
vtype = pp->p_type; vtype = pp->p_type;
if (pp->p_nrndx) if (pp->p_nrndx)
resource = (unsigned char *)&sect + pp->p_nrndx; resource = (unsigned char *)&sect + pp->p_nrndx;
else else
resource = NULL; resource = NULL;
used = prod_materials_cost(pp, sect.sct_item, &unit_work);
/* /*
* sect p_e (inc improvements) * sect p_e (inc improvements)
*/ */
@ -216,25 +216,12 @@ prod(void)
unit_work++; unit_work++;
p_e *= *resource / 100.0; p_e *= *resource / 100.0;
} }
if (unit_work == 0)
unit_work = 1;
/* /*
* production effic. * production effic.
*/ */
prodeff = prod_eff(type, natp->nat_level[pp->p_nlndx]); prodeff = prod_eff(type, natp->nat_level[pp->p_nlndx]);
/*
* raw material limit
*/
used = 9999;
for (i = 0; i < MAXPRCON; ++i) {
it = pp->p_ctype[i];
if (!pp->p_camt[i])
continue;
if (CANT_HAPPEN(it <= I_NONE || I_MAX < it))
continue;
used = MIN(used, sect.sct_item[it] / pp->p_camt[i]);
unit_work += pp->p_camt[i];
}
if (unit_work == 0)
unit_work = 1;
/* /*
* is production limited by resources or * is production limited by resources or
* workforce? * workforce?

View file

@ -27,7 +27,7 @@
* produce.c: Produce goodies * produce.c: Produce goodies
* *
* Known contributors to this file: * Known contributors to this file:
* Markus Armbruster, 2004-2010 * Markus Armbruster, 2004-2013
*/ */
#include <config.h> #include <config.h>
@ -39,7 +39,6 @@
#include "update.h" #include "update.h"
static void materials_charge(struct pchrstr *, short *, int); static void materials_charge(struct pchrstr *, short *, int);
static int materials_cost(struct pchrstr *, short *, int *);
static char *levelnames[] = { static char *levelnames[] = {
"Technology", "Research", "Education", "Happiness" "Technology", "Research", "Education", "Happiness"
@ -73,7 +72,8 @@ produce(struct natstr *np, struct sctstr *sp, short *vec, int work,
*amount = 0; *amount = 0;
*cost = 0; *cost = 0;
if ((material_limit = materials_cost(product, vec, &unit_work)) <= 0) material_limit = prod_materials_cost(product, vec, &unit_work);
if (material_limit <= 0)
return 0; return 0;
/* /*
* calculate production efficiency. * calculate production efficiency.
@ -172,8 +172,12 @@ produce(struct natstr *np, struct sctstr *sp, short *vec, int work,
return 0; return 0;
} }
static int /*
materials_cost(struct pchrstr *pp, short *vec, int *costp) * Return how much of product PP can be made from materials VEC[].
* Store amount of work per unit in *COSTP.
*/
int
prod_materials_cost(struct pchrstr *pp, short vec[], int *costp)
{ {
int count; int count;
int cost; int cost;