diff options
-rw-r--r-- | advtrains/atc.lua | 8 | ||||
-rw-r--r-- | advtrains/trainlogic.lua | 3 |
2 files changed, 7 insertions, 4 deletions
diff --git a/advtrains/atc.lua b/advtrains/atc.lua index 8e23205..22de4ca 100644 --- a/advtrains/atc.lua +++ b/advtrains/atc.lua @@ -194,9 +194,9 @@ local matchptn={ return #match+1 end, ["R"]=function(id, train) - if train.velocity<=0 then --TODO this code still uses movedir - train.movedir=train.movedir*-1 - train.atc_arrow = not train.atc_arrow + if train.velocity<=0 then + advtrains.invert_train(id) + advtrains.train_ensure_init(id, train) else atwarn(sid(id), attrans("ATC Reverse command warning: didn't reverse train, train moving!")) end @@ -205,7 +205,7 @@ local matchptn={ ["O([LRC])"]=function(id, train, match) local tt={L=-1, R=1, C=0} local arr=train.atc_arrow and 1 or -1 - train.door_open = tt[match]*arr*train.movedir + train.door_open = tt[match]*arr return 2 end, } diff --git a/advtrains/trainlogic.lua b/advtrains/trainlogic.lua index e21e9a0..7cd1c1d 100644 --- a/advtrains/trainlogic.lua +++ b/advtrains/trainlogic.lua @@ -956,6 +956,9 @@ function advtrains.invert_train(train_id) if train.door_open then train.door_open = - train.door_open end + if train.atc_command then + train.atc_arrow = not train.atc_arrow + end advtrains.path_invalidate(train) advtrains.couple_invalidate(train) |