1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
|
-- tsr_rail.lua
-- Point speed restriction rails
-- Simple rail whose only purpose is to place a TSR on the position, as a temporary solution until the timetable system covers everything.
local function updateform(pos)
local meta = minetest.get_meta(pos)
local pe = advtrains.encode_pos(pos)
local npr = advtrains.interlocking.npr_rails[pe] or 2
meta:set_string("infotext", "Point speed restriction: "..npr)
meta:set_string("formspec", "field[npr;Set point speed restriction:;"..npr.."]")
end
local adefunc = function(def, preset, suffix, rotation)
return {
after_place_node=function(pos)
updateform(pos)
end,
after_dig_node=function(pos)
local pe = advtrains.encode_pos(pos)
advtrains.interlocking.npr_rails[pe] = nil
end,
on_receive_fields = function(pos, formname, fields, player)
if fields.npr then
local pe = advtrains.encode_pos(pos)
advtrains.interlocking.npr_rails[pe] = tonumber(fields.npr)
updateform(pos)
end
end,
advtrains = {
on_train_approach = function(pos,train_id, train, index)
if train.path_cn[index] == 1 then
local pe = advtrains.encode_pos(pos)
local npr = advtrains.interlocking.npr_rails[pe] or 2
advtrains.interlocking.lzb_add_oncoming_npr(train, index, npr)
end
end,
},
}
end
advtrains.register_tracks("default", {
nodename_prefix="advtrains_interlocking:dtrack_npr",
texture_prefix="advtrains_dtrack_npr",
models_prefix="advtrains_dtrack",
models_suffix=".b3d",
shared_texture="advtrains_dtrack_shared_npr.png",
description="Point Speed Restriction Rail",
formats={},
get_additional_definiton = adefunc,
}, advtrains.trackpresets.t_30deg_straightonly)
|