12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667 |
- -- 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.
- -- This code resembles the code in lines/stoprail.lua
- 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)
- local pname = player:get_player_name()
- if not minetest.check_player_privs(pname, {interlocking=true}) then
- minetest.chat_send_player(pname, "Interlocking privilege required!")
- return
- end
- if minetest.is_protected(pos, pname) then
- minetest.chat_send_player(pname, "This rail is protected!")
- minetest.record_protection_violation(pos, pname)
- return
- end
- 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.lzb_add_checkpoint(train, index, npr, nil)
- end
- end,
- },
- }
- end
- if minetest.get_modpath("advtrains_train_track") ~= nil then
- 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)
- end
|