コード例 #1
0
        public HalloweenFrankGhost(
            IReceivesColor light,
            DigitalOutput2 air,
            AudioPlayer audioPlayer,
            [System.Runtime.CompilerServices.CallerMemberName] string name = "")
            : base(name)
        {
            pulsatingLow.ConnectTo(light);
            levelsPlayback.Output.Controls(b => light.SetBrightness(b, this.controlToken));

            OutputPower.Subscribe(x =>
            {
                if (x)
                {
                    LockDevices(air, light);

                    air.SetValue(true, this.controlToken);
                    light.SetColor(Color.Red, this.controlToken);
                    pulsatingLow.Start(token: this.controlToken);
                }
                else
                {
                    pulsatingLow.Stop();

                    UnlockDevices();
                }
            });

            PowerOn
            .SetLoop(true)
            .SetMaxRuntime(S(60))
            .SetUp(ins =>
            {
                pulsatingLow.Stop();
            })
            .RunAction(ins =>
            {
                audioPlayer.PlayEffect("Thriller2.wav", levelsPlayback);
                // The control token is optional since it's passed in via the Subroutine
                light.SetColor(Color.Purple);
                var cts = levelsPlayback.Start(this.controlToken);

                ins.WaitFor(S(45));
                cts.Cancel();
            })
            .TearDown(ins =>
            {
                light.SetColor(Color.Red);
                pulsatingLow.Start(token: this.controlToken);
            });

            PowerOff.RunAction(ins =>
            {
                audioPlayer.PlayEffect("Happy Halloween.wav", 0.15);
                ins.WaitFor(S(5));
            });
        }
コード例 #2
0
 public static void SetColor(this IReceivesColor device, Color color, double?brightness, IControlToken token = null)
 {
     if (brightness.HasValue)
     {
         device.SetData(token, Utils.Data(color, brightness.Value));
     }
     else
     {
         device.SetData(token, Utils.Data(color));
     }
 }
コード例 #3
0
ファイル: CueList.cs プロジェクト: jasongaylord/animatroller
        private ControlledObserver <Color> GetControlledObserverColor(IReceivesColor device)
        {
            ControlledObserver <Color> observer;

            if (!this.deviceObserversColor.TryGetValue(device, out observer))
            {
                observer = device.GetColorObserver();

                this.deviceObserversColor.Add(device, observer);
            }

            return(observer);
        }
コード例 #4
0
        protected DeviceController ConnectTo(IReceivesColor device, params Tuple <DataElements, object>[] additionalData)
        {
            lock (this.lockObject)
            {
                IData data = null;
                if (additionalData.Any())
                {
                    data = new Data();
                    foreach (var kvp in additionalData)
                    {
                        data[kvp.Item1] = kvp.Item2;
                    }
                }

                var deviceController = new DeviceController(device, data);
                this.devices.Add(deviceController);

                return(deviceController);
            }
        }
コード例 #5
0
            public override void Execute(IReceivesColor device, ChannelEffectInstance.DeviceType deviceType, IControlToken token)
            {
                var currentColor = device.GetCurrentColor();

                switch (deviceType)
                {
                case ChannelEffectInstance.DeviceType.ColorR:
                    device.SetColor(Color.FromArgb((int)(Brightness * 255), currentColor.G, currentColor.B), 1, token);

                    break;

                case ChannelEffectInstance.DeviceType.ColorG:
                    device.SetColor(Color.FromArgb(currentColor.R, (int)(Brightness * 255), currentColor.B), 1, token);
                    break;

                case ChannelEffectInstance.DeviceType.ColorB:
                    device.SetColor(Color.FromArgb(currentColor.R, currentColor.G, (int)(Brightness * 255)), 1, token);
                    break;
                }
            }
コード例 #6
0
            public override void Execute(IReceivesColor device, ChannelEffectInstance.DeviceType deviceType, IControlToken token)
            {
                Executor.Current.MasterEffect.Shimmer(new LogicalDevice.VirtualDevice(b =>
                {
                    var currentColor = device.GetCurrentColor();
                    switch (deviceType)
                    {
                    case ChannelEffectInstance.DeviceType.ColorR:
                        device.SetColor(Color.FromArgb((int)(b * 255), currentColor.G, currentColor.B), 1, token);
                        break;

                    case ChannelEffectInstance.DeviceType.ColorG:
                        device.SetColor(Color.FromArgb(currentColor.R, (int)(b * 255), currentColor.B), 1, token);
                        break;

                    case ChannelEffectInstance.DeviceType.ColorB:
                        device.SetColor(Color.FromArgb(currentColor.R, currentColor.G, (int)(b * 255)), 1, token);
                        break;
                    }
                }), StartBrightness, EndBrightness, DurationMs, token: token);
            }
