aboutsummaryrefslogtreecommitdiff
path: root/advtrains_signals_japan/init.lua
diff options
context:
space:
mode:
Diffstat (limited to 'advtrains_signals_japan/init.lua')
-rw-r--r--advtrains_signals_japan/init.lua49
1 files changed, 40 insertions, 9 deletions
diff --git a/advtrains_signals_japan/init.lua b/advtrains_signals_japan/init.lua
index a546847..7b11d85 100644
--- a/advtrains_signals_japan/init.lua
+++ b/advtrains_signals_japan/init.lua
@@ -278,14 +278,26 @@ minetest.register_node("advtrains_signals_japan:pole_0", {
local sigdefs = {}
local lightcolors = {
red = "red",
- green = "green",
+ green = "lime",
yellow = "orange",
distant = "purple",
}
-local function process_signal(sigdata, isrpt)
+local aspnames = {
+ danger = "Danger (halt)",
+ restrictedspeed = "Restricted speed",
+ caution = "Caution",
+ reducedspeed = "Reduced speed",
+ clear = "Clear (proceed)",
+}
+local function process_signal(name, sigdata, isrpt)
+ local typename = "advtrains_signals_japan:" .. name
+ local type2def = {}
+ type2def.name = typename
+ type2def.main = {}
local def = {}
local tx = {}
local invimg = {}
+ def.typename = typename
def.textures = tx
def.inventory_images = invimg
def.desc = sigdata.desc
@@ -296,7 +308,7 @@ local function process_signal(sigdata, isrpt)
lightcount = lightcount+1
end
def.lightcount = lightcount
- for _, asp in pairs(sigdata.aspects) do
+ for idx, asp in ipairs(sigdata.aspects) do
local aspname = asp.name
local tt = {
string.format("[combine:1x%d", lightcount),
@@ -318,6 +330,10 @@ local function process_signal(sigdata, isrpt)
end
tx[aspname] = table.concat(tt, ":")
invimg[aspname] = table.concat(it, ":")
+ type2def.main[idx] = {name = asp.name, label = S(aspnames[asp.name]), main = asp.main or false}
+ end
+ if not isrpt then
+ advtrains.interlocking.aspects.register_type2(type2def)
end
return def
end
@@ -326,16 +342,16 @@ for sigtype, sigdata in pairs {
desc = "5A",
lights = {"yellow", "yellow", "red", "yellow", "green"},
aspects = {
- {name = "danger", lights = {3}},
+ {name = "danger", lights = {3}, main = 0},
{name = "restrictedspeed", lights = {1, 3}},
{name = "caution", lights = {4}},
{name = "reducedspeed", lights = {2, 5}},
- {name = "clear", lights = {5}},
+ {name = "clear", lights = {5}, main = -1},
}
}
} do
- sigdefs["main_"..sigtype] = process_signal(sigdata)
- sigdefs["rpt_"..sigtype] = process_signal(sigdata, true)
+ sigdefs["main_"..sigtype] = process_signal(sigtype, sigdata)
+ sigdefs["rpt_"..sigtype] = process_signal(sigtype, sigdata, true)
end
for k in pairs(sigdefs) do
@@ -371,13 +387,28 @@ for _, rtab in ipairs {
},
groups = {
cracky = 2,
- --advtrains_signal = 1,
+ advtrains_signal = 1,
not_blocking_trains = 1,
- --save_in_at_nodedb = 1,
+ save_in_at_nodedb = 1,
not_in_creative_inventory = rtab.ici and 0 or 1,
},
inventory_image = siginfo.inventory_images[asp],
drop = "advtrains_signals_japan:"..sigtype.."_danger_0",
+ advtrains = {
+ supported_aspects = {
+ type = 2,
+ group = siginfo.typename,
+ },
+ get_aspect = function()
+ return asp
+ end,
+ set_aspect = function(pos, node, asp)
+ advtrains.ndb.swap_node(pos, {name = "advtrains_signals_japan:"..sigtype.."_"..asp.."_"..rot, param2 = node.param2})
+ end,
+ },
+ on_rightclick = advtrains.interlocking.signal_rc_handler,
+ can_dig = advtrains.interlocking.signal_can_dig,
+ after_dig_node = advtrains.interlocking.signal_after_dig,
})
advtrains.trackplacer.add_worked("advtrains_signals_japan:"..sigtype, asp, "_"..rot)
end