From bfd3de1551d7884d10b6162631c68e3e6b89a95b Mon Sep 17 00:00:00 2001 From: Cristian Deenen Date: Tue, 16 Apr 2024 02:59:14 +0200 Subject: [PATCH] v3.1.0 --- MaterialPlane.js | 103 ++- changelog.md | 31 + img/.thumb/calPos.png.jpg | Bin 0 -> 11210 bytes img/.thumb/macro.png.jpg | Bin 0 -> 13180 bytes img/SOURCES.txt | 1 + img/calPos.png | Bin 0 -> 379372 bytes img/macro.png | Bin 0 -> 13234 bytes lang/en.json | 52 +- module.json | 2 +- src/{ => Communication}/websocket.js | 22 +- src/IRremote/IRremote.js | 3 +- src/IRtoken/IRtoken.js | 380 +++++----- src/IRtoken/tokenDebug.js | 221 ++++++ src/IRtoken/tokenHelpers.js | 403 +++++++++++ src/IRtoken/tokenMarker.js | 59 ++ src/IRtoken/tokenRuler.js | 195 ++++++ src/Misc/config.js | 857 +++++++++++++++++++++++ src/Misc/cursor.js | 99 +++ src/Misc/misc.js | 308 ++------ src/Misc/settings.js | 730 ++----------------- src/Pen/Functions/penDraw.js | 198 ++++++ src/Pen/Functions/penMacro.js | 33 + src/Pen/Functions/penPointer.js | 98 +++ src/Pen/Functions/penRuler.js | 70 ++ src/Pen/Functions/penTarget.js | 24 + src/Pen/Functions/penTemplate.js | 162 +++++ src/Pen/Functions/penToken.js | 103 +++ src/Pen/pen.js | 735 ++++--------------- src/Pen/penMenu.js | 195 +++++- src/analyzeIR.js | 46 +- src/calibration.js | 446 +++++++++--- templates/calibrationProgressScreen.html | 194 +++-- templates/config.html | 191 +++-- 33 files changed, 3936 insertions(+), 2025 deletions(-) create mode 100644 img/.thumb/calPos.png.jpg create mode 100644 img/.thumb/macro.png.jpg create mode 100644 img/calPos.png create mode 100644 img/macro.png rename src/{ => Communication}/websocket.js (90%) create mode 100644 src/IRtoken/tokenDebug.js create mode 100644 src/IRtoken/tokenHelpers.js create mode 100644 src/IRtoken/tokenMarker.js create mode 100644 src/IRtoken/tokenRuler.js create mode 100644 src/Misc/config.js create mode 100644 src/Misc/cursor.js create mode 100644 src/Pen/Functions/penDraw.js create mode 100644 src/Pen/Functions/penMacro.js create mode 100644 src/Pen/Functions/penPointer.js create mode 100644 src/Pen/Functions/penRuler.js create mode 100644 src/Pen/Functions/penTarget.js create mode 100644 src/Pen/Functions/penTemplate.js create mode 100644 src/Pen/Functions/penToken.js diff --git a/MaterialPlane.js b/MaterialPlane.js index 41efa6f..bea15c5 100644 --- a/MaterialPlane.js +++ b/MaterialPlane.js @@ -4,11 +4,12 @@ // ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// -import { registerSettings, mpConfig, onHwVariantChange } from "./src/Misc/settings.js"; -import { sendWS,startWebsocket } from "./src/websocket.js"; -import { calibrationProgressScreen, removeOverlay } from "./src/calibration.js"; -import { registerLayer, configureDebug, compareVersions, compatibleCore } from "./src/Misc/misc.js"; -import { initializeIRtokens, initializeCursors, setLastBaseAddress } from "./src/analyzeIR.js"; +import { registerSettings, onHwVariantChange } from "./src/Misc/settings.js"; +import { mpConfig } from "./src/Misc/config.js"; +import { sendWS, startWebsocket } from "./src/Communication/websocket.js"; +import { calibrationProgressScreen, removeOverlay, calOverlay } from "./src/calibration.js"; +import { registerLayer, configureDebug, compatibleCore } from "./src/Misc/misc.js"; +import { initializeIRtokens, initializeCursors, setLastBaseAddress, pen } from "./src/analyzeIR.js"; import { IRremote } from "./src/IRremote/IRremote.js"; import { analyzeTouch } from "./src/analyzeTouch.js"; @@ -23,7 +24,7 @@ let enableModule = false; export let configDialog; export let calibrationProgress; -export let hwVariant = 'Beta'; +export let hwVariant = 'Production'; export let hwFirmware; export let hwWebserver; export let msVersion; @@ -31,6 +32,8 @@ export let latestReleases = {}; export let irRemote = new IRremote(); +export let routingLibEnabled = false; + export const urls = [ { target: 'Module', @@ -67,6 +70,8 @@ Handlebars.registerHelper('ifNCond', function(v1, v2, options) { return options.fn(this); }); +//CONFIG.debug.hooks = true; + ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// // // Functions @@ -74,7 +79,6 @@ Handlebars.registerHelper('ifNCond', function(v1, v2, options) { ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// export function setHwVariant(v) { - return; if (hwVariant != v) { onHwVariantChange(v); } @@ -142,9 +146,11 @@ function checkKeys() { * Ready hook * Attempt to open the websocket */ -Hooks.on('ready', ()=>{ +Hooks.on('ready', async ()=>{ + // configDialog.setConfigOpen(true); + // configDialog.render(true); + if (game.version.split('.')[0] >= 11 && game.settings.get(moduleName,'device') == 'touch') { - console.warn("") let d = new Dialog({ title: "Material Plane: Incompatibility", content: "

