From 2947c54eb820c107800f3ca5a17cdfd0db5322c8 Mon Sep 17 00:00:00 2001 From: CDeenen Date: Mon, 28 Dec 2020 05:31:59 +0100 Subject: [PATCH] v1.2.0 --- MaterialDeck.js | 8 + README.md | 2 +- changelog.md | 23 +- img/external/.thumb/external.png.jpg | Bin 0 -> 5218 bytes img/external/.thumb/external@2x.png.jpg | Bin 0 -> 5218 bytes img/external/.thumb/fxmaster.png.jpg | Bin 0 -> 3363 bytes img/external/SOURCES.txt | 2 + img/external/external.png | Bin 0 -> 6981 bytes img/external/external@2x.png | Bin 0 -> 6981 bytes img/external/fxmaster.png | Bin 0 -> 14985 bytes img/other/.thumb/cogs.png.jpg | Bin 0 -> 4385 bytes img/other/.thumb/other.png.jpg | Bin 8300 -> 8318 bytes img/other/.thumb/other@2x.png.jpg | Bin 8300 -> 8318 bytes img/other/SOURCES.txt | 3 +- img/other/cogs.png | Bin 0 -> 17247 bytes img/other/darkness/.thumb/darkness.png.jpg | Bin 7669 -> 7687 bytes .../darkness/.thumb/decreasedarkness.png.jpg | Bin 6131 -> 6149 bytes .../darkness/.thumb/increasedarkness.png.jpg | Bin 5983 -> 6001 bytes img/other/darkness/darkness.png | Bin 4583 -> 14888 bytes img/other/darkness/decreasedarkness.png | Bin 7215 -> 16959 bytes img/other/darkness/increasedarkness.png | Bin 6231 -> 15185 bytes img/other/other.png | Bin 11045 -> 23318 bytes img/other/other@2x.png | Bin 11045 -> 23288 bytes lang/en.json | 5 +- module.json | 4 +- src/combattracker.js | 4 +- src/external.js | 234 ++++++++++++++++++ src/macro.js | 27 +- src/othercontrols.js | 26 +- src/streamDeck.js | 1 + src/token.js | 2 +- 31 files changed, 319 insertions(+), 22 deletions(-) create mode 100644 img/external/.thumb/external.png.jpg create mode 100644 img/external/.thumb/external@2x.png.jpg create mode 100644 img/external/.thumb/fxmaster.png.jpg create mode 100644 img/external/SOURCES.txt create mode 100644 img/external/external.png create mode 100644 img/external/external@2x.png create mode 100644 img/external/fxmaster.png create mode 100644 img/other/.thumb/cogs.png.jpg create mode 100644 img/other/cogs.png create mode 100644 src/external.js diff --git a/MaterialDeck.js b/MaterialDeck.js index 983f1e0..0a0ff14 100644 --- a/MaterialDeck.js +++ b/MaterialDeck.js @@ -7,6 +7,7 @@ import {CombatTracker} from "./src/combattracker.js"; import {PlaylistControl} from "./src/playlist.js"; import {SoundboardControl} from "./src/soundboard.js"; import {OtherControls} from "./src/othercontrols.js"; +import {ExternalModules} from "./src/external.js"; export var streamDeck; export var tokenControl; var move; @@ -15,6 +16,7 @@ export var combatTracker; export var playlistControl; export var soundboard; export var otherControls; +export var externalModules; export const moduleName = "MaterialDeck"; export var selectedTokenId; @@ -82,6 +84,8 @@ async function analyzeWSmessage(msg){ soundboard.update(settings,context); else if (action == 'other') otherControls.update(settings,context); + else if (action == 'external') + externalModules.update(settings,context); } else if (event == 'willDisappear'){ @@ -103,6 +107,8 @@ async function analyzeWSmessage(msg){ soundboard.keyPressDown(settings); else if (action == 'other') otherControls.keyPress(settings); + else if (action == 'external') + externalModules.keyPress(settings,context); } else if (event == 'keyUp'){ @@ -203,6 +209,7 @@ Hooks.once('ready', ()=>{ combatTracker = new CombatTracker(); playlistControl = new PlaylistControl(); otherControls = new OtherControls(); + externalModules = new ExternalModules(); let soundBoardSettings = game.settings.get(moduleName,'soundboardSettings'); @@ -320,6 +327,7 @@ Hooks.on('renderSidebarTab',()=>{ Hooks.on('updateScene',()=>{ if (enableModule == false || ready == false) return; otherControls.updateAll(); + externalModules.updateAll(); }); Hooks.on('renderSceneControls',()=>{ diff --git a/README.md b/README.md index f4c70ae..792dd66 100644 --- a/README.md +++ b/README.md @@ -71,7 +71,7 @@ Instructions and more info can be found in the { + canvas.scene.setFlag("fxmaster", "effects", newEffects); + }); + + } + else if (type == 'colorize') { + const color = (settings.fxMasterColorizeColor == undefined) ? '#000000' : settings.fxMasterColorizeColor; + const filters = canvas.scene.getFlag("fxmaster", "filters"); + let newFilters = {}; + if (filters != undefined){ + const filterObjects = Object.keys(filters); + for (let i=0; i { + canvas.scene.setFlag("fxmaster", "filters", newFilters); + }); + + } + else if (type == 'filters') { + const filter = (settings.fxMasterFilter == undefined) ? 'underwater' : settings.fxMasterFilter; + const filters = canvas.scene.getFlag("fxmaster", "filters"); + let newFilters = {}; + let exists = false; + if (filters != undefined){ + const filterObjects = Object.keys(filters); + for (let i=0; i { + canvas.scene.setFlag("fxmaster", "filters", newFilters); + }); + } + else if (type == 'clear'){ + canvas.scene.unsetFlag("fxmaster", "filters"); + canvas.scene.unsetFlag("fxmaster", "effects"); + } + } + + findWeatherEffect(effect){ + const effects = canvas.scene.getFlag("fxmaster", "effects"); + if (effects == undefined) return undefined; + + const weatherIds = Object.keys(effects); + for (let i = 0; i < weatherIds.length; ++i) { + const weather = effects[weatherIds[i]].type; + if (weather === effect) return weatherIds[i]; + } + return undefined; + } +} \ No newline at end of file diff --git a/src/macro.js b/src/macro.js index 87a8f06..74b4fda 100644 --- a/src/macro.js +++ b/src/macro.js @@ -52,7 +52,6 @@ export class MacroControl{ else ringColor = ringOffColor; ring = 2; - //streamDeck.setIcon(context, "", background,ring,ringColor); } else { //Execute macro macroNumber += this.offset - 1; @@ -76,12 +75,16 @@ export class MacroControl{ if (displayName == 0) name = ""; streamDeck.setTitle(name,context); } - else { //Macro Hotbar let macroId if (mode == 'hotbar') macroId = game.user.data.hotbar[macroNumber]; else { - let macros = game.macros.apps[0].macros; + let macros; + if (mode == 'customHotbar' && game.modules.get('custom-hotbar') != undefined) { + macros = ui.customHotbar.macros; + } + else macros = game.macros.apps[0].macros; + if (macroNumber > 9) macroNumber = 0; for (let j=0; j<10; j++){ if (macros[j].key == macroNumber){ if (macros[j].macro == null) macroId == undefined; @@ -121,16 +124,17 @@ export class MacroControl{ if(macroNumber == undefined || isNaN(parseInt(macroNumber))){ macroNumber = 1; } - if (mode == undefined) mode = 0; - if (mode == 2) continue; + if (mode == undefined) mode = 'hotbar'; + if (mode == 'Macro Board') continue; if (displayName == undefined) displayName = false; if (background == undefined) background = '#000000'; let macroId; - if (mode == 0){ + if (mode == 'hotbar'){ macroId = game.user.data.hotbar[macroNumber]; } else { + if (macroNumber > 9) macroNumber = 0; for (let j=0; j<10; j++){ if (macros[j].key == macroNumber){ if (macros[j].macro == null) macroId == undefined; @@ -159,7 +163,7 @@ export class MacroControl{ macroNumber = 0; } - if (mode == 'hotbar' || mode == 'visibleHotbar') + if (mode == 'hotbar' || mode == 'visibleHotbar' || mode == 'customHotbar') this.executeHotbar(macroNumber,mode); else { if (settings.macroBoardMode == 'offset') { @@ -175,9 +179,14 @@ export class MacroControl{ executeHotbar(macroNumber,mode){ let macroId - if (mode == 0) macroId = game.user.data.hotbar[macroNumber]; + if (mode == 'hotbar') macroId = game.user.data.hotbar[macroNumber]; else { - let macros = game.macros.apps[0].macros; + let macros; + if (mode == 'customHotbar' && game.modules.get('custom-hotbar') != undefined) { + macros = ui.customHotbar.macros; + } + else macros = game.macros.apps[0].macros; + if (macroNumber > 9) macroNumber = 0; for (let j=0; j<10; j++){ if (macros[j].key == macroNumber){ if (macros[j].macro == null) macroId == undefined; diff --git a/src/othercontrols.js b/src/othercontrols.js index a14c2ba..0074ffc 100644 --- a/src/othercontrols.js +++ b/src/othercontrols.js @@ -136,6 +136,7 @@ export class OtherControls{ ////////////////////////////////////////////////////////////////////////////////////////////////// updateScene(settings,context){ + if (canvas.scene == null) return; let func = settings.sceneFunction; if (func == undefined) func = 'visible'; @@ -171,7 +172,8 @@ export class OtherControls{ } } else if (func == 'any') { //all scenes - let scene = game.scenes.apps[1].entities.find(p=>p.data.name == name); + if (settings.sceneName == undefined || settings.sceneName == '') return; + let scene = game.scenes.apps[1].entities.find(p=>p.data.name == settings.sceneName); if (scene != undefined){ if (scene.isView) ringColor = ringOnColor; @@ -211,6 +213,26 @@ export class OtherControls{ } } } + else if (func == 'any'){ //any scene + if (settings.sceneName == undefined || settings.sceneName == '') return; + const scenes = game.scenes.entries; + let scene = game.scenes.apps[1].entities.find(p=>p.data.name == settings.sceneName); + if (scene == undefined) return; + + let viewFunc = settings.sceneViewFunction; + if (viewFunc == undefined) viewFunc = 'view'; + + if (viewFunc == 'view'){ + scene.view(); + } + else if (viewFunc == 'activate'){ + scene.activate(); + } + else { + if (scene.isView) scene.activate(); + scene.view(); + } + } } ////////////////////////////////////////////////////////////////////////////////////////// @@ -391,7 +413,7 @@ export class OtherControls{ if (value < 0) src = 'modules/MaterialDeck/img/other/darkness/decreasedarkness.png'; else src = 'modules/MaterialDeck/img/other/darkness/increasedarkness.png'; } - else if (func == 'display'){ //display darkness + else if (func == 'disp'){ //display darkness src = 'modules/MaterialDeck/img/other/darkness/darkness.png'; let darkness = ''; if (canvas.scene != null) darkness = Math.floor(canvas.scene.data.darkness*100)/100; diff --git a/src/streamDeck.js b/src/streamDeck.js index 4388321..f083959 100644 --- a/src/streamDeck.js +++ b/src/streamDeck.js @@ -51,6 +51,7 @@ export class StreamDeck{ else if (action == 'playlist') MODULE.playlistControl.active = false; else if (action == 'soundboard') MODULE.soundboard.active = false; else if (action == 'other') MODULE.otherControls.active = false; + else if (action == 'external') MODULE.externalModules.active = false; } } diff --git a/src/token.js b/src/token.js index b78b1cb..88c5137 100644 --- a/src/token.js +++ b/src/token.js @@ -53,7 +53,7 @@ export class TokenControl{ else if (stats == 'AC') txt += attributes.ac.value; else if (stats == 'Speed'){ let speed = ""; - if (attributes.speed._deprecated){ + if (attributes.movement != undefined){ if (attributes.movement.burrow > 0) speed += game.i18n.localize("DND5E.MovementBurrow") + ': ' + attributes.movement.burrow + attributes.movement.units; if (attributes.movement.climb > 0) { if (speed.length > 0) speed += '\n';