module command.remote.app; import command.remote.remotecontrol; import command.remote.lightoncommand; import command.remote.lightoffcommand; import command.remote.light; import command.remote.ceilingfan; import command.remote.ceilingfanoffcommand; import command.remote.ceilingfanoncommand; import command.remote.garagedoorupcommand; import command.remote.garagedoordowncommand; import command.remote.garagedoor; import command.remote.stereoonwithcdcommand; import command.remote.stereo; import command.remote.stereooffcommand; import std.stdio : writeln; void main() { auto remoteControl = new RemoteControl(); auto livingRoomLight = new Light("Living Room"); auto kitchenLight = new Light("Kitchen"); auto ceilingFan = new CeilingFan("Living Room"); auto garageDoor = new GarageDoor("Garage"); auto stereo = new Stereo("Living Room"); auto livingRoomLightOn = new LightOnCommand(livingRoomLight); auto livingRoomLightOff = new LightOffCommand(livingRoomLight); auto kitchenLightOn = new LightOnCommand(kitchenLight); auto kitchenLightOff = new LightOffCommand(kitchenLight); auto ceilingFanOn = new CeilingFanOnCommand(ceilingFan); auto ceilingFanOff = new CeilingFanOffCommand(ceilingFan); auto garageDoorUp = new GarageDoorUpCommand(garageDoor); auto garageDoorDown = new GarageDoorDownCommand(garageDoor); auto stereoOnWithCD = new StereoOnWithCDCommand(stereo); auto stereoOff = new StereoOffCommand(stereo); remoteControl.setCommand(0, livingRoomLightOn, livingRoomLightOff); remoteControl.setCommand(1, kitchenLightOn, kitchenLightOff); remoteControl.setCommand(2, ceilingFanOn, ceilingFanOff); remoteControl.setCommand(3, stereoOnWithCD, stereoOff); remoteControl.setCommand(4, garageDoorUp, garageDoorDown); writeln(remoteControl); remoteControl.onButtonWasPressed(0); remoteControl.offButtonWasPressed(0); remoteControl.onButtonWasPressed(1); remoteControl.offButtonWasPressed(1); remoteControl.onButtonWasPressed(2); remoteControl.offButtonWasPressed(2); remoteControl.onButtonWasPressed(3); remoteControl.offButtonWasPressed(3); remoteControl.onButtonWasPressed(4); remoteControl.offButtonWasPressed(4); }