aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSingularis <singularis@volny.cz>2024-11-23 20:44:12 +0100
committerorwell <orwell@bleipb.de>2025-05-27 20:22:01 +0200
commit89b48e9a9af5be67e0c95840db30aacb43c7990f (patch)
tree2549cf777a370000e4ab37fd0e105bb9888d6ecd
parent0f236c831f87edad1055c87093ba281f206cddb1 (diff)
downloadadvtrains-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.lua40
-rw-r--r--advtrains_interlocking/tcb_ts_ui.lua4
-rw-r--r--advtrains_signals_ks/init.lua11
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