diff options
Diffstat (limited to 'advtrains_signals_ks/init.lua')
-rwxr-xr-x | advtrains_signals_ks/init.lua | 131 |
1 files changed, 102 insertions, 29 deletions
diff --git a/advtrains_signals_ks/init.lua b/advtrains_signals_ks/init.lua index 3a2f4d0..ff65697 100755 --- a/advtrains_signals_ks/init.lua +++ b/advtrains_signals_ks/init.lua @@ -60,14 +60,16 @@ local setaspectf = function(rot) end setzs3v(pos, nil, rot) else - if asp.dst == -1 then + local dst = asp.dst + if not dst or dst == -1 or advtrains.speed.not_lessp(dst, asp.main) then advtrains.ndb.swap_node(pos, {name="advtrains_signals_ks:hs_free_"..rot, param2 = node.param2}) - elseif not asp.dst or asp.dst == 0 then + dst = -1 + elseif dst == 0 then advtrains.ndb.swap_node(pos, {name="advtrains_signals_ks:hs_slow_"..rot, param2 = node.param2}) else advtrains.ndb.swap_node(pos, {name="advtrains_signals_ks:hs_nextslow_"..rot, param2 = node.param2}) end - setzs3v(pos, asp.dst, rot) + setzs3v(pos, dst, rot) end end end @@ -116,6 +118,8 @@ local suppasp_ra = { advtrains.trackplacer.register_tracktype("advtrains_signals_ks:hs") advtrains.trackplacer.register_tracktype("advtrains_signals_ks:ra") advtrains.trackplacer.register_tracktype("advtrains_signals_ks:sign") +advtrains.trackplacer.register_tracktype("advtrains_signals_ks:sign_lf") +advtrains.trackplacer.register_tracktype("advtrains_signals_ks:sign_lf7") advtrains.trackplacer.register_tracktype("advtrains_signals_ks:zs3") advtrains.trackplacer.register_tracktype("advtrains_signals_ks:zs3v") advtrains.trackplacer.register_tracktype("advtrains_signals_ks:mast") @@ -246,24 +250,14 @@ for _, rtab in ipairs({ -- rotatable by trackworker advtrains.trackplacer.add_worked("advtrains_signals_ks:ra", typ, "_"..rot) end - - --Schilder: - for typ, prts in pairs({ - -- Speed restrictions: - ["8"] = {asp = { main = 8, shunt = true }, n = "12", ici=true}, - ["12"] = {asp = { main = 12, shunt = true }, n = "16"}, - ["16"] = {asp = { main = 16, shunt = true }, n = "e"}, - -- Speed restriction lifted - ["e"] = {asp = { main = -1, shunt = true }, n = "hfs"}, - -- Halt for shunt moves: - ["hfs"] = {asp = { main = false, shunt = false }, n = "pam"}, - ["pam"] = {asp = { main = -1, shunt = false, proceed_as_main = true}, n = "8"}, - }) do - minetest.register_node("advtrains_signals_ks:sign_"..typ.."_"..rot, { - description = "Signal Sign", + + -- Schilder: + local function register_sign(prefix, typ, nxt, description, mesh, tile2, dtyp, inv, asp) + minetest.register_node("advtrains_signals_ks:"..prefix.."_"..typ.."_"..rot, { + description = description, drawtype = "mesh", - mesh = "advtrains_signals_ks_sign"..(typ == "hfs" and "_hfs" or "").."_smr"..rot..".obj", - tiles = {"advtrains_signals_ks_signpost.png", "advtrains_signals_ks_sign_"..typ..".png"}, + mesh = "advtrains_signals_ks_"..mesh.."_smr"..rot..".obj", + tiles = {"advtrains_signals_ks_signpost.png", tile2}, paramtype="light", sunlight_propagates=true, @@ -279,22 +273,81 @@ for _, rtab in ipairs({ advtrains_signal = 2, not_blocking_trains = 1, save_in_at_nodedb = 1, - not_in_creative_inventory = (rtab.ici and prts.ici) and 0 or 1, + not_in_creative_inventory = (rtab.ici and typ == dtyp) and 0 or 1, }, - drop = "advtrains_signals_ks:sign_8_0", - inventory_image = "advtrains_signals_ks_sign_8.png", + drop = "advtrains_signals_ks:"..prefix.."_"..dtyp.."_0", + inventory_image = inv, advtrains = { - -- This is a static signal! No set_aspect - get_aspect = function(pos, node) - return prts.asp - end, + get_aspect = function() return asp end }, on_rightclick = advtrains.interlocking.signal_rc_handler, can_dig = advtrains.interlocking.signal_can_dig, after_dig_node = advtrains.interlocking.signal_after_dig, }) -- rotatable by trackworker - advtrains.trackplacer.add_worked("advtrains_signals_ks:sign", typ, "_"..rot, prts.n) + advtrains.trackplacer.add_worked("advtrains_signals_ks:"..prefix, typ, "_"..rot, nxt) + end + + for typ, prts in pairs { + ["hfs"] = {asp = {main = false, shunt = false}, n = "pam", mesh = "_hfs", owntile = true}, + ["pam"] = {asp = {main = -1, shunt = false, proceed_as_main = true}, n = "ne4"}, + ["ne4"] = {asp = {}, n = "ne3x1", mesh="_ne4", owntile = true}, + ["ne3x1"] = {asp = {}, n = "ne3x2", mesh="_ne3", owntile = true}, + ["ne3x2"] = {asp = {}, n = "ne3x3", mesh="_ne3", owntile = true}, + ["ne3x3"] = {asp = {}, n = "ne3x4", mesh="_ne3", owntile = true}, + ["ne3x4"] = {asp = {}, n = "ne3x5", mesh="_ne3", owntile = true}, + ["ne3x5"] = {asp = {}, n = "hfs", mesh="_ne3", owntile = true}, + } do + local mesh = prts.mesh or "" + local tile2 = "advtrains_signals_ks_sign_lf7.png^(advtrains_signals_ks_sign_"..typ..".png^[makealpha:255,255,255)" + if prts.owntile then + tile2 = "advtrains_signals_ks_sign_"..typ..".png" + end + register_sign("sign", typ, prts.n, "Signal Sign", "sign"..mesh, tile2, "hfs", "advtrains_signals_ks_sign_lf7.png", prts.asp) + end + + for typ, prts in pairs { + -- Speed restrictions: + ["4"] = {asp = { main = 4, shunt = true }, n = "6"}, + ["6"] = {asp = { main = 6, shunt = true }, n = "8"}, + ["8"] = {asp = { main = 8, shunt = true }, n = "12"}, + ["12"] = {asp = { main = 12, shunt = true }, n = "16"}, + ["16"] = {asp = { main = 16, shunt = true }, n = "e"}, + -- Speed restriction lifted + ["e"] = {asp = { main = -1, shunt = true }, n = "4", mesh = "_zs10"}, + } do + local mesh = tonumber(typ) and "_zs3" or prts.mesh or "" + local tile2 = "[combine:40x40:0,0=\\(advtrains_signals_ks_sign_off.png\\^[resize\\:40x40\\):3,-2=advtrains_signals_ks_sign_"..typ..".png^[invert:rgb" + if typ == "e" then + tile2 = "advtrains_signals_ks_sign_zs10.png" + end + register_sign("sign", typ, prts.n, "Permanent local speed restriction sign", "sign"..mesh, tile2, "8", "advtrains_signals_ks_sign_8.png^[invert:rgb", prts.asp) + end + + for typ, prts in pairs { + ["4"] = {main = 4, n = "6"}, + ["6"] = {main = 6, n = "8"}, + ["8"] = {main = 8, n = "12"}, + ["12"] = {main = 12, n = "16"}, + ["16"] = {main = 16, n = "e"}, + ["e"] = {main = -1, n = "4"}, + } do + local tile2 = "advtrains_signals_ks_sign_lf7.png^(advtrains_signals_ks_sign_"..typ..".png^[makealpha:255,255,255)"..(typ == "e" and "" or "^[multiply:orange") + local inv = "advtrains_signals_ks_sign_lf7.png^(advtrains_signals_ks_sign_8.png^[makealpha:255,255,255)^[multiply:orange" + register_sign("sign_lf", typ, prts.n, "Temporary local speed restriction sign", "sign", tile2, "8", inv, {main = prts.main, shunt = true, type = "temp"}) + end + + for typ, prts in pairs { + ["4"] = {main = 4, n = "6"}, + ["6"] = {main = 6, n = "8"}, + ["8"] = {main = 8, n = "12"}, + ["12"] = {main = 12, n = "16"}, + ["16"] = {main = 16, n = "20"}, + ["20"] = {main = 20, n = "4"}, + } do + local tile2 = "advtrains_signals_ks_sign_lf7.png^(advtrains_signals_ks_sign_"..typ..".png^[makealpha:255,255,255)" + local inv = "advtrains_signals_ks_sign_lf7.png^(advtrains_signals_ks_sign_8.png^[makealpha:255,255,255)" + register_sign("sign_lf7", typ, prts.n, "Line speed restriction sign", "sign", tile2, "8", inv, {main = prts.main, shunt = true, type = "line"}) end -- Geschwindigkeits(vor)anzeiger für Ks-Signale @@ -308,7 +361,7 @@ for _, rtab in ipairs({ }) do local def = { drawtype = "mesh", - tiles = {"advtrains_signals_ks_mast.png","advtrains_signals_ks_head.png","[combine:128x128:0,4=advtrains_signals_ks_zs3_"..typ..".png^[noalpha"}, + tiles = {"advtrains_signals_ks_mast.png","advtrains_signals_ks_head.png","advtrains_signals_ks_sign_"..typ..".png^[invert:rgb^[noalpha"}, paramtype = "light", sunlight_propagates = true, light_source = 4, @@ -414,3 +467,23 @@ minetest.register_craft({ }, }) sign_material = nil + +minetest.register_craft{ + output = "advtrains_signals_ks:sign_8_0 1", + recipe = {{"advtrains_signals_ks:sign_lf7_8_0"}} +} + +minetest.register_craft{ + output = "advtrains_signals_ks:sign_hfs_0 1", + recipe = {{"advtrains_signals_ks:sign_8_0"}} +} + +minetest.register_craft{ + output = "advtrains_signals_ks:sign_lf_8_0 1", + recipe = {{"advtrains_signals_ks:sign_hfs_0"}} +} + +minetest.register_craft{ + output = "advtrains_signals_ks:sign_lf7_8_0 1", + recipe = {{"advtrains_signals_ks:sign_lf_8_0"}} +} |