54 lines
1.8 KiB
D
54 lines
1.8 KiB
D
|
module command.remoteundostatusmacro.app;
|
||
|
|
||
|
import command.remoteundostatusmacro.remotecontrol;
|
||
|
import command.remoteundostatusmacro.lightoncommand;
|
||
|
import command.remoteundostatusmacro.lightoffcommand;
|
||
|
import command.remoteundostatusmacro.light;
|
||
|
import command.remoteundostatusmacro.tv;
|
||
|
import command.remoteundostatusmacro.tvoffcommand;
|
||
|
import command.remoteundostatusmacro.tvoncommand;
|
||
|
import command.remoteundostatusmacro.hottub;
|
||
|
import command.remoteundostatusmacro.hottuboffcommand;
|
||
|
import command.remoteundostatusmacro.hottuboncommand;
|
||
|
import command.remoteundostatusmacro.stereoonwithcdcommand;
|
||
|
import command.remoteundostatusmacro.stereo;
|
||
|
import command.remoteundostatusmacro.stereooffcommand;
|
||
|
import command.remoteundostatusmacro.command;
|
||
|
import command.remoteundostatusmacro.macrocommand;
|
||
|
import std.stdio : writeln;
|
||
|
|
||
|
void main()
|
||
|
{
|
||
|
auto remoteControl = new RemoteControl();
|
||
|
|
||
|
auto light = new Light("Living Room");
|
||
|
auto tv = new TV("Living Room");
|
||
|
auto stereo = new Stereo("Living Room");
|
||
|
auto hottub = new Hottub();
|
||
|
|
||
|
Command[] partyOn = cast(Command[])[
|
||
|
new LightOnCommand(light),
|
||
|
new StereoOnWithCDCommand(stereo),
|
||
|
new TVOnCommand(tv),
|
||
|
new HottubOnCommand(hottub)
|
||
|
];
|
||
|
Command[] partyOff = cast(Command[])[
|
||
|
new LightOffCommand(light),
|
||
|
new StereoOffCommand(stereo),
|
||
|
new TVOffCommand(tv),
|
||
|
new HottubOffCommand(hottub)
|
||
|
];
|
||
|
|
||
|
remoteControl.setCommand(0, new MacroCommand(partyOn), new MacroCommand(partyOff));
|
||
|
|
||
|
writeln(remoteControl);
|
||
|
writeln("--- Pushing Macro On ---");
|
||
|
remoteControl.onButtonWasPushed(0);
|
||
|
writeln("--- Pushing Macro Off ---");
|
||
|
remoteControl.offButtonWasPushed(0);
|
||
|
writeln(remoteControl);
|
||
|
remoteControl.undoButtonWasPushed();
|
||
|
writeln(remoteControl);
|
||
|
remoteControl.onButtonWasPushed(0);
|
||
|
writeln(remoteControl);
|
||
|
}
|