/*
* Empire - A multi-player, client/server Internet based war game.
- * Copyright (C) 1986-2006, Dave Pare, Jeff Bailey, Thomas Ruschak,
+ * Copyright (C) 1986-2008, Dave Pare, Jeff Bailey, Thomas Ruschak,
* Ken Stevens, Steve McClure
*
* This program is free software; you can redistribute it and/or modify
#ifndef SECT_H
#define SECT_H
+#include <time.h>
#include "item.h"
-
-/* The order of the following elements is there to match up with genitem */
+#include "types.h"
struct sctstr {
- /* initial part must match struct genitem */
+ /* initial part must match struct empobj */
short ef_type;
natid sct_own; /* owner's country num */
short sct_elev; /* elevation/depth */
coord sct_x; /* x coord of sector */
coord sct_y; /* y coord of sector */
- /* end of part matching struct genitem */
+ /* end of part matching struct empobj */
unsigned char sct_type; /* sector type */
unsigned char sct_effic; /* 0% to 100% */
short sct_mobil; /* mobility units */
unsigned char sct_terr1; /* territory 1 id # of sector */
unsigned char sct_terr2; /* territory 2 id # of sector */
unsigned char sct_terr3; /* territory 3 id # of sector */
+ unsigned char sct_dterr; /* deity's territory # */
coord sct_dist_x; /* Dist sector */
coord sct_dist_y;
short sct_avail; /* available workforce for "other things" */
unsigned char sct_che; /* number of guerrillas */
natid sct_che_target; /* nation targeted by che */
unsigned short sct_fallout;
- time_t sct_access; /* Last time mob was updated (MOB_ACCESS) */
+ short sct_access; /* Last tick mob was updated (MOB_ACCESS) */
unsigned char sct_road; /* Road value of a sector */
unsigned char sct_rail; /* Rail value of a sector */
unsigned char sct_defense; /* Defensive value of a sector */
unsigned char d_uid;
char d_mnem; /* map symbol */
int d_prd; /* product type */
- int d_mcst; /* movement cost */
+ int d_peffic; /* process efficiency, in percent */
+ float d_mob0, d_mob1; /* movement cost at 0 and 100% eff */
d_navigation d_nav; /* navigation capability */
i_packing d_pkg; /* type of packaging in these sects */
float d_ostr; /* offensive strength */
#define SCT_PLAINS 32 /* plains sector */
#define SCT_BTOWER 33 /* Bridge tower */
-#define SCT_EFFIC 34 /* used in update & budget */
-#define SCT_MAXDEF 34 /* highest sector type in header files */
+#define SCT_TYPE_MAX 38
#define getsect(x, y, p) ef_read(EF_SECTOR, sctoff((x), (y)), (p))
#define putsect(p) ef_write(EF_SECTOR, sctoff((p)->sct_x, (p)->sct_y), (p))
/* things relating to sectors */
extern int sctoff(coord x, coord y);
-extern struct dchrstr dchr[SCT_MAXDEF + 1];
+extern struct dchrstr dchr[SCT_TYPE_MAX + 2];
extern struct dchrstr bigcity_dchr;
-#define IS_BIG_CITY(sect) (dchr[(sect)].d_pkg == UPKG)
+#define IS_BIG_CITY(type) (dchr[(type)].d_pkg == UPKG)
/* Minimal efficiency of sectors that can be knocked down (bridges) */
#define SCT_MINEFF 20
/* Work required for building */
#define SCT_BLD_WORK(lcm, hcm) ((lcm) + 2 * (hcm))
-#define MIN_MOBCOST 0.001 /* lowest cost a sector can have to move into */
+/* Return SP's defense efficiency */
+#define SCT_DEFENSE(sp) \
+ (intrchr[INT_DEF].in_enable ? (sp)->sct_defense : (sp)->sct_effic)
+
#define FORTEFF 5 /* forts must be 5% efficient to fire. */
-#define MOB_NONE 0
-#define MOB_ROAD 1
+#define MOB_MOVE 0
+#define MOB_MARCH 1
#define MOB_RAIL 2
#define INT_ROAD 0
/* Each cost is per point of efficency */
struct sctintrins {
char *in_name;
- unsigned char in_lcms;
+ unsigned char in_lcms; /* construction materials */
unsigned char in_hcms;
- unsigned char in_dcost;
- unsigned char in_mcost;
+ unsigned char in_dcost; /* dollars */
+ unsigned char in_mcost; /* mobility */
+ unsigned char in_enable; /* enabled iff non-zero */
};
extern struct sctintrins intrchr[INT_DEF + 2];