diff --git a/MaterialDeck.js b/MaterialDeck.js
index f5c063f..ab34934 100644
--- a/MaterialDeck.js
+++ b/MaterialDeck.js
@@ -45,7 +45,7 @@ async function analyzeWSmessage(msg,passthrough = false){
if (enableModule == false) return;
const data = JSON.parse(msg);
if (data == undefined || data.payload == undefined) return;
- console.log(data);
+ //console.log(data);
const action = data.action;
const event = data.event;
const context = data.context;
diff --git a/changelog.md b/changelog.md
index de129d2..888136d 100644
--- a/changelog.md
+++ b/changelog.md
@@ -1,4 +1,14 @@
# Changelog Material Deck Module
+### v0.8.4 - 11-11-2020
+
+- In 'Other' action, 'Control Button' mode, add 'Displayed Controls' option
+- Change 'Other', 'Playlist' and 'Soundboard' actions from background color change to ring color
+- Macro board fixed
+- Added proper background color options for 'Other' action
+- In 'Other' action, control button icons are now properly centered
+- Newly created actions now show the correct options at the start
+
+
### v0.8.3 - 10-11-2020
Fixed compatibility with tokenizer
diff --git a/module.json b/module.json
index d8f0cc6..11d52f1 100644
--- a/module.json
+++ b/module.json
@@ -2,7 +2,7 @@
"name": "MaterialDeck",
"title": "Material Deck",
"description": "",
- "version": "0.8.3",
+ "version": "0.8.4",
"author": "CDeenen",
"esmodules": [
"./MaterialDeck.js"
diff --git a/src/macro.js b/src/macro.js
index e877e35..8411551 100644
--- a/src/macro.js
+++ b/src/macro.js
@@ -19,6 +19,8 @@ export class MacroControl{
let displayName = settings.displayName;
let macroNumber = settings.macroNumber;
let background = settings.background;
+ let ringColor = "#000000";
+ let ring = 0;
if(macroNumber == undefined || isNaN(parseInt(macroNumber))){
macroNumber = 0;
}
@@ -76,18 +78,21 @@ export class MacroControl{
}
}
else {
- src = "";
- let onBackground = settings.onBackground;
- if (onBackground == undefined) onBackground = '#00FF00';
- let offBackground = settings.offBackground;
- if (offBackground == undefined) offBackground = '#000000';
+ let ringOffColor = settings.offRing;
+ if (ringOffColor == undefined) ringOffColor = '#000000';
+
+ let ringOnColor = settings.onRing;
+ if (ringOnColor == undefined) ringOnColor = '#00FF00';
+
let macroOffset = parseInt(settings.macroOffset);
if (macroOffset == undefined || isNaN(macroOffset)) macroOffset = 0;
- if (macroOffset == parseInt(this.offset)) background = onBackground;
- else background = offBackground;
+ if (macroOffset == parseInt(this.offset)) ringColor = ringOnColor;
+ else ringColor = ringOffColor;
+
+ ring = 2;
}
- streamDeck.setIcon(1,context,src,background);
+ streamDeck.setIcon(1, context,src,background,ring,ringColor);
if (displayName == 0) name = "";
streamDeck.setTitle(name,context);
}
@@ -140,13 +145,13 @@ export class MacroControl{
let mode = settings.macroMode;
if (mode == undefined) mode = 0;
- if (mode == 0 || mode == 1){
- let macroNumber = settings.macroNumber;
- if(macroNumber == undefined || isNaN(parseInt(macroNumber))){
- macroNumber = 0;
- }
- this.executeHotbar(macroNumber,mode);
+ let macroNumber = settings.macroNumber;
+ if(macroNumber == undefined || isNaN(parseInt(macroNumber))){
+ macroNumber = 0;
}
+
+ if (mode == 0 || mode == 1)
+ this.executeHotbar(macroNumber,mode);
else {
if (settings.macroBoardMode == 0)
this.executeBoard(macroNumber);
diff --git a/src/othercontrols.js b/src/othercontrols.js
index 6ec8555..c11eb6b 100644
--- a/src/othercontrols.js
+++ b/src/othercontrols.js
@@ -59,25 +59,39 @@ export class OtherControls{
//////////////////////////////////////////////////////////////////////////////////////////////////
updatePause(pauseFunction,context){
-
- if (pauseFunction == undefined) pauseFunction = 0;
let src = "";
- let name = "";
- let background = "#000000";
+ if (pauseFunction == undefined) pauseFunction = 0;
+
+ let background = settings.background;
+ if(background == undefined) background = '#000000';
+
+ let ringColor = "#000000";
+
+ let ringOffColor = settings.offRing;
+ if (ringOffColor == undefined) ringOffColor = '#000000';
+
+ let ringOnColor = settings.onRing;
+ if (ringOnColor == undefined) ringOnColor = '#00FF00';
+
+ let playlistType = settings.playlistType;
+ if (playlistType == undefined) playlistType = 0;
+
if (pauseFunction == 0){ //Pause game
- if (game.paused) background = "#00FF00"
+ if (game.paused) ringColor = ringOnColor;
+ else ringColor = ringOffColor;
src = 'action/images/other/pause/pause.png';
}
else if (pauseFunction == 1){ //Resume game
- if (game.paused == false) background = "#00FF00"
+ if (game.paused == false) ringColor = ringOnColor;
+ else ringColor = ringOffColor;
src = 'action/images/other/pause/resume.png';
}
else if (pauseFunction == 2) { //toggle
- if (game.paused == false) background = "#00FF00"
+ if (game.paused == false) ringColor = ringOnColor;
+ else ringColor = ringOffColor;
src = 'action/images/other/pause/playpause.png';
}
- streamDeck.setIcon(0,context,src,background);
- streamDeck.setTitle(name,context);
+ streamDeck.setIcon(0,context,src,background,2,ringColor);
}
keyPressPause(pauseFunction){
@@ -101,56 +115,54 @@ export class OtherControls{
let func = settings.sceneFunction;
if (func == undefined) func = 0;
+ let background = settings.background;
+ if(background == undefined) background = '#000000';
+
+ let ringColor = "#000000";
+
+ let ringOffColor = settings.offRing;
+ if (ringOffColor == undefined) ringOffColor = '#000000';
+
+ let ringOnColor = settings.onRing;
+ if (ringOnColor == undefined) ringOnColor = '#00FF00';
+
+ let playlistType = settings.playlistType;
+ if (playlistType == undefined) playlistType = 0;
+
+ let src = "";
+ let name = "";
if (func == 0){ //visible scenes
let nr = parseInt(settings.sceneNr);
if (isNaN(nr)) nr = 1;
nr--;
- let background = settings.background;
- if (background == undefined) background = "#000000";
-
let scene = game.scenes.apps[0].scenes[nr];
- let name = "";
- let src = "";
- let ringColor = "#000000";
- let ring = 1;
if (scene != undefined){
- if (scene.isView) {
- ringColor = "#00FF00";
- ring = 2;
- }
+ if (scene.isView)
+ ringColor = ringOnColor;
+ else
+ ringColor = ringOffColor;
if (settings.displaySceneName) name = scene.name;
if (settings.displaySceneIcon) src = scene.img;
if (scene.active) name += "\n(Active)";
}
- streamDeck.setTitle(name,context);
- streamDeck.setIcon(1, context,src,background,ring,ringColor);
+
}
else if (func == 1) { //all scenes
- let name = settings.sceneName;
- if (name == undefined) return;
-
- let background = settings.background;
- if (background == undefined) background = "#000000";
-
- let src = "";
- let ringColor = "#000000";
- let ring = 1;
let scene = game.scenes.apps[1].entities.find(p=>p.data.name == name);
- name = "";
if (scene != undefined){
- if (scene.isView) {
- ringColor = "#00FF00";
- ring = 2;
- }
+ if (scene.isView)
+ ringColor = ringOnColor;
+ else
+ ringColor = ringOffColor;
if (settings.displaySceneName) name = scene.name;
if (settings.displaySceneIcon) src = scene.img;
if (scene.active) name += "\n(Active)";
}
- streamDeck.setTitle(name,context);
- streamDeck.setIcon(1, context,src,background,ring,ringColor);
}
+ streamDeck.setTitle(name,context);
+ streamDeck.setIcon(1, context,src,background,2,ringColor);
}
keyPressScene(settings){
@@ -176,10 +188,10 @@ export class OtherControls{
if (scene.isView) scene.activate();
scene.view();
}
- }
-
+ }
}
}
+
//////////////////////////////////////////////////////////////////////////////////////////
updateControl(settings,context){
@@ -189,27 +201,42 @@ export class OtherControls{
let tool = settings.tool;
if (tool == undefined) tool = 0;
+ let background = settings.background;
+ if (background == undefined) background = '#000000';
+
+ let ringColor = '#000000'
+
const controlName = this.getControlName(control);
const toolName = this.getToolName(control,tool);
let txt = "";
let src = "";
- let background = "#000000";
- let ringColor = "#FF7B00"
- let selectedControl;
- let selectedTool;
- let ring = 1;
- let activeControl = ui.controls.activeControl;
- let activeTool = ui.controls.activeTool;
+ const activeControl = ui.controls.activeControl;
+ const activeTool = ui.controls.activeTool;
- if (control == 0){
+ if (control == 0) { //displayed controls
let controlNr = parseInt(settings.controlNr);
if (isNaN(controlNr)) controlNr = 1;
controlNr--;
- selectedControl = ui.controls.controls.find(c => c.name == ui.controls.activeControl);
+ const selectedControl = ui.controls.controls[controlNr];
if (selectedControl != undefined){
- selectedTool = selectedControl.tools[controlNr];
+ if (tool == 0){ //open category
+ txt = game.i18n.localize(selectedControl.title);
+ src = selectedControl.icon;
+ if (activeControl == selectedControl.name)
+ ringColor = "#FF7B00";
+ }
+ }
+ }
+ else if (control == 1){ //displayed tools
+ let controlNr = parseInt(settings.controlNr);
+ if (isNaN(controlNr)) controlNr = 1;
+ controlNr--;
+
+ const selectedControl = ui.controls.controls.find(c => c.name == ui.controls.activeControl);
+ if (selectedControl != undefined){
+ const selectedTool = selectedControl.tools[controlNr];
if (selectedTool != undefined){
txt = game.i18n.localize(selectedTool.title);
src = selectedTool.icon;
@@ -218,25 +245,24 @@ export class OtherControls{
if (selectedTool.active)
ringColor = "#A600FF"
else
- ringColor = "#340057"
- ring = 2;
+ ringColor = "#340057";
}
else if (activeTool == selectedTool.name)
- ring = 2;
+ ringColor = "#FF7B00";
}
}
}
- else {
- selectedControl = ui.controls.controls.find(c => c.name == controlName);
+ else { // specific control/tool
+ const selectedControl = ui.controls.controls.find(c => c.name == controlName);
if (selectedControl != undefined){
if (tool == 0){ //open category
txt = game.i18n.localize(selectedControl.title);
src = selectedControl.icon;
if (activeControl == selectedControl.name)
- ring = 2;
+ ringColor = "#FF7B00";
}
else {
- selectedTool = selectedControl.tools.find(t => t.name == toolName);
+ const selectedTool = selectedControl.tools.find(t => t.name == toolName);
if (selectedTool != undefined){
txt = game.i18n.localize(selectedTool.title);
src = selectedTool.icon;
@@ -246,15 +272,14 @@ export class OtherControls{
ringColor = "#A600FF"
else
ringColor = "#340057"
- ring = 2;
}
else if (activeTool == selectedTool.name && activeControl == selectedControl.name)
- ring = 2;
+ ringColor = "#FF7B00";
}
}
}
}
- streamDeck.setIcon(1,context,src,background,ring,ringColor);
+ streamDeck.setIcon(1,context,src,background,2,ringColor);
streamDeck.setTitle(txt,context);
}
@@ -268,29 +293,37 @@ export class OtherControls{
const controlName = this.getControlName(control);
const toolName = this.getToolName(control,tool);
- if (control == 0){ //displayed tools
+ if (control == 0){ //displayed controls
let controlNr = parseInt(settings.controlNr);
if (isNaN(controlNr)) controlNr = 1;
controlNr--;
- let selectedControl = ui.controls.controls.find(c => c.name == ui.controls.activeControl);
+ const selectedControl = ui.controls.controls[controlNr];
if (selectedControl != undefined){
- let selectedTool = selectedControl.tools[controlNr];
+ ui.controls.activeControl = controlName;
+ selectedControl.activeTool = selectedControl.activeTool;
+ canvas.getLayer(selectedControl.layer).activate();
+ }
+ }
+ else if (control == 1){ //displayed tools
+ let controlNr = parseInt(settings.controlNr);
+ if (isNaN(controlNr)) controlNr = 1;
+ controlNr--;
+ const selectedControl = ui.controls.controls.find(c => c.name == ui.controls.activeControl);
+ if (selectedControl != undefined){
+ const selectedTool = selectedControl.tools[controlNr];
if (selectedTool != undefined){
- if (selectedTool.toggle){
- let newValue = !selectedTool.active;
- selectedTool.active = newValue;
- }
+ if (selectedTool.toggle)
+ selectedTool.active = !selectedTool.active;
else if (selectedTool.button){
selectedTool.onClick();
}
else
selectedControl.activeTool = selectedTool.name;
- ui.controls.render();
}
}
}
else { //select control
- let selectedControl = ui.controls.controls.find(c => c.name == controlName);
+ const selectedControl = ui.controls.controls.find(c => c.name == controlName);
if (selectedControl != undefined){
if (tool == 0){ //open category
ui.controls.activeControl = controlName;
@@ -298,14 +331,12 @@ export class OtherControls{
canvas.getLayer(selectedControl.layer).activate();
}
else {
- let selectedTool = selectedControl.tools.find(t => t.name == toolName);
+ const selectedTool = selectedControl.tools.find(t => t.name == toolName);
if (selectedTool != undefined){
ui.controls.activeControl = controlName;
canvas.getLayer(selectedControl.layer).activate();
- if (selectedTool.toggle){
- let newValue = !selectedTool.active;
- selectedTool.active = newValue;
- }
+ if (selectedTool.toggle)
+ selectedTool.active = !selectedTool.active;
else if (selectedTool.button){
selectedTool.onClick();
}
@@ -313,21 +344,13 @@ export class OtherControls{
selectedControl.activeTool = toolName;
}
}
- ui.controls.render();
}
- }
+ }
+ ui.controls.render();
}
-
-
-
-
-//ui.controls.controls.find(c => c.name == 'token')
-//ui.controls.controls.find(c => c.name == 'walls').tools.find(t => t.name == 'snap').active=false
-//ui.controls.render()
-
getControlName(control){
- control--;
+ control -= 2;
let name;
if (control == 0) name = 'token';
else if (control == 1) name = 'measure';
@@ -341,7 +364,7 @@ export class OtherControls{
}
getToolName(control,tool){
- control--;
+ control -= 2;
tool--;
let name;
if (control == 0){ //basic controls
diff --git a/src/playlist.js b/src/playlist.js
index 84fc98a..fb18ab1 100644
--- a/src/playlist.js
+++ b/src/playlist.js
@@ -31,8 +31,17 @@ export class PlaylistControl{
updatePlaylist(settings,context){
let name = "";
- let src = 'action/images/Black.png';
- let background = '#000000';
+
+ let background = settings.background;
+ if(background == undefined) background = '#000000';
+
+ let ringColor = "#000000"
+
+ let ringOffColor = settings.offRing;
+ if (ringOffColor == undefined) ringOffColor = '#FF0000';
+
+ let ringOnColor = settings.onRing;
+ if (ringOnColor == undefined) ringOnColor = '#00FF00';
let playlistType = settings.playlistType;
if (playlistType == undefined) playlistType = 0;
@@ -44,47 +53,39 @@ export class PlaylistControl{
playlistNr--;
playlistNr += this.playlistOffset;
- let playBackground = settings.playBackground;
- if (playBackground == undefined) playBackground == '#00FF00';
- let stopBackground = settings.stopBackground;
- if (stopBackground == undefined) stopBackground == '#FF0000';
-
let playlist = this.getPlaylist(playlistNr);
if (playlist != undefined){
- if (playlist.playing) {
- background = playBackground;
- src = 'action/images/playlist/stop.png';
- }
- else {
- background = stopBackground;
- src = 'action/images/playlist/play.png';
- }
+ if (playlist.playing)
+ ringColor = ringOnColor;
+ else
+ ringColor = ringOffColor;
if (settings.displayName)
name = playlist.name;
}
-
}
//Offset
else {
- src = "";
- let onBackground = settings.onBackground;
- if (onBackground == undefined) onBackground = '#00FF00';
- let offBackground = settings.offBackground;
- if (offBackground == undefined) offBackground = '#000000';
-
let playlistOffset = parseInt(settings.offset);
if (isNaN(playlistOffset)) playlistOffset = 0;
- if (playlistOffset == this.playlistOffset) background = onBackground;
- else background = offBackground;
+ if (playlistOffset == this.playlistOffset) ringColor = ringOnColor;
}
- streamDeck.setIcon(0,context,src,background);
+ streamDeck.setIcon(0,context,"",background,2,ringColor);
streamDeck.setTitle(name,context);
}
updateTrack(settings,context){
let name = "";
- let src = 'action/images/Black.png';
- let background = '#000000';
+
+ let background = settings.background;
+ if(background == undefined) background = '#000000';
+
+ let ringColor = "#000000"
+
+ let ringOffColor = settings.offRing;
+ if (ringOffColor == undefined) ringOffColor = '#FF0000';
+
+ let ringOnColor = settings.onRing;
+ if (ringOnColor == undefined) ringOnColor = '#00FF00';
let playlistType = settings.playlistType;
if (playlistType == undefined) playlistType = 0;
@@ -100,43 +101,26 @@ export class PlaylistControl{
trackNr--;
trackNr += this.trackOffset;
- let playBackground = settings.playBackground;
- if (playBackground == undefined) playBackground == '#00FF00';
- let stopBackground = settings.stopBackground;
- if (stopBackground == undefined) stopBackground == '#FF0000';
-
let playlist = this.getPlaylist(playlistNr);
if (playlist != undefined){
let track = playlist.data.sounds[trackNr];
if (track != undefined){
- if (track.playing) {
- background = playBackground;
- src = 'action/images/playlist/stop.png';
- }
- else {
- background = stopBackground;
- src = 'action/images/playlist/play.png';
- }
+ if (track.playing)
+ ringColor = ringOnColor;
+ else
+ ringColor = ringOffColor;
if (settings.displayName)
name = track.name;
}
- }
-
+ }
}
//Offset
else {
- src = "";
- let onBackground = settings.onBackground;
- if (onBackground == undefined) onBackground = '#00FF00';
- let offBackground = settings.offBackground;
- if (offBackground == undefined) offBackground = '#000000';
-
let trackOffset = parseInt(settings.offset);
if (isNaN(trackOffset)) trackOffset = 0;
- if (trackOffset == this.trackOffset) background = onBackground;
- else background = offBackground;
+ if (trackOffset == this.trackOffset) ringColor = ringOnColor;
}
- streamDeck.setIcon(0,context,src,background);
+ streamDeck.setIcon(0,context,"",background,2,ringColor);
streamDeck.setTitle(name,context);
}
diff --git a/src/soundboard.js b/src/soundboard.js
index c1e3249..bb31e78 100644
--- a/src/soundboard.js
+++ b/src/soundboard.js
@@ -23,7 +23,11 @@ export class SoundboardControl{
let txt = "";
let src = "";
- let background = "#000000";
+
+ let background = settings.background;
+ if (background == undefined) background = '#000000';
+
+ let ringColor = "#000000"
if (mode == 0){ //play sound
let soundNr = parseInt(settings.soundNr);
@@ -33,37 +37,33 @@ export class SoundboardControl{
let soundboardSettings = game.settings.get(MODULE.moduleName, 'soundboardSettings');
- let onColor = soundboardSettings.colorOn[soundNr];
- let offColor = soundboardSettings.colorOff[soundNr];
+ if (this.activeSounds[soundNr]==false)
+ ringColor = soundboardSettings.colorOff[soundNr];
+ else
+ ringColor = soundboardSettings.colorOn[soundNr];
- background = onColor;
- let ring = 2;
- if (this.activeSounds[soundNr]==false) {
- background = offColor;
- ring = 1;
- }
if (settings.displayName) txt = soundboardSettings.name[soundNr];
if (settings.displayIcon) src = soundboardSettings.img[soundNr];
streamDeck.setTitle(txt,context);
- streamDeck.setIcon(1,context,src,background,ring,background);
+ streamDeck.setIcon(1,context,src,background,2,ringColor);
}
else if (mode == 1) { //Offset
- src = "";
- let onBackground = settings.onBackground;
- if (onBackground == undefined) onBackground = '#00FF00';
- let offBackground = settings.offBackground;
- if (offBackground == undefined) offBackground = '#000000';
+ let ringOffColor = settings.offRing;
+ if (ringOffColor == undefined) ringOffColor = '#000000';
+
+ let ringOnColor = settings.onRing;
+ if (ringOnColor == undefined) ringOnColor = '#00FF00';
let offset = parseInt(settings.offset);
if (isNaN(offset)) offset = 0;
- if (offset == this.offset) background = onBackground;
- else background = offBackground;
+ if (offset == this.offset) ringColor = ringOnColor;
+ else ringColor = ringOffColor;
streamDeck.setTitle(txt,context);
- streamDeck.setIcon(1,context,src,background);
+ streamDeck.setIcon(1,context,"",background,2,ringColor);
}
else if (mode == 2) { //Stop all sounds
let src = 'action/images/soundboard/stop.png';
- streamDeck.setIcon(0,context,src,settings.background);
+ streamDeck.setIcon(0,context,src,background);
}
}
diff --git a/src/streamDeck.js b/src/streamDeck.js
index a1e29d8..ee4ee04 100644
--- a/src/streamDeck.js
+++ b/src/streamDeck.js
@@ -180,7 +180,6 @@ export class StreamDeck{
var content = window.getComputedStyle(
elm, ':before'
).getPropertyValue('content')
- //console.log(elm);
document.body.removeChild(elm);
return content;
};
@@ -188,7 +187,7 @@ export class StreamDeck{
getImage(data){
if (data == undefined)
return;
- console.log('image',data)
+ //console.log('image',data)
const context = data.context;
var url = data.url;
const format = data.format;
@@ -246,14 +245,15 @@ export class StreamDeck{
var content = window.getComputedStyle(
elm, ':before'
).getPropertyValue('content')
- //console.log(content[1]);
canvas.removeChild(elm);
- ctx.fillText(content[1], 35, 105);
+ const iconMeasurement = ctx.measureText(content[1]);
+ const horOffset = (144-iconMeasurement.width)/2;
+ const vertOffset = 144-(iconMeasurement.actualBoundingBoxAscent-iconMeasurement.actualBoundingBoxDescent)/2;
+ ctx.fillText(content[1], horOffset, vertOffset);
}
if (format != 'jpg' && format != 'jpeg' && format != 'png' && format != 'webm' && format != 'webp' && format != 'gif' && format != 'svg') url = "modules/MaterialDeck/img/transparant.png";
if (url == "") url = "modules/MaterialDeck/img/transparant.png"
- //console.log(url);
let resImageURL = url;
let img = new Image();
diff --git a/src/token.js b/src/token.js
index 931a345..11f8cb8 100644
--- a/src/token.js
+++ b/src/token.js
@@ -6,7 +6,6 @@ export class TokenControl{
}
async update(tokenId){
- console.log('tokenId',tokenId)
for (let i=0; i<32; i++){
let data = streamDeck.buttonContext[i];
if (data == undefined || data.action != 'token') continue;
@@ -15,7 +14,6 @@ export class TokenControl{
}
pushData(tokenId,settings,context,ring=0,ringColor='#000000'){
- console.log('tk',tokenId,settings)
let name = false;
let icon = false;
let type = 0;