public void Start() { while (true) { Console.Clear(); if (devices.Count == 0) { Console.WriteLine("You have no devices yet"); } else { foreach (var device in devices) { Console.WriteLine("Name: " + device.Key + "\n" + device.Value); } } Console.WriteLine(); Console.WriteLine("Type in the command or press <Enter> for help: "); string[] commands = Console.ReadLine().ToLower().Split(' '); if (commands.Length != 3 && commands.Length != 2 & commands.Length != 1) { Help(); continue; } switch (commands[0]) { case "add": if (commands.Length != 3) { Help(); continue; } if (!devices.ContainsKey(commands[2])) { if (commands[1] == "fridge") { Fridge f = new Fridge(); devices.Add(commands[2], f); } else if (commands[1] == "garage") { Garage g = new Garage(); devices.Add(commands[2], g); } else if (commands[1] == "camera") { Camera c = new Camera(); devices.Add(commands[2], c); } else if (commands[1] == "airconditioner") { AirConditioner a = new AirConditioner(); devices.Add(commands[2], a); } else if (commands[1] == "tv") { TV t = new TV(); devices.Add(commands[2], t); } else if (commands[1] == "panasonicstereo") { PanasonicStereoSystem p = new PanasonicStereoSystem(new PanasonicLoudspeakers()); devices.Add(commands[2], p); } else if (commands[1] == "panasonicspeakers") { PanasonicLoudspeakers pl = new PanasonicLoudspeakers(); devices.Add(commands[2], pl); } else { Console.WriteLine(commands[1] + " is not a device. " + "Press <Enter> to continue"); Console.ReadLine(); Help(); continue; } } else { Console.WriteLine("Device with name \'{0}\' already exists. " + "Press <Enter> to continue", commands[2]); Console.ReadLine(); } break; case "del": if (commands.Length != 2) { Help(); continue; } if (commands[1] == "all") { devices.Clear(); Console.WriteLine("All devices was removed"); } if (isValid(commands[1]) && commands[1] != "all") { devices.Remove(commands[1]); } break; case "on": if (commands.Length != 2) { Help(); continue; } if (commands[1] == "all") { foreach (var device in devices) { device.Value.On(); } } if (isValid(commands[1]) && commands[1] != "all") { devices[commands[1]].On(); } break; case "off": if (commands.Length != 2) { Help(); continue; } if (commands[1] == "all") { foreach (var device in devices) { device.Value.Off(); } } if (isValid(commands[1]) && commands[1] != "all") { devices[commands[1]].On(); } break; case "open": if (commands.Length != 2) { Help(); continue; } if (commands[1] == "all") { foreach (var device in devices) { if (device.Value is IOpenable) { (device.Value as IOpenable).Open(); } } } if (isValid(commands[1]) && commands[1] != "all") { if (devices[commands[1]] is IOpenable) { (devices[commands[1]] as IOpenable).Open(); } else { Console.WriteLine("You can't apply command \'open\' to {0} {1}. " + "Press <Enter> to continue", devices[commands[1]].GetType().Name, commands[1]); Console.ReadLine(); } } break; case "close": if (commands.Length != 2) { Help(); continue; } if (commands[1] == "all") { foreach (var device in devices) { if (device.Value is IOpenable) { (device.Value as IOpenable).Close(); } } } if (isValid(commands[1]) && commands[1] != "all") { if (devices[commands[1]] is IOpenable) { (devices[commands[1]] as IOpenable).Close(); } else { Console.WriteLine("You can't apply command \'close\' to {0} {1}. " + "Press <Enter> to continue", devices[commands[1]].GetType().Name, commands[1]); Console.ReadLine(); } } break; case "addvolume": if (commands.Length != 2) { Help(); continue; } if (commands[1] == "all") { foreach (var device in devices) { if (device.Value is IVolumeable) { (device.Value as IVolumeable).AddVolume(); } } } if (isValid(commands[1]) && commands[1] != "all") { if (devices[commands[1]] is IVolumeable) { (devices[commands[1]] as IVolumeable).AddVolume(); } else { Console.WriteLine("You can't apply command \'addvolume\' to {0} {1}. " + "Press <Enter> to continue", devices[commands[1]].GetType().Name, commands[1]); Console.ReadLine(); } } break; case "decvolume": if (commands.Length != 2) { Help(); continue; } if (commands[1] == "all") { foreach (var device in devices) { if (device.Value is IVolumeable) { (device.Value as IVolumeable).DecreaseVolume(); } } } if (isValid(commands[1]) && commands[1] != "all") { if (devices[commands[1]] is IVolumeable) { (devices[commands[1]] as IVolumeable).DecreaseVolume(); } else { Console.WriteLine("You can't apply command \'decvolume\' to {0} {1}. " + "Press <Enter> to continue", devices[commands[1]].GetType().Name, commands[1]); Console.ReadLine(); } } break; case "mute": if (commands.Length != 2) { Help(); continue; } if (commands[1] == "all") { foreach (var device in devices) { if (device.Value is IVolumeable) { (device.Value as IVolumeable).Mute(); } } } if (isValid(commands[1]) && commands[1] != "all") { if (devices[commands[1]] is IVolumeable) { (devices[commands[1]] as IVolumeable).Mute(); } else { Console.WriteLine("You can't apply command \'mute\' to {0} {1}. " + "Press <Enter> to continue", devices[commands[1]].GetType().Name, commands[1]); Console.ReadLine(); } } break; case "startrec": if (commands.Length != 2) { Help(); continue; } if (commands[1] == "all") { foreach (var device in devices) { if (device.Value is IRecording) { (device.Value as IRecording).StartRecording(); } } } if (isValid(commands[1]) && commands[1] != "all") { if (devices[commands[1]] is IRecording) { (devices[commands[1]] as IRecording).StartRecording(); } else { Console.WriteLine("You can't apply command \'startrec\' to {0} {1}. " + "Press <Enter> to continue", devices[commands[1]].GetType().Name, commands[1]); Console.ReadLine(); } } break; case "stoprec": if (commands.Length != 2) { Help(); continue; } if (commands[1] == "all") { foreach (var device in devices) { if (device.Value is IRecording) { (device.Value as IRecording).StopRecording(); } } } if (isValid(commands[1]) && commands[1] != "all") { if (devices[commands[1]] is IRecording) { (devices[commands[1]] as IRecording).StopRecording(); } else { Console.WriteLine("You can't apply command \'stoprec\' to {0} {1}. " + "Press <Enter> to continue", devices[commands[1]].GetType().Name, commands[1]); Console.ReadLine(); } } break; case "addtemp": if (commands.Length != 2) { Help(); continue; } if (commands[1] == "all") { foreach (var device in devices) { if (device.Value is ITemperature) { (device.Value as ITemperature).AddTemperture(); } } } if (isValid(commands[1]) && commands[1] != "all") { if (devices[commands[1]] is ITemperature) { (devices[commands[1]] as ITemperature).AddTemperture(); } else { Console.WriteLine("You can't apply command \'addtemp\' to {0} {1}. " + "Press <Enter> to continue", devices[commands[1]].GetType().Name, commands[1]); Console.ReadLine(); } } break; case "dectemp": if (commands.Length != 2) { Help(); continue; } if (commands[1] == "all") { foreach (var device in devices) { if (device.Value is ITemperature) { (device.Value as ITemperature).DecreaseTemperature(); } } } if (isValid(commands[1]) && commands[1] != "all") { if (devices[commands[1]] is ITemperature) { (devices[commands[1]] as ITemperature).DecreaseTemperature(); } else { Console.WriteLine("You can't apply command \'dectemp\' to {0} {1}. " + "Press <Enter> to continue", devices[commands[1]].GetType().Name, commands[1]); Console.ReadLine(); } } break; case "addbass": if (commands.Length != 2) { Help(); continue; } if (commands[1] == "all") { foreach (var device in devices) { if (device.Value is IBass) { (device.Value as IBass).BassOn(); } } } if (isValid(commands[1]) && commands[1] != "all") { if (devices[commands[1]] is IBass) { (devices[commands[1]] as IBass).BassOn(); } else { Console.WriteLine("You can't apply command \'addbass\' to {0} {1}. " + "Press <Enter> to continue", devices[commands[1]].GetType().Name, commands[1]); Console.ReadLine(); } } break; case "delbass": if (commands.Length != 2) { Help(); continue; } if (commands[1] == "all") { foreach (var device in devices) { if (device.Value is IBass) { (device.Value as IBass).BassOff(); } } } if (isValid(commands[1]) && commands[1] != "all") { if (devices[commands[1]] is IBass) { (devices[commands[1]] as IBass).BassOff(); } else { Console.WriteLine("You can't apply command \'delbass\' to {0} {1}. " + "Press <Enter> to continue", devices[commands[1]].GetType().Name, commands[1]); Console.ReadLine(); } } break; case "exit": if (commands.Length != 1) { Help(); } return; default: Help(); continue; break; } } }
public PanasonicStereoSystem(PanasonicLoudspeakers p) : base(p) { }