]> git.pond.sub.org Git - empserver/blobdiff - src/lib/update/sail.c
License upgrade to GPL version 3 or later
[empserver] / src / lib / update / sail.c
index 1f746087d6d06a1db5a8a184dcd9957f2d928f4d..3dd1912123ffa5849be03d0ebb140aa6ea282e60 100644 (file)
@@ -1,11 +1,11 @@
 /*
  *  Empire - A multi-player, client/server Internet based war game.
- *  Copyright (C) 1986-2006, Dave Pare, Jeff Bailey, Thomas Ruschak,
- *                           Ken Stevens, Steve McClure
+ *  Copyright (C) 1986-2011, 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,
@@ -14,8 +14,7 @@
  *  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/>.
  *
  *  ---
  *
@@ -26,7 +25,7 @@
  *  ---
  *
  *  sail.c: Sail ships during the update
- * 
+ *
  *  Known contributors to this file:
  *     Doug Hay
  *     Robert Forsman
 
 #include <config.h>
 
-#include "misc.h"
-#include "sect.h"
-#include "path.h"
-#include "ship.h"
-#include "file.h"
-#include "nat.h"
-#include "xy.h"
+#include <math.h>
 #include "nsc.h"
+#include "path.h"
 #include "update.h"
-#include "subs.h"
-#include "common.h"
-#include <math.h>
-#include <stdlib.h>
+#include "empobj.h"
+#include "unit.h"
+
+struct fltelemstr {
+    int num;
+    int own;
+    double mobil, mobcost;
+    struct fltelemstr *next;
+};
+
+struct fltheadstr {
+    int leader;
+    signed char real_q;
+/* defines for the real_q member */
+#define LEADER_VIRTUAL 0
+#define LEADER_REAL    1
+#define LEADER_WRONGSECT       2
+    coord x, y;
+    natid own;
+    unsigned maxmoves;
+    struct fltelemstr *head;
+    struct fltheadstr *next;
+};
 
 static void fltp_to_list(struct fltheadstr *, struct emp_qelem *);
 
@@ -234,7 +247,7 @@ sail_nav_fleet(struct fltheadstr *fltp)
               fe->num, cname(fe->own));
            error = 1;
        }
-        if ((shp_check_nav(sectp, sp) == CN_LANDLOCKED) &&
+       if ((shp_check_nav(sectp, sp) == CN_LANDLOCKED) &&
            (dchr[sectp->sct_type].d_nav == NAV_CANAL)) {
            wu(0, fltp->own,
               "Your ship #%d (%s) is too big to fit through the canal.\n",
@@ -258,7 +271,7 @@ sail_nav_fleet(struct fltheadstr *fltp)
            fltp->maxmoves = 1;
        --fltp->maxmoves;
     }
-    shp_put(&ship_list, own);
+    unit_put(&ship_list, own);
     getship(sp->shp_uid, &ship);
     fltp->x = ship.shp_x;
     fltp->y = ship.shp_y;
@@ -285,7 +298,7 @@ void
 sail_ship(natid cn)
 {
     struct shpstr *sp;
-    struct fltheadstr *head = 0;
+    struct fltheadstr *head = NULL;
     struct fltheadstr *fltp;
     int n;
 
@@ -303,11 +316,11 @@ sail_ship(natid cn)
     }
 
     /* Free up the memory, 'cause I want to. */
-    for (fltp = head; fltp != 0;) {
+    for (fltp = head; fltp;) {
        struct fltelemstr *fe;
        struct fltheadstr *saveh;
        saveh = fltp->next;
-       for (fe = fltp->head; fe != 0;) {
+       for (fe = fltp->head; fe;) {
            struct fltelemstr *saveel;
            saveel = fe->next;
            free(fe);
@@ -324,15 +337,16 @@ static void
 fltp_to_list(struct fltheadstr *fltp, struct emp_qelem *list)
 {
     struct fltelemstr *fe;
-    struct mlist *mlp;
+    struct ulist *mlp;
     struct shpstr *sp;
 
     emp_initque(list);
     for (fe = fltp->head; fe; fe = fe->next) {
-       mlp = malloc(sizeof(struct mlist));
+       mlp = malloc(sizeof(struct ulist));
        sp = getshipp(fe->num);
-       mlp->mcp = mchr + sp->shp_type;
-       mlp->ship = *sp;
+       mlp->chrp = (struct empobj_chr *)(mchr + sp->shp_type);
+       mlp->unit.ship = *sp;
+       ef_mark_fresh(EF_SHIP, &mlp->unit.ship);
        mlp->mobil = fe->mobil;
        emp_insque(&mlp->queue, list);
     }