update 1.1.3 new block function for table and new block

new block: CCColors
This commit is contained in:
dharm pimsen 2024-07-18 21:24:36 +07:00
parent aee88bcdae
commit 18200b2b51
7 changed files with 221 additions and 27 deletions

View File

@ -0,0 +1,63 @@
{
"colors_color_picker": {
"message0": "Color %1",
"args0": [
{
"type": "field_dropdown",
"name": "COLOR",
"options": [
["White", "colors.white"],
["Orange", "colors.orange"],
["Magenta", "colors.magenta"],
["Light blue", "colors.lightBlue"],
["Yellow", "colors.yellow"],
["Lime", "colors.lime"],
["Pink", "colors.pink"],
["Gray", "colors.gray"],
["Light gray", "colors.lightGray"],
["Cyan", "colors.cyan"],
["Purple", "colors.purple"],
["Blue", "colors.blue"],
["Brown", "colors.brown"],
["Green", "colors.green"],
["Red", "colors.red"],
["Black", "colors.black"]
]
}
],
"output": "CCColors",
"colour": 192,
"tooltip": "Pick color value"
},
"colors_combine": {
"message0": "Combine color from %1",
"args0": [
{
"type": "input_value",
"name": "COLORARRAY",
"check": "Array"
}
],
"output": "CCColors",
"colour": 192,
"tooltip": "Combines a set of colors (or sets of colors) into a larger set."
},
"colors_subtract": {
"message0": "Subtract color %1 from %2",
"args0": [
{
"type": "input_value",
"name": "COLORARRAY",
"check": "Array"
},
{
"type": "input_value",
"name": "COLOR",
"check": "CCColors"
}
],
"output": "CCColors",
"colour": 192,
"tooltip": "Removes one or more colors (or sets of colors) from an initial set."
}
}

View File

@ -0,0 +1,26 @@
const { luaGenerator } = require('blockly/lua');
// Check if luaGenerator.forBlock is defined and initialize if necessary
if (!luaGenerator.forBlock) {
luaGenerator.forBlock = {};
}
luaGenerator.forBlock['colors_color_picker'] = function(block, generator) {
var color = block.getFieldValue('COLOR');
return [color, generator.ORDER_NONE];
};
luaGenerator.forBlock['colors_combine'] = function(block, generator) {
var colorArray = generator.valueToCode(block, 'COLORARRAY', generator.ORDER_ATOMIC);
return [`colors.combine(table.unpack(${colorArray}))`, generator.ORDER_NONE];
};
luaGenerator.forBlock['colors_subtract'] = function(block, generator) {
var colorArray = generator.valueToCode(block, 'COLORARRAY', generator.ORDER_ATOMIC);
var color = generator.valueToCode(block, 'COLOR', generator.ORDER_ATOMIC);
return [`colors.subtract(${color}, table.unpack(${colorArray}))`, generator.ORDER_NONE];
};

View File

@ -0,0 +1,22 @@
{
"name": "Colors",
"author": "DPSoftware Foundation",
"description": "Constants and functions for colour values",
"version": "0.5",
"category": "Display",
"keyword": "Colors",
"license": "GPL-3.0-or-later",
"peripherals": false,
"library": true,
"require_network": false,
"dependencies": {},
"design_for_computer": {
"basic": false,
"adv": true,
"command": false,
"pocket": false,
"advpocket": true,
"turtle": false,
"advturtle": true
}
}

View File

@ -0,0 +1,7 @@
<xml id="toolbox" style="display: none;">
<category name="Colors" colour="192">
<block type="colors_color_picker"></block>
<block type="colors_combine"></block>
<block type="colors_subtract"></block>
</category>
</xml>

View File

@ -15,7 +15,7 @@
"helpUrl": ""
},
"sys_utils_table_variable_pack": {
"message0": "Pack %1 to Table",
"message0": "Pack args %1 to Table",
"args0": [
{
"type": "input_value",
@ -24,10 +24,10 @@
}
],
"output": "Array",
"colour": 220
"colour": 260
},
"sys_utils_get_value_from_table_with_index": {
"message0": "UnPack %1 to Value with index/key %2",
"message0": "UnPack args %1 to Value with index/key %2",
"args0": [
{
"type": "input_value",
@ -41,7 +41,7 @@
}
],
"output": null,
"colour": 220
"colour": 260
},
"sys_utils_get_type": {
"message0": "Get type of %1",
@ -53,5 +53,49 @@
],
"output": "String",
"colour": 220
},
"sys_table_unpack_to_args": {
"message0": "UnPack table %1 to Args",
"args0": [
{
"type": "input_value",
"name": "TABLE",
"check": "Array"
}
],
"output": "Multiple",
"colour": 260
},
"sys_table_add_key_value": {
"message0": "Add key %1 with data %2",
"args0": [
{
"type": "input_value",
"name": "KEY",
"check": ["String", "Number"]
},
{
"type": "input_value",
"name": "VALUE"
}
],
"output": "Array_Pair",
"colour": 260
},
"sys_table_append_data": {
"message0": "Append %1 to table %2",
"args0": [
{
"type": "input_value",
"name": "DATA"
},
{
"type": "input_value",
"name": "TABLE",
"check": "Array"
}
],
"output": "Array",
"colour": 260
}
}

