]> git.pond.sub.org Git - empserver/blobdiff - include/ship.h
Update copyright notice.
[empserver] / include / ship.h
index 794e6e42e2cf9ecc8c02dbdf01504a4bb1c8e641..3042e0d602901d56786565bdf6aa89abd7048c84 100644 (file)
@@ -1,6 +1,6 @@
 /*
  *  Empire - A multi-player, client/server Internet based war game.
- *  Copyright (C) 1986-2006, Dave Pare, Jeff Bailey, Thomas Ruschak,
+ *  Copyright (C) 1986-2007, Dave Pare, Jeff Bailey, Thomas Ruschak,
  *                           Ken Stevens, Steve McClure
  *
  *  This program is free software; you can redistribute it and/or modify
 
 #include "item.h"
 #include "queue.h"
-#include "misc.h"
 #include "retreat.h"
+#include "types.h"
 
-#define N_MAXSHIPS     40
+#define SHP_TYPE_MAX   46
 #define        SHIP_MINEFF     20
 
 /* bit masks for the autonav mode flags */
@@ -60,7 +60,7 @@
 #define        MAXSHPNAMLEN    24
 
 struct shpstr {
-    /* initial part must match struct genitem */
+    /* initial part must match struct empobj */
     short ef_type;
     natid shp_own;             /* owner's country num */
     short shp_uid;             /* unit id (ship #) */
@@ -69,12 +69,13 @@ struct shpstr {
     signed char shp_type;      /* index in mchr[] */
     signed char shp_effic;     /* 0% to 100% */
     signed char shp_mobil;     /* mobility units */
+    unsigned char shp_off;     /* repairs stopped? */
     short shp_tech;            /* tech level ship was built at */
     char shp_fleet;            /* group membership */
     coord shp_opx, shp_opy;    /* Op sector coords */
     short shp_mission;         /* mission code */
     short shp_radius;          /* mission radius */
-    /* end of part matching struct genitem */
+    /* end of part matching struct empobj */
     unsigned char shp_nplane;  /* number of planes on board */
     unsigned char shp_nland;   /* number of land units on board */
     short shp_armor;
@@ -182,24 +183,17 @@ struct mchrstr {
 #define putship(n, p) ef_write(EF_SHIP, (n), (p))
 #define getshipp(n) (struct shpstr *)ef_ptr(EF_SHIP, (n))
 
-extern struct mchrstr mchr[N_MAXSHIPS + 1];
-
-struct mlist {
-    struct emp_qelem queue;    /* list of ships */
-    struct mchrstr *mcp;       /* pointer to desc of ship */
-    struct shpstr ship;                /* struct ship */
-    double mobil;              /* how much mobility the ship has left */
-};
-
-#define SHP_DEF(b, t) (t ? (b * (logx((double)t, (double)40.0) < 1.0 ? 1.0 : \
-                            logx((double)t, (double)40.0))) : b)
-#define SHP_SPD(b, t) (t ? (b * (logx((double)t, (double)35.0) < 1.0 ? 1.0 : \
-                            logx((double)t, (double)35.0))) : b)
-#define SHP_VIS(b, t) (b * (1 - (sqrt((double)t) / 50)))
-#define SHP_RNG(b, t) (t ? (b * (logx((double)t, (double)35.0) < 1.0 ? 1.0 : \
-                            logx((double)t, (double)35.0))) : b)
-#define SHP_FIR(b, t) (t ? (b * (logx((double)t, (double)60.0) < 1.0 ? 1.0 : \
-                            logx((double)t, (double)60.0))) : b)
+extern struct mchrstr mchr[SHP_TYPE_MAX + 2];
+
+#define SHP_DEF(b, t) (t ? (b * (logx(t, 40.0) < 1.0 ? 1.0 : \
+                                logx(t, 40.0))) : b)
+#define SHP_SPD(b, t) (t ? (b * (logx(t, 35.0) < 1.0 ? 1.0 : \
+                                logx(t, 35.0))) : b)
+#define SHP_VIS(b, t) (b * (1 - (sqrt(t) / 50)))
+#define SHP_RNG(b, t) (t ? (b * (logx(t, 35.0) < 1.0 ? 1.0 : \
+                                logx(t, 35.0))) : b)
+#define SHP_FIR(b, t) (t ? (b * (logx(t, 60.0) < 1.0 ? 1.0 : \
+                                logx(t, 60.0))) : b)
 
 /* Work required for building 100% */
 #define SHP_BLD_WORK(lcm, hcm) (20 + (lcm) + 2 * (hcm))