(svn r5067) -Codechange: [YAPF] Platform selection feature now applies penalty per platform instead of per tile (should give better results)
authorKUDr
Thu, 01 Jun 2006 22:20:40 +0000
changeset 3932 dfe10fa5ce4f
parent 3931 b946fc6e7188
child 3933 231ae3c419f4
(svn r5067) -Codechange: [YAPF] Platform selection feature now applies penalty per platform instead of per tile (should give better results)
settings.c
yapf/yapf_costrail.hpp
--- a/settings.c	Thu Jun 01 21:39:35 2006 +0000
+++ b/settings.c	Thu Jun 01 22:20:40 2006 +0000
@@ -1408,8 +1408,8 @@
 	SDT_CONDVAR (Patches, yapf.rail_look_ahead_signal_p1  , SLE_INT , 28, SL_MAX_VERSION, 0, 0,  -100                   , -1000000, 1000000, STR_NULL, NULL),
 	SDT_CONDVAR (Patches, yapf.rail_look_ahead_signal_p2  , SLE_INT , 28, SL_MAX_VERSION, 0, 0,     5                   , -1000000, 1000000, STR_NULL, NULL),
 	// penalties for too long or too short station platforms (TODO: NS flag or higher revision?)
-	SDT_CONDVAR (Patches, yapf.rail_longer_platform_penalty,  SLE_UINT, 28, SL_MAX_VERSION,NS, 0,  10 * YAPF_TILE_LENGTH,        0,   20000, STR_NULL, NULL),
-	SDT_CONDVAR (Patches, yapf.rail_shorter_platform_penalty, SLE_UINT, 28, SL_MAX_VERSION,NS, 0, 100 * YAPF_TILE_LENGTH,        0,   20000, STR_NULL, NULL),
+	SDT_CONDVAR (Patches, yapf.rail_longer_platform_penalty,  SLE_UINT, 28, SL_MAX_VERSION,NS, 0,   8 * 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_END()
 };
--- a/yapf/yapf_costrail.hpp	Thu Jun 01 21:39:35 2006 +0000
+++ b/yapf/yapf_costrail.hpp	Thu Jun 01 22:20:40 2006 +0000
@@ -148,10 +148,10 @@
 		int needed_platform_length = (v->u.rail.cached_total_length + TILE_SIZE - 1) / TILE_SIZE;
 		if (platform_length > needed_platform_length) {
 			// apply penalty for longer platform than needed
-			cost += Yapf().PfGetSettings().rail_longer_platform_penalty * (platform_length - needed_platform_length);
-		} else {
+			cost += Yapf().PfGetSettings().rail_longer_platform_penalty;
+		} else if (needed_platform_length > platform_length) {
 			// apply penalty for shorter platform than needed
-			cost += Yapf().PfGetSettings().rail_shorter_platform_penalty * (needed_platform_length - platform_length);
+			cost += Yapf().PfGetSettings().rail_shorter_platform_penalty;
 		}
 		return cost;
 	}