module hometheaterfacade; import std.stdio : writeln; import amplifier, tuner, streamingplayer, cdplayer, projector, theaterlights, screen, popcornpopper; class HomeTheaterFacade { private Amplifier amp; private Tuner tuner; private StreamingPlayer player; private CdPlayer cd; private Projector projector; private TheaterLights lights; private Screen screen; private PopcornPopper popper; this(Amplifier amp, Tuner tuner, StreamingPlayer player, CdPlayer cd, Projector projector, TheaterLights lights, Screen screen, PopcornPopper popper) { this.amp = amp; this.tuner = tuner; this.player = player; this.cd = cd; this.projector = projector; this.lights = lights; this.screen = screen; this.popper = popper; } void watchMovie(string movie) { writeln("Get ready to watch a movie..."); popper.on(); popper.pop(); lights.dim(10); screen.down(); projector.on(); projector.wideScreenMode(); amp.on(); amp.setStreamingPlayer(player); amp.setSurroundSound(); amp.setVolume(5); player.on(); player.play(movie); } void endMovie() { writeln("Shutting movie theater down..."); popper.off(); lights.on(); screen.up(); projector.off(); amp.off(); player.stop(); player.off(); } void listenToRadio(double frequency) { writeln("Tuning in the airwaves..."); tuner.on(); tuner.setFrequency(frequency); amp.on(); amp.setVolume(5); amp.setTuner(tuner); } void endRadio() { writeln("Shutting down the tuner..."); tuner.off(); amp.off(); } }