// 입고 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); } }
static public void UnregisterOnChangedStoredAmountCallback(string itemID, SimpleDelegate reciever) { if (!storedItemDic.ContainsKey(itemID)) { return; } StoredItemInfo info = storedItemDic[itemID]; info.onChangedAmount -= reciever; }
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()); } }
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); }
static public bool Consume(StoredItemInfo itemData, double amount) { if (itemData == null) { return(false); } if (itemData.amount < amount) { return(false); } itemData.amount -= amount; return(true); }
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); }