aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGabriel Pérez-Cerezo <gabriel@gpcf.eu>2020-06-29 01:30:27 +0200
committerGabriel Pérez-Cerezo <gabriel@gpcf.eu>2020-06-29 01:30:27 +0200
commit0b14d8ddb131343a588f27b8c06f1742036d00a7 (patch)
treefcce867b15622073bb84de0fbf079e1e0c0c616d
parentf458f39fde62432cae0829974b37ac72d3c3dbce (diff)
downloadadvtrains-0b14d8ddb131343a588f27b8c06f1742036d00a7.tar.gz
advtrains-0b14d8ddb131343a588f27b8c06f1742036d00a7.tar.bz2
advtrains-0b14d8ddb131343a588f27b8c06f1742036d00a7.zip
Add autocouple mode
The shunting mode no longer makes trains couple, since it was meant for other purposes. For autocoupling, the new autocoupling mode is used. If trains are in autocouple mode, they couple when they collide with another train.
-rw-r--r--advtrains/init.lua2
-rw-r--r--advtrains/trainlogic.lua8
-rw-r--r--advtrains_luaautomation/README.txt10
-rw-r--r--advtrains_luaautomation/atc_rail.lua13
4 files changed, 21 insertions, 12 deletions
diff --git a/advtrains/init.lua b/advtrains/init.lua
index bdb0bf9..0036037 100644
--- a/advtrains/init.lua
+++ b/advtrains/init.lua
@@ -392,7 +392,7 @@ advtrains.avt_save = function(remove_players_from_wagons)
"trainparts", "recently_collided_with_env",
"atc_brake_target", "atc_wait_finish", "atc_command", "atc_delay", "door_open",
"text_outside", "text_inside", "line", "routingcode",
- "il_sections", "speed_restriction", "is_shunt", "points_split",
+ "il_sections", "speed_restriction", "is_shunt", "points_split", "autocouple"
})
--then save it
tmp_trains[id]=v
diff --git a/advtrains/trainlogic.lua b/advtrains/trainlogic.lua
index 1ae96bd..6155768 100644
--- a/advtrains/trainlogic.lua
+++ b/advtrains/trainlogic.lua
@@ -906,7 +906,7 @@ function advtrains.split_train_at_index(train, index)
atwarn("Train",train_id,"is not initialized! Operation aborted!")
return
end
- train.is_shunt = nil -- prevent immediate recoupling
+
local p_index=advtrains.path_get_index_by_offset(train, train.index, - data.pos_in_train + wagon.wagon_span)
local pos, connid, frac = advtrains.path_getrestore(train, p_index)
local tp = {}
@@ -944,10 +944,10 @@ local CPL_ZONE = 2
local function createcouple(pos, train1, t1_is_front, train2, t2_is_front)
local id1 = train1.id
local id2 = train2.id
- if train1.is_shunt or train2.is_shunt then
+ if train1.autocouple or train2.autocouple then
-- couple trains
- train1.is_shunt = nil
- train2.is_shunt = nil
+ train1.autocouple = nil
+ train2.autocouple = nil
minetest.after(0, advtrains.safe_couple_trains, id1, id2, t1_is_front, t2_is_front, false, false, train1.velocity, train2.velocity)
return
end
diff --git a/advtrains_luaautomation/README.txt b/advtrains_luaautomation/README.txt
index c377c1b..65e068e 100644
--- a/advtrains_luaautomation/README.txt
+++ b/advtrains_luaautomation/README.txt
@@ -203,10 +203,12 @@ set_rc(routingcode)
split_at_index(index, command)
Splits the train at the specified index, into a train with index-1 wagons and a second train starting with the index-th wagon.
command specifies an atc command to be sent to the second train after decoupling.
-set_shunt()
- Sets the train into shunting mode
-unset_shunt()
- Sets the train into normal mode
+set_autocouple()
+ Sets the train into autocouple mode
+unset_autocouple()
+ Unsets autocouple mode
+set_shunt(), unset_shunt()
+ deprecated aliases for set_autocouple() and unset_autocouple(), will be removed from a later release.
# Operator panel
This simple node executes its actions when punched. It can be used to change a switch and update the corresponding signals or similar applications.
diff --git a/advtrains_luaautomation/atc_rail.lua b/advtrains_luaautomation/atc_rail.lua
index feac8d1..0bb9871 100644
--- a/advtrains_luaautomation/atc_rail.lua
+++ b/advtrains_luaautomation/atc_rail.lua
@@ -67,13 +67,20 @@ function r.fire_event(pos, evtdata)
return false
end,
set_shunt = function()
- -- enable shunting mode
if not train_id then return false end
- train.is_shunt = true
+ train.autocouple = true
end,
unset_shunt = function()
if not train_id then return false end
- train.is_shunt = nil
+ train.autocouple = nil
+ end,
+ set_autcouple = function ()
+ if not train_id then return false end
+ train.autocouple = true
+ end,
+ unset_autocouple = function ()
+ if not train_id then return false end
+ train.autocouple = nil
end,
set_line = function(line)
if type(line)~="string" and type(line)~="number" then