From 42f767669d9fa699e1fd58a62548b62f5c93a87b Mon Sep 17 00:00:00 2001 From: Mikko Rasa Date: Sun, 30 Jun 2013 23:19:38 +0300 Subject: [PATCH] Count reserved distance correctly in reverse direction --- source/libr2c2/train.cpp | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/source/libr2c2/train.cpp b/source/libr2c2/train.cpp index 4f6c204..25dcae9 100644 --- a/source/libr2c2/train.cpp +++ b/source/libr2c2/train.cpp @@ -490,8 +490,7 @@ float Train::get_reserved_distance_until(const Block *until_block) const if(!track) // XXX Probably unnecessary return 0; - BlockIter block = track.block_iter(); - if(&*block==until_block) + if(&track->get_block()==until_block) return 0; // Account for the vehicle's offset on its current track @@ -502,6 +501,8 @@ float Train::get_reserved_distance_until(const Block *until_block) const result = track->get_type().get_path_length(track->get_active_path())-result; result -= veh.get_type().get_length()/2; + BlockIter block = track.block_iter(); + // Count remaining distance in the vehicle's current block for(track=track.next(); &track->get_block()==&*block; track=track.next()) result += track->get_type().get_path_length(track->get_active_path()); -- 2.45.2