]> git.pond.sub.org Git - empserver/blobdiff - include/update.h
production: Use update code instead of duplicating it
[empserver] / include / update.h
index c93d4138a295a69621cc6cc6c07e1c81a392c464..a81684e33a4cfb536434df2437d6aeac89df8b5a 100644 (file)
@@ -1,11 +1,11 @@
 /*
  *  Empire - A multi-player, client/server Internet based war game.
- *  Copyright (C) 1986-2000, Dave Pare, Jeff Bailey, Thomas Ruschak,
- *                           Ken Stevens, Steve McClure
+ *  Copyright (C) 1986-2016, Dave Pare, Jeff Bailey, Thomas Ruschak,
+ *                Ken Stevens, Steve McClure, Markus Armbruster
  *
- *  This program is free software; you can redistribute it and/or modify
+ *  Empire is free software: you can redistribute it and/or modify
  *  it under the terms of the GNU General Public License as published by
- *  the Free Software Foundation; either version 2 of the License, or
+ *  the Free Software Foundation, either version 3 of the License, or
  *  (at your option) any later version.
  *
  *  This program is distributed in the hope that it will be useful,
  *  GNU General Public License for more details.
  *
  *  You should have received a copy of the GNU General Public License
- *  along with this program; if not, write to the Free Software
- *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *  along with this program.  If not, see <http://www.gnu.org/licenses/>.
  *
  *  ---
  *
- *  See the "LEGAL", "LICENSE", "CREDITS" and "README" files for all the
- *  related information and legal notices. It is expected that any future
- *  projects/authors will amend these files as needed.
+ *  See files README, COPYING and CREDITS in the root of the source
+ *  tree for related information and legal notices.  It is expected
+ *  that future projects/authors will amend these files as needed.
  *
  *  ---
  *
- *  update.h: Include headers used for updates
- * 
+ *  update.h: Definitions related to the update
+ *
  *  Known contributors to this file:
- *     
+ *     Ville Virrankoski, 1995
+ *     Markus Armbruster, 2004-2016
  */
 
-#ifndef _UPDATE_H_
-#define _UPDATE_H_
+#ifndef UPDATE_H
+#define UPDATE_H
 
-#include "misc.h"
-#include "queue.h"
 #include "sect.h"
-#include "item.h"
-#include "land.h"
-#include "plane.h"
-#include "ship.h"
-#include "nat.h"
-#include "nsc.h"
-#include "product.h"
-#include "prototypes.h"                /* must come at end, after defines and typedefs */
-
-#endif /* _UPDATE_H_ */
+
+#define IMPORT 0
+#define EXPORT 1
+
+enum {
+    BUDG_SHP_BUILD,
+    BUDG_SHP_MAINT,
+    BUDG_PLN_BUILD,
+    BUDG_PLN_MAINT,
+    BUDG_LND_BUILD,
+    BUDG_LND_MAINT,
+    BUDG_SCT_BUILD,
+    BUDG_SCT_MAINT,
+    BUDG_BLD_MAX = BUDG_SCT_MAINT
+};
+
+struct budg_item {
+    double money;              /* money delta */
+    int count;                 /* #things making/consuming the money */
+};
+
+/* A nation's budget for an update */
+struct budget {
+    /* production by sector type */
+    struct budg_item prod[SCT_TYPE_MAX + 1];
+    /* building and maintenance */
+    struct budg_item bm[BUDG_BLD_MAX + 1];
+    /* population, taxes, military payroll, bank interest */
+    struct budg_item civ, mil, uw, bars;
+    /* treasury */
+    int start_money;           /* at beginning of update */
+    double money;              /* current */
+};
+
+/* main.c */
+extern struct budget nat_budget[MAXNOC];
+extern int pops[MAXNOC];
+extern int tpops[MAXNOC];
+/* nat.c */
+extern float levels[MAXNOC][4];
+
+/* age.c */
+extern int age_people(int, int);
+extern void age_levels(int);
+/* anno.c */
+extern void delete_old_announcements(void);
+/* bp.c */
+extern struct bp *bp_alloc(void);
+extern void bp_set_from_sect(struct bp *, struct sctstr *);
+extern void bp_to_sect(struct bp *, struct sctstr *);
+/* deliver.c */
+extern void dodeliver(struct sctstr *);
+/* distribute.c */
+extern int dodistribute(struct sctstr *, int, double);
+/* finish.c */
+extern void finish_sects(int);
+/* human.c */
+extern void do_feed(struct sctstr *, struct natstr *, int, int);
+extern int feed_people(short *, int);
+extern double food_needed(short *, int);
+extern int famine_victims(short *, int);
+/* land.c */
+extern void prod_land(int, int, struct bp *, int);
+/* main.c */
+/* in server.h */
+/* material.c */
+extern int get_materials(struct sctstr *, short[], int);
+/* mobility.c */
+extern void mob_sect(void);
+extern void mob_ship(void);
+extern void mob_land(void);
+extern void mob_plane(void);
+extern void sct_do_upd_mob(struct sctstr *sp);
+extern void shp_do_upd_mob(struct shpstr *sp);
+extern void lnd_do_upd_mob(struct lndstr *lp);
+extern void pln_do_upd_mob(struct plnstr *pp);
+/* move_sat.c */
+extern void move_sat(struct plnstr *);
+/* nat.c */
+extern void prod_nat(int);
+/* nxtitemp.c */
+/* in nsc.h */
+/* plague.c */
+extern void do_plague(struct sctstr *, int);
+extern int plague_people(struct natstr *, short *, int *, int *, int);
+/* plane.c */
+extern void prod_plane(int, int, struct bp *, int);
+/* populace.c */
+extern void populace(struct sctstr *, int);
+extern int total_work(int, int, int, int, int, int);
+/* prepare.c */
+extern void prepare_sects(int);
+extern void tax(struct sctstr *, int, int *);
+extern void upd_slmilcosts(int, natid);
+extern void bank_income(struct sctstr *, int);
+extern void pay_reserve(struct natstr *, int);
+/* produce.c */
+extern void produce(struct natstr *, struct sctstr *);
+extern double prod_output(struct sctstr *, double);
+extern double prod_materials_cost(struct pchrstr *, short[], int *);
+extern double prod_resource_limit(struct pchrstr *, unsigned char *);
+extern double prod_eff(int, float);
+/* removewants.c */
+extern int update_removewants(void);
+/* revolt.c */
+extern void revolt(struct sctstr *);
+extern void guerrilla(struct sctstr *);
+/* sect.c */
+extern double buildeff(struct sctstr *);
+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(struct natstr *, int, struct bp *);
+/* ship.c */
+extern void prod_ship(int, int, struct bp *, int);
+
+#endif