Consolidate sample door code
This commit is contained in:
parent
f628fcdf80
commit
e384dc1813
109
samples.lua
109
samples.lua
@ -107,10 +107,8 @@ core.register_node("simple_models:panel_rear", {
|
|||||||
})
|
})
|
||||||
|
|
||||||
|
|
||||||
-- inward opening doors
|
local door_def = {
|
||||||
|
base = {
|
||||||
core.register_node("simple_models:door_l_in_closed", {
|
|
||||||
description = "Door L (inward opening)",
|
|
||||||
drawtype = "mesh",
|
drawtype = "mesh",
|
||||||
tiles = {"simple_models_sample_panel_1x2x1_map.png"},
|
tiles = {"simple_models_sample_panel_1x2x1_map.png"},
|
||||||
mesh = smodel.panel.mesh,
|
mesh = smodel.panel.mesh,
|
||||||
@ -124,81 +122,34 @@ core.register_node("simple_models:door_l_in_closed", {
|
|||||||
},
|
},
|
||||||
paramtype2 = "facedir",
|
paramtype2 = "facedir",
|
||||||
groups = {oddly_breakable_by_hand=1},
|
groups = {oddly_breakable_by_hand=1},
|
||||||
|
|
||||||
on_rightclick = function(pos, node, clicker, stack, pointed_thing)
|
|
||||||
smodel:door_inward_open(pos, "simple_models:door_l_in_open")
|
|
||||||
if core.global_exists("sounds") and sounds.door_open then
|
|
||||||
sounds.door_open()
|
|
||||||
end
|
|
||||||
|
|
||||||
return stack
|
|
||||||
end,
|
|
||||||
})
|
|
||||||
|
|
||||||
core.register_node("simple_models:door_l_in_open", {
|
|
||||||
description = "Door L (inward opening)",
|
|
||||||
drawtype = "mesh",
|
|
||||||
tiles = {"simple_models_sample_panel_1x2x1_map.png"},
|
|
||||||
mesh = smodel.panel_rear.mesh,
|
|
||||||
collision_box = {
|
|
||||||
type = "fixed",
|
|
||||||
fixed = smodel.panel_rear.box,
|
|
||||||
},
|
},
|
||||||
selection_box = {
|
|
||||||
type = "fixed",
|
["in"] = {
|
||||||
fixed = smodel.panel_rear.box,
|
desc = "inward",
|
||||||
|
func = {
|
||||||
|
closed = smodel.door_inward_open,
|
||||||
|
open = smodel.door_inward_close,
|
||||||
},
|
},
|
||||||
paramtype2 = "facedir",
|
|
||||||
groups = {oddly_breakable_by_hand=1, not_in_creative_inventory=1},
|
|
||||||
drop = "simple_models:door_l_in_closed",
|
|
||||||
|
|
||||||
on_rightclick = function(pos, node, clicker, stack, pointed_thing)
|
|
||||||
smodel:door_inward_close(pos, "simple_models:door_l_in_closed")
|
|
||||||
if core.global_exists("sounds") and sounds.door_close then
|
|
||||||
sounds.door_close()
|
|
||||||
end
|
|
||||||
|
|
||||||
return stack
|
|
||||||
end,
|
|
||||||
|
|
||||||
after_place_node = function(pos, placer, stack, pointed_thing)
|
|
||||||
local node = core.get_node(pos)
|
|
||||||
core.swap_node(pos, {
|
|
||||||
name = "simple_models:door_l_in_closed",
|
|
||||||
param1 = node.param1,
|
|
||||||
param2 = node.param2,
|
|
||||||
})
|
|
||||||
end,
|
|
||||||
})
|
|
||||||
|
|
||||||
|
|
||||||
-- outward opening doors
|
|
||||||
|
|
||||||
local door_outward_def = {
|
|
||||||
drawtype = "mesh",
|
|
||||||
tiles = {"simple_models_sample_panel_1x2x1_map.png"},
|
|
||||||
mesh = smodel.panel.mesh,
|
|
||||||
collision_box = {
|
|
||||||
type = "fixed",
|
|
||||||
fixed = smodel.panel.box,
|
|
||||||
},
|
},
|
||||||
selection_box = {
|
|
||||||
type = "fixed",
|
["out"] = {
|
||||||
fixed = smodel.panel.box,
|
desc = "outward",
|
||||||
|
func = {
|
||||||
|
closed = smodel.door_outward_open,
|
||||||
|
open = smodel.door_outward_close,
|
||||||
|
},
|
||||||
},
|
},
|
||||||
paramtype2 = "facedir",
|
|
||||||
groups = {oddly_breakable_by_hand=1},
|
|
||||||
}
|
}
|
||||||
|
|
||||||
for _, state in ipairs({"closed", "open"}) do
|
for _, swing in ipairs({"in", "out"}) do
|
||||||
local door_name = "simple_models:door_l_out_" .. state
|
for _, state in ipairs({"closed", "open"}) do
|
||||||
local door_def = table.copy(door_outward_def)
|
local door_name = "simple_models:door_l_" .. swing .. "_" .. state
|
||||||
|
local door_base, door_aux = table.copy(door_def.base), door_def[swing]
|
||||||
|
door_base.description = "Door L (" .. door_aux.desc .. " opening)"
|
||||||
|
|
||||||
if state == "closed" then
|
if state == "closed" then
|
||||||
door_def.description = "Door L (outward opening)"
|
door_base.on_rightclick = function(pos, node, clicker, stack, pointed_thing)
|
||||||
|
door_aux.func[state](smodel, pos, "simple_models:door_l_" .. swing .. "_open")
|
||||||
door_def.on_rightclick = function(pos, node, clicker, stack, pointed_thing)
|
|
||||||
smodel:door_outward_open(pos, "simple_models:door_l_out_open")
|
|
||||||
if core.global_exists("sounds") and sounds.door_open then
|
if core.global_exists("sounds") and sounds.door_open then
|
||||||
sounds.door_open()
|
sounds.door_open()
|
||||||
end
|
end
|
||||||
@ -206,12 +157,11 @@ for _, state in ipairs({"closed", "open"}) do
|
|||||||
return stack
|
return stack
|
||||||
end
|
end
|
||||||
else
|
else
|
||||||
door_def.description = "Door L (outward opening)"
|
door_base.drop = "simple_models:door_l_" .. swing .. "_closed"
|
||||||
door_def.drop = "simple_models:door_l_out_closed"
|
door_base.groups.not_in_creative_inventory = 1
|
||||||
door_def.groups.not_in_creative_inventory = 1
|
|
||||||
|
|
||||||
door_def.on_rightclick = function(pos, node, clicker, stack, pointed_thing)
|
door_base.on_rightclick = function(pos, node, clicker, stack, pointed_thing)
|
||||||
smodel:door_outward_close(pos, "simple_models:door_l_out_closed")
|
door_aux.func[state](smodel, pos, door_base.drop)
|
||||||
if core.global_exists("sounds") and sounds.door_close then
|
if core.global_exists("sounds") and sounds.door_close then
|
||||||
sounds.door_close()
|
sounds.door_close()
|
||||||
end
|
end
|
||||||
@ -219,15 +169,16 @@ for _, state in ipairs({"closed", "open"}) do
|
|||||||
return stack
|
return stack
|
||||||
end
|
end
|
||||||
|
|
||||||
door_def.after_place_node = function(pos, placer, stack, pointed_thing)
|
door_base.after_place_node = function(pos, placer, stack, pointed_thing)
|
||||||
local node = core.get_node(pos)
|
local node = core.get_node(pos)
|
||||||
core.swap_node(pos, {
|
core.swap_node(pos, {
|
||||||
name = "simple_models:door_l_out_closed",
|
name = door_base.drop,
|
||||||
param1 = node.param1,
|
param1 = node.param1,
|
||||||
param2 = node.param2,
|
param2 = node.param2,
|
||||||
})
|
})
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
core.register_node(door_name, door_def)
|
core.register_node(door_name, door_base)
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
Loading…
x
Reference in New Issue
Block a user