/// <summary> /// `ItemUsable`의 CP를 반환합니다. /// </summary> /// <param name="itemUsable"></param> /// <returns></returns> public static int GetCP(ItemUsable itemUsable) { var statsCP = GetStatsCP(itemUsable.StatsMap); var skills = itemUsable.Skills.Concat(itemUsable.BuffSkills).ToArray(); return(DecimalToInt(statsCP * GetSkillsMultiplier(skills.Length))); }
public bool TryGetEquipment(ItemUsable itemUsable, out InventoryItem inventoryItem) { if (itemUsable is null) { inventoryItem = null; return(false); } foreach (var item in Equipments) { if (!(item.ItemBase.Value is Equipment equipment)) { continue; } if (equipment.ItemId != itemUsable.ItemId) { continue; } inventoryItem = item; return(true); } inventoryItem = null; return(false); }
public bool TryGetConsumable(ItemUsable itemUsable, out InventoryItem inventoryItem) { if (itemUsable is null) { inventoryItem = null; return(false); } foreach (var item in Consumables) { if (!(item.ItemBase.Value is Consumable food)) { continue; } if (food.ItemId != itemUsable.ItemId) { continue; } inventoryItem = item; return(true); } inventoryItem = null; return(false); }
public void useItem(int index) { if (Slots[index] is ItemUsable) { ItemUsable _tmp = Slots[index] as ItemUsable; _tmp.use(); } }
protected AttachmentActionResult(Dictionary serialized) { itemUsable = serialized.ContainsKey("itemUsable") ? (ItemUsable)ItemFactory.Deserialize((Dictionary)serialized["itemUsable"]) : null; costume = serialized.ContainsKey("costume") ? (Costume)ItemFactory.Deserialize((Dictionary)serialized["costume"]) : null; }
// todo 1: 퀘스트 전용 함수임을 알 수 있는 네이밍이 필요함. // todo 2: 혹은 분리된 객체에게 위임하면 좋겠음. #region Quest From Action public void UpdateFromCombination(ItemUsable itemUsable) { questList.UpdateCombinationQuest(itemUsable); var type = itemUsable.ItemType == ItemType.Equipment ? QuestEventType.Equipment : QuestEventType.Consumable; eventMap.Add(new KeyValuePair <int, int>((int)type, 1)); UpdateGeneralQuest(new[] { type }); UpdateCompletedQuest(); UpdateFromAddItem(itemUsable, false); }
public bool TryGetCostume(ItemUsable itemUsable, out InventoryItem inventoryItem) { if (itemUsable is null) { inventoryItem = null; return(false); } return(TryGetCostume(itemUsable.Id, out inventoryItem)); }
public ResultModel(Dictionary serialized) : base(serialized) { id = serialized["id"].ToGuid(); materialItemIdList = serialized["materialItemIdList"].ToList(StateExtensions.ToGuid); gold = serialized["gold"].ToBigInteger(); actionPoint = serialized["actionPoint"].ToInteger(); enhancementResult = serialized["enhancementResult"].ToEnum <EnhancementResult>(); preItemUsable = serialized.ContainsKey("preItemUsable") ? (ItemUsable)ItemFactory.Deserialize((Dictionary)serialized["preItemUsable"]) : null; }
public void UpdateItemGradeQuest(ItemUsable itemUsable) { var targets = _quests .OfType <ItemGradeQuest>() .Where(i => i.Grade == itemUsable.Grade && !i.Complete); foreach (var target in targets) { target.Update(itemUsable); } }
public async Task Query( ItemUsable itemUsable, Costume costume, Dictionary <string, object> itemUsableDict, Dictionary <string, object> costumeDict ) { const string query = @" { sellerAgentAddress sellerAvatarAddress price itemUsable { itemId itemType itemSubType } costume { itemId itemType itemSubType } }"; var itemId = new Guid("220acb43-095e-46f6-9725-4223c69827e8"); ShopItem shopItem; if (costume is null) { shopItem = new ShopItem(Fixtures.UserAddress, Fixtures.AvatarAddress, new Guid("d3d9ac06-eb91-4cc4-863a-5b4769ad633e"), 100 * Fixtures.CurrencyFX, itemUsable); } else { shopItem = new ShopItem(Fixtures.UserAddress, Fixtures.AvatarAddress, new Guid("d3d9ac06-eb91-4cc4-863a-5b4769ad633e"), 100 * Fixtures.CurrencyFX, costume); } var expected = new Dictionary <string, object> { ["sellerAgentAddress"] = "0xfc2a412ea59122B114B672a5518Bc113955Dd2FE", ["sellerAvatarAddress"] = "0x983c3Fbfe8243a0e36D55C6C1aE26A7c8Bb6CBd4", ["price"] = "100 NCG", ["itemUsable"] = itemUsableDict, ["costume"] = costumeDict, }; var queryResult = await ExecuteQueryAsync <ShopItemType>(query, source : shopItem); Assert.Equal(expected, queryResult.Data); }
public void Update(ItemUsable itemUsable) { if (Complete) { return; } if (!_itemIds.Contains(itemUsable.Id)) { _current++; _itemIds.Add(itemUsable.Id); } Check(); }
public void UpdateFromAddItem(ItemUsable itemUsable, bool canceled) { var pair = inventory.AddItem(itemUsable); itemMap.Add(pair); if (!canceled) { questList.UpdateCollectQuest(itemMap); questList.UpdateItemGradeQuest(itemUsable); questList.UpdateItemTypeCollectQuest(new[] { itemUsable }); } UpdateCompletedQuest(); }
public void UpdateCombinationQuest(ItemUsable itemUsable) { var targets = _quests .OfType <CombinationQuest>() .Where(i => i.ItemType == itemUsable.ItemType && i.ItemSubType == itemUsable.ItemSubType && !i.Complete); foreach (var target in targets) { target.Update(new List <ItemBase> { itemUsable }); } }
protected AttachmentActionResult(BxDictionary serialized) { itemUsable = serialized.ContainsKey("itemUsable") ? (ItemUsable)ItemFactory.Deserialize((BxDictionary)serialized["itemUsable"]) : null; costume = serialized.ContainsKey("costume") ? (Costume)ItemFactory.Deserialize((BxDictionary)serialized["costume"]) : null; tradableFungibleItem = serialized.ContainsKey("tradableFungibleItem") ? (ITradableFungibleItem)ItemFactory.Deserialize( (BxDictionary)serialized["tradableFungibleItem"]) : null; tradableFungibleItemCount = serialized.ContainsKey("tradableFungibleItemCount") ? serialized["tradableFungibleItemCount"].ToInteger() : default; }
protected AttachmentActionResult(Bencodex.Types.Dictionary serialized) { itemUsable = (ItemUsable)ItemFactory.Deserialize( (Bencodex.Types.Dictionary)serialized["itemUsable"] ); }