From 83109008da5b1f6ad1f45108aeb6616cbb442807 Mon Sep 17 00:00:00 2001 From: zarmstrong Date: Sat, 30 Jan 2021 03:47:18 -0700 Subject: [PATCH] ## 1.0.0 (Jan 30, 2021) * First Release --- .gitignore | 3 ++ CHANGELOG.md | 3 ++ README.md | 16 ++++++- image/screen1.webp | Bin 0 -> 62558 bytes lang/en.json | 10 +++++ lightswitch.js | 105 +++++++++++++++++++++++++++++++++++++++++++++ module.json | 28 ++++++++++++ 7 files changed, 163 insertions(+), 2 deletions(-) create mode 100644 .gitignore create mode 100644 CHANGELOG.md create mode 100644 image/screen1.webp create mode 100644 lang/en.json create mode 100644 lightswitch.js create mode 100644 module.json diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..975f371 --- /dev/null +++ b/.gitignore @@ -0,0 +1,3 @@ +*.PNG +artifacts/ +build-release.txt diff --git a/CHANGELOG.md b/CHANGELOG.md new file mode 100644 index 0000000..f4e13e5 --- /dev/null +++ b/CHANGELOG.md @@ -0,0 +1,3 @@ +## 1.0.0 (Jan 30, 2021) + +* First Release \ No newline at end of file diff --git a/README.md b/README.md index a9e59a9..a898f40 100644 --- a/README.md +++ b/README.md @@ -1,2 +1,14 @@ -# fvtt-lightswitch -This module allows players to trigger a macro that turns on and off lights (through the GM) +# LightSwitch +This module allows players to trigger a macro that turns on and off lights (through the GM). + +## How to use +###### **NOTE:** A GM and player are required for this module to work. + + 1. Open up any light configuration panel and set the name of the light. (Multiple lights can share a name and be triggered as a group.) When you're done, click Update Light Source. +![Screenshot 1](image/screen1.webp) + 2. Toggle the light(s) on or off in any combination by right clicking a light. + 3. Create a macro with the type *script*, with the following contents, replacing *lightgroup1* with the name of your light(s): `game.LightSwitch.flipTheSwitch("lightgroup1")` + 4. Use whatever module you wish to trigger the macro. I recommend the module [Trigger Happy](https://foundryvtt.com/packages/trigger-happy/) + 5. Repeat the process for any other lights + +When the macro is triggered, all lights matching the name you set in the macro will be toggled. If there are multiple lights, this could mean that some switch on, while others switch off. \ No newline at end of file diff --git a/image/screen1.webp b/image/screen1.webp new file mode 100644 index 0000000000000000000000000000000000000000..fad9e65a1be4fe6a4df1980c5e1bd2a46bf28e21 GIT binary patch literal 62558 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 bnlcf{ph0&HTgOBINmt1w77Cs(X}|ygd?+K5 literal 0 HcmV?d00001 diff --git a/lang/en.json b/lang/en.json new file mode 100644 index 0000000..52a307f --- /dev/null +++ b/lang/en.json @@ -0,0 +1,10 @@ +{ + "LIGHTSWITCH": { + "app": { + "title": "LightSwitch" + }, + "LightName": { + "title": "Light Name" + } + } +} \ No newline at end of file diff --git a/lightswitch.js b/lightswitch.js new file mode 100644 index 0000000..22e604a --- /dev/null +++ b/lightswitch.js @@ -0,0 +1,105 @@ +class LightSwitch { + static debug=false; + + static async init() { + console.log("%c Light%cSwitch %c| initializing",'color: #7bf542','color: #d8eb34','color: #ffffff'); + LightSwitch.SOCKET = "module.LightSwitch"; + + // init socket + game.socket.on(LightSwitch.SOCKET, data => { + if (debug) { + console.log("%c Light%cSwitch %c| received socket data",'color: #7bf542','color: #d8eb34','color: #ffffff') + console.log(data) + } + if (data.switchLight == true && game.user.isGM) { + LightSwitch.switchLight(data); + } + }); + } + + static switchLight(data) + { + console.log("%c Light%cSwitch %c| switching lights",'color: #7bf542','color: #d8eb34','color: #ffffff') + const light = data.lightName; + console.log(`light name im searching for: ${light}`); + const allLights = LightingLayer.instance.objects.children + var lightOnIDs=[]; + var lightOffIDs=[]; + for (let i = 0; i <= allLights.length - 1; i++) + { + if (allLights[i].data.flags.LightSwitch && allLights[i].data.flags.LightSwitch.lightName==light) { + if (debug) + console.log(`found a light named ${light}`) + //var lightStatus=allLights[i].data.hidden; + if (allLights[i].data.hidden == false) + lightOffIDs.push(allLights[i].data._id) + else + lightOnIDs.push(allLights[i].data._id) + } + } + if (debug) { + console.log("on") + console.log(lightOnIDs) + console.log("off") + console.log(lightOffIDs) + } + console.log(`%c Light%cSwitch %c| switching lights off: ${lightOffIDs.join(', ')}`,'color: #7bf542','color: #d8eb34','color: #ffffff') + canvas.lighting.updateAll({hidden: true}, (light => lightOffIDs.includes(light.id))) + console.log(`%c Light%cSwitch %c| switching lights on: ${lightOnIDs.join(', ')}`,'color: #7bf542','color: #d8eb34','color: #ffffff') + canvas.lighting.updateAll({hidden: false}, (light => lightOnIDs.includes(light.id))) + } + + static async onRenderLightConfig(objectConfig, html, data) { + var prefix = "lightSwitch"; + var lightNameTitle = game.i18n.localize("LIGHTSWITCH.LightName.title"); + var lightTypeSelector = html.find("[name='t']").parent(); // Get parent div + var windowDiv = lightTypeSelector.parent().parent().parent(); + var newwheight=windowDiv.height()+30; + windowDiv.height(newwheight); + var currentValue; + const lightObj = objectConfig.object; + currentValue=lightObj.getFlag("LightSwitch", "lightName") || "light1" + var customNameEl = $( + `
+ + +
`); + lightTypeSelector.before(customNameEl); + } + static onUpdateLight(scene, object, changes, diff){ + if(changes.lightSwitch && !diff.loadedProperty){ // Only attempt to save if lightSwitch prop has changed + LightSwitch.saveCustomProperties(object, changes); + } + } + static async saveCustomProperties(object, changes) { + + var customProperties = JSON.parse(JSON.stringify(changes.lightSwitch)); // Clone changes + var placeable = canvas.lighting.get(object._id); + + if(!customProperties || Object.getOwnPropertyNames(customProperties).length == 0){ + await placeable.unsetFlag("LightSwitch", "lightName"); // Remove flag if no custom vars + } else { + await placeable.setFlag("LightSwitch", "lightName", customProperties.lightName); // Set flag with custom vars + } + } +} + +export async function flipTheSwitch(lightName) { + if (debug) + console.log("%c Light%cSwitch %c| Starting to send to socket",'color: #7bf542','color: #d8eb34','color: #ffffff') + game.socket.emit( + LightSwitch.SOCKET, { + switchLight: true, + lightName: lightName + }); +} + +Hooks.once('init', LightSwitch.init); +Hooks.on("renderLightConfig", LightSwitch.onRenderLightConfig); +Hooks.on("updateAmbientLight", LightSwitch.onUpdateLight); +Hooks.on('ready', () => { + console.log("%c Light%cSwitch %c| Creating Macro Hooks",'color: #7bf542','color: #d8eb34','color: #ffffff') + game['LightSwitch'] = { + flipTheSwitch: flipTheSwitch + }; +}); \ No newline at end of file diff --git a/module.json b/module.json new file mode 100644 index 0000000..f17a473 --- /dev/null +++ b/module.json @@ -0,0 +1,28 @@ +{ + "name": "LightSwitch", + "title": "LightSwitch", + "description": "A module that allows players to trigger lights through macros.", + "author": "slate", + "version": "0.0.1", + "minimumCoreVersion": "0.7.6", + "compatibleCoreVersion": "0.7.9", + "scripts": [], + "esmodules": [ + "lightswitch.js" + ], + "languages": [ + { + "lang": "en", + "name": "English", + "path": "lang/en.json" + } + ], + "socket": true, + "url": "https://github.com/zarmstrong/fvtt-lightswitch", + "manifest": "https://raw.githubusercontent.com/zarmstrong/fvtt-lightswitch/main/module.json", + "download": "https://github.com/zarmstrong/fvtt-lightswitch/releases/download/LightSwitch-0.0.1/LightSwitch-0.0.1.zip", + "license": "MIT", + "readme": "https://github.com/zarmstrong/fvtt-lightswitch", + "bugs": "https://github.com/zarmstrong/fvtt-lightswitch/issues", + "changelog": "https://github.com/zarmstrong/fvtt-lightswitch/blob/main/CHANGELOG.md" +}