/*
* Empire - A multi-player, client/server Internet based war game.
- * Copyright (C) 1986-2007, Dave Pare, Jeff Bailey, Thomas Ruschak,
- * Ken Stevens, Steve McClure
+ * Copyright (C) 1986-2020, 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/>.
*
* ---
*
*
* ---
*
- * 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
-#include "file.h"
-#include "nat.h"
-#include "optlist.h"
-#include "prototypes.h"
#include "sect.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];
+ /* level production output */
+ float level[4];
+ /* 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 */
+ /* population before growth */
+ int oldowned_civs;
+};
+
+/* main.c */
+extern int update_running;
+extern struct budget nat_budget[MAXNOC];
+
+/* 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 int bp_skip_sect(struct bp *, struct sctstr *);
+extern int bp_skip_unit(struct bp *, struct empobj *);
+extern void bp_consider_unit(struct bp *, struct empobj *);
+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);
+/* fallout.c */
+extern void fallout(int);
+/* 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 prep_lands(int, struct bp *);
+extern void prod_land(int, struct bp *, int);
+/* main.c */
+/* in server.h */
+/* material.c */
+extern int get_materials(struct sctstr *, short[], int);
+/* mobility.c */
+extern void mob_inc_all(int);
+extern void mob_inc_sect(struct sctstr *, int);
+extern void mob_inc_ship(struct shpstr *, int);
+extern void mob_inc_plane(struct plnstr *, int);
+extern void mob_inc_land(struct lndstr *, int);
+extern void mob_access_all(void);
+/* 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);
+extern void plague_report(natid, int, int, int, int, char *, char *);
+/* plane.c */
+extern void prep_planes(int, struct bp *);
+extern void prod_plane(int, struct bp *, int);
+/* populace.c */
+extern void check_pop_loss(struct sctstr *);
+extern void populace(struct sctstr *, int);
+extern int total_work(int, int, int, int, int, int);
+/* prepare.c */
+extern void prepare_sects(int, struct bp *);
+extern void prep_one_sect(struct sctstr *, int, struct bp *);
+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 produce_sect(int, struct bp *);
+/* ship.c */
+extern void prep_ships(int, struct bp *);
+extern void prod_ship(int, struct bp *, int);
+
#endif