]> git.pond.sub.org Git - empserver/blobdiff - include/sect.h
Update known contributors comments
[empserver] / include / sect.h
index 8ff95cab1b9b1f6b8efa48eb020b1f51d2dd174d..7c5f8673c9d55fa4551f374b6b803057aa0639be 100644 (file)
@@ -1,6 +1,6 @@
 /*
  *  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
  */
 
 
@@ -45,7 +45,8 @@
 struct sctstr {
     /* initial part must match struct empobj */
     short ef_type;
-    short sct_uid;             /* equals sctoff(sct_x, sct_y) */
+    short 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 */
@@ -102,6 +103,7 @@ enum d_navigation {
 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 */
@@ -114,6 +116,7 @@ struct dchrstr {
     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 */
 };
@@ -166,7 +169,6 @@ struct dchrstr {
 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) */
@@ -181,6 +183,18 @@ extern struct dchrstr bigcity_dchr;
 
 #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
@@ -216,5 +230,6 @@ struct sctintrins {
 extern struct sctintrins intrchr[INT_DEF + 2];
 
 extern int fort_fire(struct sctstr *);
+extern int sct_rail_track(struct sctstr *);
 
 #endif