示例#1
0
        private void cbItem_SelectedIndexChanged(object sender, EventArgs e)
        {
            var selectedItemId = (ushort)(int)cbItem.SelectedValue;
            var itemCount      = (ushort)0;

            pbItem.BackColor = ItemColor.GetItemColor(selectedItemId);
            pbItem.Image     = ItemSprite.GetItemSprite(selectedItemId, itemCount);
            SelectedItemInfo = itemConvertor.FromItemId(selectedItemId);
            OnItemChanged();
        }
示例#2
0
        public void AutoWire(ItemSource ItemSource, ItemConvertor itemConvertor)
        {
            this.itemSource  = ItemSource;
            allItems         = itemSource.GetItemDropdownData();
            itemLookup       = allItems.ToDictionary(i => i.Value);
            lbAll.DataSource = allItems;

            foreach (ItemKind itemKind in Enum.GetValues(typeof(ItemKind)))
            {
                var k = itemKind;
                itemKindViewBindingSource.Add(new ItemKindView($"Kind: {itemKind}", i => ItemInfo.GetItemKind(i) == k));
            }

            itemKindViewBindingSource.Add(new ItemKindView($"Has DIY", i => itemConvertor.FromItemId(i).CanRecipe));
        }
示例#3
0
 public bool IsApplicable(ushort itemId)
 {
     return(itemConvertor.FromItemId(itemId).CanRecipe);
 }
示例#4
0
        public DisplaySegmentLayout(ItemConvertor itemConvertor, Item rawItem, DisplaySegmentLayoutOptions options)
        {
            this.options = options;
            itemInfo     = itemConvertor.FromItemId(itemConvertor.GetItemId(rawItem));

            ushort displayItemId;

            if (this.itemInfo.Kind == ItemKind.Kind_Fish || this.itemInfo.Kind == ItemKind.Kind_Insect)
            {
                ushort modelId = itemConvertor.GetCreatureModel(itemInfo.ItemId);
                switch (options.CreatureDisplayStyle)
                {
                case CreatureDisplayStyle.AsModel:
                    displayItemId = modelId;
                    break;

                case CreatureDisplayStyle.InTank:
                    displayItemId = itemInfo.ItemId;
                    break;

                default:
                    throw new Exception("Unsupported creature display type");
                }

                if (options.CreatureDropStyle.HasFlag(CreatureDropStyle.Creature))
                {
                    droppedItems.Add(itemConvertor.ApplyPresentation(new Item(itemInfo.ItemId), PresentationType.Dropped));
                }
                if (options.CreatureDropStyle.HasFlag(CreatureDropStyle.Model))
                {
                    droppedItems.Add(itemConvertor.ApplyPresentation(new Item(modelId), PresentationType.Dropped));
                }
            }
            else
            {
                var item = new Item();
                item.CopyFrom(rawItem);
                if (!itemInfo.HasVariants)
                {
                    item.Count = (ushort)(itemInfo.MaxStackSize - 1);
                }
                droppedItems.Add(itemConvertor.ApplyPresentation(item, PresentationType.Dropped));
            }

            placedItem = new Item();
            placedItem.CopyFrom(rawItem);
            itemConvertor.ApplyPresentation(placedItem, PresentationType.Hung, PresentationType.Placed, PresentationType.Dropped);
            placedItemSize = placedItem.GetSize();

            if (itemInfo.CanRecipe)
            {
                recipeItem = new Item();
                recipeItem.CopyFrom(rawItem);
                itemConvertor.ApplyPresentation(recipeItem, PresentationType.Recipe, PresentationType.Dropped);
                recipeItemSize = recipeItem.GetSize();
            }
            else
            {
                recipeItem     = null;
                recipeItemSize = Size.Empty;
            }
        }
示例#5
0
        public IEnumerable <Item> ResolveItems()
        {
            List <ushort>    itemIds              = new List <ushort>();
            HashSet <ushort> visitedItemIds       = new HashSet <ushort>();
            HashSet <Guid>   visitedCollectionIds = new HashSet <Guid>();

            void AddCollection(ItemCollection collection)
            {
                if (visitedCollectionIds.Contains(collection.Id))
                {
                    return;
                }

                foreach (var member in collection.Members)
                {
                    switch (member.Type)
                    {
                    case CollectionMemberType.Collection:
                        if (collectionLookup.TryGetValue(member.CollectionId, out var childCollection))
                        {
                            AddCollection(childCollection);
                        }
                        break;

                    case CollectionMemberType.Item:
                        AddItem(member.ItemId);
                        break;
                    }
                }
            }

            void AddItem(ushort itemId)
            {
                if (visitedItemIds.Contains(itemId))
                {
                    return;
                }
                itemIds.Add(itemId);
                visitedItemIds.Add(itemId);
            }

            foreach (TreeNode itemNode in itemsNode.Nodes)
            {
                if (itemNode.Checked)
                {
                    var itemId = (ushort)itemNode.Tag;
                    AddItem(itemId);
                }
            }

            foreach (TreeNode collectionNode in collectionsNode.Nodes)
            {
                if (collectionNode.Checked)
                {
                    var collection = (ItemCollection)collectionNode.Tag;
                    AddCollection(collection);
                }
            }


            foreach (ushort itemId in itemIds)
            {
                ItemEditorInfo info = itemConvertor.FromItemId(itemId);

                bool includeVariants =
                    info.HasVariants &&
                    ((chkVaryDiy.Checked && info.CanRecipe) ||
                     (chkVaryOther.Checked && !info.CanRecipe));

                if (includeVariants)
                {
                    if (info.BodyVariants?.Length > 0)
                    {
                        foreach (var bodyVariant in info.BodyVariants)
                        {
                            if (info.FabricVariants?.Length > 0)
                            {
                                Item item = new Item(itemId);
                                item.Count    = bodyVariant.Value;
                                item.UseCount = info.FabricVariants[0].Value;
                                yield return(item);
                            }
                            else
                            {
                                Item item = new Item(itemId);
                                item.Count    = bodyVariant.Value;
                                item.UseCount = 0;
                                yield return(item);
                            }
                        }
                    }
                    else if (info.FabricVariants?.Length > 0)
                    {
                        foreach (var fabricVariant in info.FabricVariants)
                        {
                            Item item = new Item(itemId);
                            item.Count    = 0;
                            item.UseCount = fabricVariant.Value;
                            yield return(item);
                        }
                    }
                    else
                    {
                        Item item = new Item(itemId);
                        item.Count    = 0;
                        item.UseCount = 0;
                        yield return(item);
                    }
                }
                else
                {
                    Item item = new Item(itemId);
                    item.Count = (ushort)(info.MaxStackSize - 1);
                    yield return(item);
                }
            }
        }