From 53fc1b5de0bcfde7d0f993b8d44c19347ab6d975 Mon Sep 17 00:00:00 2001
From: sussy layers dev <72522395+jwklong@users.noreply.github.com>
Date: Sat, 11 Nov 2023 11:04:33 +0000
Subject: [PATCH] conversions category
---
src/lib/Toolbox/Toolbox.xml | 6 ++
src/resources/blocks/conversions.js | 88 +++++++++++++++++++++++++++++
src/routes/+page.svelte | 2 +
3 files changed, 96 insertions(+)
create mode 100644 src/resources/blocks/conversions.js
diff --git a/src/lib/Toolbox/Toolbox.xml b/src/lib/Toolbox/Toolbox.xml
index 4a2d816..71a53fd 100644
--- a/src/lib/Toolbox/Toolbox.xml
+++ b/src/lib/Toolbox/Toolbox.xml
@@ -51,6 +51,12 @@
+
+
+
+
+
+
diff --git a/src/resources/blocks/conversions.js b/src/resources/blocks/conversions.js
new file mode 100644
index 0000000..d170ac4
--- /dev/null
+++ b/src/resources/blocks/conversions.js
@@ -0,0 +1,88 @@
+import javascriptGenerator from '../javascriptGenerator';
+import registerBlock from '../register';
+
+const categoryPrefix = 'conversions_';
+const categoryColor = '#8BC059';
+
+function register() {
+ // tonumber
+ registerBlock(`${categoryPrefix}tonumber`, {
+ message0: "%1 to number",
+ args0: [
+ {
+ "type": "input_value",
+ "name": "VAL"
+ },
+ ],
+ output: "Number",
+ inputsInline: true,
+ colour: categoryColor
+ }, (block) => {
+ const VAL = javascriptGenerator.valueToCode(block, 'VAL', javascriptGenerator.ORDER_ATOMIC);
+
+ return [`Number(${VAL})`, javascriptGenerator.ORDER_ATOMIC];
+ })
+
+ // tostring
+ registerBlock(`${categoryPrefix}tostring`, {
+ message0: "%1 to string",
+ args0: [
+ {
+ "type": "input_value",
+ "name": "VAL"
+ },
+ ],
+ output: "String",
+ inputsInline: true,
+ colour: categoryColor
+ }, (block) => {
+ const VAL = javascriptGenerator.valueToCode(block, 'VAL', javascriptGenerator.ORDER_ATOMIC);
+
+ return [`String(${VAL})`, javascriptGenerator.ORDER_ATOMIC];
+ })
+
+ // convert time lengths
+ registerBlock(`${categoryPrefix}time`, {
+ message0: "%1 %2 to %3",
+ args0: [
+ {
+ "type": "input_value",
+ "name": "VAL",
+ "check": "Number"
+ },
+ {
+ "type": "field_dropdown",
+ "name": "MENU1",
+ "options": [
+ [ "milliseconds", 1 ],
+ [ "seconds", 1000 ],
+ [ "minutes", 60000 ],
+ [ "hours", 3600000 ],
+ [ "days", 86400000 ],
+ ]
+ },
+ {
+ "type": "field_dropdown",
+ "name": "MENU2",
+ "options": [
+ [ "milliseconds", 1 ],
+ [ "seconds", 1000 ],
+ [ "minutes", 60000 ],
+ [ "hours", 3600000 ],
+ [ "days", 86400000 ],
+ ]
+ },
+ ],
+ output: "Number",
+ inputsInline: true,
+ colour: categoryColor
+ }, (block) => {
+ const VAL = javascriptGenerator.valueToCode(block, 'VAL', javascriptGenerator.ORDER_ATOMIC);
+ const MENU1 = block.getFieldValue('MENU1');
+ const MENU2 = block.getFieldValue('MENU2');
+
+ return [`(${VAL} * ${MENU1} / ${MENU2})`, javascriptGenerator.ORDER_ATOMIC];
+ })
+}
+
+export default register;
diff --git a/src/routes/+page.svelte b/src/routes/+page.svelte
index 1008546..23c8b48 100644
--- a/src/routes/+page.svelte
+++ b/src/routes/+page.svelte
@@ -57,6 +57,7 @@
import registerSound from "../resources/blocks/sound.js";
import registerLiterals from "../resources/blocks/literals.js";
import registerOperators from "../resources/blocks/operators.js";
+ import registerConversions from "../resources/blocks/conversions.js";
import registerVariables from "../resources/blocks/variables.js";
import registerBlocks from "../resources/blocks/blocks.js";
import registerDebug from "../resources/blocks/debug.js";
@@ -68,6 +69,7 @@
registerSensing();
registerLiterals();
registerOperators();
+ registerConversions();
registerVariables();
registerBlocks();
registerDebug();