/*
* Empire - A multi-player, client/server Internet based war game.
- * Copyright (C) 1986-2008, Dave Pare, Jeff Bailey, Thomas Ruschak,
+ * Copyright (C) 1986-2009, Dave Pare, Jeff Bailey, Thomas Ruschak,
* Ken Stevens, Steve McClure
*
* This program is free software; you can redistribute it and/or modify
* ---
*
* sect.h: Definitions for things having to do with sectors.
- *
+ *
* Known contributors to this file:
* Dave Pare
* Ken Stevens, 1995
* Steve McClure, 1998
- * Markus Armbruster, 2004-2008
+ * Markus Armbruster, 2004-2009
*/
struct sctstr {
/* initial part must match struct empobj */
short ef_type;
- short sct_uid; /* equals sctoff(sct_x, sct_y) */
+ int sct_uid; /* equals XYOFFSET(sct_x, sct_y) */
+ unsigned sct_seqno;
time_t sct_timestamp; /* Last time this sector was written to */
natid sct_own; /* owner's country num */
coord sct_x; /* x coord of sector */
struct dchrstr {
unsigned char d_uid;
char d_mnem; /* map symbol */
+ unsigned char d_terrain; /* terrain sector type */
int d_prd; /* product type */
int d_peffic; /* process efficiency, in percent */
float d_mob0, d_mob1; /* movement cost at 0 and 100% eff */
int d_build; /* cost multiplier for eff */
int d_lcms; /* lcm's needed per point of eff */
int d_hcms; /* hcm's needed per point of eff */
+ int d_maint; /* maintenance cost per ETU */
int d_maxpop; /* maximum population */
char *d_name; /* full name of sector type */
};
extern int sctoff(coord x, coord y);
extern struct dchrstr dchr[SCT_TYPE_MAX + 2];
-extern struct dchrstr bigcity_dchr;
#define IS_BIG_CITY(type) (dchr[(type)].d_pkg == UPKG)
/* Minimal efficiency of sectors that can be knocked down (bridges) */
#define FORTEFF 5 /* forts must be 5% efficient to fire. */
+/* Can trains enter sector SP? */
+#define SCT_HAS_RAIL(sp) \
+ (opt_RAILWAYS ? sct_rail_track((sp)) != 0 \
+ : intrchr[INT_RAIL].in_enable && (sp)->sct_rail != 0)
+
+#define SCT_MINES_ARE_SEAMINES(sp) \
+ ((sp)->sct_type == SCT_WATER || (sp)->sct_type == SCT_BSPAN)
+#define SCT_SEAMINES(sp) \
+ (SCT_MINES_ARE_SEAMINES((sp)) ? (sp)->sct_mines : 0)
+#define SCT_LANDMINES(sp) \
+ (SCT_MINES_ARE_SEAMINES((sp)) ? 0 : (sp)->sct_mines)
+
#define MOB_MOVE 0
#define MOB_MARCH 1
#define MOB_RAIL 2
extern struct sctintrins intrchr[INT_DEF + 2];
extern int fort_fire(struct sctstr *);
+extern int sct_rail_track(struct sctstr *);
#endif