subs: Rename unit_path() to unit_move_route() and move it
Move it next to its only caller unit_move(). Signed-off-by: Markus Armbruster <armbru@pond.sub.org>
This commit is contained in:
parent
74a71aa007
commit
0538f95cd6
1 changed files with 59 additions and 59 deletions
|
@ -118,63 +118,6 @@ unit_list(struct emp_qelem *unit_list)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static char *
|
|
||||||
unit_path(struct empobj *unit, char *buf, size_t bufsz)
|
|
||||||
{
|
|
||||||
coord destx;
|
|
||||||
coord desty;
|
|
||||||
struct sctstr sect;
|
|
||||||
size_t len;
|
|
||||||
double c;
|
|
||||||
int mtype;
|
|
||||||
|
|
||||||
if (CANT_HAPPEN(unit->ef_type != EF_LAND && unit->ef_type != EF_SHIP))
|
|
||||||
return NULL;
|
|
||||||
|
|
||||||
if (!sarg_xy(buf, &destx, &desty))
|
|
||||||
return buf;
|
|
||||||
if (unit->ef_type == EF_SHIP) {
|
|
||||||
c = path_find(unit->x, unit->y, destx, desty,
|
|
||||||
player->cnum, MOB_SAIL);
|
|
||||||
if (c < 0 || unit->mobil <= 0) {
|
|
||||||
pr("Can't get to '%s' right now.\n",
|
|
||||||
xyas(destx, desty, player->cnum));
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
getsect(unit->x, unit->y, §);
|
|
||||||
mtype = lnd_mobtype((struct lndstr *)unit);
|
|
||||||
/*
|
|
||||||
* Note: passing sect.sct_own for actor is funny, but works:
|
|
||||||
* its only effect is to confine the search to that nation's
|
|
||||||
* land. It doesn't affect mobility costs. The real actor is
|
|
||||||
* different for marching in allied land, and passing it would
|
|
||||||
* break path finding there.
|
|
||||||
*/
|
|
||||||
c = path_find(unit->x, unit->y, destx, desty, sect.sct_own, mtype);
|
|
||||||
if (c < 0) {
|
|
||||||
pr("No owned %s from %s to %s!\n",
|
|
||||||
mtype == MOB_RAIL ? "railway" : "path",
|
|
||||||
xyas(unit->x, unit->y, player->cnum),
|
|
||||||
xyas(destx, desty, player->cnum));
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
len = path_find_route(buf, bufsz, unit->x, unit->y, destx, desty);
|
|
||||||
if (len == 0 || unit->ef_type == EF_LAND) {
|
|
||||||
if (len + 1 < bufsz)
|
|
||||||
strcpy(buf + len, "h");
|
|
||||||
len++;
|
|
||||||
}
|
|
||||||
if (len >= bufsz) {
|
|
||||||
pr("Can't handle path to %s, it's too long, sorry\n",
|
|
||||||
xyas(destx, desty, player->cnum));
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
pr("Using path '%s'\n", buf);
|
|
||||||
return buf;
|
|
||||||
}
|
|
||||||
|
|
||||||
static void
|
static void
|
||||||
unit_view(struct emp_qelem *list)
|
unit_view(struct emp_qelem *list)
|
||||||
{
|
{
|
||||||
|
@ -371,6 +314,63 @@ unit_move_getpath(struct emp_qelem *list, int suppress_map, char *path)
|
||||||
return getstring(prompt, path);
|
return getstring(prompt, path);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static char *
|
||||||
|
unit_move_route(struct empobj *unit, char *buf, size_t bufsz)
|
||||||
|
{
|
||||||
|
coord destx;
|
||||||
|
coord desty;
|
||||||
|
struct sctstr sect;
|
||||||
|
size_t len;
|
||||||
|
double c;
|
||||||
|
int mtype;
|
||||||
|
|
||||||
|
if (CANT_HAPPEN(unit->ef_type != EF_LAND && unit->ef_type != EF_SHIP))
|
||||||
|
return NULL;
|
||||||
|
|
||||||
|
if (!sarg_xy(buf, &destx, &desty))
|
||||||
|
return buf;
|
||||||
|
if (unit->ef_type == EF_SHIP) {
|
||||||
|
c = path_find(unit->x, unit->y, destx, desty,
|
||||||
|
player->cnum, MOB_SAIL);
|
||||||
|
if (c < 0 || unit->mobil <= 0) {
|
||||||
|
pr("Can't get to '%s' right now.\n",
|
||||||
|
xyas(destx, desty, player->cnum));
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
getsect(unit->x, unit->y, §);
|
||||||
|
mtype = lnd_mobtype((struct lndstr *)unit);
|
||||||
|
/*
|
||||||
|
* Note: passing sect.sct_own for actor is funny, but works:
|
||||||
|
* its only effect is to confine the search to that nation's
|
||||||
|
* land. It doesn't affect mobility costs. The real actor is
|
||||||
|
* different for marching in allied land, and passing it would
|
||||||
|
* break path finding there.
|
||||||
|
*/
|
||||||
|
c = path_find(unit->x, unit->y, destx, desty, sect.sct_own, mtype);
|
||||||
|
if (c < 0) {
|
||||||
|
pr("No owned %s from %s to %s!\n",
|
||||||
|
mtype == MOB_RAIL ? "railway" : "path",
|
||||||
|
xyas(unit->x, unit->y, player->cnum),
|
||||||
|
xyas(destx, desty, player->cnum));
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
len = path_find_route(buf, bufsz, unit->x, unit->y, destx, desty);
|
||||||
|
if (len == 0 || unit->ef_type == EF_LAND) {
|
||||||
|
if (len + 1 < bufsz)
|
||||||
|
strcpy(buf + len, "h");
|
||||||
|
len++;
|
||||||
|
}
|
||||||
|
if (len >= bufsz) {
|
||||||
|
pr("Can't handle path to %s, it's too long, sorry\n",
|
||||||
|
xyas(destx, desty, player->cnum));
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
pr("Using path '%s'\n", buf);
|
||||||
|
return buf;
|
||||||
|
}
|
||||||
|
|
||||||
int
|
int
|
||||||
unit_move(struct emp_qelem *list)
|
unit_move(struct emp_qelem *list)
|
||||||
{
|
{
|
||||||
|
@ -390,7 +390,7 @@ unit_move(struct emp_qelem *list)
|
||||||
cp = "";
|
cp = "";
|
||||||
if (player->argp[2]) {
|
if (player->argp[2]) {
|
||||||
strcpy(path, player->argp[2]);
|
strcpy(path, player->argp[2]);
|
||||||
cp = unit_path(leader, path, sizeof(path));
|
cp = unit_move_route(leader, path, sizeof(path));
|
||||||
if (!cp)
|
if (!cp)
|
||||||
cp = "";
|
cp = "";
|
||||||
}
|
}
|
||||||
|
@ -408,7 +408,7 @@ unit_move(struct emp_qelem *list)
|
||||||
cp = unit_move_getpath(list, suppress_map, path);
|
cp = unit_move_getpath(list, suppress_map, path);
|
||||||
if (!cp)
|
if (!cp)
|
||||||
return RET_FAIL;
|
return RET_FAIL;
|
||||||
cp = unit_path(leader, path, sizeof(path));
|
cp = unit_move_route(leader, path, sizeof(path));
|
||||||
if (!cp || !*cp)
|
if (!cp || !*cp)
|
||||||
cp = "h";
|
cp = "h";
|
||||||
suppress_map = 0;
|
suppress_map = 0;
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue