From 06e93f8d9508a23e86751dfae2f6a7e550d8e1af Mon Sep 17 00:00:00 2001 From: Perttu Ahola Date: Sat, 24 Mar 2012 11:10:28 +0200 Subject: [PATCH] Add sound.dig --- games/mesetint/mods/default/init.lua | 14 +++++++++----- src/game.cpp | 16 ++++++++++++---- src/nodedef.cpp | 3 +++ src/nodedef.h | 1 + src/scriptapi.cpp | 3 +++ 5 files changed, 28 insertions(+), 9 deletions(-) diff --git a/games/mesetint/mods/default/init.lua b/games/mesetint/mods/default/init.lua index 042cb7cdf..8788b3810 100644 --- a/games/mesetint/mods/default/init.lua +++ b/games/mesetint/mods/default/init.lua @@ -656,8 +656,10 @@ function default.node_sound_sand_defaults(table) table = table or {} table.footstep = table.footstep or {name="default_grass_footstep", gain=0.25} + --table.dug = table.dug or + -- {name="default_dirt_break", gain=0.25} table.dug = table.dug or - {name="default_dirt_break", gain=0.25} + {name="", gain=0.25} default.node_sound_defaults(table) return table end @@ -674,6 +676,8 @@ function default.node_sound_leaves_defaults(table) table = table or {} table.footstep = table.footstep or {name="default_grass_footstep", gain=0.25} + table.dig = table.dig or + {name="default_dig_crumbly", gain=0.4} table.dug = table.dug or {name="", gain=1.0} default.node_sound_defaults(table) @@ -727,7 +731,7 @@ minetest.register_node("default:dirt_with_grass", { groups = {crumbly=3}, drop = 'default:dirt', sounds = default.node_sound_dirt_defaults({ - footstep = {name="default_grass_footstep", gain=0.5}, + footstep = {name="default_grass_footstep", gain=0.4}, }), }) @@ -738,7 +742,7 @@ minetest.register_node("default:dirt_with_grass_footsteps", { groups = {crumbly=3}, drop = 'default:dirt', sounds = default.node_sound_dirt_defaults({ - footstep = {name="default_grass_footstep", gain=0.5}, + footstep = {name="default_grass_footstep", gain=0.4}, }), }) @@ -763,8 +767,8 @@ minetest.register_node("default:gravel", { tile_images = {"default_gravel.png"}, is_ground_content = true, groups = {crumbly=2}, - sounds = default.node_sound_sand_defaults({ - footstep = {name="default_gravel_footstep", gain=0.5} + sounds = default.node_sound_dirt_defaults({ + footstep = {name="default_gravel_footstep", gain=0.45}, }), }) diff --git a/src/game.cpp b/src/game.cpp index 9715c6676..1dcda043e 100644 --- a/src/game.cpp +++ b/src/game.cpp @@ -2250,10 +2250,18 @@ void the_game( params = getDigParams(nodedef->get(n).groups, tp); } - if(params.main_group != ""){ - soundmaker.m_player_leftpunch_sound.gain = 0.5; - soundmaker.m_player_leftpunch_sound.name = - std::string("default_dig_") + params.main_group; + SimpleSoundSpec sound_dig = nodedef->get(n).sound_dig; + if(sound_dig.exists()){ + if(sound_dig.name == "__group"){ + if(params.main_group != ""){ + soundmaker.m_player_leftpunch_sound.gain = 0.5; + soundmaker.m_player_leftpunch_sound.name = + std::string("default_dig_") + + params.main_group; + } + } else{ + soundmaker.m_player_leftpunch_sound = sound_dig; + } } float dig_time_complete = 0.0; diff --git a/src/nodedef.cpp b/src/nodedef.cpp index 954467d48..6bdb36261 100644 --- a/src/nodedef.cpp +++ b/src/nodedef.cpp @@ -156,6 +156,7 @@ void ContentFeatures::reset() legacy_facedir_simple = false; legacy_wallmounted = false; sound_footstep = SimpleSoundSpec(); + sound_dig = SimpleSoundSpec("__group"); sound_dug = SimpleSoundSpec(); } @@ -204,6 +205,7 @@ void ContentFeatures::serialize(std::ostream &os) writeU8(os, legacy_facedir_simple); writeU8(os, legacy_wallmounted); serializeSimpleSoundSpec(sound_footstep, os); + serializeSimpleSoundSpec(sound_dig, os); serializeSimpleSoundSpec(sound_dug, os); } @@ -258,6 +260,7 @@ void ContentFeatures::deSerialize(std::istream &is) legacy_wallmounted = readU8(is); try{ deSerializeSimpleSoundSpec(sound_footstep, is); + deSerializeSimpleSoundSpec(sound_dig, is); deSerializeSimpleSoundSpec(sound_dug, is); }catch(SerializationError &e) {}; } diff --git a/src/nodedef.h b/src/nodedef.h index 585755b9d..a7ffa5a2e 100644 --- a/src/nodedef.h +++ b/src/nodedef.h @@ -203,6 +203,7 @@ struct ContentFeatures // Sound properties SimpleSoundSpec sound_footstep; + SimpleSoundSpec sound_dig; SimpleSoundSpec sound_dug; /* diff --git a/src/scriptapi.cpp b/src/scriptapi.cpp index fce760eb8..5ce5f3b29 100644 --- a/src/scriptapi.cpp +++ b/src/scriptapi.cpp @@ -1062,6 +1062,9 @@ static ContentFeatures read_content_features(lua_State *L, int index) lua_getfield(L, -1, "footstep"); read_soundspec(L, -1, f.sound_footstep); lua_pop(L, 1); + lua_getfield(L, -1, "dig"); + read_soundspec(L, -1, f.sound_dig); + lua_pop(L, 1); lua_getfield(L, -1, "dug"); read_soundspec(L, -1, f.sound_dug); lua_pop(L, 1);