* Thomas Ruschak, 1992
* Ken Stevens, 1995
* Steve McClure, 1998
- * Markus Armbruster, 2004-2013
+ * Markus Armbruster, 2004-2014
*/
#ifndef LAND_H
extern void lnd_sweep(struct emp_qelem *, int, int, natid);
extern int lnd_interdict(struct emp_qelem *, coord, coord, natid);
extern void lnd_sel(struct nstr_item *, struct emp_qelem *);
+extern struct ulist *lnd_insque(struct lndstr *, struct emp_qelem *);
extern int lnd_check_mines(struct emp_qelem *);
extern double lnd_pathcost(struct lndstr *, double);
extern int lnd_mobtype(struct lndstr *);
* Known contributors to this file:
* Ken Stevens, 1995
* Steve McClure, 1996-2000
- * Markus Armbruster, 2006-2013
+ * Markus Armbruster, 2006-2014
*/
#include <config.h>
land_answer[(int)land.lnd_army] != 'Y')
continue;
}
- if (!(llp = malloc(sizeof(struct ulist)))) {
- logerror("Malloc failed in attack!\n");
- abort_attack();
- return;
- }
- memset(llp, 0, sizeof(struct ulist));
- emp_insque(&llp->queue, olist);
+ llp = lnd_insque(&land, olist);
llp->supplied = 1;
llp->mobil = mobcost;
- llp->unit.land = land;
llp->x = llp->unit.land.lnd_x;
llp->y = llp->unit.land.lnd_y;
- llp->chrp = (struct empobj_chr *)&lchr[(int)llp->unit.land.lnd_type];
llp->eff = llp->unit.land.lnd_effic;
if (lnd_spyval(&land) > *a_spyp)
*a_spyp = lnd_spyval(&land);
continue;
intelligence_report(player->cnum, &land, a_spy,
"Scouts report defending unit:");
- if (!(llp = malloc(sizeof(struct ulist)))) {
- logerror("Malloc failed in attack!\n");
- abort_attack();
- return;
- }
- memset(llp, 0, sizeof(struct ulist));
- emp_insque(&llp->queue, list);
+ llp = lnd_insque(&land, list);
llp->supplied = lnd_supply_all(&land);
- llp->unit.land = land;
+ llp->mobil = 0.0;
llp->x = llp->unit.land.lnd_x;
llp->y = llp->unit.land.lnd_y;
- llp->chrp = (struct empobj_chr *)&lchr[(int)llp->unit.land.lnd_type];
llp->eff = llp->unit.land.lnd_effic;
if (lnd_spyval(&land) > *d_spyp)
*d_spyp = lnd_spyval(&land);
wu(0, land.lnd_own, "%s reacts to %s.\n",
prland(&land), xyas(land.lnd_x, land.lnd_y, land.lnd_own));
- llp = malloc(sizeof(struct ulist));
-
- memset(llp, 0, sizeof(struct ulist));
+ llp = lnd_insque(&land, list);
llp->supplied = 1;
+ llp->mobil = 0.0;
llp->x = origx;
llp->y = origy;
- llp->chrp = (struct empobj_chr *)&lchr[(int)land.lnd_type];
- llp->unit.land = land;
llp->eff = land.lnd_effic;
- emp_insque(&llp->queue, list);
if (lnd_spyval(&land) > *d_spyp)
*d_spyp = lnd_spyval(&land);
* Known contributors to this file:
* Ken Stevens, 1995
* Steve McClure, 1998-2000
- * Markus Armbruster, 2004-2012
+ * Markus Armbruster, 2004-2014
*/
#include <config.h>
lnd_sel(struct nstr_item *ni, struct emp_qelem *list)
{
struct lndstr land;
- struct lchrstr *lcp;
- struct ulist *llp;
int this_mot;
int mobtype = MOB_MOVE; /* indeterminate */
}
}
- lcp = &lchr[(int)land.lnd_type];
land.lnd_mission = 0;
land.lnd_rflags = 0;
land.lnd_harden = 0;
memset(land.lnd_rpath, 0, sizeof(land.lnd_rpath));
putland(land.lnd_uid, &land);
- llp = malloc(sizeof(struct ulist));
- llp->chrp = (struct empobj_chr *)lcp;
- llp->unit.land = land;
- llp->mobil = land.lnd_mobil;
- emp_insque(&llp->queue, list);
+ lnd_insque(&land, list);
}
}
+/*
+ * Append LP to LIST.
+ * Return the new list link.
+ */
+struct ulist *
+lnd_insque(struct lndstr *lp, struct emp_qelem *list)
+{
+ struct ulist *mlp = malloc(sizeof(struct ulist));
+
+ mlp->chrp = (struct empobj_chr *)&lchr[lp->lnd_type];
+ mlp->unit.land = *lp;
+ mlp->mobil = lp->lnd_mobil;
+ emp_insque(&mlp->queue, list);
+ return mlp;
+}
+
/* This function assumes that the list was created by lnd_sel */
void
lnd_mar(struct emp_qelem *list, double *minmobp, double *maxmobp,