コード例 #1
0
        public static ItemsByMaterial On_ItemsByQuality_ItemsOfQuality(ItemsByQuality self, ItemQuality quality, bool atLeast)
        {
            if (quality == ItemQuality.Any)
            {
                return(self.AllItems());
            }
            if (atLeast)
            {
                return(self.ItemsOfQualityOrHigher(quality));
            }
            LargeItemsByMaterial result;

            if (myClasses[self].TryGetValue(quality, out result))
            {
                return(result.ToItemsByMaterial());
            }
            return(null);
        }
コード例 #2
0
        public DataTable FindItems(IList <ItemID> itemIDs, GameLibrary.ItemQuality quality)
        {
            if (_gnomanEmpire == null)
            {
                throw new InvalidOperationException("You must LoadGame() prior to FindItems()");
            }

            Dictionary <string, List <Item> > searchResult = null;
            ItemsByQuality resultByQuality = null;

            DataTable itemTable = new DataTable("items");

            DataColumn cNum = new DataColumn("Num", typeof(string));

            itemTable.PrimaryKey = new DataColumn[] { itemTable.Columns.Add(cNum.ColumnName) };

            itemTable.Columns.Add("Name", typeof(string));
            itemTable.Columns.Add("Material", typeof(string));
            itemTable.Columns.Add("Quality", typeof(string));
            itemTable.Columns.Add("Location type", typeof(string));
            itemTable.Columns.Add("Location", typeof(string));
            itemTable.Columns.Add("Position", typeof(string));

            // When no object matches, the result can be null, or contain only empty lists.
            foreach (ItemID itemID in itemIDs)
            {
                resultByQuality = _gnomanEmpire.Fortress.StockManager.ItemsByQuality(itemID.ToString());
                if (resultByQuality != null)
                {
                    searchResult = resultByQuality.ItemsOfQualityOrHigher(quality).Items;
                }
                else
                {
                    searchResult = null;
                }
                if (searchResult != null)
                {
                    foreach (var valuePair in searchResult)
                    {
                        List <Game.Item> list = valuePair.Value;
                        foreach (Game.Item item in list)
                        {
                            DataRow tmpRow = itemTable.NewRow();
                            int     col    = 0;

                            // Base attributes
                            tmpRow[col++] = item.ID;
                            tmpRow[col++] = Item.GroupName(item.ItemID);// item.Name();
                            tmpRow[col++] = item.MaterialName();
                            tmpRow[col++] = item.Quality;

                            // Parent type and parent
                            if (item.Parent != null)
                            {
                                if (item.Parent is Game.Character)
                                {
                                    tmpRow[col++] = "Gnome";
                                }
                                else if (item.Parent is Game.StorageContainer)
                                {
                                    tmpRow[col++] = "Container";
                                }
                                else
                                {
                                    tmpRow[col++] = "?"; // Default catcher. Could be monster?
                                }
                                tmpRow[col++] = item.Parent.Name();
                            }
                            else
                            {
                                tmpRow[col++] = "Ground";
                                tmpRow[col++] = "";
                            }

                            tmpRow[col++] = item.Position.ToString();

                            itemTable.Rows.Add(tmpRow);
                        }
                    }
                }
            }

            return(itemTable);
        }
コード例 #3
0
 public static ItemsByMaterial On_ItemsByQuality_ItemsOfQuality(ItemsByQuality self, ItemQuality quality, bool atLeast)
 {
     if (quality == ItemQuality.Any)
     {
         return self.AllItems();
     }
     if (atLeast)
     {
         return self.ItemsOfQualityOrHigher(quality);
     }
     LargeItemsByMaterial result;
     if (myClasses[self].TryGetValue(quality, out result))
     {
         return result.ToItemsByMaterial();
     }
     return null;
 }