/*
* 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,
* 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/>.
*
* ---
*
* ---
*
* 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 *);
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",
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;
sail_ship(natid cn)
{
struct shpstr *sp;
- struct fltheadstr *head = 0;
+ struct fltheadstr *head = NULL;
struct fltheadstr *fltp;
int n;
}
/* 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);
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);
}