diff --git a/actions.js b/actions.js index 1c6d766..1e7a163 100644 --- a/actions.js +++ b/actions.js @@ -35,6 +35,7 @@ module.exports = function (self) { options: [], callback: async (event) => { self.vm.internal.toggleVoiceChanger() + self.checkFeedbacks('VoiceChangerState') }, }, play_meme: { diff --git a/feedbacks.js b/feedbacks.js index 1f331c7..bdae0d5 100644 --- a/feedbacks.js +++ b/feedbacks.js @@ -2,31 +2,69 @@ const { combineRgb } = require('@companion-module/base') module.exports = async function (self) { self.setFeedbackDefinitions({ - ChannelState: { - name: 'Example Feedback', + VoiceChangerState: { + name: 'Voice Changer State', type: 'boolean', - label: 'Channel State', + label: 'Voice Changer State', defaultStyle: { bgcolor: combineRgb(255, 0, 0), color: combineRgb(0, 0, 0), }, - options: [ - { - id: 'num', - type: 'number', - label: 'Test', - default: 5, - min: 0, - max: 10, - }, - ], - callback: (feedback) => { - console.log('Hello world!', feedback.options.num) - if (feedback.options.num > 5) { - return true - } else { - return false - } + options: [], + callback: (feedback, context) => { + return self.voiceChangerEnabled + }, + }, + BackgroundEffectState: { + name: 'Background Effect State', + type: 'boolean', + label: 'Background Effect Status', + defaultStyle: { + bgcolor: combineRgb(255, 0, 0), + color: combineRgb(0, 0, 0), + }, + options: [], + callback: (feedback, context) => { + return self.backgroundEffectsEnabled + }, + }, + HearMyVoiceState: { + name: 'Hear My Voice State', + type: 'boolean', + label: 'Hear My Voice State', + defaultStyle: { + bgcolor: combineRgb(255, 0, 0), + color: combineRgb(0, 0, 0), + }, + options: [], + callback: (feedback, context) => { + return self.hearMyVoiceEnabled + }, + }, + MicMutedState: { + name: 'Microphone Mute State', + type: 'boolean', + label: 'Microphone Mute State', + defaultStyle: { + bgcolor: combineRgb(255, 0, 0), + color: combineRgb(0, 0, 0), + }, + options: [], + callback: (feedback, context) => { + return self.muteEnabled + }, + }, + MemesMutedForMeState: { + name: 'Soundboard - Mute For Me State', + type: 'boolean', + label: 'Soundboard Mute For Me State', + defaultStyle: { + bgcolor: combineRgb(255, 0, 0), + color: combineRgb(0, 0, 0), + }, + options: [], + callback: (feedback, context) => { + return self.muteMemesEnabled }, }, }) diff --git a/main.js b/main.js index e32724f..cfd5b25 100644 --- a/main.js +++ b/main.js @@ -11,6 +11,11 @@ class ModuleInstance extends InstanceBase { this.config = {} this.memes = [] + this.backgroundEffectsEnabled = false; + this.voiceChangerEnabled = false; + this.hearMyVoiceEnabled = false; + this.muteEnabled = false; + this.muteMemesEnabled = false; } async init(config) { @@ -22,6 +27,51 @@ class ModuleInstance extends InstanceBase { try { this.vm.init().then( async () => { + this.vm.internal.on('backgroundEffectsEnabledEvent', ( background ) => { + this.backgroundEffectsEnabled = true; + this.checkFeedbacks('BackgroundEffectState'); + }); + this.vm.internal.on('backgroundEffectsDisabledEvent', ( background ) => { + this.backgroundEffectsEnabled = false; + this.checkFeedbacks('BackgroundEffectState'); + }); + this.vm.internal.on('voiceChangerEnabledEvent', ( data ) => { + this.voiceChangerEnabled = true; + this.checkFeedbacks('VoiceChangerState'); + }); + this.vm.internal.on('voiceChangerDisabledEvent', ( data ) => { + this.voiceChangerEnabled = false; + this.checkFeedbacks('VoiceChangerState'); + }); + this.vm.internal.on('hearMySelfEnabledEvent', ( data ) => { + this.hearMyVoiceEnabled = true; + this.checkFeedbacks('HearMyVoiceState'); + }); + this.vm.internal.on('hearMySelfDisabledEvent', ( data ) => { + this.hearMyVoiceEnabled = false; + this.checkFeedbacks('HearMyVoiceState'); + }); + this.vm.internal.on('muteMicrophoneEnabledEvent', ( data ) => { + this.muteEnabled = true; + this.checkFeedbacks('MicMutedState'); + }); + this.vm.internal.on('muteMicrophoneDisabledEvent', ( data ) => { + this.muteEnabled = false; + this.checkFeedbacks('MicMutedState'); + }); + this.vm.internal.on('muteMemeForMeEnabledEvent', ( data ) => { + this.muteMemesEnabled = true; + this.checkFeedbacks('MemesMutedForMeState'); + }); + this.vm.internal.on('muteMemeForMeDisabledEvent', ( data ) => { + this.muteMemesEnabled = false; + this.checkFeedbacks('MemesMutedForMeState'); + }); + this.vm.internal.getVoiceChangerStatus() + this.vm.internal.getBackgroundEffectStatus() + this.vm.internal.getMuteMicStatus() + this.vm.internal.getMuteMemeForMeStatus() + this.updateStatus(InstanceStatus.Ok) this.updateActionsFeedbacksVariables() @@ -69,12 +119,12 @@ class ModuleInstance extends InstanceBase { updateActionsFeedbacksVariables() { this.updateActions() // export actions - // this.updateFeedbacks() // export feedbacks + this.updateFeedbacks() // export feedbacks this.updateVariableDefinitions() // export variable definitions this.subscribeActions() - // this.subscribeFeedbacks() - // this.checkFeedbacks() + this.subscribeFeedbacks() + this.checkFeedbacks() } updateActions() {