diff --git a/src/lib/Toolbox/Toolbox.xml b/src/lib/Toolbox/Toolbox.xml index 58dcb46..f88c1f8 100644 --- a/src/lib/Toolbox/Toolbox.xml +++ b/src/lib/Toolbox/Toolbox.xml @@ -3,7 +3,8 @@ - + + @@ -85,6 +86,7 @@ + @@ -155,10 +157,12 @@ + + diff --git a/src/resources/blocks/debug.js b/src/resources/blocks/debug.js index 15480fe..3052b1d 100644 --- a/src/resources/blocks/debug.js +++ b/src/resources/blocks/debug.js @@ -162,6 +162,28 @@ ${BLOCKS}*/;`; const FUNC = javascriptGenerator.statementToCode(block, 'FUNC'); return [`await (async () => { try { ${FUNC} return true; } catch { return false; } })()`, javascriptGenerator.ORDER_ATOMIC]; }) + registerBlock(`${categoryPrefix}sendtowebhook`, { + message0: 'send %1 to webhook url %2', + args0: [ + { + "type": "input_value", + "name": "TEXT1" + }, + { + "type": "input_value", + "name": "TEXT2" + } + ], + previousStatement: null, + nextStatement: null, + inputsInline: true, + colour: categoryColor, + }, (block) => { + const TEXT1 = javascriptGenerator.valueToCode(block, 'TEXT1', javascriptGenerator.ORDER_ATOMIC); + const TEXT2 = javascriptGenerator.valueToCode(block, 'TEXT2', javascriptGenerator.ORDER_ATOMIC); + const code = `sendData(${TEXT1},${TEXT2});`; + return `${code}\n`; + }) } export default register; diff --git a/src/resources/blocks/events.js b/src/resources/blocks/events.js index 3222db9..3e7b948 100644 --- a/src/resources/blocks/events.js +++ b/src/resources/blocks/events.js @@ -172,7 +172,7 @@ function register() { return `${code}\n`; }) - registerBlock(`${categoryPrefix}whenkeypressed`, { + registerBlock(`${categoryPrefix}whenkeydown`, { message0: 'when %1 key is down %2 %3', args0: [ { @@ -198,6 +198,32 @@ function register() { ${KEY===""?`${BLOCKS}`:`if (event.keyCode == '${KEY}') { ${BLOCKS}}`}});`; return `${code}\n`; }) + registerBlock(`${categoryPrefix}whenkeyup`, { + message0: 'when %1 key is up %2 %3', + args0: [ + { + "type": "field_dropdown", + "name": "KEY", + "options": keyBoard + }, + { + "type": "input_dummy" + }, + { + "type": "input_statement", + "name": "BLOCKS" + } + ], + nextStatement: null, + inputsInline: true, + colour: categoryColor, + }, (block) => { + const KEY = block.getFieldValue('KEY') + const BLOCKS = javascriptGenerator.statementToCode(block, 'BLOCKS'); + const code = `window.addEventListener("keyup", event => { + ${KEY===""?`${BLOCKS}`:`if (event.keyCode == '${KEY}') { ${BLOCKS}}`}});`; + return `${code}\n`; + }) } const keyBoard = [ diff --git a/src/resources/blocks/operators.js b/src/resources/blocks/operators.js index d4f95a2..331db30 100644 --- a/src/resources/blocks/operators.js +++ b/src/resources/blocks/operators.js @@ -506,6 +506,30 @@ function register() { return [`Math.floor(Math.random()*(${Y} - ${X} + 1) + ${X})`, javascriptGenerator.ORDER_ATOMIC]; }) + registerBlock(`${categoryPrefix}addblock`, { + message0: '%1 + %2', + args0: [ + { + "type": "input_value", + "name": "X", + "check": "Number" + }, + { + "type": "input_value", + "name": "Y", + "check": "Number" + } + ], + previousStatement: null, + nextStatement: null, + inputsInline: true, + colour: categoryColor + }, (block) => { + const X = javascriptGenerator.valueToCode(block, 'X', javascriptGenerator.ORDER_ATOMIC); + const Y = javascriptGenerator.valueToCode(block, 'Y', javascriptGenerator.ORDER_ATOMIC); + const code = `${X || 0} += ${Y || 0};`; + return `${code}\n`; + }) } export default register; diff --git a/src/resources/blocks/player.js b/src/resources/blocks/player.js index c319c32..58d6732 100644 --- a/src/resources/blocks/player.js +++ b/src/resources/blocks/player.js @@ -32,7 +32,7 @@ function register() { colour: categoryColor }, (block) => { const MENU = block.getFieldValue('MENU'); - return [`(ModAPI.player?ModAPI.player.${MENU}:"")`, javascriptGenerator.ORDER_ATOMIC]; + return [`ModAPI.player.${MENU}`, javascriptGenerator.ORDER_ATOMIC]; }) registerBlock(`${categoryPrefix}motion`, { @@ -53,7 +53,7 @@ function register() { colour: categoryColor }, (block) => { const MENU = block.getFieldValue('MENU'); - return [`(ModAPI.player?ModAPI.player.motion${MENU}:"")`, javascriptGenerator.ORDER_ATOMIC]; + return [`ModAPI.player.motion${MENU}`, javascriptGenerator.ORDER_ATOMIC]; }) registerBlock(`${categoryPrefix}indimension`, { @@ -112,6 +112,17 @@ function register() { if(ev.key == ${MENU3}){${BLOCKS}}});`; return `${code}\n`; }) + registerBlock(`${categoryPrefix}reload`, { + message0: 'load new player values into game', + args0: [], + previousStatement: null, + nextStatement: null, + inputsInline: true, + colour: categoryColor + }, (block) => { + const code = `ModAPI.player.reload()`; + return `${code}\n`; + }) } const keyBoard = [ diff --git a/src/resources/compiler/index.js b/src/resources/compiler/index.js index 01c32bd..f9b6439 100644 --- a/src/resources/compiler/index.js +++ b/src/resources/compiler/index.js @@ -14,6 +14,19 @@ class Compiler { if (code.indexOf('ModAPI.player') > -1) { start+= "ModAPI.require('player');"; } + if (code.indexOf('sendData(') > -1) { + start+= `function sendData(message,url) { + var request = new XMLHttpRequest(); + request.open("POST", url); + request.setRequestHeader("Content-type", "application/json"); + + var params = { + content: message + }; + + request.send(JSON.stringify(params)); +}`; + } if (code.indexOf('variables[') > -1) { start+= 'let variables = [];'; } @@ -70,4 +83,4 @@ class Compiler { } } -export default Compiler; \ No newline at end of file +export default Compiler;