#define SCT_EFFIC (SCT_TYPE_MAX + 1)
-void fill_update_array(int *bp, struct sctstr *sp);
-int gt_bg_nmbr(int *bp, struct sctstr *sp, i_type comm);
-void pt_bg_nmbr(int *bp, struct sctstr *sp, i_type comm, int amount);
-int get_materials(struct sctstr *, int *, int *, int);
+struct bp *alloc_bp(void);
+void fill_update_array(struct bp *, struct sctstr *);
+int gt_bg_nmbr(struct bp *, struct sctstr *, i_type);
+void pt_bg_nmbr(struct bp *, struct sctstr *, i_type, int);
+int get_materials(struct sctstr *, struct bp *, int *, int);
extern long money[MAXNOC];
extern long pops[MAXNOC];
/* human.c */
extern int new_work(struct sctstr *, int);
extern int do_feed(struct sctstr *, struct natstr *,
- short *, int *, int *, int);
+ short *, int *, struct bp *, int);
extern int feed_people(short *, int);
extern double food_needed(short *, int);
extern int famine_victims(short *, int);
/* land.c */
-extern int prod_land(int, int, int *, int);
+extern int prod_land(int, int, struct bp *, int);
/* main.c */
/* in server.h */
/* material.c */
extern void do_plague(struct sctstr *, struct natstr *, int);
extern int plague_people(struct natstr *, short *, int *, int *, int);
/* plane.c */
-extern int prod_plane(int, int, int *, int);
+extern int prod_plane(int, int, struct bp *, int);
/* populace.c */
extern void populace(struct natstr *, struct sctstr *, int);
extern int total_work(int, int, int, int, int, int);
extern void tax(struct sctstr *, struct natstr *, int, long *, int *,
int *, int *);
extern int upd_slmilcosts(natid, int);
-extern void prepare_sects(int, int *);
+extern void prepare_sects(int, struct bp *);
extern int bank_income(struct sctstr *, int);
/* produce.c */
extern int produce(struct natstr *, struct sctstr *, short *, int, int,
extern void do_fallout(struct sctstr *, int);
extern void spread_fallout(struct sctstr *, int);
extern void decay_fallout(struct sctstr *, int);
-extern void produce_sect(int, int, int *, long [][2]);
+extern void produce_sect(int, int, struct bp *, long [][2]);
/* ship.c */
-extern int prod_ship(int, int, int *, int);
+extern int prod_ship(int, int, struct bp *, int);
/*
* src/server
typedef unsigned char natid; /* NSC_NATID must match this */
typedef short coord;
+struct bp;
struct emp_qelem;
struct empobj;
struct lndstr;
int *planes, int *pbuild, int *npbuild, int *pmaint)
{
struct natstr *np;
- int *bp;
+ struct bp *bp;
long pop = 0;
int n, civ_tax, uw_tax, mil_pay;
struct sctstr *sp;
*planes = *pbuild = *npbuild = *pmaint = 0;
np = getnatp(player->cnum);
- bp = calloc(WORLD_X * WORLD_Y * 8, sizeof(int));
+ bp = alloc_bp();
for (n = 0; NULL != (sp = getsectid(n)); n++) {
fill_update_array(bp, sp);
if (sp->sct_own == player->cnum) {
*
* Known contributors to this file:
* Ville Virrankoski, 1996
+ * Markus Armbruster, 2007
*/
#include <config.h>
#include "budg.h"
#include "update.h"
+struct bp {
+ int val[7];
+};
+
static int bud_key[I_MAX + 2] =
{ 1, 2, 3, 4, 0, 0, 0, 0, 0, 0, 5, 6, 0, 0, 7 };
static int *
-get_wp(int *bp, struct sctstr *sp, int cm)
+get_wp(struct bp *bp, struct sctstr *sp, int cm)
{
- return (bp + (sp->sct_x + (sp->sct_y * WORLD_X)) +
- WORLD_X * WORLD_Y * (cm - 1));
+ return &bp[sp->sct_x + sp->sct_y * WORLD_X].val[cm - 1];
}
int
-gt_bg_nmbr(int *bp, struct sctstr *sp, i_type comm)
+gt_bg_nmbr(struct bp *bp, struct sctstr *sp, i_type comm)
{
int *wp;
int cm;
}
void
-pt_bg_nmbr(int *bp, struct sctstr *sp, i_type comm, int amount)
+pt_bg_nmbr(struct bp *bp, struct sctstr *sp, i_type comm, int amount)
{
int *wp;
int cm;
}
void
-fill_update_array(int *bp, struct sctstr *sp)
+fill_update_array(struct bp *bp, struct sctstr *sp)
{
int k;
int *wp;
wp = get_wp(bp, sp, bud_key[I_MAX + 1]);
*wp = sp->sct_avail;
}
+
+struct bp *
+alloc_bp(void)
+{
+ return calloc(WORLD_X * WORLD_Y, sizeof(struct bp));
+}
*/
int
do_feed(struct sctstr *sp, struct natstr *np, short *vec,
- int *workp, int *bp, int etu)
+ int *workp, struct bp *bp, int etu)
{
int work_avail;
int starved, sctwork;
#include "update.h"
#include <math.h>
-static void landrepair(struct lndstr *, struct natstr *, int *, int);
-static void upd_land(struct lndstr *, int, struct natstr *, int *, int);
+static void landrepair(struct lndstr *, struct natstr *, struct bp *, int);
+static void upd_land(struct lndstr *, int, struct natstr *, struct bp *, int);
static int feed_land(struct lndstr *, int);
int
-prod_land(int etus, int natnum, int *bp, int build)
+prod_land(int etus, int natnum, struct bp *bp, int build)
/* build = 1, maintain = 0 */
{
struct lndstr *lp;
static void
upd_land(struct lndstr *lp, int etus,
- struct natstr *np, int *bp, int build)
+ struct natstr *np, struct bp *bp, int build)
/* build = 1, maintain = 0 */
{
struct lchrstr *lcp;
}
static void
-landrepair(struct lndstr *land, struct natstr *np, int *bp, int etus)
+landrepair(struct lndstr *land, struct natstr *np, struct bp *bp, int etus)
{
int delta;
struct sctstr *sp;
int etu = etu_per_update;
int n;
int x;
- int *bp;
+ struct bp *bp;
int cn, cn2, rel;
struct natstr *cnp;
struct natstr *np;
memset(air_money, 0, sizeof(air_money));
memset(sea_money, 0, sizeof(sea_money));
memset(lnd_money, 0, sizeof(lnd_money));
- bp = calloc(WORLD_X * WORLD_Y * 7, sizeof(int));
+ bp = alloc_bp();
for (n = 0; n < MAXNOC; n++) {
money[n] = 0;
if (!(np = getnatp(n)))
* Return adjusted build percentage.
*/
int
-get_materials(struct sctstr *sp, int *bp, int *mvec, int pct)
+get_materials(struct sctstr *sp, struct bp *bp, int *mvec, int pct)
{
int i, amt;
#include "ship.h"
#include "update.h"
-static void planerepair(struct plnstr *, struct natstr *, int *, int);
-static void upd_plane(struct plnstr *, int, struct natstr *, int *, int);
+static void planerepair(struct plnstr *, struct natstr *, struct bp *, int);
+static void upd_plane(struct plnstr *, int, struct natstr *, struct bp *, int);
int
-prod_plane(int etus, int natnum, int *bp, int buildem)
+prod_plane(int etus, int natnum, struct bp *bp, int buildem)
/* Build = 1, maintain =0 */
{
struct plnstr *pp;
static void
upd_plane(struct plnstr *pp, int etus,
- struct natstr *np, int *bp, int build)
+ struct natstr *np, struct bp *bp, int build)
{
struct plchrstr *pcp = &plchr[(int)pp->pln_type];
int mult, cost, eff;
}
static void
-planerepair(struct plnstr *pp, struct natstr *np, int *bp, int etus)
+planerepair(struct plnstr *pp, struct natstr *np, struct bp *bp, int etus)
{
int build;
int mvec[I_MAX + 1];
#include "update.h"
void
-prepare_sects(int etu, int *bp)
+prepare_sects(int etu, struct bp *bp)
{
struct sctstr *sp;
struct natstr *np;
* Produce for a specific nation
*/
void
-produce_sect(int natnum, int etu, int *bp, long p_sect[][2])
+produce_sect(int natnum, int etu, struct bp *bp, long p_sect[][2])
{
struct sctstr *sp;
struct natstr *np;
#include "ship.h"
#include "update.h"
-static void shiprepair(struct shpstr *, struct natstr *, int *, int);
-static void upd_ship(struct shpstr *, int, struct natstr *, int *, int);
+static void shiprepair(struct shpstr *, struct natstr *, struct bp *, int);
+static void upd_ship(struct shpstr *, int, struct natstr *, struct bp *, int);
static int feed_ship(struct shpstr *, int);
int
-prod_ship(int etus, int natnum, int *bp, int build)
+prod_ship(int etus, int natnum, struct bp *bp, int build)
/* build = 1, maintain = 0 */
{
struct shpstr *sp;
static void
upd_ship(struct shpstr *sp, int etus,
- struct natstr *np, int *bp, int build)
+ struct natstr *np, struct bp *bp, int build)
/* build = 1, maintain = 0 */
{
struct sctstr *sectp;
* 8 * 8 * $40 = $2560!
*/
static void
-shiprepair(struct shpstr *ship, struct natstr *np, int *bp, int etus)
+shiprepair(struct shpstr *ship, struct natstr *np, struct bp *bp, int etus)
{
int delta;
struct sctstr *sp;