/// <summary> /// Inventory Groups. /// </summary> /// <returns><c>BagCollection</c> of Inventory Groups.</returns> private static BagCollection <InvGroups> Groups() { IndexedCollection <InvGroups> collection = new IndexedCollection <InvGroups>(); foreach (invGroups group in s_context.invGroups) { InvGroups item = new InvGroups { ID = group.groupID, Name = group.groupName, UseBasePrice = group.useBasePrice, Anchored = group.anchored, Anchorable = group.anchorable, FittableNonSingleton = group.fittableNonSingleton }; if (group.published.HasValue) { item.Published = group.published.Value; } if (group.categoryID.HasValue) { item.CategoryID = group.categoryID.Value; } collection.Items.Add(item); } return(collection.ToBag()); }
/// <summary> /// Add properties to an item. /// </summary> /// <param name="srcItem"></param> /// <param name="groupItems"></param> /// <returns></returns> private static void CreateItem(InvTypes srcItem, ICollection <SerializableItem> groupItems) { Util.UpdatePercentDone(Database.ItemsTotalCount); srcItem.Generated = true; InvGroups itemGroup = Database.InvGroupsTable[srcItem.GroupID]; // Creates the item with base informations SerializableItem item = new SerializableItem { ID = srcItem.ID, Name = srcItem.Name, Description = srcItem.Description ?? String.Empty, Icon = srcItem.IconID.HasValue ? Database.EveIconsTable[srcItem.IconID.Value].Icon : String.Empty, PortionSize = srcItem.PortionSize, MetaGroup = ItemMetaGroup.None, Group = itemGroup.Name, Category = Database.InvCategoriesTable[itemGroup.CategoryID].Name, Race = (Race)Enum.ToObject(typeof(Race), srcItem.RaceID ?? 0) }; // Set race to Faction if item race is Jovian or belongs to a Faction market group if (item.Race == Race.Jove || Database.InvMarketGroupsTable.Any(group => srcItem.MarketGroupID == group.ID && (DBConstants.FactionMarketGroupIDs.Any(id => id == group.ID) || DBConstants.FactionMarketGroupIDs.Any(id => id == group.ParentID)))) { item.Race = Race.Faction; } // Add traits AddTraits(srcItem, item); // Add the properties and prereqs AddItemPropsAndPrereq(srcItem, item); // Metagroup AddMetaGroup(srcItem, item); // Look for slots if (Database.DgmTypeEffectsTable.Contains(srcItem.ID, 0, DBConstants.LowSlotEffectID)) { item.Slot = ItemSlot.Low; } else if (Database.DgmTypeEffectsTable.Contains(srcItem.ID, 0, DBConstants.MedSlotEffectID)) { item.Slot = ItemSlot.Medium; } else if (Database.DgmTypeEffectsTable.Contains(srcItem.ID, 0, DBConstants.HiSlotEffectID)) { item.Slot = ItemSlot.High; } else { item.Slot = ItemSlot.NoSlot; } // Add reaction info for reactions if (Database.InvGroupsTable[srcItem.GroupID].CategoryID == DBConstants.ReactionCategoryID) { AddReactionInfo(srcItem, item); } // Add fuel info for control towers if (srcItem.GroupID == DBConstants.ControlTowerGroupID) { AddControlTowerFuelInfo(srcItem, item); } // Add this item groupItems.Add(item); // If the current item isn't in a market group then we are done if (srcItem.MarketGroupID == DBConstants.RootNonMarketGroupID) { return; } // Look for variations which are not in any market group foreach (InvTypes srcVariationItem in Database.InvMetaTypesTable.Where(x => x.ParentItemID == srcItem.ID).Select( variation => Database.InvTypesTable[variation.ItemID]).Where( srcVariationItem => srcVariationItem.Published && srcVariationItem.MarketGroupID == DBConstants.RootNonMarketGroupID)) { srcVariationItem.RaceID = (int)Race.Faction; CreateItem(srcVariationItem, groupItems); } }