View File

@ -16,7 +16,7 @@ luaGenerator.forBlock['sys_sleep'] = function(block, generator) {
luaGenerator.forBlock['sys_utils_table_variable_pack'] = function(block, generator) {
var args = generator.valueToCode(block, 'RETURN_ARGS', generator.ORDER_NONE);
return [`{${args}}`, luaGenerator.ORDER_NONE];
return [`table.pack(${arg})`, luaGenerator.ORDER_NONE];
};
luaGenerator.forBlock['sys_utils_get_value_from_table_with_index'] = function(block, generator) {
@ -31,3 +31,30 @@ luaGenerator.forBlock['sys_utils_get_type'] = function(block, generator) {
return [`type(${input})`, luaGenerator.ORDER_NONE];
};
luaGenerator.forBlock['sys_table_unpack_to_args'] = function(block, generator) {
var table = generator.valueToCode(block, 'TABLE', generator.ORDER_NONE);
return [`table.unpack(${table})`, luaGenerator.ORDER_NONE];
};
luaGenerator.forBlock['sys_table_add_key_value'] = function(block, generator) {
var key = generator.valueToCode(block, 'KEY', generator.ORDER_NONE);
var value = generator.valueToCode(block, 'VALUE', generator.ORDER_NONE);
return [`[${key}] = ${value}`, luaGenerator.ORDER_NONE];
};
luaGenerator.forBlock['sys_table_append_data'] = function(block, generator) {
var data = generator.valueToCode(block, 'DATA', generator.ORDER_NONE);
var table = generator.valueToCode(block, 'TABLE', generator.ORDER_NONE);
return `table.insert(${table}, ${data})\n`;
};
luaGenerator.forBlock['sys_table_append_data'] = function(block, generator) {
var data = generator.valueToCode(block, 'DATA', generator.ORDER_NONE);
var table = generator.valueToCode(block, 'TABLE', generator.ORDER_NONE);
return `table.insert(${table}, ${data})\n`;
};

View File

@ -1,14 +1,19 @@
<xml id="toolbox" style="display: none;">
<category name="Utils" colour="220">
<block type="sys_utils_table_variable_pack"></block>
<block type="sys_utils_get_value_from_table_with_index">
<value name="INDEX">
<shadow type="math_number">
<field name="NUM">1</field>
<category name="Basic" colour="110">
<block type="text_print">
<value name="TEXT">
<shadow type="text">
<field name="TEXT">abc</field>
</shadow>
</value>
</block>
<block type="text_prompt_ext">
<value name="TEXT">
<shadow type="text">
<field name="TEXT">abc</field>
</shadow>
</value>
</block>
<block type="sys_utils_get_type"></block>
</category>
<category name="Control" colour="38">
<block type="sys_sleep">
@ -246,21 +251,7 @@
<shadow type="text"></shadow>
</value>
</block>
<label text="Input/Output:" web-class="ioLabel"></label>
<block type="text_print">
<value name="TEXT">
<shadow type="text">
<field name="TEXT">abc</field>
</shadow>
</value>
</block>
<block type="text_prompt_ext">
<value name="TEXT">
<shadow type="text">
<field name="TEXT">abc</field>
</shadow>
</value>
</block>
</category>
<category name="Table" colour="260">
<block type="lists_create_with">
@ -313,6 +304,20 @@
</block>
<block type="lists_sort"></block>
<block type="lists_reverse"></block>
<block type="sys_utils_table_variable_pack"></block>
<block type="sys_utils_get_value_from_table_with_index">
<value name="INDEX">
<shadow type="math_number">
<field name="NUM">1</field>
</shadow>
</value>
</block>
<block type="sys_table_unpack_to_args"></block>
<block type="sys_table_add_key_value"></block>
<block type="sys_table_append_data"></block>
</category>
<category name="Utils" colour="220">
<block type="sys_utils_get_type"></block>
</category>
<sep></sep>
<category name="Variables" custom="VARIABLE" colour="330">