From 8c8c330e4ab3a27942038b5c61e8fa720688b324 Mon Sep 17 00:00:00 2001 From: Marko Lindqvist Date: Sun, 27 Aug 2023 06:05:03 +0300 Subject: [PATCH 8/8] tile_move_cost_ptrs(): Rework to avoid BAD_HEURISTIC_INIT() See osdn #48544 Signed-off-by: Marko Lindqvist --- common/map.c | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/common/map.c b/common/map.c index f1b05e1f86..e3a5a41627 100644 --- a/common/map.c +++ b/common/map.c @@ -766,8 +766,7 @@ int tile_move_cost_ptrs(const struct unit *punit, { const struct unit_class *pclass = utype_class(punittype); int cost; - bool cardinality_checked = FALSE; - bool cardinal_move BAD_HEURISTIC_INIT(FALSE); + char cardinal_move = -1; bool ri; /* Try to exit early for detectable conditions */ @@ -826,11 +825,11 @@ int tile_move_cost_ptrs(const struct unit *punit, if (proad->move_mode == RMM_FAST_ALWAYS) { cost = proad->move_cost; } else { - if (!cardinality_checked) { - cardinal_move = (ALL_DIRECTIONS_CARDINAL() || is_move_cardinal(t1, t2)); - cardinality_checked = TRUE; + if (cardinal_move < 0) { + cardinal_move = (ALL_DIRECTIONS_CARDINAL() + || is_move_cardinal(t1, t2)) ? 1 : 0; } - if (cardinal_move) { + if (cardinal_move > 0) { cost = proad->move_cost; } else { switch (proad->move_mode) { @@ -870,10 +869,11 @@ int tile_move_cost_ptrs(const struct unit *punit, } if (terrain_control.pythagorean_diagonal) { - if (!cardinality_checked) { - cardinal_move = (ALL_DIRECTIONS_CARDINAL() || is_move_cardinal(t1, t2)); + if (cardinal_move < 0) { + cardinal_move = (ALL_DIRECTIONS_CARDINAL() + || is_move_cardinal(t1, t2)) ? 1 : 0; } - if (!cardinal_move) { + if (cardinal_move == 0) { return cost * 181 >> 7; /* == (int) (cost * 1.41421356f) if cost < 99 */ } } -- 2.40.1