]> git.tdb.fi Git - r2c2.git/blobdiff - source/libr2c2/train.cpp
Strip Id tags and copyright notices from files
[r2c2.git] / source / libr2c2 / train.cpp
index ba1a861b9e24ec75f14a91049d8d3a76b54fc29f..620931dd0b2333bbd3f64be70f78c4d273d63d34 100644 (file)
@@ -1,10 +1,3 @@
-/* $Id$
-
-This file is part of R²C²
-Copyright © 2006-2011  Mikkosoft Productions, Mikko Rasa
-Distributed under the GPL
-*/
-
 #include <algorithm>
 #include <cmath>
 #include <msp/strings/formatter.h>
@@ -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;
        }