add digiline interface / switch to mod.conf

master
BuckarooBanzay 2020-12-21 10:50:18 +01:00
parent 87738918ab
commit 75348a580b
7 changed files with 76 additions and 8 deletions

View File

@ -10,6 +10,9 @@ read_globals = {
-- Minetest
"minetest",
"vector", "ItemStack"
"vector", "ItemStack",
-- mods
"digilines"
}

View File

@ -1,7 +0,0 @@
default?
doors?
horror?
mesecons?
technic?
ambience?
mobs_monster?

42
digiline.lua Normal file
View File

@ -0,0 +1,42 @@
soundblock.digiline_rules = {
-- digilines.rules.default
{x= 1,y= 0,z= 0},{x=-1,y= 0,z= 0}, -- along x side
{x= 0,y= 0,z= 1},{x= 0,y= 0,z=-1}, -- along z side
{x= 1,y= 1,z= 0},{x=-1,y= 1,z= 0}, -- 1 node above along x diagonal
{x= 0,y= 1,z= 1},{x= 0,y= 1,z=-1}, -- 1 node above along z diagonal
{x= 1,y=-1,z= 0},{x=-1,y=-1,z= 0}, -- 1 node below along x diagonal
{x= 0,y=-1,z= 1},{x= 0,y=-1,z=-1}, -- 1 node below along z diagonal
{x= 0,y= 1,z= 0},{x= 0,y=-1,z= 0}, -- along y above and below
}
function soundblock.digiline_effector(pos, _, channel, msg)
local msgt = type(msg)
if msgt ~= "table" then
return
end
if channel ~= "soundblock" then
return
end
if msg.command == "play" then
-- default position
local playpos = pos
if msg.pos then
-- relative position offset
playpos = vector.add(pos, {
x = tonumber(msg.pos.x) or 0,
y = tonumber(msg.pos.y) or 0,
z = tonumber(msg.pos.z) or 0
})
end
minetest.sound_play(msg.name, {
pos = playpos,
gain = math.min(10, tonumber(msg.gain) or 1),
max_hear_distance = math.min(32, tonumber(msg.hear_distance) or 10)
})
end
end

View File

@ -6,6 +6,7 @@ soundblock = {
local MP = minetest.get_modpath("soundblock")
dofile(MP.."/api.lua")
dofile(MP.."/form.lua")
dofile(MP.."/digiline.lua")
dofile(MP.."/soundblock.lua")
dofile(MP.."/recipe.lua")

3
mod.conf Normal file
View File

@ -0,0 +1,3 @@
name = soundblock
description = Soundblock
optional_depends = default, doors, horror, mesecons, technic, ambience, mobs_monster, digilines

View File

@ -25,7 +25,22 @@ soundblocks.register({
```
# Digiline api
``lua
if event.type == "program" then
digiline_send("soundblock", {
command = "play",
name = "default_grass_footstep.1.ogg",
-- relative position (optional)
pos = { x=0, y=10, z=0 },
-- gain, defaults to 1
gain = 1,
-- max_hear_distance, defaults to 10
hear_distance = 32
})
end
```
# License

View File

@ -115,5 +115,16 @@ minetest.register_node("soundblock:block", {
}
},
digiline = {
receptor = {
rules = soundblock.digiline_rules,
action = function() end
},
effector = {
rules = soundblock.digiline_rules,
action = soundblock.digiline_effector
}
},
on_rightclick = soundblock.showform
})