integrate mbb's new train models
and correct some wagon_spans, wagon/engine scalings and file names issue with collisions needs to be fixed.master
After Width: | Height: | Size: 316 B |
After Width: | Height: | Size: 58 KiB |
After Width: | Height: | Size: 381 B |
After Width: | Height: | Size: 347 B |
After Width: | Height: | Size: 8.8 KiB |
After Width: | Height: | Size: 408 B |
After Width: | Height: | Size: 5.8 KiB |
After Width: | Height: | Size: 316 B |
|
@ -325,11 +325,12 @@ function advtrains.train_step(id, train, dtime)
|
||||||
end
|
end
|
||||||
|
|
||||||
--move
|
--move
|
||||||
|
--TODO 3,5 + 0.7
|
||||||
train.index=train.index and train.index+((train.velocity/(train.path_dist[math.floor(train.index)] or 1))*dtime) or 0
|
train.index=train.index and train.index+((train.velocity/(train.path_dist[math.floor(train.index)] or 1))*dtime) or 0
|
||||||
|
|
||||||
end
|
end
|
||||||
|
|
||||||
--the 'leader' concept has been overthrown, we won't rely on MT's "buggy object management"
|
|
||||||
--structure of train table:
|
--structure of train table:
|
||||||
--[[
|
--[[
|
||||||
trains={
|
trains={
|
||||||
|
@ -501,6 +502,7 @@ function advtrains.add_wagon_to_train(wagon, train_id, index)
|
||||||
--this is not the usual case!!!
|
--this is not the usual case!!!
|
||||||
--we may set initialized because the wagon has no chance to step()
|
--we may set initialized because the wagon has no chance to step()
|
||||||
wagon.initialized=true
|
wagon.initialized=true
|
||||||
|
--TODO is this art or can we throw it away?
|
||||||
advtrains.update_trainpart_properties(train_id)
|
advtrains.update_trainpart_properties(train_id)
|
||||||
end
|
end
|
||||||
function advtrains.update_trainpart_properties(train_id, invert_flipstate)
|
function advtrains.update_trainpart_properties(train_id, invert_flipstate)
|
||||||
|
@ -788,6 +790,10 @@ end
|
||||||
|
|
||||||
local nonblocknodes={
|
local nonblocknodes={
|
||||||
"default:fence_wood",
|
"default:fence_wood",
|
||||||
|
"default:fence_acacia_wood",
|
||||||
|
"default:fence_aspen_wood",
|
||||||
|
"default:fence_pine_wood",
|
||||||
|
"default:fence_junglewood",
|
||||||
"default:torch",
|
"default:torch",
|
||||||
|
|
||||||
"default:sign_wall",
|
"default:sign_wall",
|
||||||
|
|
88
wagons.lua
|
@ -625,7 +625,7 @@ advtrains.register_wagon("newlocomotive", "steam",{
|
||||||
drops={"default:steelblock 4"},
|
drops={"default:steelblock 4"},
|
||||||
}, "Steam Engine", "advtrains_newlocomotive_inv.png")
|
}, "Steam Engine", "advtrains_newlocomotive_inv.png")
|
||||||
advtrains.register_wagon("wagon_default", "steam",{
|
advtrains.register_wagon("wagon_default", "steam",{
|
||||||
mesh="wagon.b3d",
|
mesh="advtrains_wagon.b3d",
|
||||||
textures = {"advtrains_wagon.png"},
|
textures = {"advtrains_wagon.png"},
|
||||||
seats = {
|
seats = {
|
||||||
{
|
{
|
||||||
|
@ -640,7 +640,7 @@ advtrains.register_wagon("wagon_default", "steam",{
|
||||||
drops={"default:steelblock 4"},
|
drops={"default:steelblock 4"},
|
||||||
}, "Passenger Wagon", "advtrains_wagon_inv.png")
|
}, "Passenger Wagon", "advtrains_wagon_inv.png")
|
||||||
advtrains.register_wagon("wagon_box", "steam",{
|
advtrains.register_wagon("wagon_box", "steam",{
|
||||||
mesh="wagon.b3d",
|
mesh="advtrains_wagon.b3d",
|
||||||
textures = {"advtrains_wagon_box.png"},
|
textures = {"advtrains_wagon_box.png"},
|
||||||
seats = {},
|
seats = {},
|
||||||
visual_size = {x=1, y=1},
|
visual_size = {x=1, y=1},
|
||||||
|
@ -657,7 +657,7 @@ advtrains.register_wagon("wagon_box", "steam",{
|
||||||
inventory_list_sizes = {
|
inventory_list_sizes = {
|
||||||
box=8*6,
|
box=8*6,
|
||||||
},
|
},
|
||||||
}, "Box Wagon", "advtrains_wagon_inv.png")
|
}, "Box Wagon", "advtrains_wagon_box_inv.png")
|
||||||
|
|
||||||
advtrains.register_train_type("electric", {"regular", "default"}, 20)
|
advtrains.register_train_type("electric", {"regular", "default"}, 20)
|
||||||
|
|
||||||
|
@ -673,7 +673,7 @@ advtrains.register_wagon("engine_japan", "electric",{
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
visual_size = {x=1, y=1},
|
visual_size = {x=1, y=1},
|
||||||
wagon_span=2,
|
wagon_span=2.4,
|
||||||
is_locomotive=true,
|
is_locomotive=true,
|
||||||
collisionbox = {-1.0,-0.5,-1.0, 1.0,2.5,1.0},
|
collisionbox = {-1.0,-0.5,-1.0, 1.0,2.5,1.0},
|
||||||
drops={"default:steelblock 4"},
|
drops={"default:steelblock 4"},
|
||||||
|
@ -690,11 +690,72 @@ advtrains.register_wagon("wagon_japan", "electric",{
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
visual_size = {x=1, y=1},
|
visual_size = {x=1, y=1},
|
||||||
wagon_span=2,
|
wagon_span=2.4,
|
||||||
collisionbox = {-1.0,-0.5,-1.0, 1.0,2.5,1.0},
|
collisionbox = {-1.0,-0.5,-1.0, 1.0,2.5,1.0},
|
||||||
drops={"default:steelblock 4"},
|
drops={"default:steelblock 4"},
|
||||||
}, "Japanese Train Wagon", "blue.png")
|
}, "Japanese Train Wagon", "blue.png")
|
||||||
|
|
||||||
|
advtrains.register_wagon("engine_industrial", "electric",{
|
||||||
|
mesh="advtrains_engine_industrial.b3d",
|
||||||
|
textures = {"advtrains_engine_industrial.png"},
|
||||||
|
seats = {
|
||||||
|
{
|
||||||
|
name="Driver Stand (left)",
|
||||||
|
attach_offset={x=-5, y=10, z=-10},
|
||||||
|
view_offset={x=0, y=10, z=0},
|
||||||
|
driving_ctrl_access=true,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name="Driver Stand (right)",
|
||||||
|
attach_offset={x=5, y=10, z=-10},
|
||||||
|
view_offset={x=0, y=10, z=0},
|
||||||
|
driving_ctrl_access=true,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
visual_size = {x=1, y=1},
|
||||||
|
wagon_span=2.6,
|
||||||
|
is_locomotive=true,
|
||||||
|
collisionbox = {-1.0,-0.5,-1.0, 1.0,2.5,1.0},
|
||||||
|
drops={"default:steelblock 4"},
|
||||||
|
}, "Industrial Train Engine", "advtrains_engine_industrial_inv.png")
|
||||||
|
advtrains.register_wagon("wagon_tank", "electric",{
|
||||||
|
mesh="advtrains_wagon_tank.b3d",
|
||||||
|
textures = {"advtrains_wagon_tank.png"},
|
||||||
|
seats = {},
|
||||||
|
visual_size = {x=1, y=1},
|
||||||
|
wagon_span=1.8,
|
||||||
|
collisionbox = {-1.0,-0.5,-1.0, 1.0,2.5,1.0},
|
||||||
|
drops={"default:steelblock 4"},
|
||||||
|
has_inventory = true,
|
||||||
|
get_inventory_formspec = function(self)
|
||||||
|
return "size[8,11]"..
|
||||||
|
"list[detached:advtrains_wgn_"..self.unique_id..";box;0,0;8,6;]"..
|
||||||
|
"list[current_player;main;0,7;8,4;]"..
|
||||||
|
"listring[]"
|
||||||
|
end,
|
||||||
|
inventory_list_sizes = {
|
||||||
|
box=8*6,
|
||||||
|
},
|
||||||
|
}, "Industrial tank wagon", "advtrains_wagon_tank_inv.png")
|
||||||
|
advtrains.register_wagon("wagon_wood", "electric",{
|
||||||
|
mesh="advtrains_wagon_wood.b3d",
|
||||||
|
textures = {"advtrains_wagon_wood.png"},
|
||||||
|
seats = {},
|
||||||
|
visual_size = {x=1, y=1},
|
||||||
|
wagon_span=1.8,
|
||||||
|
collisionbox = {-1.0,-0.5,-1.0, 1.0,2.5,1.0},
|
||||||
|
drops={"default:steelblock 4"},
|
||||||
|
has_inventory = true,
|
||||||
|
get_inventory_formspec = function(self)
|
||||||
|
return "size[8,11]"..
|
||||||
|
"list[detached:advtrains_wgn_"..self.unique_id..";box;0,0;8,6;]"..
|
||||||
|
"list[current_player;main;0,7;8,4;]"..
|
||||||
|
"listring[]"
|
||||||
|
end,
|
||||||
|
inventory_list_sizes = {
|
||||||
|
box=8*6,
|
||||||
|
},
|
||||||
|
}, "Industrial wood wagon", "advtrains_wagon_wood_inv.png")
|
||||||
|
|
||||||
advtrains.register_train_type("subway", {"default"}, 15)
|
advtrains.register_train_type("subway", {"default"}, 15)
|
||||||
|
|
||||||
|
@ -715,21 +776,6 @@ advtrains.register_wagon("subway_wagon", "subway",{
|
||||||
is_locomotive=true,
|
is_locomotive=true,
|
||||||
drops={"default:steelblock 4"},
|
drops={"default:steelblock 4"},
|
||||||
}, "Subway Passenger Wagon", "advtrains_subway_train_inv.png")
|
}, "Subway Passenger Wagon", "advtrains_subway_train_inv.png")
|
||||||
--[[
|
|
||||||
advtrains.register_wagon("wagontype1",{on_rightclick=function(self, clicker)
|
|
||||||
if clicker:get_player_control().sneak then
|
|
||||||
advtrains.disconnect_train_before_wagon(self)
|
|
||||||
return
|
|
||||||
end
|
|
||||||
--just debugging. look for first active wagon and attach to it.
|
|
||||||
for _,v in pairs(minetest.luaentities) do
|
|
||||||
if v.is_wagon and v.unique_id and v.unique_id~=self.unique_id then
|
|
||||||
self.train_id=v.unique_id
|
|
||||||
end
|
|
||||||
end
|
|
||||||
if not self.train_id then minetest.chat_send_all("not found") return end
|
|
||||||
minetest.chat_send_all(self.train_id.." found and attached.")
|
|
||||||
end})
|
|
||||||
]]
|
|
||||||
|
|
||||||
|
|
||||||
|
|