mirror of https://github.com/OpenTTD/OpenTTD
(svn r2363) - Codechange: [NPF] Removed caching the endnode check. The code for this was buggy, fundamentally flawed and barely useful. (Hackykid)
parent
5e040110fc
commit
a2f691b24a
8
npf.c
8
npf.c
|
@ -443,22 +443,14 @@ int32 NPFFindStationOrTile(AyStar* as, OpenListNode *current) {
|
||||||
AyStarNode *node = ¤t->path.node;
|
AyStarNode *node = ¤t->path.node;
|
||||||
TileIndex tile = node->tile;
|
TileIndex tile = node->tile;
|
||||||
|
|
||||||
/* See if we checked this before */
|
|
||||||
if (NPFGetFlag(node, NPF_FLAG_TARGET_CHECKED))
|
|
||||||
return NPFGetFlag(node, NPF_FLAG_IS_TARGET);
|
|
||||||
/* We're gonna check this now and store the result, let's mark that */
|
|
||||||
NPFSetFlag(node, NPF_FLAG_TARGET_CHECKED, true);
|
|
||||||
|
|
||||||
/* If GetNeighbours said we could get here, we assume the station type
|
/* If GetNeighbours said we could get here, we assume the station type
|
||||||
* is correct */
|
* is correct */
|
||||||
if (
|
if (
|
||||||
(fstd->station_index == -1 && tile == fstd->dest_coords) || /* We've found the tile, or */
|
(fstd->station_index == -1 && tile == fstd->dest_coords) || /* We've found the tile, or */
|
||||||
(IsTileType(tile, MP_STATION) && _map2[tile] == fstd->station_index) /* the station */
|
(IsTileType(tile, MP_STATION) && _map2[tile] == fstd->station_index) /* the station */
|
||||||
) {
|
) {
|
||||||
NPFSetFlag(node, NPF_FLAG_TARGET_CHECKED, true);
|
|
||||||
return AYSTAR_FOUND_END_NODE;
|
return AYSTAR_FOUND_END_NODE;
|
||||||
} else {
|
} else {
|
||||||
NPFSetFlag(node, NPF_FLAG_TARGET_CHECKED, false);
|
|
||||||
return AYSTAR_DONE;
|
return AYSTAR_DONE;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
7
npf.h
7
npf.h
|
@ -43,13 +43,6 @@ typedef enum { /* Flags for AyStarNode.userdata[NPF_NODE_FLAGS]. Use NPFGetBit()
|
||||||
NPF_FLAG_SEEN_SIGNAL, /* Used to mark that a signal was seen on the way, for rail only */
|
NPF_FLAG_SEEN_SIGNAL, /* Used to mark that a signal was seen on the way, for rail only */
|
||||||
NPF_FLAG_REVERSE, /* Used to mark that this node was reached from the second start node, if applicable */
|
NPF_FLAG_REVERSE, /* Used to mark that this node was reached from the second start node, if applicable */
|
||||||
NPF_FLAG_LAST_SIGNAL_RED, /* Used to mark that the last signal on this path was red */
|
NPF_FLAG_LAST_SIGNAL_RED, /* Used to mark that the last signal on this path was red */
|
||||||
NPF_FLAG_TARGET_CHECKED, /* Used by end node checking function of npf to mark
|
|
||||||
that they have evaluated this node. When this
|
|
||||||
flag is on, NPF_FLAG_IS_TARGET is on when the
|
|
||||||
node is a target, and off when it is not. Should
|
|
||||||
never be used directly, only by the end node
|
|
||||||
checking functions for caching of results. */
|
|
||||||
NPF_FLAG_IS_TARGET, /* See comment for NPF_FLAG_TARGET_CHECKED */
|
|
||||||
} NPFNodeFlag;
|
} NPFNodeFlag;
|
||||||
|
|
||||||
typedef struct NPFFoundTargetData { /* Meant to be stored in AyStar.userpath */
|
typedef struct NPFFoundTargetData { /* Meant to be stored in AyStar.userpath */
|
||||||
|
|
|
@ -52,7 +52,7 @@ static void DrawOrdersWindow(Window *w)
|
||||||
|
|
||||||
shared_orders = IsOrderListShared(v);
|
shared_orders = IsOrderListShared(v);
|
||||||
|
|
||||||
if ((uint)v->num_orders + shared_orders <= (uint)WP(w,order_d).sel)
|
if ((uint)v->num_orders + (shared_orders?1:0) <= (uint)WP(w,order_d).sel)
|
||||||
SETBIT(w->disabled_state, 5); /* delete */
|
SETBIT(w->disabled_state, 5); /* delete */
|
||||||
|
|
||||||
if (v->num_orders == 0)
|
if (v->num_orders == 0)
|
||||||
|
|
Loading…
Reference in New Issue