]> git.tdb.fi Git - r2c2.git/blobdiff - source/libr2c2/train.cpp
Add a vehicle property for swapping directions
[r2c2.git] / source / libr2c2 / train.cpp
index ba1a861b9e24ec75f14a91049d8d3a76b54fc29f..415d49146d290e1865c65043800d7ff4e33d21d6 100644 (file)
@@ -588,7 +588,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 +718,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;
        }