示例#1
0
        // 입고
        static public void InItem(string materialID, double value)
        {
            if (string.IsNullOrEmpty(materialID))
            {
                return;
            }

            if (value == 0)
            {
                return;
            }

            StoredItemInfo info = null;

            if (storedItemDic.ContainsKey(materialID))
            {
                info         = storedItemDic[materialID];
                info.amount += value;
            }

            else
            {
                info        = new StoredItemInfo();
                info.itemID = materialID;
                info.index  = GameDataManager.itemDic[materialID].index;
                info.amount = value;

                storedItemDic.Add(materialID, info);
            }
        }
示例#2
0
        static public void UnregisterOnChangedStoredAmountCallback(string itemID, SimpleDelegate reciever)
        {
            if (!storedItemDic.ContainsKey(itemID))
            {
                return;
            }

            StoredItemInfo info = storedItemDic[itemID];

            info.onChangedAmount -= reciever;
        }
示例#3
0
        public async Task <IActionResult> UpdateMeta([FromRoute] string id, [FromBody] StoredItemInfo meta)
        {
            var stored = await repo.GetItemMetadata(GetRepository(), GetPassphrase(), id);

            stored = stored with {
                Tags = meta.Tags
            };
            await repo.SetItemMetadata(GetRepository(), GetPassphrase(), id, stored);

            return(Ok());
        }
    }
示例#4
0
        public async Task <(IEnumerable <StoredItemInfo>, int)> ListRepositoryAsync(string repo,
                                                                                    string passphrase,
                                                                                    int offset,
                                                                                    int limit,
                                                                                    string[] tags,
                                                                                    Func <StoredItemInfo, bool> predicate)
        {
            var ids = await driver.ListRepositoryItemIds(repo);

            List <StoredItemInfo> items = new();

            foreach (var id in ids)
            {
                var meta = await GetItemMetadata(repo, passphrase, id);

                var tagMatchScore = 1;
                if (!tags.IsNullOrEmpty())
                {
                    var storedTags = meta.Tags ?? Array.Empty <string>();

                    tagMatchScore = storedTags.Intersect(tags, StringComparer.InvariantCultureIgnoreCase).Count();
                }

                if (tagMatchScore == 0)
                {
                    continue;
                }

                var info = new StoredItemInfo
                {
                    ItemId           = id,
                    MimeType         = meta.MimeType,
                    Name             = meta.Name,
                    OriginalFileName = meta.OriginalFilename,
                    Tags             = meta.Tags,
                    TagMatchScore    = tagMatchScore
                };

                if (predicate != null && !predicate(info))
                {
                    continue;
                }

                items.Add(info);
            }
            items = items.OrderByDescending(i => i.TagMatchScore).ToList();
            var ret = items.Skip(offset).Take(limit);

            return(ret, items.Count);
        }
示例#5
0
        static public bool Consume(StoredItemInfo itemData, double amount)
        {
            if (itemData == null)
            {
                return(false);
            }

            if (itemData.amount < amount)
            {
                return(false);
            }

            itemData.amount -= amount;

            return(true);
        }
示例#6
0
        static public double GetItemStoredAmount(Item item)
        {
            if (item == null)
            {
                return(0d);
            }

            if (!storedItemDic.ContainsKey(item.id))
            {
                return(0d);
            }

            StoredItemInfo info = storedItemDic[item.id];

            return(info.amount);
        }