aboutsummaryrefslogtreecommitdiff
path: root/advtrains_signals_ks/init.lua
diff options
context:
space:
mode:
Diffstat (limited to 'advtrains_signals_ks/init.lua')
-rw-r--r--[-rwxr-xr-x]advtrains_signals_ks/init.lua425
1 files changed, 295 insertions, 130 deletions
diff --git a/advtrains_signals_ks/init.lua b/advtrains_signals_ks/init.lua
index 258b868..3b4bebb 100755..100644
--- a/advtrains_signals_ks/init.lua
+++ b/advtrains_signals_ks/init.lua
@@ -1,6 +1,9 @@
-- Ks signals
-- Can display main aspects (no Zs) + Sht
+-- ask engine for translator instance, this will load the translation files
+local S = core.get_translator("advtrains_signals_ks")
+
-- 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.
@@ -11,10 +14,9 @@ local function asp_to_zs3type(asp)
return math.min(16,4*math.floor(n/4))
end
-local function setzs3(msp, lim, rot)
+local function setzs3(msp, asp, rot)
local pos = {x = msp.x, y = msp.y+1, z = msp.z}
local node = advtrains.ndb.get_node(pos)
- local asp = asp_to_zs3type(lim)
if node.name:find("^advtrains_signals_ks:zs3_") then
advtrains.ndb.swap_node(pos, {name="advtrains_signals_ks:zs3_"..asp.."_"..rot, param2 = node.param2})
end
@@ -49,88 +51,147 @@ local function getzs3v(msp)
return speed
end
-local setaspectf = function(rot)
- return function(pos, node, asp)
- setzs3(pos, asp.main, rot)
- if asp.main == 0 then
- if asp.shunt then
- advtrains.ndb.swap_node(pos, {name="advtrains_signals_ks:hs_shunt_"..rot, param2 = node.param2})
- else
- advtrains.ndb.swap_node(pos, {name="advtrains_signals_ks:hs_danger_"..rot, param2 = node.param2})
- end
+local applyaspectf_main = function(rot)
+ return function(pos, node, main_aspect, dst_aspect, dst_aspect_info)
+ if main_aspect.halt then
+ -- halt aspect, set red and don't do anything further
+ advtrains.ndb.swap_node(pos, {name="advtrains_signals_ks:hs_danger_"..rot, param2 = node.param2})
+ setzs3(pos, "off", rot)
+ setzs3v(pos, nil, rot)
+ return
+ end
+ -- set zs3 signal to show speed according to main_aspect
+ setzs3(pos, main_aspect.zs3, rot)
+ -- select appropriate lamps based on mainaspect and dst
+ if main_aspect.shunt then
+ advtrains.ndb.swap_node(pos, {name="advtrains_signals_ks:hs_shunt_"..rot, param2 = node.param2})
setzs3v(pos, nil, rot)
else
- if not asp.dst or asp.dst == -1 then
+ if not dst_aspect_info
+ or not dst_aspect_info.main
+ or dst_aspect_info.main == -1 then
advtrains.ndb.swap_node(pos, {name="advtrains_signals_ks:hs_free_"..rot, param2 = node.param2})
- elseif asp.dst == 0 then
+ setzs3v(pos, nil, rot)
+ elseif dst_aspect_info.main == 0 then
advtrains.ndb.swap_node(pos, {name="advtrains_signals_ks:hs_slow_"..rot, param2 = node.param2})
+ setzs3v(pos, nil, rot)
else
advtrains.ndb.swap_node(pos, {name="advtrains_signals_ks:hs_nextslow_"..rot, param2 = node.param2})
+ setzs3v(pos, dst_aspect_info.main, rot)
end
- setzs3v(pos, asp.dst, rot)
end
end
end
+-- Main aspects main signal
+-- These aspects tell only the speed signalization at this signal.
+-- Actual signal aspect is chosen based on this and the Dst signal.
+local mainaspects_main = {
+ {
+ name = "proceed",
+ description = S("Proceed"),
+ zs3 = "off"
+ },
+ {
+ name = "shunt",
+ description = S("Shunt"),
+ zs3 = "off",
+ shunt = true,
+ },
+ {
+ name = "proceed_16",
+ description = S("Proceed (speed 16)"),
+ zs3 = "16",
+ },
+ {
+ name = "proceed_12",
+ description = S("Proceed (speed 12)"),
+ zs3 = "12",
+ },
+ {
+ name = "proceed_8",
+ description = S("Proceed (speed 8)"),
+ zs3 = "8",
+ },
+ {
+ name = "proceed_6",
+ description = S("Proceed (speed 6)"),
+ zs3 = "6",
+ },
+ {
+ name = "proceed_4",
+ description = S("Proceed (speed 4)"),
+ zs3 = "4",
+ },
+}
-local suppasp = {
- main = {0, 4, 6, 8, 12, 16, -1},
- dst = {0, 4, 6, 8, 12, 16, -1, false},
- shunt = nil,
- proceed_as_main = true,
- info = {
- call_on = false,
- dead_end = false,
- w_speed = nil,
- }
+local applyaspectf_distant = function(rot)
+ return function(pos, node, main_aspect, dst_aspect, dst_aspect_info)
+ if main_aspect.halt then
+ -- halt aspect, set red and don't do anything further
+ advtrains.ndb.swap_node(pos, {name="advtrains_signals_ks:vs_slow_"..rot, param2 = node.param2})
+ setzs3v(pos, nil, rot)
+ return
+ end
+ -- select appropriate lamps based on mainaspect and dst
+ if not dst_aspect_info
+ or not dst_aspect_info.main
+ or dst_aspect_info.main == -1 then
+ advtrains.ndb.swap_node(pos, {name="advtrains_signals_ks:vs_free_"..rot, param2 = node.param2})
+ setzs3v(pos, nil, rot)
+ elseif dst_aspect_info.main == 0 then
+ advtrains.ndb.swap_node(pos, {name="advtrains_signals_ks:vs_slow_"..rot, param2 = node.param2})
+ setzs3v(pos, nil, rot)
+ else
+ advtrains.ndb.swap_node(pos, {name="advtrains_signals_ks:vs_nextslow_"..rot, param2 = node.param2})
+ setzs3v(pos, dst_aspect_info.main, rot)
+ end
+ end
+end
+
+-- Main aspects distant signal
+-- Only one aspect for "expect free". Whether green or yellow lamp is shown and which speed indicator is determined by remote signal
+local mainaspects_dst = {
+ {
+ name = "expectclear",
+ description = S("Expect Clear"),
+ },
}
--Rangiersignal
-local setaspectf_ra = function(rot)
- return function(pos, node, asp)
- if asp.shunt then
+local applyaspectf_ra = function(rot)
+ -- we get here the full main_aspect table
+ return function(pos, node, main_aspect, dst_aspect, dst_aspect_info)
+ if not main_aspect.halt then
+ -- any non-halt main aspect is fine, there's only one anyway
advtrains.ndb.swap_node(pos, {name="advtrains_signals_ks:ra_shuntd_"..rot, param2 = node.param2})
else
advtrains.ndb.swap_node(pos, {name="advtrains_signals_ks:ra_danger_"..rot, param2 = node.param2})
end
- local meta = minetest.get_meta(pos)
- if meta then
- meta:set_string("infotext", minetest.serialize(asp))
- end
end
end
-local suppasp_ra = {
- main = { false },
- dst = { false },
- shunt = nil,
- proceed_as_main = false,
-
- info = {
- call_on = false,
- dead_end = false,
- w_speed = nil,
- }
+-- Main aspects shunt signal
+-- Shunt signals have only two states, distant doesn't matter
+local mainaspects_ra = {
+ {
+ name = "shunt",
+ description = S("Shunt"),
+ shunt = true,
+ },
}
-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")
-
for _, rtab in ipairs({
- {rot = "0", sbox = {-1/8, -1/2, -1/2, 1/8, 1/2, -1/4}, ici=true},
- {rot = "30", sbox = {-3/8, -1/2, -1/2, -1/8, 1/2, -1/4},},
- {rot = "45", sbox = {-1/2, -1/2, -1/2, -1/4, 1/2, -1/4},},
- {rot = "60", sbox = {-1/2, -1/2, -3/8, -1/4, 1/2, -1/8},},
+ {rot = "0", sbox = {-1/8, -1/2, -1/2, 1/8, 1/2, -1/4}, ici=true, nextrot = "30"},
+ {rot = "30", sbox = {-3/8, -1/2, -1/2, -1/8, 1/2, -1/4}, nextrot = "45"},
+ {rot = "45", sbox = {-1/2, -1/2, -1/2, -1/4, 1/2, -1/4}, nextrot = "60"},
+ {rot = "60", sbox = {-1/2, -1/2, -3/8, -1/4, 1/2, -1/8}, nextrot = "0"},
}) do
local rot = rtab.rot
+
+ -- Hauptsignal
for typ, prts in pairs({
- danger = {asp = advtrains.interlocking.DANGER, n = "slow", ici=true},
+ danger = {asp = advtrains.interlocking.signal.ASPI_HALT, n = "slow", ici=true},
slow = {
asp = function(pos)
return { main = getzs3(pos) or -1, proceed_as_main = true, dst = 0 }
@@ -168,7 +229,7 @@ for _, rtab in ipairs({
}
end
minetest.register_node("advtrains_signals_ks:hs_"..typ.."_"..rot, {
- description = "Ks Main Signal",
+ description = S("Ks Main Signal"),
drawtype = "mesh",
mesh = "advtrains_signals_ks_main_smr"..rot..".obj",
tiles = {"advtrains_signals_ks_mast.png", "advtrains_signals_ks_head.png", "advtrains_signals_ks_head.png", tile},
@@ -192,16 +253,91 @@ for _, rtab in ipairs({
drop = "advtrains_signals_ks:hs_danger_0",
inventory_image = "advtrains_signals_ks_hs_inv.png",
advtrains = {
- set_aspect = setaspectf(rot),
- supported_aspects = suppasp,
- get_aspect = afunc,
+ main_aspects = mainaspects_main,
+ apply_aspect = applyaspectf_main(rot),
+ get_aspect_info = afunc,
+ route_role = "main_distant",
+ trackworker_next_rot = "advtrains_signals_ks:hs_"..typ.."_"..rtab.nextrot,
+ trackworker_rot_incr_param2 = (rot=="60")
+ },
+ on_rightclick = advtrains.interlocking.signal.on_rightclick,
+ can_dig = advtrains.interlocking.signal.can_dig,
+ after_dig_node = advtrains.interlocking.signal.after_dig,
+ })
+ -- rotatable by trackworker
+ end
+
+ -- Vorsignal (NEU!)
+ for typ, prts in pairs({
+ -- note: the names are taken from the main signal equivalent so that the same names for the lamp images can be used
+ slow = {asp = function(pos) return { dst = 0, shunt = true } end, n = "nextslow", ici=true},
+ nextslow = {
+ asp = function(pos)
+ return { dst = getzs3v(pos) or 6, shunt = true }
+ end,
+ n = "free"
+ },
+ free = {
+ asp = function(pos)
+ return { dst = -1, shunt = true }
+ end,
+ n = "slow"
+ },
+ }) do
+ local tile = "advtrains_signals_ks_ltm_"..typ..".png"
+ local afunc = prts.asp
+ if type(afunc) == "table" then
+ afunc = function() return prts.asp end
+ end
+ if typ == "nextslow" then
+ tile = {
+ name = tile,
+ animation = {
+ type = "vertical_frames",
+ aspect_w = 32,
+ aspect_h = 32,
+ length = 1,
+ }
+ }
+ end
+ minetest.register_node("advtrains_signals_ks:vs_"..typ.."_"..rot, {
+ description = S("Ks Distant Signal"),
+ drawtype = "mesh",
+ mesh = "advtrains_signals_ks_distant_smr"..rot..".obj",
+ tiles = {"advtrains_signals_ks_mast.png", "advtrains_signals_ks_head.png", "advtrains_signals_ks_head.png", tile},
+
+ paramtype="light",
+ sunlight_propagates=true,
+ light_source = 4,
+
+ paramtype2 = "facedir",
+ selection_box = {
+ type = "fixed",
+ fixed = {rtab.sbox, {-1/4, -1/2, -1/4, 1/4, -7/16, 1/4}}
+ },
+ groups = {
+ cracky = 2,
+ 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,
+ },
+ drop = "advtrains_signals_ks:vs_slow_0",
+ inventory_image = "advtrains_signals_ks_vs_inv.png",
+ advtrains = {
+ main_aspects = mainaspects_dst,
+ apply_aspect = applyaspectf_distant(rot),
+ get_aspect_info = afunc,
+ route_role = "distant",
+ pure_distant = true,
+ trackworker_next_rot = "advtrains_signals_ks:vs_"..typ.."_"..rtab.nextrot,
+ trackworker_rot_incr_param2 = (rot=="60")
},
- on_rightclick = advtrains.interlocking.signal_rc_handler,
- can_dig = advtrains.interlocking.signal_can_dig,
- after_dig_node = advtrains.interlocking.signal_after_dig,
+ on_rightclick = advtrains.interlocking.signal.on_rightclick,
+ 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:hs", typ, "_"..rot)
end
@@ -212,8 +348,12 @@ for _, rtab in ipairs({
}) do
local sbox = table.copy(rtab.sbox)
sbox[5] = 0
+ local afunc = prts.asp
+ if type(afunc) == "table" then
+ afunc = function() return prts.asp end
+ end
minetest.register_node("advtrains_signals_ks:ra_"..typ.."_"..rot, {
- description = "Ks Shunting Signal",
+ description = S("Ks Shunting Signal"),
drawtype = "mesh",
mesh = "advtrains_signals_ks_sht_smr"..rot..".obj",
tiles = {"advtrains_signals_ks_mast.png", "advtrains_signals_ks_head.png", "advtrains_signals_ks_head.png", "advtrains_signals_ks_ltm_"..typ..".png"},
@@ -225,7 +365,7 @@ for _, rtab in ipairs({
paramtype2 = "facedir",
selection_box = {
type = "fixed",
- fixed = {sbox, rotation_sbox}
+ fixed = {sbox, {-1/4, -1/2, -1/4, 1/4, -7/16, 1/4}}
},
collision_box = {
type = "fixed",
@@ -241,18 +381,18 @@ for _, rtab in ipairs({
drop = "advtrains_signals_ks:ra_danger_0",
inventory_image = "advtrains_signals_ks_ra_inv.png",
advtrains = {
- set_aspect = setaspectf_ra(rot),
- supported_aspects = suppasp_ra,
- get_aspect = function(pos, node)
- return prts.asp
- end,
+ main_aspects = mainaspects_ra,
+ apply_aspect = applyaspectf_ra(rot),
+ get_aspect_info = afunc,
+ route_role = "shunt",
+ trackworker_next_rot = "advtrains_signals_ks:ra_"..typ.."_"..rtab.nextrot,
+ trackworker_rot_incr_param2 = (rot=="60")
},
- on_rightclick = advtrains.interlocking.signal_rc_handler,
- can_dig = advtrains.interlocking.signal_can_dig,
- after_dig_node = advtrains.interlocking.signal_after_dig,
+ on_rightclick = advtrains.interlocking.signal.on_rightclick,
+ 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:ra", typ, "_"..rot)
end
-- Schilder:
@@ -282,24 +422,33 @@ for _, rtab in ipairs({
drop = "advtrains_signals_ks:"..prefix.."_"..dtyp.."_0",
inventory_image = inv,
advtrains = {
- get_aspect = function() return asp end
+ get_aspect_info = asp,
+ trackworker_next_rot = "advtrains_signals_ks:"..prefix.."_"..typ.."_"..rtab.nextrot,
+ trackworker_rot_incr_param2 = (rot=="60"),
+ trackworker_next_var = "advtrains_signals_ks:"..prefix.."_"..nxt.."_"..rot,
},
- on_rightclick = advtrains.interlocking.signal_rc_handler,
- can_dig = advtrains.interlocking.signal_can_dig,
- after_dig_node = advtrains.interlocking.signal_after_dig,
+ on_rightclick = advtrains.interlocking.signal.on_rightclick,
+ 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:"..prefix, typ, "_"..rot, nxt)
+ --TODO add rotation using trackworker
end
for typ, prts in pairs {
- ["hfs"] = {asp = {main = false, shunt = false}, n = "pam", mesh = "_hfs"},
- ["pam"] = {asp = {main = -1, shunt = false, proceed_as_main = true}, n = "hfs"}
+ ["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 typ == "hfs" then
- tile2 = "advtrains_signals_ks_sign_hfs.png"
+ 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
@@ -319,7 +468,7 @@ for _, rtab in ipairs({
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)
+ register_sign("sign", typ, prts.n, S("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 {
@@ -330,9 +479,9 @@ for _, rtab in ipairs({
["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 tile2 = "advtrains_signals_ks_sign_lf7.png^(advtrains_signals_ks_sign_"..typ..".png^[makealpha:255,255,255)^[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"})
+ register_sign("sign_lf", typ, prts.n, S("Temporary local speed restriction sign"), "sign", tile2, "8", inv, {main = prts.main, shunt = true, type = "temp"})
end
for typ, prts in pairs {
@@ -340,12 +489,12 @@ for _, rtab in ipairs({
["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"},
+ ["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)"
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"})
+ register_sign("sign_lf7", typ, prts.n, S("Line speed restriction sign"), "sign", tile2, "8", inv, {main = prts.main, shunt = true, type = "line"})
end
-- Geschwindigkeits(vor)anzeiger für Ks-Signale
@@ -379,25 +528,33 @@ for _, rtab in ipairs({
-- Zs 3
local t = table.copy(def)
- t.description = "Ks speed limit indicator"
+ t.description = S("Ks speed limit indicator")
t.mesh = "advtrains_signals_ks_zs_top_smr"..rot..".obj"
t.drop = "advtrains_signals_ks:zs3_off_0"
t.selection_box.fixed[1][5] = 0
+ t.advtrains = {
+ trackworker_next_rot = "advtrains_signals_ks:zs3_"..typ.."_"..rtab.nextrot,
+ trackworker_rot_incr_param2 = (rot=="60")
+ }
minetest.register_node("advtrains_signals_ks:zs3_"..typ.."_"..rot, t)
- advtrains.trackplacer.add_worked("advtrains_signals_ks:zs3", typ, "_"..rot)
+ --TODO add rotation using trackworker
-- Zs 3v
local t = table.copy(def)
- t.description = "Ks distant speed limit indicator"
+ t.description = S("Ks distant speed limit indicator")
t.mesh = "advtrains_signals_ks_zs_bottom_smr"..rot..".obj"
t.drop = "advtrains_signals_ks:zs3v_off_0"
t.tiles[3] = t.tiles[3] .. "^[multiply:yellow"
+ t.advtrains = {
+ trackworker_next_rot = "advtrains_signals_ks:zs3v_"..typ.."_"..rtab.nextrot,
+ trackworker_rot_incr_param2 = (rot=="60")
+ }
minetest.register_node("advtrains_signals_ks:zs3v_"..typ.."_"..rot, t)
- advtrains.trackplacer.add_worked("advtrains_signals_ks:zs3v", typ, "_"..rot)
+ --TODO add rotation using trackworker
end
minetest.register_node("advtrains_signals_ks:mast_mast_"..rot, {
- description = "Ks Mast",
+ description = S("Ks Mast"),
drawtype = "mesh",
mesh = "advtrains_signals_ks_mast_smr"..rot..".obj",
tiles = {"advtrains_signals_ks_mast.png"},
@@ -416,23 +573,19 @@ for _, rtab in ipairs({
not_blocking_trains = 1,
not_in_creative_inventory = (rtab.ici) and 0 or 1,
},
+ advtrains = {
+ trackworker_next_rot = "advtrains_signals_ks:mast_mast_"..rtab.nextrot,
+ trackworker_rot_incr_param2 = (rot=="60")
+ },
drop = "advtrains_signals_ks:mast_mast_0",
})
- advtrains.trackplacer.add_worked("advtrains_signals_ks:mast","mast", "_"..rot)
+ --TODO add rotation using trackworker
end
-- Crafting
-minetest.register_craft({
- output = "advtrains_signals_ks:hs_danger_0 2",
- recipe = {
- {'default:steel_ingot', 'dye:red', 'default:steel_ingot'},
- {'dye:yellow', 'default:steel_ingot', 'dye:dark_green'},
- {'default:steel_ingot', 'advtrains_signals_ks:mast_mast_0', 'default:steel_ingot'},
- },
-})
-
-minetest.register_craft({
+-- Ks Signals
+minetest.register_craft({ -- Ks Mast
output = "advtrains_signals_ks:mast_mast_0 10",
recipe = {
{'default:steel_ingot'},
@@ -440,17 +593,23 @@ minetest.register_craft({
{'default:steel_ingot'},
},
})
-
-minetest.register_craft({
- output = "advtrains_signals_ks:ra_danger_0 2",
+minetest.register_craft({ -- Ks Main Signal
+ output = "advtrains_signals_ks:hs_danger_0 2",
recipe = {
- {'dye:red', 'dye:white', 'dye:red'},
- {'dye:white', 'default:steel_ingot', 'default:steel_ingot'},
+ {'default:steel_ingot', 'dye:red', 'default:steel_ingot'},
+ {'dye:yellow', 'default:steel_ingot', 'dye:dark_green'},
{'default:steel_ingot', 'advtrains_signals_ks:mast_mast_0', 'default:steel_ingot'},
},
})
-
-minetest.register_craft({
+minetest.register_craft({ -- Ks Distant Signal
+ output = "advtrains_signals_ks:vs_slow_0 2",
+ recipe = {
+ {'default:steel_ingot', 'default:steel_ingot', 'default:steel_ingot'},
+ {'dye:dark_green', 'default:steel_ingot', 'dye:yellow'},
+ {'default:steel_ingot', 'advtrains_signals_ks:mast_mast_0', 'default:steel_ingot'},
+ }
+})
+minetest.register_craft({ -- Ks Speed Limit Indicator
output = "advtrains_signals_ks:zs3_off_0 2",
recipe = {
{"","default:steel_ingot",""},
@@ -458,7 +617,7 @@ minetest.register_craft({
{"","advtrains_signals_ks:mast_mast_0",""}
},
})
-minetest.register_craft({
+minetest.register_craft({ -- Ks Distant Speed Limit Indicator
output = "advtrains_signals_ks:zs3v_off_0 2",
recipe = {
{"","default:steel_ingot",""},
@@ -466,14 +625,22 @@ minetest.register_craft({
{"","advtrains_signals_ks:mast_mast_0",""}
},
})
+minetest.register_craft({ -- Ks Shunting Signal
+ output = "advtrains_signals_ks:ra_danger_0 2",
+ recipe = {
+ {'dye:red', 'dye:white', 'dye:red'},
+ {'dye:white', 'default:steel_ingot', 'default:steel_ingot'},
+ {'default:steel_ingot', 'advtrains_signals_ks:mast_mast_0', 'default:steel_ingot'},
+ },
+})
+-- Speed Restriction signs
+-- Crafting entry recipe for signs
local sign_material = "default:sign_wall_steel" --fallback
if minetest.get_modpath("basic_materials") then
sign_material = "basic_materials:plastic_sheet"
end
---print("Sign Material: "..sign_material)
-
-minetest.register_craft({
+minetest.register_craft({ -- Permanent Local Speed Restriction Sign
output = "advtrains_signals_ks:sign_8_0 2",
recipe = {
{sign_material, 'dye:black'},
@@ -483,22 +650,20 @@ 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",
+-- Circular crafting between sign types
+minetest.register_craft{ -- Signal Sign
+ output = "advtrains_signals_ks:sign_hfs_0",
recipe = {{"advtrains_signals_ks:sign_8_0"}}
}
-
-minetest.register_craft{
- output = "advtrains_signals_ks:sign_lf_8_0 1",
+minetest.register_craft{ -- Temporary Local Speed Restriction Sign
+ output = "advtrains_signals_ks:sign_lf_8_0",
recipe = {{"advtrains_signals_ks:sign_hfs_0"}}
}
-
-minetest.register_craft{
- output = "advtrains_signals_ks:sign_lf7_8_0 1",
+minetest.register_craft{ -- Line Speed Restriction Sign
+ output = "advtrains_signals_ks:sign_lf7_8_0",
recipe = {{"advtrains_signals_ks:sign_lf_8_0"}}
}
+minetest.register_craft{ -- Permanent Local Speed Restriction Sign
+ output = "advtrains_signals_ks:sign_8_0",
+ recipe = {{"advtrains_signals_ks:sign_lf7_8_0"}}
+}