Added sounds for doors, drawers and floor clock

master
Andrey2470T 2022-08-28 17:56:43 +03:00
parent e7b123063c
commit 6b6eb9e627
16 changed files with 112 additions and 20 deletions

View File

@ -85,7 +85,8 @@ function doors.convert_to_entity(pos)
minetest.remove_node(pos) minetest.remove_node(pos)
local is_open = minetest.registered_nodes[node.name].add_properties.door.mode == "open" local add_props = minetest.registered_nodes[node.name].add_properties
local is_open = add_props.door.mode == "open"
local obj_name = is_open and node.name:gsub("_open", "") or node.name local obj_name = is_open and node.name:gsub("_open", "") or node.name
@ -108,6 +109,10 @@ function doors.convert_to_entity(pos)
rot = rot2 rot = rot2
end end
if add_props.door.sounds and not is_open then
minetest.sound_play(add_props.door.sounds.open, {pos=pos, max_hear_distance=10})
end
local obj = minetest.add_entity(new_pos, obj_name) local obj = minetest.add_entity(new_pos, obj_name)
obj:set_rotation(rot) obj:set_rotation(rot)
obj:set_properties({ obj:set_properties({
@ -129,6 +134,13 @@ function doors.convert_from_entity(obj)
local pos = obj:get_pos() local pos = obj:get_pos()
local self = obj:get_luaentity() local self = obj:get_luaentity()
local add_props = minetest.registered_nodes[self.name].add_properties
if add_props.door.sounds and self.action == "close" then
minetest.sound_play(add_props.door.sounds.close, {pos=pos, max_hear_distance=10})
end
obj:remove() obj:remove()
local name = self.action == "open" and self.name .. "_open" or self.name local name = self.action == "open" and self.name .. "_open" or self.name

View File

@ -105,6 +105,12 @@ function shelves.open_shelf(obj, dir_sign)
end end
end end
end end
if shelf.sounds then
local play_sound = dir_sign == 1 and shelf.sounds.open or shelf.sounds.close
minetest.sound_play(play_sound, {pos=obj:get_pos(), fade=1.0, max_hear_distance=10})
end
end end
-- Adds shelf objects for the node with 'pos' position. They should save formspec inventory and position of the node which they are connected to -- Adds shelf objects for the node with 'pos' position. They should save formspec inventory and position of the node which they are connected to
@ -265,7 +271,7 @@ shelves.default_drawer_on_step = function(self)
local target_pos = self.dir == 1 and self.end_v or self.start_v local target_pos = self.dir == 1 and self.end_v or self.start_v
local dist = vector.distance(self.object:get_pos(), target_pos) local dist = vector.distance(self.object:get_pos(), target_pos)
if dist <= 0.1 then if dist <= 0.05 then
self.dir = 0 self.dir = 0
self.object:set_velocity(vector.zero()) self.object:set_velocity(vector.zero())
self.object:set_pos(target_pos) self.object:set_pos(target_pos)

View File

@ -107,7 +107,11 @@ register.register_table("dresser_with_mirror", {
pos = {x=-0.02, y=0.28, z=0}, pos = {x=-0.02, y=0.28, z=0},
object = "modern:wooden_drawer_with_round_handle", object = "modern:wooden_drawer_with_round_handle",
length = 0.5, length = 0.5,
inv_size = {w=6,h=1} inv_size = {w=6,h=1},
sounds = {
open = "multidecor_drawer_open",
close = "multidecor_drawer_close"
}
}, },
{ {
type = "drawer", type = "drawer",
@ -116,7 +120,11 @@ register.register_table("dresser_with_mirror", {
pos = {x=-0.02, y=0, z=0}, pos = {x=-0.02, y=0, z=0},
object = "modern:wooden_drawer_with_round_handle", object = "modern:wooden_drawer_with_round_handle",
length = 0.5, length = 0.5,
inv_size = {w=6,h=1} inv_size = {w=6,h=1},
sounds = {
open = "multidecor_drawer_open",
close = "multidecor_drawer_close"
}
}, },
{ {
type = "drawer", type = "drawer",
@ -125,7 +133,11 @@ register.register_table("dresser_with_mirror", {
pos = {x=-0.02, y=-0.28, z=0}, pos = {x=-0.02, y=-0.28, z=0},
object = "modern:wooden_drawer_with_round_handle", object = "modern:wooden_drawer_with_round_handle",
length = 0.5, length = 0.5,
inv_size = {w=6,h=1} inv_size = {w=6,h=1},
sounds = {
open = "multidecor_drawer_open",
close = "multidecor_drawer_close"
}
}, },
{ {
type = "drawer", type = "drawer",
@ -134,7 +146,11 @@ register.register_table("dresser_with_mirror", {
pos = {x=-1, y=0.28, z=0}, pos = {x=-1, y=0.28, z=0},
object = "modern:wooden_drawer_with_round_handle", object = "modern:wooden_drawer_with_round_handle",
length = 0.5, length = 0.5,
inv_size = {w=6,h=1} inv_size = {w=6,h=1},
sounds = {
open = "multidecor_drawer_open",
close = "multidecor_drawer_close"
}
}, },
{ {
type = "drawer", type = "drawer",
@ -143,7 +159,11 @@ register.register_table("dresser_with_mirror", {
pos = {x=-1, y=0, z=0}, pos = {x=-1, y=0, z=0},
object = "modern:wooden_drawer_with_round_handle", object = "modern:wooden_drawer_with_round_handle",
length = 0.5, length = 0.5,
inv_size = {w=6,h=1} inv_size = {w=6,h=1},
sounds = {
open = "multidecor_drawer_open",
close = "multidecor_drawer_close"
}
}, },
{ {
type = "drawer", type = "drawer",
@ -152,7 +172,11 @@ register.register_table("dresser_with_mirror", {
pos = {x=-1, y=-0.28, z=0}, pos = {x=-1, y=-0.28, z=0},
object = "modern:wooden_drawer_with_round_handle", object = "modern:wooden_drawer_with_round_handle",
length = 0.5, length = 0.5,
inv_size = {w=6,h=1} inv_size = {w=6,h=1},
sounds = {
open = "multidecor_drawer_open",
close = "multidecor_drawer_close"
}
}, },
} }
}, },

View File

@ -16,7 +16,11 @@ register.register_door("high_dark_rusty_gate", {
door = { door = {
mesh_open = "multidecor_high_dark_rusty_gate_open.b3d", mesh_open = "multidecor_high_dark_rusty_gate_open.b3d",
mesh_activated = "multidecor_high_dark_rusty_gate_activated.b3d", mesh_activated = "multidecor_high_dark_rusty_gate_activated.b3d",
vel = 100 -- degrees per sec vel = 90, -- degrees per sec
sounds = {
open = "multidecor_metallic_door_open",
close = "multidecor_metallic_door_close"
}
} }
}, },
{ {
@ -46,7 +50,11 @@ register.register_door("dark_rusty_gate", {
door = { door = {
mesh_open = "multidecor_dark_rusty_gate_open.b3d", mesh_open = "multidecor_dark_rusty_gate_open.b3d",
mesh_activated = "multidecor_dark_rusty_gate_activated.b3d", mesh_activated = "multidecor_dark_rusty_gate_activated.b3d",
vel = 90 -- degrees per sec vel = 90, -- degrees per sec
sounds = {
open = "multidecor_metallic_door_open",
close = "multidecor_metallic_door_close"
}
} }
}, },
{ {
@ -70,7 +78,11 @@ register.register_door("wooden_door", {
door = { door = {
mesh_open = "multidecor_modern_wooden_door_open.b3d", mesh_open = "multidecor_modern_wooden_door_open.b3d",
mesh_activated = "multidecor_modern_wooden_door_activated.b3d", mesh_activated = "multidecor_modern_wooden_door_activated.b3d",
vel = 90 -- degrees per sec vel = 100, -- degrees per sec
sounds = {
open = "multidecor_wooden_door_open",
close = "multidecor_wooden_door_close"
}
} }
}, },
{ {
@ -100,7 +112,11 @@ register.register_door("pine_glass_door", {
door = { door = {
mesh_open = "multidecor_pine_glass_door_open.b3d", mesh_open = "multidecor_pine_glass_door_open.b3d",
mesh_activated = "multidecor_pine_glass_door_activated.b3d", mesh_activated = "multidecor_pine_glass_door_activated.b3d",
vel = 90 -- degrees per sec vel = 100, -- degrees per sec
sounds = {
open = "multidecor_wooden_door_open",
close = "multidecor_wooden_door_close"
}
} }
}, },
{ {
@ -130,7 +146,11 @@ register.register_door("technical_door", {
door = { door = {
mesh_open = "multidecor_technical_door_open.b3d", mesh_open = "multidecor_technical_door_open.b3d",
mesh_activated = "multidecor_technical_door_activated.b3d", mesh_activated = "multidecor_technical_door_activated.b3d",
vel = 90 -- degrees per sec vel = 80, -- degrees per sec
sounds = {
open = "multidecor_metallic_door_open",
close = "multidecor_metallic_door_close"
}
} }
}, },
{ {

View File

@ -49,11 +49,17 @@ minetest.register_node(":multidecor:modern_floor_clock", {
local meta = minetest.get_meta(pos) local meta = minetest.get_meta(pos)
if meta:get_string("is_activated") == "false" then if meta:get_string("is_activated") == "false" then
wheel:set_animation({x=1, y=40}, 25.0, 0.0, true) wheel:set_animation({x=1, y=40}, 40.0, 0.0, true)
meta:set_string("is_activated", "true") meta:set_string("is_activated", "true")
local handle = minetest.sound_play("multidecor_clock_chime", {object=wheel, fade=1.0, max_hear_distance=10, loop=true})
meta:set_string("sound_handle", minetest.serialize(handle))
else else
wheel:set_animation({x=1, y=1}, 0.0) wheel:set_animation({x=1, y=1}, 0.0)
meta:set_string("is_activated", "false") meta:set_string("is_activated", "false")
local handle = minetest.deserialize(meta:get_string("sound_handle"))
minetest.sound_stop(handle)
end end
end, end,
after_destruct = function(pos) after_destruct = function(pos)

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@ -92,7 +92,11 @@ register.register_table("modern_wooden_desk", {
pos = {x=-1.15, y=0.225, z=0.025}, pos = {x=-1.15, y=0.225, z=0.025},
object = "modern:wooden_drawer", object = "modern:wooden_drawer",
length = 0.8, length = 0.8,
inv_size = {w=6,h=1} inv_size = {w=6,h=1},
sounds = {
open = "multidecor_drawer_open",
close = "multidecor_drawer_close"
}
}, },
{ {
type = "door", type = "door",
@ -100,7 +104,11 @@ register.register_table("modern_wooden_desk", {
object = "modern:wooden_door", object = "modern:wooden_door",
side = "left", side = "left",
inv_size = {w=6,h=3}, inv_size = {w=6,h=3},
acc = 1 acc = 1,
sounds = {
open = "multidecor_cabinet_door_open",
close = "multidecor_cabinet_door_close"
}
} }
} }
}, },
@ -183,7 +191,11 @@ register.register_table("modern_bedside_table", {
pos = {x=0, y=-0.22, z=0.2375}, pos = {x=0, y=-0.22, z=0.2375},
object = "modern:wooden_drawer", object = "modern:wooden_drawer",
length = 0.8, length = 0.8,
inv_size = {w=6,h=1} inv_size = {w=6,h=1},
sounds = {
open = "multidecor_drawer_open",
close = "multidecor_drawer_close"
}
}, },
{ {
type = "drawer", type = "drawer",
@ -192,7 +204,11 @@ register.register_table("modern_bedside_table", {
pos = {x=0, y=0.205, z=0.2375}, pos = {x=0, y=0.205, z=0.2375},
object = "modern:wooden_drawer", object = "modern:wooden_drawer",
length = 0.8, length = 0.8,
inv_size = {w=6,h=1} inv_size = {w=6,h=1},
sounds = {
open = "multidecor_drawer_open",
close = "multidecor_drawer_close"
}
} }
} }
}, },

View File

@ -23,7 +23,11 @@ register.register_table("modern_cupboard_with_glass_doors", {
pos2 = {x=-0.5, y=1.6625, z=0.25}, pos2 = {x=-0.5, y=1.6625, z=0.25},
object = "modern:wardrobe_wooden_glass_door", object = "modern:wardrobe_wooden_glass_door",
inv_size = {w=8,h=6}, inv_size = {w=8,h=6},
acc = 1 acc = 1,
sounds = {
open = "multidecor_cabinet_door_open",
close = "multidecor_cabinet_door_close"
}
}, },
{ {
type = "sym_doors", type = "sym_doors",
@ -31,7 +35,11 @@ register.register_table("modern_cupboard_with_glass_doors", {
pos2 = {x=-0.5, y=0.2375, z=0.25}, pos2 = {x=-0.5, y=0.2375, z=0.25},
object = "modern:wardrobe_wooden_door", object = "modern:wardrobe_wooden_door",
inv_size = {w=8,h=6}, inv_size = {w=8,h=6},
acc = 1 acc = 1,
sounds = {
open = "multidecor_cabinet_door_open",
close = "multidecor_cabinet_door_close"
}
} }
} }
}, },