diff options
author | Singularis <singularis@volny.cz> | 2024-11-23 20:44:12 +0100 |
---|---|---|
committer | orwell <orwell@bleipb.de> | 2025-05-27 20:22:01 +0200 |
commit | 89b48e9a9af5be67e0c95840db30aacb43c7990f (patch) | |
tree | 2549cf777a370000e4ab37fd0e105bb9888d6ecd | |
parent | 0f236c831f87edad1055c87093ba281f206cddb1 (diff) | |
download | advtrains-89b48e9a9af5be67e0c95840db30aacb43c7990f.tar.gz advtrains-89b48e9a9af5be67e0c95840db30aacb43c7990f.tar.bz2 advtrains-89b48e9a9af5be67e0c95840db30aacb43c7990f.zip |
[advtrains] přidána pomocná funkce advtrains.after_place_signal
- [advtrains_interlocking] výchozí názvy úseku a signalizace již neobsahují anglická slova
- [advtrains_signals_ks] návěsti a návěstidla jsou nově po umístění orientována podle pohledu
- [advtrains_signals_ks] oprava chyby, která způsobila, že se v paletě přemětů objevily všechny varianty rychlostní návěsti
-rw-r--r-- | advtrains/helpers.lua | 40 | ||||
-rw-r--r-- | advtrains_interlocking/tcb_ts_ui.lua | 4 | ||||
-rw-r--r-- | advtrains_signals_ks/init.lua | 11 |
3 files changed, 50 insertions, 5 deletions
diff --git a/advtrains/helpers.lua b/advtrains/helpers.lua index cf890ca..bfbcd0c 100644 --- a/advtrains/helpers.lua +++ b/advtrains/helpers.lua @@ -470,3 +470,43 @@ else end end end + +local variants = { + {"0", 0}, + {"30", 0}, + {"45", 0}, + {"60", 0}, + {"0", 1}, + {"30", 1}, + {"45", 1}, + {"60", 1}, + {"0", 2}, + {"30", 2}, + {"45", 2}, + {"60", 2}, + {"0", 3}, + {"30", 3}, + {"45", 3}, + {"60", 3}, + {"0", 0}, + {"30", 0}, + {"45", 0}, + {"60", 0}, +} + +function advtrains.after_place_signal(pos, placer, itemstack, pointed_thing) + if not minetest.is_player(placer) then return end + local name = itemstack:get_name() + if not name:match("_0$") then return end + local rn = minetest.registered_nodes + local prefix = name:sub(1, -2) + if not (rn[prefix.."30"] and rn[prefix.."45"] and rn[prefix.."60"]) then return end + local variant = math.floor(placer:get_look_horizontal() * -8 / math.pi + 16.5) + local n = variants[variant + 1] + if n == nil then return end + local node = minetest.get_node(pos) + if node.name ~= name then return end + node.name = prefix..n[1] + node.param2 = n[2] + minetest.swap_node(pos, node) +end diff --git a/advtrains_interlocking/tcb_ts_ui.lua b/advtrains_interlocking/tcb_ts_ui.lua index 255a715..1693780 100644 --- a/advtrains_interlocking/tcb_ts_ui.lua +++ b/advtrains_interlocking/tcb_ts_ui.lua @@ -201,7 +201,7 @@ minetest.register_on_punchnode(function(pos, node, player, pointed_thing) if tcbs then tcbs.signal = pos if not tcbs.signal_name then - tcbs.signal_name = "Signal at "..minetest.pos_to_string(sigd.p) + tcbs.signal_name = minetest.pos_to_string(sigd.p) end if not tcbs.routes then tcbs.routes = {} @@ -489,7 +489,7 @@ minetest.register_on_player_receive_fields(function(player, formname, fields) if fields.setname then ts.name = fields.name if ts.name == "" then - ts.name = attrans("Section @1", ts_id) + ts.name = ts_id end end diff --git a/advtrains_signals_ks/init.lua b/advtrains_signals_ks/init.lua index 80a6fdb..0f7deae 100644 --- a/advtrains_signals_ks/init.lua +++ b/advtrains_signals_ks/init.lua @@ -201,6 +201,7 @@ for _, rtab in ipairs({ on_rightclick = advtrains.interlocking.signal_rc_handler, can_dig = advtrains.interlocking.signal_can_dig, after_dig_node = advtrains.interlocking.signal_after_dig, + after_place_node = advtrains.after_place_signal, }) -- rotatable by trackworker advtrains.trackplacer.add_worked("advtrains_signals_ks:hs", typ, "_"..rot) @@ -247,6 +248,7 @@ for _, rtab in ipairs({ on_rightclick = advtrains.interlocking.signal_rc_handler, can_dig = advtrains.interlocking.signal_can_dig, after_dig_node = advtrains.interlocking.signal_after_dig, + after_place_node = advtrains.after_place_signal, }) -- rotatable by trackworker advtrains.trackplacer.add_worked("advtrains_signals_ks:ra", typ, "_"..rot) @@ -275,7 +277,7 @@ for _, rtab in ipairs({ advtrains_signal = 2, not_blocking_trains = 1, save_in_at_nodedb = 1, - not_in_creative_inventory = rtab.ici and 0 or 1, + not_in_creative_inventory = (rtab.ici and typ == dtyp) and 0 or 1, }, drop = "advtrains_signals_ks:"..prefix.."_"..typ.."_0", inventory_image = inv, @@ -285,6 +287,7 @@ for _, rtab in ipairs({ on_rightclick = advtrains.interlocking.signal_rc_handler, can_dig = advtrains.interlocking.signal_can_dig, after_dig_node = advtrains.interlocking.signal_after_dig, + after_place_node = advtrains.after_place_signal, }) -- rotatable by trackworker advtrains.trackplacer.add_worked("advtrains_signals_ks:"..prefix, typ, "_"..rot, nxt) @@ -306,7 +309,7 @@ for _, rtab in ipairs({ } } do local mesh = prts.mesh or "" - register_sign("sign", typ, prts.n, prts.name, "sign"..mesh, prts.tile2, "hfs", prts.tile2, prts.asp) + register_sign("sign", typ, prts.n, prts.name, "sign"..mesh, prts.tile2, typ, prts.tile2, prts.asp) end for typ, prts in pairs { @@ -380,7 +383,8 @@ for _, rtab in ipairs({ save_in_at_nodedb = 1, not_in_creative_inventory = (rtab.ici and prts.ici) and 0 or 1, }, - after_dig_node = function(pos) advtrains.ndb.update(pos) end + after_dig_node = function(pos) advtrains.ndb.update(pos) end, + after_place_node = advtrains.after_place_signal, } -- Zs 3 @@ -424,6 +428,7 @@ for _, rtab in ipairs({ not_in_creative_inventory = (rtab.ici) and 0 or 1, }, drop = "advtrains_signals_ks:mast_mast_0", + after_place_node = advtrains.after_place_signal, }) advtrains.trackplacer.add_worked("advtrains_signals_ks:mast","mast", "_"..rot) end |