Beispiel #1
0
        /// <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());
        }
Beispiel #2
0
        /// <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);
            }
        }