Mercurial > hg > openttd
changeset 3981:4920349e8a31 draft
(svn r5169) - CodeChange: [YAPF] RVs now use YAPF_TILE_LENGTH as base unit and 2 configurable settings (slope and crossing penalties) for cost calculation
author | KUDr <KUDr@openttd.org> |
---|---|
date | Thu, 08 Jun 2006 17:31:03 +0000 |
parents | 36043cc5d610 |
children | a2ac0bbfc380 |
files | settings.c yapf/yapf_road.cpp yapf/yapf_settings.h |
diffstat | 3 files changed, 11 insertions(+), 6 deletions(-) [+] |
line wrap: on
line diff
--- a/settings.c +++ b/settings.c @@ -1412,6 +1412,9 @@ SDT_CONDVAR (Patches, yapf.rail_longer_platform_per_tile_penalty, SLE_UINT, 28, SL_MAX_VERSION,NS, 0, 0 * YAPF_TILE_LENGTH, 0, 20000, STR_NULL, NULL), SDT_CONDVAR (Patches, yapf.rail_shorter_platform_penalty, SLE_UINT, 28, SL_MAX_VERSION,NS, 0, 40 * YAPF_TILE_LENGTH, 0, 20000, STR_NULL, NULL), SDT_CONDVAR (Patches, yapf.rail_shorter_platform_per_tile_penalty, SLE_UINT, 28, SL_MAX_VERSION,NS, 0, 0 * YAPF_TILE_LENGTH, 0, 20000, STR_NULL, NULL), + // road vehicles - penalties + SDT_CONDVAR (Patches, yapf.road_slope_penalty , SLE_UINT, 28, SL_MAX_VERSION,NS, 0, 2 * YAPF_TILE_LENGTH, 0, 1000000, STR_NULL, NULL), + SDT_CONDVAR (Patches, yapf.rail_crossing_penalty , SLE_UINT, 28, SL_MAX_VERSION,NS, 0, 3 * YAPF_TILE_LENGTH, 0, 1000000, STR_NULL, NULL), SDT_END() };
--- a/yapf/yapf_road.cpp +++ b/yapf/yapf_road.cpp @@ -33,7 +33,7 @@ if (z2 - z1 > 1) { /* Slope up */ - return Yapf().PfGetSettings().rail_slope_penalty; + return Yapf().PfGetSettings().road_slope_penalty; } return 0; } @@ -44,12 +44,12 @@ int cost = 0; // set base cost if (IsDiagonalTrackdir(trackdir)) { - cost += 10; + cost += YAPF_TILE_LENGTH; switch (GetTileType(tile)) { case MP_STREET: /* Increase the cost for level crossings */ if (IsLevelCrossing(tile)) - cost += Yapf().PfGetSettings().rail_crossing_penalty; + cost += Yapf().PfGetSettings().road_crossing_penalty; break; default: @@ -57,7 +57,7 @@ } } else { // non-diagonal trackdir - cost = 7; + cost = YAPF_TILE_CORNER_LENGTH; } return cost; } @@ -95,7 +95,7 @@ if (F.m_new_tile == n.m_key.m_tile && new_td == n.m_key.m_td) return false; // if we skipped some tunnel tiles, add their cost - segment_cost += 10 * F.m_tiles_skipped; + segment_cost += F.m_tiles_skipped * YAPF_TILE_LENGTH; // add hilly terrain penalty segment_cost += Yapf().SlopeCost(tile, F.m_new_tile, trackdir); @@ -206,7 +206,7 @@ int dy = abs(y1 - y2); int dmin = min(dx, dy); int dxy = abs(dx - dy); - int d = dmin * 7 + (dxy - 1) * 5; + int d = dmin * YAPF_TILE_CORNER_LENGTH + (dxy - 1) * (YAPF_TILE_LENGTH / 2); n.m_estimate = n.m_cost + d; assert(n.m_estimate >= n.m_parent->m_estimate); return true;
--- a/yapf/yapf_settings.h +++ b/yapf/yapf_settings.h @@ -36,6 +36,8 @@ YS_DEF(bool , ship_use_yapf) ///< use YAPF for ships YS_DEF(bool , road_use_yapf) ///< use YAPF for road YS_DEF(bool , rail_use_yapf) ///< use YAPF for rail + YS_DEF(uint32, road_slope_penalty) ///< penalty for up-hill slope + YS_DEF(uint32, road_crossing_penalty) ///< penalty for level crossing YS_DEF(bool , rail_firstred_twoway_eol) ///< treat first red two-way signal as dead end YS_DEF(uint32, rail_firstred_penalty) ///< penalty for first red signal YS_DEF(uint32, rail_firstred_exit_penalty) ///< penalty for first red exit signal