add block.materials table

This commit is contained in:
MihailRis 2024-11-22 09:36:48 +03:00
parent a641099d36
commit 8543be87df
3 changed files with 23 additions and 0 deletions

View File

@ -160,6 +160,18 @@ void scripting::process_post_runnables() {
void scripting::on_content_load(Content* content) {
scripting::content = content;
scripting::indices = content->getIndices();
auto L = lua::get_main_state();
if (lua::getglobal(L, "block")) {
const auto& materials = content->getBlockMaterials();
lua::createtable(L, 0, materials.size());
for (const auto& [name, material] : materials) {
lua::pushvalue(L, material->serialize());
lua::setfield(L, name);
}
lua::setfield(L, "materials");
lua::pop(L);
}
}
void scripting::on_world_load(LevelController* controller) {

View File

@ -8,6 +8,15 @@
#include "presets/ParticlesPreset.hpp"
#include "util/stringutil.hpp"
dv::value BlockMaterial::serialize() const {
return dv::object({
{"name", name},
{"stepsSound", stepsSound},
{"placeSound", placeSound},
{"breakSound", breakSound}
});
}
std::string to_string(BlockModel model) {
switch (model) {
case BlockModel::none:

View File

@ -104,6 +104,8 @@ struct BlockMaterial {
std::string stepsSound {""};
std::string placeSound {""};
std::string breakSound {""};
dv::value serialize() const;
};
/// @brief Block properties definition