import logging from .layer import ILayer from .states import SceneState logger = logging.getLogger(__name__) class Scene(ILayer): """Scene concrete class""" def __init__(self, duckypad, **kwargs): super().__init__(duckypad) for attr, val in kwargs.items(): setattr(self, attr, val) self.reset_states() @property def identifier(self): return type(self).__name__ @property def state(self): return self._state @state.setter def state(self, val): self._state = val def reset_states(self): self._state = SceneState() def onyx_only(self): if self._duckypad.streamlabs_controller.switch_scene('onyx_only'): self.vm.strip[2].mute = False self.vm.strip[3].mute = True self.logger.info('Only Onyx Scene enabled, Iris game pc muted') def iris_only(self): if self._duckypad.streamlabs_controller.switch_scene('iris_only'): self.vm.strip[2].mute = True self.vm.strip[3].mute = False self.logger.info('Only Iris Scene enabled, Onyx game pc muted') def dual_scene(self): if self._duckypad.streamlabs_controller.switch_scene('dual_scene'): self.vm.strip[2].apply({'mute': False, 'gain': 0}) self.vm.strip[3].apply({'A5': True, 'mute': False, 'gain': 0}) self.logger.info('Dual Scene enabled') def onyx_big(self): if self._duckypad.streamlabs_controller.switch_scene('onyx_big'): self.vm.strip[2].apply({'mute': False, 'gain': 0}) self.vm.strip[3].apply({'mute': False, 'gain': -3}) self.logger.info('Onyx Big scene enabled') def iris_big(self): if self._duckypad.streamlabs_controller.switch_scene('iris_big'): self.vm.strip[2].apply({'mute': False, 'gain': -3}) self.vm.strip[3].apply({'mute': False, 'gain': 0}) self.logger.info('Iris Big enabled') def start(self): if self._duckypad.streamlabs_controller.switch_scene('start'): self.vm.strip[2].mute = True self.vm.strip[3].mute = True self.logger.info('Start scene enabled.. ready to go live!') def brb(self): if self._duckypad.streamlabs_controller.switch_scene('brb'): self.vm.strip[2].mute = True self.vm.strip[3].mute = True self.logger.info('BRB: game pcs muted') def end(self): if self._duckypad.streamlabs_controller.switch_scene('end'): self.vm.strip[2].mute = True self.vm.strip[3].mute = True self.logger.info('End scene enabled.')