コード例 #7
0
 public abstract void Execute(IReceivesColor device, ChannelEffectInstance.DeviceType deviceType, IControlToken token);
コード例 #8
0
        public void MapDeviceRGBW(string channelNameR, string channelNameG, string channelNameB, string channelNameW, IReceivesColor device)
        {
            // Currently not used
            var idW = ChannelIdentityFromName(channelNameW);

            var id = new RGBChannelIdentity(
                ChannelIdentityFromName(channelNameR),
                ChannelIdentityFromName(channelNameG),
                ChannelIdentityFromName(channelNameB));

            var deviceController = ConnectTo(device);

            InternalMapDevice(id, deviceController);
        }
コード例 #9
0
ファイル: LorImport2.cs プロジェクト: HakanL/animatroller
            public override void Execute(IReceivesColor device, ChannelEffectInstance.DeviceType deviceType, IControlToken token)
            {
                Executor.Current.MasterEffect.Shimmer(new LogicalDevice.VirtualDevice(b =>
                {
                    var currentColor = device.Color;
                    switch (deviceType)
                    {
                        case ChannelEffectInstance.DeviceType.ColorR:
                            device.SetColor(Color.FromArgb((int)(b * 255), currentColor.G, currentColor.B), 1, token);
                            break;

                        case ChannelEffectInstance.DeviceType.ColorG:
                            device.SetColor(Color.FromArgb(currentColor.R, (int)(b * 255), currentColor.B), 1, token);
                            break;

                        case ChannelEffectInstance.DeviceType.ColorB:
                            device.SetColor(Color.FromArgb(currentColor.R, currentColor.G, (int)(b * 255)), 1, token);
                            break;
                    }
                }), StartBrightness, EndBrightness, DurationMs, token: token);
            }
コード例 #10
0
ファイル: LorImport2.cs プロジェクト: HakanL/animatroller
            public override void Execute(IReceivesColor device, ChannelEffectInstance.DeviceType deviceType, IControlToken token)
            {
                var currentColor = device.Color;
                switch (deviceType)
                {
                    case ChannelEffectInstance.DeviceType.ColorR:
                        device.SetColor(Color.FromArgb((int)(Brightness * 255), currentColor.G, currentColor.B), 1, token);
                        break;

                    case ChannelEffectInstance.DeviceType.ColorG:
                        device.SetColor(Color.FromArgb(currentColor.R, (int)(Brightness * 255), currentColor.B), 1, token);
                        break;

                    case ChannelEffectInstance.DeviceType.ColorB:
                        device.SetColor(Color.FromArgb(currentColor.R, currentColor.G, (int)(Brightness * 255)), 1, token);
                        break;
                }
            }
コード例 #11
0
 public abstract void Execute(IReceivesColor device, ChannelEffectInstance.DeviceType deviceType, IControlToken token);
コード例 #12
0
        protected DeviceController ConnectTo(IReceivesColor device, params Tuple<DataElements, object>[] additionalData)
        {
            lock (this.lockObject)
            {
                IData data = null;
                if (additionalData.Any())
                {
                    data = new Data();
                    foreach (var kvp in additionalData)
                        data[kvp.Item1] = kvp.Item2;
                }

                var deviceController = new DeviceController(device, data);
                this.devices.Add(deviceController);

                return deviceController;
            }
        }
コード例 #13
0
        public void MapDeviceRGBW(string channelNameR, string channelNameG, string channelNameB, string channelNameW, IReceivesColor device)
        {
            // Currently not used
            var idW = ChannelIdentityFromName(channelNameW);

            var id = new RGBChannelIdentity(
                ChannelIdentityFromName(channelNameR),
                ChannelIdentityFromName(channelNameG),
                ChannelIdentityFromName(channelNameB));

            var deviceController = ConnectTo(device);

            InternalMapDevice(id, deviceController);
        }
コード例 #14
0
 public static Color GetCurrentColor(this IReceivesColor device)
 {
     return((Color)device.GetCurrentData(DataElements.Color));
 }
コード例 #15
0
 public static void SetColor(this IReceivesColor device, Color color, IControlToken token = null)
 {
     device.SetColor(color, null, token);
 }
コード例 #16
0
ファイル: CueList.cs プロジェクト: HakanL/animatroller
        private ControlledObserver<Color> GetControlledObserverColor(IReceivesColor device)
        {
            ControlledObserver<Color> observer;

            if (!this.deviceObserversColor.TryGetValue(device, out observer))
            {
                observer = device.GetColorObserver();

                this.deviceObserversColor.Add(device, observer);
            }

            return observer;
        }