Example #1
0
        /// <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)));
        }
Example #2
0
        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);
        }
Example #3
0
        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);
        }
Example #4
0
 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;
 }
Example #6
0
        // 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);
        }
Example #7
0
        public bool TryGetCostume(ItemUsable itemUsable, out InventoryItem inventoryItem)
        {
            if (itemUsable is null)
            {
                inventoryItem = null;
                return(false);
            }

            return(TryGetCostume(itemUsable.Id, out inventoryItem));
        }
Example #8
0
 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;
 }
Example #9
0
        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);
        }
Example #11
0
        public void Update(ItemUsable itemUsable)
        {
            if (Complete)
            {
                return;
            }

            if (!_itemIds.Contains(itemUsable.Id))
            {
                _current++;
                _itemIds.Add(itemUsable.Id);
            }
            Check();
        }
Example #12
0
        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();
        }
Example #13
0
        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
                });
            }
        }
Example #14
0
 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;
 }
Example #15
0
 protected AttachmentActionResult(Bencodex.Types.Dictionary serialized)
 {
     itemUsable = (ItemUsable)ItemFactory.Deserialize(
         (Bencodex.Types.Dictionary)serialized["itemUsable"]
         );
 }