Example #1
0
        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);
                        }
                    }
                }
            }
        }