コード例 #1
0
        private bool HasCapability(ItemCapabilityType type)
        {
            ItemCapabilityQueryResult result =
                ExecuteCapabilityQuery(new ItemCapabilityQuery(
                                           ItemCapabilityQuery.ItemCapabilityQueryType.HasCapability, type));

            if (result.ResultStatus == ItemCapabilityQueryResult.ItemCapabilityQueryResultType.True)
            {
                return(true);
            }
            else
            {
                return(false);
            }
        }
コード例 #2
0
        private ItemCapability[] GetCapability(ItemCapabilityType type)
        {
            ItemCapabilityQueryResult result =
                ExecuteCapabilityQuery(new ItemCapabilityQuery(
                                           ItemCapabilityQuery.ItemCapabilityQueryType.GetCapability, type));

            if (result.ResultStatus == ItemCapabilityQueryResult.ItemCapabilityQueryResultType.Success)
            {
                return(result.Capabilities);
            }
            else
            {
                return(null);
            }
        }
コード例 #3
0
        private ItemCapability[] GetAllCapabilities()
        {
            ItemCapabilityQueryResult result =
                ExecuteCapabilityQuery(
                    new ItemCapabilityQuery(ItemCapabilityQuery.ItemCapabilityQueryType.GetAllCapabilities,
                                            ItemCapabilityType.None));

            if (result.ResultStatus == ItemCapabilityQueryResult.ItemCapabilityQueryResultType.Empty)
            {
                return(new ItemCapability[0]);
            }
            else
            {
                return(result.Capabilities);
            }
        }
コード例 #4
0
        /// <summary>
        /// Executes a query to get the capabilities of this item.
        /// This enables us to ask things like, "is the item a tool?"
        /// You can have items that have more than one tool capability module, and return them both via a query.
        /// This is mostly useful for the object that is receiving an action from the item.
        /// </summary>
        /// <param name="query">ItemCapabilityQuery object</param>
        /// <returns></returns>
        protected ItemCapabilityQueryResult ExecuteCapabilityQuery(ItemCapabilityQuery query)
        {
            var result = new ItemCapabilityQueryResult();

            result.ResultStatus = ItemCapabilityQueryResult.ItemCapabilityQueryResultType.Error;
            switch (query.queryType)
            {
            case ItemCapabilityQuery.ItemCapabilityQueryType.GetAllCapabilities:
                //Get all the capabilities of the object. Not particularly useful.
                foreach (ItemCapability c in capabilities.Values)
                {
                    result.AddCapability(c);
                }
                if (capabilities.Count() > 0)
                {
                    result.ResultStatus = ItemCapabilityQueryResult.ItemCapabilityQueryResultType.Success;
                }
                else
                {
                    result.ResultStatus = ItemCapabilityQueryResult.ItemCapabilityQueryResultType.Empty;
                }
                break;

            case ItemCapabilityQuery.ItemCapabilityQueryType.GetCapability:
                //Get the capabilities that match a particular capability type
                IEnumerable <ItemCapability> caps = from c in capabilities.Values
                                                    where (c.CapabilityType == query.capabilityType)
                                                    select c;
                foreach (ItemCapability c in caps)
                {
                    result.AddCapability(c);
                }
                if (caps.Count() > 0)
                {
                    result.ResultStatus = ItemCapabilityQueryResult.ItemCapabilityQueryResultType.Success;
                }
                else
                {
                    result.ResultStatus = ItemCapabilityQueryResult.ItemCapabilityQueryResultType.Empty;
                }
                break;

            case ItemCapabilityQuery.ItemCapabilityQueryType.HasCapability:
                //Check if the item has a capability of a certain type.
                IEnumerable <ItemCapability> hascap = from c in capabilities.Values
                                                      where (c.CapabilityType == query.capabilityType)
                                                      select c;
                if (hascap.Count() > 0)
                {
                    result.ResultStatus = ItemCapabilityQueryResult.ItemCapabilityQueryResultType.True;
                }
                else
                {
                    result.ResultStatus = ItemCapabilityQueryResult.ItemCapabilityQueryResultType.False;
                }
                break;
            }
            if (result.ResultStatus == ItemCapabilityQueryResult.ItemCapabilityQueryResultType.Error)
            {
                result.ErrorMessage = "No Result";
            }
            return(result);
        }