if (typeof gdjs.evtsExt__MQTT__connect !== "undefined") { gdjs.evtsExt__MQTT__connect.registeredGdjsCallbacks.forEach(callback => gdjs._unregisterCallback(callback) ); } gdjs.evtsExt__MQTT__connect = {}; gdjs.evtsExt__MQTT__connect.idToCallbackMap = new Map(); gdjs.evtsExt__MQTT__connect.userFunc0xe51bd8 = function GDJSInlineCode(runtimeScene, eventsFunctionContext) { "use strict"; // Parse settings const settings = eventsFunctionContext.getArgument("settings"); let settingsParsed; if (settings.length > 2) try { settingsParsed = JSON.parse(settings); } catch (e) { settingsParsed = {} console.error("Invalid settings: ", settings, ", Error:", e); }; // Connect to broker gdjs.evtTools.mqtt.connection = mqtt.connect( (eventsFunctionContext.getArgument("secure") ? "wss://" : "ws://") + eventsFunctionContext.getArgument("host"), settingsParsed ); // Set up listeners gdjs.evtTools.mqtt.connection.on("message", (channel, message) => { if (typeof gdjs.evtTools.mqtt.events[channel] === undefined) { gdjs.evtTools.mqtt.events[channel] = { loss: false, data: [message], }; return; } const mqttEvent = gdjs.evtTools.mqtt.events[channel]; if (mqttEvent.loss) { mqttEvent.data = message; } else { if (!Array.isArray(mqttEvent.data)) mqttEvent.data = []; mqttEvent.data.push(message); } }); gdjs.evtTools.mqtt.connection.on("error", function (e) { gdjs.evtTools.mqtt.lastError = e; }); }; gdjs.evtsExt__MQTT__connect.eventsList0 = function(runtimeScene, eventsFunctionContext) { { gdjs.evtsExt__MQTT__connect.userFunc0xe51bd8(runtimeScene, eventsFunctionContext); } }; gdjs.evtsExt__MQTT__connect.func = function(runtimeScene, host, settings, secure, parentEventsFunctionContext) { let scopeInstanceContainer = null; var eventsFunctionContext = { _objectsMap: { }, _objectArraysMap: { }, _behaviorNamesMap: { }, globalVariablesForExtension: runtimeScene.getGame().getVariablesForExtension("MQTT"), sceneVariablesForExtension: runtimeScene.getScene().getVariablesForExtension("MQTT"), localVariables: [], getObjects: function(objectName) { return eventsFunctionContext._objectArraysMap[objectName] || []; }, getObjectsLists: function(objectName) { return eventsFunctionContext._objectsMap[objectName] || null; }, getBehaviorName: function(behaviorName) { return eventsFunctionContext._behaviorNamesMap[behaviorName] || behaviorName; }, createObject: function(objectName) { const objectsList = eventsFunctionContext._objectsMap[objectName]; if (objectsList) { const object = parentEventsFunctionContext && !(scopeInstanceContainer && scopeInstanceContainer.isObjectRegistered(objectName)) ? parentEventsFunctionContext.createObject(objectsList.firstKey()) : runtimeScene.createObject(objectsList.firstKey()); if (object) { objectsList.get(objectsList.firstKey()).push(object); if (!(scopeInstanceContainer && scopeInstanceContainer.isObjectRegistered(objectName))) { eventsFunctionContext._objectArraysMap[objectName].push(object); } } return object; } return null; }, getInstancesCountOnScene: function(objectName) { const objectsList = eventsFunctionContext._objectsMap[objectName]; let count = 0; if (objectsList) { for(const objectName in objectsList.items) count += parentEventsFunctionContext && !(scopeInstanceContainer && scopeInstanceContainer.isObjectRegistered(objectName)) ? parentEventsFunctionContext.getInstancesCountOnScene(objectName) : runtimeScene.getInstancesCountOnScene(objectName); } return count; }, getLayer: function(layerName) { return runtimeScene.getLayer(layerName); }, getArgument: function(argName) { if (argName === "host") return host; if (argName === "settings") return settings; if (argName === "secure") return secure; return ""; }, getOnceTriggers: function() { return runtimeScene.getOnceTriggers(); } }; gdjs.evtsExt__MQTT__connect.eventsList0(runtimeScene, eventsFunctionContext); return; } gdjs.evtsExt__MQTT__connect.registeredGdjsCallbacks = [];