ccIDE/blocks/CCSystem/generator.js
damp11113 9990bc3c03 update 1.2.1
Add new 3 blocks library
NativeIO CCKey and CCDisk
2024-07-29 16:46:16 +07:00

130 lines
4.2 KiB
JavaScript

// this file not for generator only
const { luaGenerator } = require('blockly/lua');
// Check if luaGenerator.forBlock is defined and initialize if necessary
if (!luaGenerator.forBlock) {
luaGenerator.forBlock = {};
}
luaGenerator.forBlock['sysos_pullevent'] = function(block, generator) {
var event = generator.valueToCode(block, 'EVENT', generator.ORDER_ATOMIC);
if (event == "'All'") {
return [`os.pullEvent()`, luaGenerator.ORDER_NONE];
} else {
return [`os.pullEvent(${event})`, luaGenerator.ORDER_NONE];
}
};
luaGenerator.forBlock['sysos_pullrawevent'] = function(block, generator) {
var event = generator.valueToCode(block, 'EVENT', generator.ORDER_ATOMIC);
if (event == "'All'") {
return [`os.pullEventRaw()`, luaGenerator.ORDER_NONE];
} else {
return [`os.pullEventRaw(${event})`, luaGenerator.ORDER_NONE];
}
};
luaGenerator.forBlock['sysos_version'] = function(block, generator) {
return [`os.version()`, luaGenerator.ORDER_NONE];
};
luaGenerator.forBlock['sysos_run'] = function(block, generator) {
var env = generator.valueToCode(block, 'ENV', generator.ORDER_ATOMIC) || "{}";
var run = generator.valueToCode(block, 'RUN', generator.ORDER_ATOMIC);
var args = generator.valueToCode(block, 'ARGS', generator.ORDER_ATOMIC);
if (args == "") {
return `os.run(${env}, ${run})\n`;
} else {
return `os.run(${env}, ${run}, ${args})\n`;
}
};
luaGenerator.forBlock['sysos_queue_event'] = function(block, generator) {
var event = generator.valueToCode(block, 'EVENT', generator.ORDER_ATOMIC);
var args = generator.valueToCode(block, 'ARGS', generator.ORDER_ATOMIC);
if (args == "") {
return `os.queueEvent(${event})\n`;
} else {
return `os.queueEvent(${event}, ${args})\n`;
}
};
luaGenerator.forBlock['sysos_start_timer'] = function(block, generator) {
var time = generator.valueToCode(block, 'TIME', generator.ORDER_ATOMIC);
return [`os.queueEvent(${time})`, luaGenerator.ORDER_NONE];
};
luaGenerator.forBlock['sysos_cancel_timer'] = function(block, generator) {
var id = generator.valueToCode(block, 'ID', generator.ORDER_ATOMIC);
return `os.cancelTimer(${id}\n`;
};
luaGenerator.forBlock['sysos_set_alarm'] = function(block, generator) {
var time = generator.valueToCode(block, 'TIME', generator.ORDER_ATOMIC);
return [`os.setAlarm(${time})`, luaGenerator.ORDER_NONE];
};
luaGenerator.forBlock['sysos_cancel_alarm'] = function(block, generator) {
var id = generator.valueToCode(block, 'ID', generator.ORDER_ATOMIC);
return `os.cancelAlarm(${id})\n`;
};
luaGenerator.forBlock['sysos_shutdown'] = function(block, generator) {
return `os.shutdown()`
};
luaGenerator.forBlock['sysos_reboot'] = function(block, generator) {
return `os.reboot()`
};
luaGenerator.forBlock['sysos_get_computer_id'] = function(block, generator) {
return [`os.getComputerID()`, luaGenerator.ORDER_NONE];
};
luaGenerator.forBlock['sysos_get_computer_label'] = function(block, generator) {
return [`os.getComputerLabel()`, luaGenerator.ORDER_NONE];
};
luaGenerator.forBlock['sysos_set_computer_label'] = function(block, generator) {
var label = generator.valueToCode(block, 'LABEL', generator.ORDER_ATOMIC);
return `os.setComputerLabel(${label})\n`;
};
luaGenerator.forBlock['sysos_clock'] = function(block, generator) {
return [`os.clock()`, luaGenerator.ORDER_NONE];
};
luaGenerator.forBlock['sysos_time'] = function(block, generator) {
var locate = block.getFieldValue('LOCATE');
return [`os.time("${locate}")`, generator.ORDER_ATOMIC];
};
luaGenerator.forBlock['sysos_day'] = function(block, generator) {
var locate = block.getFieldValue('LOCATE');
return [`os.day("${locate}")`, generator.ORDER_ATOMIC];
};
luaGenerator.forBlock['sysos_epoch'] = function(block, generator) {
var locate = block.getFieldValue('LOCATE');
return [`os.epoch("${locate}")`, generator.ORDER_ATOMIC];
};
luaGenerator.forBlock['sysos_date'] = function(block, generator) {
var format = generator.valueToCode(block, 'FORMAT', generator.ORDER_ATOMIC);
var time = generator.valueToCode(block, 'TIME', generator.ORDER_ATOMIC);
return [`os.date(${format}, ${time})`, luaGenerator.ORDER_NONE];
};