# HG changeset patch # User KUDr # Date 1149787863 0 # Node ID b61ec1c297cdc05b0b68bcd3b4761dd96ab13b49 # Parent 3aa7cf832a306d0ecae929cbc117c82849d3e2de (svn r5169) - CodeChange: [YAPF] RVs now use YAPF_TILE_LENGTH as base unit and 2 configurable settings (slope and crossing penalties) for cost calculation diff -r 3aa7cf832a30 -r b61ec1c297cd settings.c --- a/settings.c Wed Jun 07 21:26:57 2006 +0000 +++ b/settings.c Thu Jun 08 17:31:03 2006 +0000 @@ -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() }; diff -r 3aa7cf832a30 -r b61ec1c297cd yapf/yapf_road.cpp --- a/yapf/yapf_road.cpp Wed Jun 07 21:26:57 2006 +0000 +++ b/yapf/yapf_road.cpp Thu Jun 08 17:31:03 2006 +0000 @@ -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; diff -r 3aa7cf832a30 -r b61ec1c297cd yapf/yapf_settings.h --- a/yapf/yapf_settings.h Wed Jun 07 21:26:57 2006 +0000 +++ b/yapf/yapf_settings.h Thu Jun 08 17:31:03 2006 +0000 @@ -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