diff options
author | orwell <orwell@bleipb.de> | 2025-05-27 21:03:14 +0200 |
---|---|---|
committer | orwell <orwell@bleipb.de> | 2025-05-27 21:03:14 +0200 |
commit | 8506dd2825b715293138976a5ad1fa11a46206a7 (patch) | |
tree | 1f48c1dc03c3bbc6ed6762bd04d10e543a3a580c /advtrains/signals.lua | |
parent | 2a9891577c1b00068cc4ec858c7dc6c5196f0a2b (diff) | |
parent | adc01a0bba29b40278e45c50caa954c435374f7b (diff) | |
download | advtrains-8506dd2825b715293138976a5ad1fa11a46206a7.tar.gz advtrains-8506dd2825b715293138976a5ad1fa11a46206a7.tar.bz2 advtrains-8506dd2825b715293138976a5ad1fa11a46206a7.zip |
Merge branch 'master' into cesky-hvozd
Throw away most of the changes in everything except line_automation.
Merge line_automation changes between CH and master
Diffstat (limited to 'advtrains/signals.lua')
-rw-r--r-- | advtrains/signals.lua | 74 |
1 files changed, 25 insertions, 49 deletions
diff --git a/advtrains/signals.lua b/advtrains/signals.lua index 93fd99e..35e118c 100644 --- a/advtrains/signals.lua +++ b/advtrains/signals.lua @@ -42,9 +42,6 @@ end for r,f in pairs({on={as="off", ls="green", als="red"}, off={as="on", ls="red", als="green"}}) do - -- advtrains.trackplacer.register_tracktype("advtrains:retrosignal", "") - -- advtrains.trackplacer.register_tracktype("advtrains:signal", "") - for rotid, rotation in ipairs({"", "_30", "_45", "_60"}) do local crea=1 if rotid==1 and r=="off" then crea=0 end @@ -52,7 +49,7 @@ for r,f in pairs({on={as="off", ls="green", als="red"}, off={as="on", ls="red", minetest.register_node("advtrains:retrosignal_"..r..rotation, { drawtype = "mesh", paramtype="light", - paramtype2="4dir", + paramtype2="facedir", walkable = false, selection_box = { type = "fixed", @@ -60,10 +57,9 @@ for r,f in pairs({on={as="off", ls="green", als="red"}, off={as="on", ls="red", }, mesh = "advtrains_retrosignal_"..r..rotation..".b3d", tiles = {"advtrains_retrosignal.png"}, - use_texture_alpha = "opaque", inventory_image="advtrains_retrosignal_inv.png", drop="advtrains:retrosignal_off", - description=attrans("Lampless Signal (@1)", attrans(r..rotation)), + description=attrans("Lampless Signal"), sunlight_propagates=true, groups = { cracky=3, @@ -87,7 +83,7 @@ for r,f in pairs({on={as="off", ls="green", als="red"}, off={as="on", ls="red", on_rightclick=function(pos, node, player) local pname = player:get_player_name() local sigd = advtrains.interlocking and advtrains.interlocking.db.get_sigd_for_signal(pos) - if sigd then + if sigd and not player:get_player_control().aux1 then advtrains.interlocking.show_signalling_form(sigd, pname) elseif advtrains.interlocking and player:get_player_control().aux1 then advtrains.interlocking.show_ip_form(pos, pname) @@ -106,17 +102,17 @@ for r,f in pairs({on={as="off", ls="green", als="red"}, off={as="on", ls="red", main_aspects = main_aspects, apply_aspect = simple_apply_aspect("advtrains:retrosignal_off"..rotation, "advtrains:retrosignal_on"..rotation), get_aspect_info = function() return aspect(r=="on") end, + route_role = "main", }, can_dig = can_dig_func, after_dig_node = after_dig_func, --TODO add rotation using trackworker }) - -- advtrains.trackplacer.add_worked("advtrains:retrosignal", r, rotation, nil) minetest.register_node("advtrains:signal_"..r..rotation, { drawtype = "mesh", paramtype="light", - paramtype2="4dir", + paramtype2="facedir", walkable = false, selection_box = { type = "fixed", @@ -126,7 +122,7 @@ for r,f in pairs({on={as="off", ls="green", als="red"}, off={as="on", ls="red", tiles = {"advtrains_signal_"..r..".png"}, inventory_image="advtrains_signal_inv.png", drop="advtrains:signal_off", - description=attrans("Signal (@1)", attrans(r..rotation)), + description=attrans("Signal"), groups = { cracky=3, not_blocking_trains=1, @@ -145,7 +141,7 @@ for r,f in pairs({on={as="off", ls="green", als="red"}, off={as="on", ls="red", on_rightclick=function(pos, node, player) local pname = player:get_player_name() local sigd = advtrains.interlocking and advtrains.interlocking.db.get_sigd_for_signal(pos) - if sigd then + if sigd and not player:get_player_control().aux1 then advtrains.interlocking.show_signalling_form(sigd, pname) elseif advtrains.interlocking and player:get_player_control().aux1 then advtrains.interlocking.show_ip_form(pos, pname) @@ -158,6 +154,7 @@ for r,f in pairs({on={as="off", ls="green", als="red"}, off={as="on", ls="red", main_aspects = main_aspects, apply_aspect = simple_apply_aspect("advtrains:signal_off"..rotation, "advtrains:signal_on"..rotation), get_aspect_info = function() return aspect(r=="on") end, + route_role = "main", node_state = f.ls, node_state_map = { red = "advtrains:signal_off"..rotation, green = "advtrains:signal_on"..rotation}, node_on_switch_state = function(pos, new_node, old_state, new_state) @@ -173,24 +170,22 @@ for r,f in pairs({on={as="off", ls="green", als="red"}, off={as="on", ls="red", after_dig_node = after_dig_func, --TODO add rotation using trackworker }) - -- advtrains.trackplacer.add_worked("advtrains:signal", r, rotation, nil) end local crea=1 if r=="off" then crea=0 end --tunnel signals. no rotations. - for loc, sbox in pairs({ - l={-1/2, -1/2, -1/4, 0, 1/2, 1/4}, - r={0, -1/2, -1/4, 1/2, 1/2, 1/4}, - t={-1/2, 0, -1/4, 1/2, 1/2, 1/4}, - b={-1/4, -1/2, 1/2 - 1/8, 1/4, 1/2, 1/2}, - p={-1/4, -1/2, 5/8, 1/4, 1/2, 7/8}, - }) do - local def = { + local swdesc = { -- needed for xgettext + l = attrans("Wallmounted Signal (left)"), + r = attrans("Wallmounted Signal (right)"), + t = attrans("Wallmounted Signal (top)"), + } + for loc, sbox in pairs({l={-1/2, -1/2, -1/4, 0, 1/2, 1/4}, r={0, -1/2, -1/4, 1/2, 1/2, 1/4}, t={-1/2, 0, -1/4, 1/2, 1/2, 1/4}}) do + minetest.register_node("advtrains:signal_wall_"..loc.."_"..r, { drawtype = "mesh", paramtype="light", - paramtype2="4dir", + paramtype2="facedir", walkable = false, selection_box = { type = "fixed", @@ -199,7 +194,7 @@ for r,f in pairs({on={as="off", ls="green", als="red"}, off={as="on", ls="red", mesh = "advtrains_signal_wall_"..loc..".b3d", tiles = {"advtrains_signal_wall_"..r..".png"}, drop="advtrains:signal_wall_"..loc.."_off", - description=attrans("Wallmounted Signal ("..loc..")"), + description=swdesc[loc], groups = { cracky=3, not_blocking_trains=1, @@ -218,7 +213,7 @@ for r,f in pairs({on={as="off", ls="green", als="red"}, off={as="on", ls="red", on_rightclick=function(pos, node, player) local pname = player:get_player_name() local sigd = advtrains.interlocking and advtrains.interlocking.db.get_sigd_for_signal(pos) - if sigd then + if sigd and not player:get_player_control().aux1 then advtrains.interlocking.show_signalling_form(sigd, pname) elseif advtrains.interlocking and player:get_player_control().aux1 then advtrains.interlocking.show_ip_form(pos, pname) @@ -231,6 +226,7 @@ for r,f in pairs({on={as="off", ls="green", als="red"}, off={as="on", ls="red", main_aspects = main_aspects, apply_aspect = simple_apply_aspect("advtrains:signal_wall_"..loc.."_off", "advtrains:signal_wall_"..loc.."_on"), get_aspect_info = function() return aspect(r=="on") end, + route_role = "main", node_state = f.ls, node_state_map = { red = "advtrains:signal_wall_"..loc.."_off", green = "advtrains:signal_wall_"..loc.."_on" }, node_on_switch_state = function(pos, new_node, old_state, new_state) @@ -244,11 +240,7 @@ for r,f in pairs({on={as="off", ls="green", als="red"}, off={as="on", ls="red", }, can_dig = can_dig_func, after_dig_node = after_dig_func, - } - if loc == "b" or loc == "p" then - def.mesh = "advtrains_signal_wall_"..loc..".obj" - end - minetest.register_node("advtrains:signal_wall_"..loc.."_"..r, def) + }) end end @@ -330,15 +322,6 @@ minetest.register_node("advtrains:across_on", { end, }) -minetest.register_craft({ - output = "advtrains:across_off", - recipe = { - {"default:steel_ingot", "", "default:steel_ingot"}, - {"", "mesecons_lightstone:lightstone_red_off", ""}, - {"default:steel_ingot", "", "default:steel_ingot"}, - }, -}) - minetest.register_abm( { label = "Sound for Level Crossing", @@ -346,18 +329,11 @@ minetest.register_abm( interval = 3, chance = 1, action = function(pos, node, active_object_count, active_object_count_wider) - local meta = minetest.get_meta(pos) - local state = meta:get_int("crossing_state") - if state <= 0 then - minetest.sound_play("advtrains_crossing_bell", { - pos = pos, - gain = 1.0, -- default - max_hear_distance = 16, -- default, uses an euclidean metric - }) - meta:set_int("crossing_state", 2) - else - meta:set_int("crossing_state", state - 1) - end + minetest.sound_play("advtrains_crossing_bell", { + pos = pos, + gain = 1.0, -- default + max_hear_distance = 16, -- default, uses an euclidean metric + }) end, } ) |