From 46c4447da089146c662f217bf3269d78d4c462c2 Mon Sep 17 00:00:00 2001 From: orwell96 Date: Mon, 18 Dec 2017 21:44:36 +0100 Subject: Rewrite rail connection system... ...to support an arbitrary number of connections for rails, which leads to these new features: - switches now get recognized by the trackworker correctly - ability to add real rail crosses During this, I also rewrote the rail registering system and the conway function (important part of path prediction) Note, developers: the track preset format changed, you might need to rewrite them according to the presets in tracks.lua if you wrote your own (possibly breaks advcarts) --- advtrains/wagons.lua | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) (limited to 'advtrains/wagons.lua') diff --git a/advtrains/wagons.lua b/advtrains/wagons.lua index 3e73f39..cc1f003 100644 --- a/advtrains/wagons.lua +++ b/advtrains/wagons.lua @@ -931,8 +931,13 @@ function advtrains.register_wagon(sysname_p, prototype, desc, inv_img) minetest.record_protection_violation(pointed_thing.under, placer:get_player_name()) return end - local conn1=advtrains.get_track_connections(node.name, node.param2) - local id=advtrains.create_new_train_at(pointed_thing.under, advtrains.dirCoordSet(pointed_thing.under, conn1)) + local tconns=advtrains.get_track_connections(node.name, node.param2) + local yaw = placer:get_look_horizontal() + (math.pi/2) + local plconnid = advtrains.yawToClosestConn(yaw, tconns) + + local prevpos = advtrains.get_adjacent_rail(pointed_thing.under, tconns, plconnid, prototype.drives_on) + if not prevpos then return end + local id=advtrains.create_new_train_at(pointed_thing.under, prevpos) local ob=minetest.add_entity(pointed_thing.under, sysname) if not ob then -- cgit v1.2.3