feat: scripts classification
This commit is contained in:
parent
794d1d71f5
commit
b66937c61d
@ -11,6 +11,7 @@ local error_id = 0
|
|||||||
|
|
||||||
local writeables = {}
|
local writeables = {}
|
||||||
local filenames = {}
|
local filenames = {}
|
||||||
|
local scripts_classification = {}
|
||||||
|
|
||||||
local current_file = {
|
local current_file = {
|
||||||
filename = "",
|
filename = "",
|
||||||
@ -92,7 +93,7 @@ function build_files_list(filenames, selected)
|
|||||||
filename = filename:gsub(selected, "**"..selected.."**")
|
filename = filename:gsub(selected, "**"..selected.."**")
|
||||||
end
|
end
|
||||||
local parent = file.parent(filename)
|
local parent = file.parent(filename)
|
||||||
local script_type = "file"
|
local script_type = scripts_classification[actual_filename] or "file"
|
||||||
files_list:add(gui.template("script_file", {
|
files_list:add(gui.template("script_file", {
|
||||||
path = parent .. (parent[#parent] == ':' and '' or '/'),
|
path = parent .. (parent[#parent] == ':' and '' or '/'),
|
||||||
name = file.name(filename),
|
name = file.name(filename),
|
||||||
@ -319,6 +320,31 @@ local function collect_scripts(dirname, dest)
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
local function build_scripts_classification()
|
||||||
|
for id, props in pairs(block.properties) do
|
||||||
|
scripts_classification[props["script-file"]] = "block"
|
||||||
|
end
|
||||||
|
for id, props in pairs(item.properties) do
|
||||||
|
scripts_classification[props["script-file"]] = "item"
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
local function load_scripts_list()
|
||||||
|
local packs = pack.get_installed()
|
||||||
|
for _, packid in ipairs(packs) do
|
||||||
|
collect_scripts(packid..":modules", filenames)
|
||||||
|
end
|
||||||
|
|
||||||
|
for _, filename in ipairs(filenames) do
|
||||||
|
scripts_classification[filename] = "module"
|
||||||
|
end
|
||||||
|
|
||||||
|
for _, packid in ipairs(packs) do
|
||||||
|
collect_scripts(packid..":scripts", filenames)
|
||||||
|
end
|
||||||
|
|
||||||
|
end
|
||||||
|
|
||||||
function on_open(mode)
|
function on_open(mode)
|
||||||
if modes == nil then
|
if modes == nil then
|
||||||
modes = RadioGroup({
|
modes = RadioGroup({
|
||||||
@ -330,12 +356,10 @@ function on_open(mode)
|
|||||||
end, mode or "console")
|
end, mode or "console")
|
||||||
|
|
||||||
local files_list = document.filesList
|
local files_list = document.filesList
|
||||||
local packs = pack.get_installed()
|
|
||||||
|
|
||||||
for _, packid in ipairs(packs) do
|
load_scripts_list()
|
||||||
collect_scripts(packid..":modules", filenames)
|
build_scripts_classification()
|
||||||
collect_scripts(packid..":scripts", filenames)
|
|
||||||
end
|
|
||||||
table.sort(filenames)
|
table.sort(filenames)
|
||||||
build_files_list(filenames)
|
build_files_list(filenames)
|
||||||
|
|
||||||
|
|||||||
@ -29,7 +29,8 @@
|
|||||||
"gui/save",
|
"gui/save",
|
||||||
"gui/block",
|
"gui/block",
|
||||||
"gui/item",
|
"gui/item",
|
||||||
"gui/file"
|
"gui/file",
|
||||||
|
"gui/module"
|
||||||
],
|
],
|
||||||
"fonts": [
|
"fonts": [
|
||||||
{
|
{
|
||||||
|
|||||||
@ -7,7 +7,7 @@ local names = {
|
|||||||
"hidden", "draw-group", "picking-item", "surface-replacement", "script-name",
|
"hidden", "draw-group", "picking-item", "surface-replacement", "script-name",
|
||||||
"ui-layout", "inventory-size", "tick-interval", "overlay-texture",
|
"ui-layout", "inventory-size", "tick-interval", "overlay-texture",
|
||||||
"translucent", "fields", "particles", "icon-type", "icon", "placing-block",
|
"translucent", "fields", "particles", "icon-type", "icon", "placing-block",
|
||||||
"stack-size", "name"
|
"stack-size", "name", "script-file"
|
||||||
}
|
}
|
||||||
for name, _ in pairs(user_props) do
|
for name, _ in pairs(user_props) do
|
||||||
table.insert(names, name)
|
table.insert(names, name)
|
||||||
|
|||||||
Binary file not shown.
|
Before Width: | Height: | Size: 150 B After Width: | Height: | Size: 114 B |
BIN
res/textures/gui/module.png
Normal file
BIN
res/textures/gui/module.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 150 B |
@ -94,8 +94,9 @@ std::unique_ptr<Content> ContentBuilder::build() {
|
|||||||
def->rt.surfaceReplacement = content->blocks.require(def->surfaceReplacement).rt.id;
|
def->rt.surfaceReplacement = content->blocks.require(def->surfaceReplacement).rt.id;
|
||||||
if (def->properties == nullptr) {
|
if (def->properties == nullptr) {
|
||||||
def->properties = dv::object();
|
def->properties = dv::object();
|
||||||
def->properties["name"] = def->name;
|
|
||||||
}
|
}
|
||||||
|
def->properties["name"] = def->name;
|
||||||
|
def->properties["script-file"] = def->scriptFile;
|
||||||
}
|
}
|
||||||
|
|
||||||
for (ItemDef* def : itemDefsIndices) {
|
for (ItemDef* def : itemDefsIndices) {
|
||||||
@ -104,6 +105,7 @@ std::unique_ptr<Content> ContentBuilder::build() {
|
|||||||
def->properties = dv::object();
|
def->properties = dv::object();
|
||||||
}
|
}
|
||||||
def->properties["name"] = def->name;
|
def->properties["name"] = def->name;
|
||||||
|
def->properties["script-file"] = def->scriptFile;
|
||||||
}
|
}
|
||||||
|
|
||||||
for (auto& [name, def] : content->generators.getDefs()) {
|
for (auto& [name, def] : content->generators.getDefs()) {
|
||||||
|
|||||||
@ -394,6 +394,7 @@ void ContentLoader::loadBlock(
|
|||||||
if (def.hidden && def.pickingItem == def.name + BLOCK_ITEM_SUFFIX) {
|
if (def.hidden && def.pickingItem == def.name + BLOCK_ITEM_SUFFIX) {
|
||||||
def.pickingItem = CORE_EMPTY;
|
def.pickingItem = CORE_EMPTY;
|
||||||
}
|
}
|
||||||
|
def.scriptFile = pack->id + ":scripts/" + def.scriptName + ".lua";
|
||||||
}
|
}
|
||||||
|
|
||||||
void ContentLoader::loadItem(
|
void ContentLoader::loadItem(
|
||||||
@ -452,6 +453,8 @@ void ContentLoader::loadItem(
|
|||||||
def.emission[1] = emissionarr[1].asNumber();
|
def.emission[1] = emissionarr[1].asNumber();
|
||||||
def.emission[2] = emissionarr[2].asNumber();
|
def.emission[2] = emissionarr[2].asNumber();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
def.scriptFile = pack->id + ":scripts/" + def.scriptName + ".lua";
|
||||||
}
|
}
|
||||||
|
|
||||||
void ContentLoader::loadEntity(
|
void ContentLoader::loadEntity(
|
||||||
@ -865,7 +868,7 @@ static void load_scripts(Content& content, ContentUnitDefs<T>& units) {
|
|||||||
runtime->getEnvironment(),
|
runtime->getEnvironment(),
|
||||||
name,
|
name,
|
||||||
scriptfile,
|
scriptfile,
|
||||||
pack.id + ":scripts/" + def->scriptName + ".lua",
|
def->scriptFile,
|
||||||
def->rt.funcsset
|
def->rt.funcsset
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|||||||
@ -59,6 +59,8 @@ struct ItemDef {
|
|||||||
|
|
||||||
std::string modelName = name + ".model";
|
std::string modelName = name + ".model";
|
||||||
|
|
||||||
|
std::string scriptFile;
|
||||||
|
|
||||||
struct {
|
struct {
|
||||||
itemid_t id;
|
itemid_t id;
|
||||||
blockid_t placingBlock;
|
blockid_t placingBlock;
|
||||||
|
|||||||
@ -204,6 +204,8 @@ public:
|
|||||||
/// @brief Block script name in blocks/ without extension
|
/// @brief Block script name in blocks/ without extension
|
||||||
std::string scriptName = name.substr(name.find(':') + 1);
|
std::string scriptName = name.substr(name.find(':') + 1);
|
||||||
|
|
||||||
|
std::string scriptFile;
|
||||||
|
|
||||||
/// @brief Block will be used instead of this if generated on surface
|
/// @brief Block will be used instead of this if generated on surface
|
||||||
std::string surfaceReplacement = name;
|
std::string surfaceReplacement = name;
|
||||||
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user