integrating the new rails (currently no verticals and switches)
parent
dad048a68b
commit
d7bd68cfb3
108
tracks.lua
108
tracks.lua
|
@ -121,12 +121,120 @@ function advtrains.register_tracks(tracktype, def)
|
|||
table.insert(advtrains.all_tracktypes, tracktype)
|
||||
end
|
||||
|
||||
function advtrains.register_tracks_finer(tracktype, def)
|
||||
local function make_switchfunc(suffix_target)
|
||||
return function(pos, node)
|
||||
if advtrains.is_train_at_pos(pos) then return end
|
||||
advtrains.invalidate_all_paths()
|
||||
minetest.set_node(pos, {name=def.nodename_prefix.."_"..suffix_target, param2=node.param2})
|
||||
advtrains.reset_trackdb_position(pos)
|
||||
end
|
||||
end
|
||||
local function make_overdef(img_suffix, conn1, conn2, switchfunc)
|
||||
return {
|
||||
tiles = {def.texture_prefix.."_"..img_suffix..".png"},
|
||||
inventory_image = def.texture_prefix.."_"..img_suffix..".png",
|
||||
wield_image = def.texture_prefix.."_"..img_suffix..".png",
|
||||
connect1=conn1,
|
||||
connect2=conn2,
|
||||
on_rightclick=switchfunc,
|
||||
}
|
||||
end
|
||||
local common_def=advtrains.merge_tables({
|
||||
description = def.description,
|
||||
drawtype = "mesh",
|
||||
mesh = "trackplane.b3d",
|
||||
paramtype="light",
|
||||
paramtype2="facedir",
|
||||
walkable = false,
|
||||
selection_box = {
|
||||
type = "fixed",
|
||||
fixed = {-1/2, -1/2, -1/2, 1/2, -1/2+1/16, 1/2},
|
||||
},
|
||||
groups = {
|
||||
attached_node=1,
|
||||
["advtrains_track_"..tracktype]=1,
|
||||
dig_immediate=2,
|
||||
not_in_creative_inventory=1,
|
||||
},
|
||||
rely1=0,
|
||||
rely2=0,
|
||||
railheight=0,
|
||||
drop="advtrains:placetrack_"..tracktype,
|
||||
--on_rightclick=function(pos, node, clicker)
|
||||
-- minetest.set_node(pos, {name=node.name, param2=(node.param2+1)%4})
|
||||
--end
|
||||
can_dig=function(pos)
|
||||
return not advtrains.is_train_at_pos(pos)
|
||||
end,
|
||||
after_dig_node=function(pos)
|
||||
advtrains.invalidate_all_paths()
|
||||
advtrains.reset_trackdb_position(pos)
|
||||
end,
|
||||
after_place_node=function(pos)
|
||||
advtrains.reset_trackdb_position(pos)
|
||||
end,
|
||||
}, def.common or {})
|
||||
minetest.register_node(def.nodename_prefix.."_st", advtrains.merge_tables(common_def, make_overdef("st", 0, 8), def.straight or {}))
|
||||
minetest.register_node(def.nodename_prefix.."_st_22", advtrains.merge_tables(common_def, make_overdef("st_22", 1, 9), def.straight22 or {}))
|
||||
minetest.register_node(def.nodename_prefix.."_st_45", advtrains.merge_tables(common_def, make_overdef("st_45", 2, 10), def.straight45 or {}))
|
||||
minetest.register_node(def.nodename_prefix.."_st_67", advtrains.merge_tables(common_def, make_overdef("st_67", 3, 11), def.straight67 or {}))
|
||||
|
||||
minetest.register_node(def.nodename_prefix.."_cr", advtrains.merge_tables(common_def, make_overdef("cr", 0, 7), def.curve or {}))
|
||||
minetest.register_node(def.nodename_prefix.."_cr_22", advtrains.merge_tables(common_def, make_overdef("cr_22", 1, 8), def.curve45 or {}))
|
||||
minetest.register_node(def.nodename_prefix.."_cr_45", advtrains.merge_tables(common_def, make_overdef("cr_45", 2, 9), def.curve45 or {}))
|
||||
minetest.register_node(def.nodename_prefix.."_cr_67", advtrains.merge_tables(common_def, make_overdef("cr_67", 3, 10), def.curve45 or {}))
|
||||
|
||||
--[[advtrains.trackplacer_register(def.nodename_prefix.."_st", 0, 8)
|
||||
advtrains.trackplacer_register(def.nodename_prefix.."_st_45", 2, 10)
|
||||
advtrains.trackplacer_register(def.nodename_prefix.."_cr", 0, 6)
|
||||
advtrains.trackplacer_register(def.nodename_prefix.."_cr_45", 2, 8)
|
||||
--]]
|
||||
--[[
|
||||
minetest.register_node(def.nodename_prefix.."_swl_st", advtrains.merge_tables(common_def, make_overdef("swl_st", 0, 8, make_switchfunc("swl_cr")), def.lswitchst or {}))
|
||||
minetest.register_node(def.nodename_prefix.."_swl_st_45", advtrains.merge_tables(common_def, make_overdef("swl_st_45", 2, 10, make_switchfunc("swl_cr_45")), def.lswitchst45 or {}))
|
||||
minetest.register_node(def.nodename_prefix.."_swl_cr", advtrains.merge_tables(common_def, make_overdef("swl_cr", 0, 6, make_switchfunc("swl_st")), def.lswitchcr or {}))
|
||||
minetest.register_node(def.nodename_prefix.."_swl_cr_45", advtrains.merge_tables(common_def, make_overdef("swl_cr_45", 2, 8, make_switchfunc("swl_st_45")), def.lswitchcr45 or {}))
|
||||
|
||||
minetest.register_node(def.nodename_prefix.."_swr_st", advtrains.merge_tables(common_def, make_overdef("swr_st", 0, 8, make_switchfunc("swr_cr")), def.rswitchst or {}))
|
||||
minetest.register_node(def.nodename_prefix.."_swr_st_45", advtrains.merge_tables(common_def, make_overdef("swr_st_45", 2, 10, make_switchfunc("swr_cr_45")), def.rswitchst45 or {}))
|
||||
minetest.register_node(def.nodename_prefix.."_swr_cr", advtrains.merge_tables(common_def, make_overdef("swr_cr", 0, 10, make_switchfunc("swr_st")), def.rswitchcr or {}))
|
||||
minetest.register_node(def.nodename_prefix.."_swr_cr_45", advtrains.merge_tables(common_def, make_overdef("swr_cr_45", 2, 12, make_switchfunc("swr_st_45")), def.rswitchcr45 or {}))
|
||||
|
||||
minetest.register_node(def.nodename_prefix.."_vert1", advtrains.merge_tables(common_def, make_overdef("vert1", 0, 8), {
|
||||
mesh = "trackvertical1.b3d",
|
||||
rely1=0,
|
||||
rely2=0.5,
|
||||
railheight=0.25,
|
||||
description = def.description.." (vertical track lower node)",
|
||||
}, def.vert1 or {}))
|
||||
minetest.register_node(def.nodename_prefix.."_vert2", advtrains.merge_tables(common_def, make_overdef("vert2", 0, 8), {
|
||||
mesh = "trackvertical2.b3d",
|
||||
rely1=0.5,
|
||||
rely2=1,
|
||||
railheight=0.75,
|
||||
description = def.description.." (vertical track upper node)",
|
||||
},def.vert2 or {}))
|
||||
]]
|
||||
|
||||
--we don't have texures yet
|
||||
|
||||
advtrains.register_track_placer(def.nodename_prefix, def.texture_prefix, def.description)
|
||||
table.insert(advtrains.all_tracktypes, tracktype)
|
||||
end
|
||||
|
||||
advtrains.register_tracks("regular", {
|
||||
nodename_prefix="advtrains:track",
|
||||
texture_prefix="advtrains_track",
|
||||
description="Regular Train Track",
|
||||
})
|
||||
|
||||
advtrains.register_tracks("fineturns", {
|
||||
nodename_prefix="advtrains:dtrack",
|
||||
texture_prefix="advtrains_dtrack",
|
||||
description="Fine Turn Train Track",
|
||||
})
|
||||
|
||||
function advtrains.is_track_and_drives_on(nodename, drives_on)
|
||||
if not minetest.registered_nodes[nodename] then
|
||||
return false
|
||||
|
|
|
@ -347,7 +347,7 @@ function advtrains.register_wagon(sysname, traintype, prototype)
|
|||
end,
|
||||
})
|
||||
end
|
||||
advtrains.register_train_type("steam", {"regular"})
|
||||
advtrains.register_train_type("steam", {"regular", "fineturns"})
|
||||
|
||||
--[[advtrains.register_wagon("blackwagon", "steam",{textures = {"black.png"}})
|
||||
advtrains.register_wagon("bluewagon", "steam",{textures = {"blue.png"}})
|
||||
|
|
Loading…
Reference in New Issue