diff --git a/blocks/CCColors/block_design.json b/blocks/CCColors/block_design.json
new file mode 100644
index 0000000..823515e
--- /dev/null
+++ b/blocks/CCColors/block_design.json
@@ -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."
+ }
+}
diff --git a/blocks/CCColors/generator.js b/blocks/CCColors/generator.js
new file mode 100644
index 0000000..cf79166
--- /dev/null
+++ b/blocks/CCColors/generator.js
@@ -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];
+};
+
diff --git a/blocks/CCColors/index.json b/blocks/CCColors/index.json
new file mode 100644
index 0000000..97ab426
--- /dev/null
+++ b/blocks/CCColors/index.json
@@ -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
+ }
+}
diff --git a/blocks/CCColors/toolbox.xml b/blocks/CCColors/toolbox.xml
new file mode 100644
index 0000000..9a2f8fa
--- /dev/null
+++ b/blocks/CCColors/toolbox.xml
@@ -0,0 +1,7 @@
+
+
+
+
+
+
+
diff --git a/src/module_block_design.json b/src/module_block_design.json
index 678b457..d057aac 100644
--- a/src/module_block_design.json
+++ b/src/module_block_design.json
@@ -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
}
}
diff --git a/src/module_generator.js b/src/module_generator.js
index 1c4e552..ae4d8b4 100644
--- a/src/module_generator.js
+++ b/src/module_generator.js
@@ -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) {
@@ -30,4 +30,31 @@ luaGenerator.forBlock['sys_utils_get_type'] = function(block, generator) {
var input = generator.valueToCode(block, 'INPUT', generator.ORDER_NONE);
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`;
};
\ No newline at end of file
diff --git a/src/toolbox.xml b/src/toolbox.xml
index 5d5f17a..66c5cc7 100644
--- a/src/toolbox.xml
+++ b/src/toolbox.xml
@@ -1,14 +1,19 @@
-
-
-
-
-
- 1
+
+
+
+
+ abc
+
+
+
+
+
+
+ abc
-
@@ -246,21 +251,7 @@
-
-
-
-
- abc
-
-
-
-
-
-
- abc
-
-
-
+
@@ -313,6 +304,20 @@
+
+
+
+
+ 1
+
+
+
+
+
+
+
+
+