diff options
author | Gabriel Pérez-Cerezo <gabriel@gpcf.eu> | 2020-10-10 23:28:42 +0200 |
---|---|---|
committer | Gabriel Pérez-Cerezo <gabriel@gpcf.eu> | 2020-10-10 23:28:42 +0200 |
commit | 5aad0930d1ddd63d9021d833a9379b4a01bd8414 (patch) | |
tree | 8fac88986a2cd4f00ed6b1855dd1dafa08c09662 /advtrains_interlocking/demosignals.lua | |
download | forks-modpack-5aad0930d1ddd63d9021d833a9379b4a01bd8414.tar.gz forks-modpack-5aad0930d1ddd63d9021d833a9379b4a01bd8414.tar.bz2 forks-modpack-5aad0930d1ddd63d9021d833a9379b4a01bd8414.zip |
Squashed 'advtrains/' content from commit 3256c27
git-subtree-dir: advtrains
git-subtree-split: 3256c2778d626548541bcdfabf3026f781a2287c
Diffstat (limited to 'advtrains_interlocking/demosignals.lua')
-rw-r--r-- | advtrains_interlocking/demosignals.lua | 111 |
1 files changed, 111 insertions, 0 deletions
diff --git a/advtrains_interlocking/demosignals.lua b/advtrains_interlocking/demosignals.lua new file mode 100644 index 0000000..ab7a8b6 --- /dev/null +++ b/advtrains_interlocking/demosignals.lua @@ -0,0 +1,111 @@ +-- Demonstration signals +-- Those can display the 3 main aspects of Ks signals + +-- Note that the group value of advtrains_signal is 2, which means "step 2 of signal capabilities" +-- advtrains_signal=1 is meant for signals that do not implement set_aspect. + + +local setaspect = function(pos, node, asp) + if not asp.main.free then + advtrains.ndb.swap_node(pos, {name="advtrains_interlocking:ds_danger"}) + else + if asp.dst.free and asp.main.speed == -1 then + advtrains.ndb.swap_node(pos, {name="advtrains_interlocking:ds_free"}) + else + advtrains.ndb.swap_node(pos, {name="advtrains_interlocking:ds_slow"}) + end + end + local meta = minetest.get_meta(pos) + if meta then + meta:set_string("infotext", minetest.serialize(asp)) + end +end + +local suppasp = { + main = { + free = nil, + speed = {6, -1}, + }, + dst = { + free = nil, + speed = nil, + }, + shunt = { + free = false, + proceed_as_main = true, + }, + info = { + call_on = false, + dead_end = false, + w_speed = nil, + } +} + +minetest.register_node("advtrains_interlocking:ds_danger", { + description = "Demo signal at Danger", + tiles = {"at_il_signal_asp_danger.png"}, + groups = { + cracky = 3, + advtrains_signal = 2, + save_in_at_nodedb = 1, + }, + sounds = default.node_sound_stone_defaults(), + advtrains = { + set_aspect = setaspect, + supported_aspects = suppasp, + get_aspect = function(pos, node) + return advtrains.interlocking.DANGER + end, + }, + on_rightclick = advtrains.interlocking.signal_rc_handler, + can_dig = advtrains.interlocking.signal_can_dig, +}) +minetest.register_node("advtrains_interlocking:ds_free", { + description = "Demo signal at Free", + tiles = {"at_il_signal_asp_free.png"}, + groups = { + cracky = 3, + advtrains_signal = 2, + save_in_at_nodedb = 1, + }, + sounds = default.node_sound_stone_defaults(), + advtrains = { + set_aspect = setaspect, + supported_aspects = suppasp, + get_aspect = function(pos, node) + return { + main = { + free = true, + speed = -1, + } + } + end, + }, + on_rightclick = advtrains.interlocking.signal_rc_handler, + can_dig = advtrains.interlocking.signal_can_dig, +}) +minetest.register_node("advtrains_interlocking:ds_slow", { + description = "Demo signal at Slow", + tiles = {"at_il_signal_asp_slow.png"}, + groups = { + cracky = 3, + advtrains_signal = 2, + save_in_at_nodedb = 1, + }, + sounds = default.node_sound_stone_defaults(), + advtrains = { + set_aspect = setaspect, + supported_aspects = suppasp, + get_aspect = function(pos, node) + return { + main = { + free = true, + speed = 6, + } + } + end, + }, + on_rightclick = advtrains.interlocking.signal_rc_handler, + can_dig = advtrains.interlocking.signal_can_dig, +}) + |