public IceBucket(IEnumerable<string> args)
{
stateMachine = new Controller.EnumStateMachine<States>("Main");
pulsatingEffect1 = new Effect.Pulsating(S(2), 0.05, 1.0, false);
lightSpot = new StrobeColorDimmer("Spotlight");
inputArm = new DigitalInput("Arm");
inputDisarm = new DigitalInput("Disarm");
inputDump = new DigitalInput("Dump");
inputNextSong = new DigitalInput("Next Song");
inputReset = new DigitalInput("Reset");
relayStart = new Switch("Relay Start");
relayDirA = new Switch("Relay Dir A");
relayDirB = new Switch("Relay Dir B");
audioPlayer = new AudioPlayer("Audio Player");
this.oscServer = new Expander.OscServer(9999);
stateMachine.For(States.Armed)
.SetUp(() =>
{
pulsatingEffect1.Start();
audioPlayer.PlayEffect("Nuclear-alarm");
})
.Execute(instance =>
{
while (!instance.IsCancellationRequested)
{
instance.WaitFor(S(1));
}
})
.TearDown(() =>
{
audioPlayer.PauseFX();
pulsatingEffect1.Stop();
});
stateMachine.For(States.Dumped)
.Execute(instance =>
{
while (!instance.IsCancellationRequested)
{
instance.WaitFor(S(1));
}
});
;
stateMachine.SetBackgroundState(States.Idle);
}