aboutsummaryrefslogtreecommitdiff
path: root/advtrains
diff options
context:
space:
mode:
authororwell96 <orwell@bleipb.de>2018-08-12 13:23:36 +0200
committerorwell96 <orwell@bleipb.de>2018-08-12 13:23:36 +0200
commit6cdb47edd231da08b32b8258eaa507ff312134cd (patch)
tree27811fa34404a022b4ab8d8b9105be1a0b810868 /advtrains
parent0d130bb262f25f089d2633479afa0ecee24256e6 (diff)
downloadadvtrains-6cdb47edd231da08b32b8258eaa507ff312134cd.tar.gz
advtrains-6cdb47edd231da08b32b8258eaa507ff312134cd.tar.bz2
advtrains-6cdb47edd231da08b32b8258eaa507ff312134cd.zip
Add routesetting callbacks.
Now, only the signal aspect setting is still missing
Diffstat (limited to 'advtrains')
-rw-r--r--advtrains/atc.lua2
-rw-r--r--advtrains/helpers.lua10
-rw-r--r--advtrains/init.lua2
3 files changed, 12 insertions, 2 deletions
diff --git a/advtrains/atc.lua b/advtrains/atc.lua
index 480c043..8e23205 100644
--- a/advtrains/atc.lua
+++ b/advtrains/atc.lua
@@ -194,7 +194,7 @@ local matchptn={
return #match+1
end,
["R"]=function(id, train)
- if train.velocity<=0 then
+ if train.velocity<=0 then --TODO this code still uses movedir
train.movedir=train.movedir*-1
train.atc_arrow = not train.atc_arrow
else
diff --git a/advtrains/helpers.lua b/advtrains/helpers.lua
index 2160444..c91af34 100644
--- a/advtrains/helpers.lua
+++ b/advtrains/helpers.lua
@@ -339,3 +339,13 @@ function advtrains.roundfloorpts(pos)
return minetest.pos_to_string(advtrains.round_vector_floor_y(pos))
end
+-- insert an element into a table if it does not yet exist there
+-- equalfunc is a function to compare equality, defaults to ==
+-- returns true if the element was inserted
+function advtrains.insert_once(tab, elem, equalfunc)
+ for _,e in pairs(tab) do
+ if equalfunc and equalfunc(elem, e) or e==elem then return false end
+ end
+ tab[#tab+1] = elem
+ return true
+end
diff --git a/advtrains/init.lua b/advtrains/init.lua
index 4559dfe..cf9d261 100644
--- a/advtrains/init.lua
+++ b/advtrains/init.lua
@@ -70,7 +70,7 @@ function advtrains.print_concat_table(a)
if t.x and t.y and t.z then
str=str..minetest.pos_to_string(t)
elseif t.p and t.s then -- interlocking sigd
- str=str.."("..t.p.."/"..t.s..")"
+ str=str.."("..minetest.pos_to_string(t.p).."/"..t.s..")"
else
str=str..dump(t)
end