/*
* 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-2021, 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/>.
*
* ---
*
* ---
*
* dist.c: Name distribution sector for a given range of sectors
- *
+ *
* Known contributors to this file:
* Dave Pare, 1986
- * Thomas Ruschak, 1993 (rewritten)
+ * Thomas Ruschak, 1993 (rewritten)
* Steve McClure, 1998
+ * Markus Armbruster, 2008-2011
*/
#include <config.h>
* distribute <SECT> <DISTSECT|.|h>
*/
int
-dist(void)
+c_distribute(void)
{
struct sctstr sect, dsect, tsect;
struct nstr_sect nstr;
char *p;
- double move_cost = 0.0;
+ double move_cost;
coord dstx, dsty;
char buf[1024];
if (!snxtsct(&nstr, player->argp[1]))
return RET_SYN;
- while (!player->aborted && nxtsct(&nstr, §)) {
+ while (nxtsct(&nstr, §)) {
if (!player->owner)
continue;
pr("%s at %s ", dchr[sect.sct_type].d_name,
pr("distributes to %s, not owned by you.\n",
xyas(tsect.sct_x, tsect.sct_y, player->cnum));
else
- pr("distributes to %s. \n",
+ pr("distributes to %s.\n",
xyas(tsect.sct_x, tsect.sct_y, player->cnum));
} else
- pr("has no dist sector. \n");
+ pr("has no dist sector.\n");
p = getstarg(player->argp[2], "Distribution sector? ", buf);
- if (p && (*p == 0))
+ if (!p)
+ return RET_SYN;
+ if (!*p)
continue;
-
if (!check_sect_ok(§))
continue;
- if (p && (*p != '.') && (*p != 'h') && (!sarg_xy(p, &dstx, &dsty)))
- return RET_SYN;
-
- if (p && ((*p == '.') || (*p == 'h'))) {
+ if (*p == '.' || *p == 'h') {
dstx = sect.sct_x;
dsty = sect.sct_y;
- }
-
+ } else if (!sarg_xy(p, &dstx, &dsty))
+ return RET_SYN;
if (!getsect(dstx, dsty, &dsect)) {
pr("Bad sector.\n");
return RET_FAIL;
pr("Warning: you don't own %s!\n",
xyas(dsect.sct_x, dsect.sct_y, player->cnum));
- if (!BestDistPath(buf, §, &dsect, &move_cost)) {
+ move_cost = path_find(sect.sct_x, sect.sct_y, dstx, dsty,
+ player->cnum, MOB_MOVE);
+ if (move_cost < 0) {
pr("No owned path from %s to %s.\n",
xyas(dsect.sct_x, dsect.sct_y, player->cnum),
xyas(sect.sct_x, sect.sct_y, player->cnum));