X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;ds=sidebyside;f=source%2Flibr2c2%2Ftrain.cpp;h=620931dd0b2333bbd3f64be70f78c4d273d63d34;hb=d15ac13f2e170f155b4bbd124df48400c339b644;hp=ba1a861b9e24ec75f14a91049d8d3a76b54fc29f;hpb=e77b01f9fed6d5f653dbd0123f0f1f61a13c3dfa;p=r2c2.git diff --git a/source/libr2c2/train.cpp b/source/libr2c2/train.cpp index ba1a861..620931d 100644 --- a/source/libr2c2/train.cpp +++ b/source/libr2c2/train.cpp @@ -1,10 +1,3 @@ -/* $Id$ - -This file is part of R²C² -Copyright © 2006-2011 Mikkosoft Productions, Mikko Rasa -Distributed under the GPL -*/ - #include #include #include @@ -588,7 +581,10 @@ void Train::tick(const Time::TimeStamp &t, const Time::TimeDelta &dt) if(controller->get_reverse()!=reverse) { reverse = controller->get_reverse(); - driver.set_loco_reverse(address, reverse); + bool r = reverse; + if(loco_type.get_swap_direction()) + r = !r; + driver.set_loco_reverse(address, r); release_blocks(cur_blocks_end, blocks.end()); reverse_blocks(blocks); @@ -715,8 +711,11 @@ void Train::loco_speed_event(unsigned addr, unsigned speed, bool rev) if(addr==address) { current_speed_step = speed; - if(rev!=reverse) - layout.get_driver().set_loco_reverse(address, reverse); + bool r = reverse; + if(loco_type.get_swap_direction()) + r = !r; + if(rev!=r) + layout.get_driver().set_loco_reverse(address, r); speed_changing = false; pure_speed = false; }