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();