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 */
extern int produce(struct natstr *, struct sctstr *, short *, int, int,
int, int *, int *);
extern int prod_materials_cost(struct pchrstr *, short[], int *);
extern double prod_eff(int, float);
/* removewants.c */
extern int update_removewants(void);

View file

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

View file

@ -29,7 +29,7 @@
* Known contributors to this file:
* David Muir Sharnoff, 1987
* Steve McClure, 1997-2000
* Markus Armbruster, 2004-2010
* Markus Armbruster, 2004-2013
*/
#include <config.h>
@ -202,13 +202,13 @@ prod(void)
if (dchr[type].d_prd < 0)
continue;
unit_work = 0;
pp = &pchr[dchr[type].d_prd];
vtype = pp->p_type;
if (pp->p_nrndx)
resource = (unsigned char *)&sect + pp->p_nrndx;
else
resource = NULL;
used = prod_materials_cost(pp, sect.sct_item, &unit_work);
/*
* sect p_e (inc improvements)
*/
@ -216,25 +216,12 @@ prod(void)
unit_work++;
p_e *= *resource / 100.0;
}
if (unit_work == 0)
unit_work = 1;
/*
* production effic.
*/
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
* workforce?

View file

@ -27,7 +27,7 @@
* produce.c: Produce goodies
*
* Known contributors to this file:
* Markus Armbruster, 2004-2010
* Markus Armbruster, 2004-2013
*/
#include <config.h>
@ -39,7 +39,6 @@
#include "update.h"
static void materials_charge(struct pchrstr *, short *, int);
static int materials_cost(struct pchrstr *, short *, int *);
static char *levelnames[] = {
"Technology", "Research", "Education", "Happiness"
@ -73,7 +72,8 @@ produce(struct natstr *np, struct sctstr *sp, short *vec, int work,
*amount = 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;
/*
* calculate production efficiency.
@ -172,8 +172,12 @@ produce(struct natstr *np, struct sctstr *sp, short *vec, int work,
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 cost;