Move train_load() function into advtrains_train_track
This commit is contained in:
parent
ae3452a39c
commit
cd0aaa53a0
|
@ -151,7 +151,6 @@ dofile(advtrains.modpath.."/signals.lua")
|
||||||
dofile(advtrains.modpath.."/misc_nodes.lua")
|
dofile(advtrains.modpath.."/misc_nodes.lua")
|
||||||
dofile(advtrains.modpath.."/crafting.lua")
|
dofile(advtrains.modpath.."/crafting.lua")
|
||||||
dofile(advtrains.modpath.."/craft_items.lua")
|
dofile(advtrains.modpath.."/craft_items.lua")
|
||||||
dofile(advtrains.modpath.."/loading.lua")
|
|
||||||
|
|
||||||
if minetest.global_exists("digtron") then
|
if minetest.global_exists("digtron") then
|
||||||
dofile(advtrains.modpath.."/digtron.lua")
|
dofile(advtrains.modpath.."/digtron.lua")
|
||||||
|
|
|
@ -1,46 +0,0 @@
|
||||||
-- Tracks for loading and unloading trains
|
|
||||||
-- Copyright (C) 2017 Gabriel Pérez-Cerezo <gabriel@gpcf.eu>
|
|
||||||
|
|
||||||
local function get_far_node(pos)
|
|
||||||
local node = minetest.get_node(pos)
|
|
||||||
if node.name == "ignore" then
|
|
||||||
minetest.get_voxel_manip():read_from_map(pos, pos)
|
|
||||||
node = minetest.get_node(pos)
|
|
||||||
end
|
|
||||||
return node
|
|
||||||
end
|
|
||||||
|
|
||||||
local function train_load(pos, train_id, unload)
|
|
||||||
local train=advtrains.trains[train_id]
|
|
||||||
local below = get_far_node({x=pos.x, y=pos.y-1, z=pos.z})
|
|
||||||
if not string.match(below.name, "chest") then
|
|
||||||
atprint("this is not a chest! at "..minetest.pos_to_string(pos))
|
|
||||||
return
|
|
||||||
end
|
|
||||||
local inv = minetest.get_inventory({type="node", pos={x=pos.x, y=pos.y-1, z=pos.z}})
|
|
||||||
if inv and train.velocity < 2 then
|
|
||||||
for k, v in ipairs(train.trainparts) do
|
|
||||||
|
|
||||||
local i=minetest.get_inventory({type="detached", name="advtrains_wgn_"..v})
|
|
||||||
if i then
|
|
||||||
if not unload then
|
|
||||||
for _, item in ipairs(inv:get_list("main")) do
|
|
||||||
if i:get_list("box") and i:room_for_item("box", item) then
|
|
||||||
i:add_item("box", item)
|
|
||||||
inv:remove_item("main", item)
|
|
||||||
end
|
|
||||||
end
|
|
||||||
else
|
|
||||||
for _, item in ipairs(i:get_list("box")) do
|
|
||||||
if inv:get_list("main") and inv:room_for_item("main", item) then
|
|
||||||
i:remove_item("box", item)
|
|
||||||
inv:add_item("main", item)
|
|
||||||
end
|
|
||||||
end
|
|
||||||
end
|
|
||||||
end
|
|
||||||
end
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
|
|
|
@ -1,3 +1,5 @@
|
||||||
|
-- Default tracks for advtrains
|
||||||
|
-- (c) orwell96 and contributors
|
||||||
|
|
||||||
--flat
|
--flat
|
||||||
advtrains.register_tracks("default", {
|
advtrains.register_tracks("default", {
|
||||||
|
@ -47,7 +49,56 @@ advtrains.register_tracks("default", {
|
||||||
formats={},
|
formats={},
|
||||||
get_additional_definiton = advtrains.atc_function
|
get_additional_definiton = advtrains.atc_function
|
||||||
}, advtrains.trackpresets.t_30deg_straightonly)
|
}, advtrains.trackpresets.t_30deg_straightonly)
|
||||||
-- loading and unloading tracks
|
|
||||||
|
|
||||||
|
-- Tracks for loading and unloading trains
|
||||||
|
-- Copyright (C) 2017 Gabriel Pérez-Cerezo <gabriel@gpcf.eu>
|
||||||
|
|
||||||
|
local function get_far_node(pos)
|
||||||
|
local node = minetest.get_node(pos)
|
||||||
|
if node.name == "ignore" then
|
||||||
|
minetest.get_voxel_manip():read_from_map(pos, pos)
|
||||||
|
node = minetest.get_node(pos)
|
||||||
|
end
|
||||||
|
return node
|
||||||
|
end
|
||||||
|
|
||||||
|
local function train_load(pos, train_id, unload)
|
||||||
|
local train=advtrains.trains[train_id]
|
||||||
|
local below = get_far_node({x=pos.x, y=pos.y-1, z=pos.z})
|
||||||
|
if not string.match(below.name, "chest") then
|
||||||
|
atprint("this is not a chest! at "..minetest.pos_to_string(pos))
|
||||||
|
return
|
||||||
|
end
|
||||||
|
local inv = minetest.get_inventory({type="node", pos={x=pos.x, y=pos.y-1, z=pos.z}})
|
||||||
|
if inv and train.velocity < 2 then
|
||||||
|
for k, v in ipairs(train.trainparts) do
|
||||||
|
|
||||||
|
local i=minetest.get_inventory({type="detached", name="advtrains_wgn_"..v})
|
||||||
|
if i then
|
||||||
|
if not unload then
|
||||||
|
for _, item in ipairs(inv:get_list("main")) do
|
||||||
|
if i:get_list("box") and i:room_for_item("box", item) then
|
||||||
|
i:add_item("box", item)
|
||||||
|
inv:remove_item("main", item)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
else
|
||||||
|
for _, item in ipairs(i:get_list("box")) do
|
||||||
|
if inv:get_list("main") and inv:room_for_item("main", item) then
|
||||||
|
i:remove_item("box", item)
|
||||||
|
inv:add_item("main", item)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
advtrains.register_tracks("default", {
|
advtrains.register_tracks("default", {
|
||||||
nodename_prefix="advtrains:dtrack_unload",
|
nodename_prefix="advtrains:dtrack_unload",
|
||||||
texture_prefix="advtrains_dtrack_unload",
|
texture_prefix="advtrains_dtrack_unload",
|
||||||
|
|
Loading…
Reference in New Issue