summaryrefslogtreecommitdiff
path: root/src/yapf/yapf_costrail.hpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/yapf/yapf_costrail.hpp')
-rw-r--r--src/yapf/yapf_costrail.hpp10
1 files changed, 5 insertions, 5 deletions
diff --git a/src/yapf/yapf_costrail.hpp b/src/yapf/yapf_costrail.hpp
index f32b8388b..81ef6a82a 100644
--- a/src/yapf/yapf_costrail.hpp
+++ b/src/yapf/yapf_costrail.hpp
@@ -244,13 +244,13 @@ public:
assert(v != NULL);
assert(v->type == VEH_TRAIN);
assert(v->u.rail.cached_total_length != 0);
- int needed_platform_length = (v->u.rail.cached_total_length + TILE_SIZE - 1) / TILE_SIZE;
- if (platform_length > needed_platform_length) {
+ int missing_platform_length = (v->u.rail.cached_total_length + TILE_SIZE - 1) / TILE_SIZE - platform_length;
+ if (missing_platform_length < 0) {
/* apply penalty for longer platform than needed */
- cost += Yapf().PfGetSettings().rail_longer_platform_penalty;
- } else if (needed_platform_length > platform_length) {
+ cost += Yapf().PfGetSettings().rail_longer_platform_penalty + Yapf().PfGetSettings().rail_longer_platform_per_tile_penalty * -missing_platform_length;
+ } else if (missing_platform_length > 0) {
/* apply penalty for shorter platform than needed */
- cost += Yapf().PfGetSettings().rail_shorter_platform_penalty;
+ cost += Yapf().PfGetSettings().rail_shorter_platform_penalty + Yapf().PfGetSettings().rail_shorter_platform_per_tile_penalty * missing_platform_length;
}
return cost;
}