Add support for audio feedback if placing node failed
This commit is contained in:
parent
578649bd15
commit
2a12579fab
|
@ -3241,6 +3241,7 @@ Definition tables
|
||||||
dig = <SimpleSoundSpec>, -- "__group" = group-based sound (default)
|
dig = <SimpleSoundSpec>, -- "__group" = group-based sound (default)
|
||||||
dug = <SimpleSoundSpec>,
|
dug = <SimpleSoundSpec>,
|
||||||
place = <SimpleSoundSpec>,
|
place = <SimpleSoundSpec>,
|
||||||
|
place_failed = <SimpleSoundSpec>,
|
||||||
},
|
},
|
||||||
drop = "", -- Name of dropped node when dug. Default is the node itself.
|
drop = "", -- Name of dropped node when dug. Default is the node itself.
|
||||||
-- Alternatively:
|
-- Alternatively:
|
||||||
|
|
|
@ -3682,8 +3682,12 @@ void Game::handlePointingAtNode(GameRunData *runData,
|
||||||
SimpleSoundSpec();
|
SimpleSoundSpec();
|
||||||
|
|
||||||
if (playeritem_def.node_placement_prediction == "" ||
|
if (playeritem_def.node_placement_prediction == "" ||
|
||||||
nodedef_manager->get(map.getNodeNoEx(nodepos)).rightclickable)
|
nodedef_manager->get(map.getNodeNoEx(nodepos)).rightclickable) {
|
||||||
client->interact(3, pointed); // Report to server
|
client->interact(3, pointed); // Report to server
|
||||||
|
} else {
|
||||||
|
soundmaker->m_player_rightpunch_sound =
|
||||||
|
playeritem_def.sound_place_failed;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -80,6 +80,7 @@ ItemDefinition& ItemDefinition::operator=(const ItemDefinition &def)
|
||||||
groups = def.groups;
|
groups = def.groups;
|
||||||
node_placement_prediction = def.node_placement_prediction;
|
node_placement_prediction = def.node_placement_prediction;
|
||||||
sound_place = def.sound_place;
|
sound_place = def.sound_place;
|
||||||
|
sound_place_failed = def.sound_place_failed;
|
||||||
range = def.range;
|
range = def.range;
|
||||||
return *this;
|
return *this;
|
||||||
}
|
}
|
||||||
|
@ -114,6 +115,7 @@ void ItemDefinition::reset()
|
||||||
}
|
}
|
||||||
groups.clear();
|
groups.clear();
|
||||||
sound_place = SimpleSoundSpec();
|
sound_place = SimpleSoundSpec();
|
||||||
|
sound_place_failed = SimpleSoundSpec();
|
||||||
range = -1;
|
range = -1;
|
||||||
|
|
||||||
node_placement_prediction = "";
|
node_placement_prediction = "";
|
||||||
|
@ -157,6 +159,8 @@ void ItemDefinition::serialize(std::ostream &os, u16 protocol_version) const
|
||||||
}
|
}
|
||||||
if (protocol_version > 20) {
|
if (protocol_version > 20) {
|
||||||
writeF1000(os, range);
|
writeF1000(os, range);
|
||||||
|
os << serializeString(sound_place_failed.name);
|
||||||
|
writeF1000(os, sound_place_failed.gain);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -212,6 +216,8 @@ void ItemDefinition::deSerialize(std::istream &is)
|
||||||
// If you add anything here, insert it primarily inside the try-catch
|
// If you add anything here, insert it primarily inside the try-catch
|
||||||
// block to not need to increase the version.
|
// block to not need to increase the version.
|
||||||
try {
|
try {
|
||||||
|
sound_place_failed.name = deSerializeString(is);
|
||||||
|
sound_place_failed.gain = readF1000(is);
|
||||||
} catch(SerializationError &e) {};
|
} catch(SerializationError &e) {};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -68,6 +68,7 @@ struct ItemDefinition
|
||||||
ToolCapabilities *tool_capabilities;
|
ToolCapabilities *tool_capabilities;
|
||||||
ItemGroupList groups;
|
ItemGroupList groups;
|
||||||
SimpleSoundSpec sound_place;
|
SimpleSoundSpec sound_place;
|
||||||
|
SimpleSoundSpec sound_place_failed;
|
||||||
f32 range;
|
f32 range;
|
||||||
|
|
||||||
// Client shall immediately place this node when player places the item.
|
// Client shall immediately place this node when player places the item.
|
||||||
|
|
|
@ -100,6 +100,9 @@ ItemDefinition read_item_definition(lua_State* L,int index,
|
||||||
lua_getfield(L, -1, "place");
|
lua_getfield(L, -1, "place");
|
||||||
read_soundspec(L, -1, def.sound_place);
|
read_soundspec(L, -1, def.sound_place);
|
||||||
lua_pop(L, 1);
|
lua_pop(L, 1);
|
||||||
|
lua_getfield(L, -1, "place_failed");
|
||||||
|
read_soundspec(L, -1, def.sound_place_failed);
|
||||||
|
lua_pop(L, 1);
|
||||||
}
|
}
|
||||||
lua_pop(L, 1);
|
lua_pop(L, 1);
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue