public Command(string room, string item, string action, TheWorld world) { mSubCommands = new List<Command>(); //is item a device class? bool itemIsDeviceClass = false; EDeviceClass itemClass = EDeviceClass.Kinect; Array vals = Enum.GetValues(typeof(EDeviceClass)); foreach (EDeviceClass c in vals) { if (SoundsLike.Get(c, false) == item) { itemIsDeviceClass = true; itemClass = c; break; } } //convert the action to a devicecapabilitiesenum EDeviceCapabilities actionResolved = EDeviceCapabilities.None; vals = Enum.GetValues(typeof(EDeviceCapabilities)); foreach (EDeviceCapabilities c in vals) { if (SoundsLike.Get(c, true) == action) { actionResolved = c; break; } } //find the devices foreach (Room rm in world.ListRooms()) { if (room == "" || rm.Name == room) { foreach (Device d in rm.ListDevices()) { bool hit = false; if (itemIsDeviceClass) { if (itemClass == d.Class) hit = true; } else { if (item == d.FriendlyName) hit = true; } if (hit) { Command c = new Command(rm, d, actionResolved); mSubCommands.Add(c); } } } } }