The touch functionality of Material Plane is incompatible with Foundry V11.
You should downgrade to Foundry V10 if you want to use the touch functionality. If you ignore this message, expect weird behavior.

", @@ -171,8 +177,9 @@ Hooks.on('ready', ()=>{ return; } if ((enableModule || game.user.isGM) && game.settings.get(moduleName,'ConnectionMode') != "noConnect"){ - if (game.settings.get(moduleName,'device') == 'sensor') + if (game.settings.get(moduleName,'device') == 'sensor') { startWebsocket(); + } else { document.addEventListener('touchstart',function(e) {e.preventDefault(); analyzeTouch('start',e);}); document.addEventListener('touchmove',function(e) {e.preventDefault(); analyzeTouch('move',e);}); @@ -191,15 +198,6 @@ Hooks.on('ready', ()=>{ } } - if (!enableModule && !game.user.isGM) return; - - checkForUpdate('Module'); - checkForUpdate('SensorFirmware'); - checkForUpdate('SensorWebserver'); - checkForUpdate('MaterialCompanion'); - checkForUpdate('Base'); - checkForUpdate('Pen'); - game.socket.on(`module.MaterialPlane`, (payload) =>{ //console.log(payload); @@ -233,7 +231,6 @@ Hooks.on('ready', ()=>{ if (lastBaseAddress == base.value) base.style.color="green"; else base.style.color=""; } - } } } @@ -242,11 +239,49 @@ Hooks.on('ready', ()=>{ } } }); + + if (!enableModule && !game.user.isGM) return; + + checkForUpdate('Module'); + checkForUpdate('SensorFirmware'); + checkForUpdate('SensorWebserver'); + checkForUpdate('MaterialCompanion'); + checkForUpdate('Base'); + checkForUpdate('Pen'); if (game.user.isGM) game.settings.set(moduleName,'menuOpen',false); + let rulerSettings = await game.settings.get(moduleName,'tokenRuler'); + if (rulerSettings.mode == undefined) rulerSettings.mode = 'disabled'; + if (rulerSettings.stop == undefined) rulerSettings.stop = 'tokenDrop'; + if (rulerSettings.distance == undefined) rulerSettings.distance = 2; + game.settings.set(moduleName,'tokenRuler',rulerSettings); + + const routingLib = game.modules.get('routinglib'); + if (routingLib && routingLib.active) routingLibEnabled = true; + initializeIRtokens(); initializeCursors(); + + Hooks.on('activateDrawingsLayer', layer => { + const drawings = layer.placeables; + + for (let drawing of drawings) { + pen.drawingTarget.addTarget(drawing); + } + }) + + Hooks.on('refreshDrawing', drawing => { + pen.drawingTarget.updateTarget(drawing); + }); + + Hooks.on('drawDrawing', drawing => { + pen.drawingTarget.addTarget(drawing); + }) + + Hooks.on('deleteDrawing', drawing => { + pen.drawingTarget.removeTarget(drawing); + }) }); Hooks.on("renderSidebarTab", (app, html) => { @@ -363,7 +398,31 @@ Hooks.on('renderPlayerList', (a,b, playerlist) => { const pl = playerlist.users.find(p => p._id == game.settings.get(moduleName,'ActiveUser')); if (pl == undefined) return; const html = `MP`; - document.querySelectorAll(`[data-tooltip="${pl.displayName}"]`)[0].innerHTML+=html; + if (compatibleCore('11.0')) + document.querySelectorAll(`[data-tooltip="${pl.displayName}"]`)[0].innerHTML+=html; + //else + // document.querySelectorAll(`[data-user-id="${pl._id}"]`)[0].innerHTML+=html; +}); + +//let scaleOld; +let viewPositionOld; + +Hooks.on('canvasPan', (canvas, viewPosition) => { + if (pen == undefined) return; + if (viewPositionOld == undefined) { + viewPositionOld = viewPosition; + return; + } + + if (viewPosition.scale-viewPositionOld.scale == 0) { + pen.menu.moveMenu({x:viewPosition.x-viewPositionOld.x, y:viewPosition.y-viewPositionOld.y}, true) + } + else { + pen.menu.drawMenu(undefined); + } + viewPositionOld = viewPosition; + + if (calOverlay != undefined) calOverlay.update(); }); export async function checkForUpdate(reqType) { @@ -395,4 +454,4 @@ export async function checkForUpdate(reqType) { latestReleases.materialCompanion = version; } }); -} +} \ No newline at end of file diff --git a/changelog.md b/changelog.md index 8faee88..a6ab1b1 100644 --- a/changelog.md +++ b/changelog.md @@ -1,4 +1,35 @@ # Changelog Material Plane Foundry Module +### v3.1.0 - 16-04-2024 +Fixes: + + +Additions: + + +Other: + + ### v3.0.2 - 20-10-2023 Fixes: