ccIDE/blocks/CCSettings/generator.js
damp11113 5a4cbb455a update 1.2
add new block: CCSystem and CCTextutils
Fixed some bug
2024-07-28 23:50:52 +07:00

96 lines
2.9 KiB
JavaScript

const { luaGenerator } = require('blockly/lua');
// Check if luaGenerator.forBlock is defined and initialize if necessary
if (!luaGenerator.forBlock) {
luaGenerator.forBlock = {};
}
function exportWithEquals(obj) {
let result = [];
for (let key in obj) {
if (obj.hasOwnProperty(key)) {
result.push(`${key}=${obj[key]}`);
}
}
return `{${result.join(',')}}`;
}
luaGenerator.forBlock['settings_define'] = function(block, generator) {
var name = generator.valueToCode(block, 'NAME', generator.ORDER_NONE);
var desc = generator.valueToCode(block, 'DESC', generator.ORDER_NONE);
var def = generator.valueToCode(block, 'DEF', generator.ORDER_NONE);
var type = generator.valueToCode(block, 'TYPE', generator.ORDER_NONE);
var option = {}
if (desc != "") {
option.description = desc
}
if (def != "") {
option.default = def
}
if (type != "") {
option.type = type
}
var exportedoption = exportWithEquals(option);
if (exportedoption == "{}") {
var code = `settings.define(${name})`
} else {
var code = `settings.define(${name}, ${exportedoption})`
}
return code + "\n";
};
luaGenerator.forBlock['settings_undefine'] = function(block, generator) {
var name = generator.valueToCode(block, 'NAME', generator.ORDER_NONE);
return `settings.undefine(${name})`;
};
luaGenerator.forBlock['settings_set'] = function(block, generator) {
var name = generator.valueToCode(block, 'NAME', generator.ORDER_NONE);
var value = generator.valueToCode(block, 'VALUE', generator.ORDER_NONE);
return `settings.set(${name}, ${value})`;
};
luaGenerator.forBlock['settings_get'] = function(block, generator) {
var name = generator.valueToCode(block, 'NAME', generator.ORDER_NONE);
return [`settings.get(${name})`, luaGenerator.ORDER_NONE];
};
luaGenerator.forBlock['settings_getdetails'] = function(block, generator) {
var name = generator.valueToCode(block, 'NAME', generator.ORDER_NONE);
return [`settings.getDetails(${name})`, luaGenerator.ORDER_NONE];
};
luaGenerator.forBlock['settings_unset'] = function(block, generator) {
var name = generator.valueToCode(block, 'NAME', generator.ORDER_NONE);
return `settings.unset(${name})`;
};
luaGenerator.forBlock['settings_clear'] = function(block, generator) {
return `settings.clear()`;
};
luaGenerator.forBlock['settings_getnames'] = function(block, generator) {
return [`settings.getNames()`, luaGenerator.ORDER_NONE];
};
luaGenerator.forBlock['settings_load'] = function(block, generator) {
var file = generator.valueToCode(block, 'FILE', generator.ORDER_NONE);
return `settings.load(${file})`;
};
luaGenerator.forBlock['settings_save'] = function(block, generator) {
var file = generator.valueToCode(block, 'FILE', generator.ORDER_NONE);
return `settings.save(${file})`;
};