Пример #1
0
        public new ConsumableItemMaster GetItemMaster()
        {
            if (consumableItemMaster != null)
            {
                return(consumableItemMaster);
            }

            if (ItemRegister.TryGetItem <ConsumableItemMaster>(Name, out var result))
            {
                consumableItemMaster = result;
                return(consumableItemMaster);
            }

            consumableItemMaster = new ConsumableItemMaster();
            consumableItemMaster = ItemDatabase.GetItemByName("HP Potion I").DuplicateAs <ConsumableItemMaster>();
            consumableItemMaster.SetItemName(NameKey, Name);
            consumableItemMaster.SetItemDescription(DescriptionKey, Description);
            consumableItemMaster.worldSpriteName = SpriteKey;

            consumableItemMaster.stats         = new StatsModificator();
            consumableItemMaster.equipmentSlot = EquipmentItemMaster.EquipmentSlot.Potion;


            ItemRegister.AddItemMaster(consumableItemMaster);

            return(consumableItemMaster);
        }
Пример #2
0
        public void ItemRegister_Total_SingleItem()
        {
            var itemRegister = new ItemRegister();

            itemRegister.Add(new MockItem());
            Assert.Equal(1.0m, itemRegister.Total());
        }
Пример #3
0
        public void ItemRegister_UniqueItemCount_SingleItem()
        {
            var register = new ItemRegister();

            register.Add(new MockItem());
            Assert.Equal(1, register.UniqueItemCount());
        }
Пример #4
0
        public void ItemRegister_Total_TenItems()
        {
            var itemRegister = new ItemRegister();

            for (int i = 0; i < 10; i++)
            {
                itemRegister.Add(new MockItem());
            }
            Assert.Equal(10.0m, itemRegister.Total());
        }
Пример #5
0
 private void Registers_MethodRegistered(ItemRegister obj)
 {
     if (obj is MethodRegister methodItem)
     {
         if (!methodItem.Type.CustomAttributes.OfType <SerializableAttribute>().Any())
         {
             MessageBox.Show($"Ошибка в инициализации метода {methodItem.Directory.Last()}. " +
                             $"Класс {methodItem.Type.FullName} не помечен как сериализуемый");
         }
     }
 }
Пример #6
0
        public void ItemRegister_Add_QuantityItem()
        {
            var register = new ItemRegister();

            register.Add(new QuantityItem()
            {
                quantity = 1,
                value    = 1
            });
            Assert.Equal(1, register.Total());
        }
Пример #7
0
        public void ItemRegister_Add_WeightedItem()
        {
            var register = new ItemRegister();

            register.Add(new WeightedItem()
            {
                weight = 1,
                value  = 1
            });
            Assert.Equal(1, register.Total());
        }
        internal static void Postfix(string name, int plusLevel, ref ItemMaster __result)
        {
            if (__result != null)
            {
                return;
            }

            if (ThrowIfNameNullOrEmpty(name))
            {
                return;
            }

            // Remove spaces and try to find the name
            var clean       = name.Replace(" ", "");
            var cleanedItem = ItemDatabase.Instance?.itemCollections[plusLevel]?.items.FirstOrDefault(i => i != null && i.name == clean);

            if (cleanedItem != null)
            {
                __result = cleanedItem;
                return;
            }

            // Check ItemRegister
            if (ItemRegister.TryGetItem <ConsumableItemMaster>(name, out var consumeMaster))
            {
                __result = consumeMaster;
                return;
            }

            if (ItemRegister.TryGetItem <WeaponEquipmentMaster>(name, out var weaponMaster))
            {
                __result = weaponMaster;
                return;
            }

            if (ItemRegister.TryGetItem <EquipmentItemMaster>(name, out var equipMaster))
            {
                __result = equipMaster;
                return;
            }

            if (ItemRegister.TryGetItem <ItemMaster>(name, out var itemMaster))
            {
                __result = itemMaster;
                return;
            }
        }
Пример #9
0
        public void ItemRegister_Add_DifferentItems()
        {
            var register = new ItemRegister();

            register.Add(new QuantityItem()
            {
                name     = "quantity",
                quantity = 1,
                value    = 1
            });
            register.Add(new WeightedItem()
            {
                name   = "weighted",
                weight = 1,
                value  = 1
            });
            register.Add(new MockItem());
            Assert.Equal(3, register.Total());
        }
Пример #10
0
        public ItemMaster GetItemMaster()
        {
            if (itemMaster != null)
            {
                return(itemMaster);
            }

            if (ItemRegister.TryGetItem <ItemMaster>(Name, out var result))
            {
                itemMaster = result;
                return(itemMaster);
            }

            itemMaster = ItemDatabase.GetItemByName("HP Potion I").Duplicate();
            itemMaster.SetItemName(NameKey, Name);
            itemMaster.SetItemDescription(DescriptionKey, Description);
            itemMaster.worldSpriteName = SpriteKey;

            ItemRegister.AddItemMaster(itemMaster);

            return(itemMaster);
        }
Пример #11
0
        internal static bool Prefix(ItemStack __instance, ref ItemMaster itemMaster, int howMany = 1)
        {
            if (ItemRegister.TryGetItem <ConsumableItemMaster>(itemMaster.name, out var consumable))
            {
                itemMaster = consumable;
            }

            if (ItemRegister.TryGetItem <WeaponEquipmentMaster>(itemMaster.name, out var weapon))
            {
                itemMaster = weapon;
            }

            if (ItemRegister.TryGetItem <EquipmentItemMaster>(itemMaster.name, out var equip))
            {
                itemMaster = equip;
            }

            if (ItemRegister.TryGetItem <ItemMaster>(itemMaster.name, out var item))
            {
                itemMaster = item;
            }

            return(true);
        }
Пример #12
0
        internal static void Postfix(InventoryPanel __instance, ref bool __result)
        {
            System.Console.WriteLine("===========================================");
            System.Console.WriteLine("Fix null refrence exception when consuming last potion");
            System.Console.WriteLine("===========================================");
            __result = true;
            if (!__instance.IsActive() || !__instance.receiveInput || __instance.blockInput)
            {
                __result = false;
                return;
            }

            if (!InventoryPanel.currentSelectedSlot)
            {
                return;
            }


            InventorySlotGUI component = InventoryPanel.currentSelectedSlot.GetComponent <InventorySlotGUI>();

            if (!component.itemStack || !component.itemStack.Consumable)
            {
                return;
            }


            Consumable consumable = component.itemStack.Consumable;

            if (!consumable.SendConsumeEvent())
            {
                component.PlayWrongAnimation();
                return;
            }


            component.PlaySelectedAnimation(Constants.GetFloat("inventorySlotPressPunchValue"));
            BagInventorySlotGUI component2 = InventoryPanel.currentSelectedSlot.GetComponent <BagInventorySlotGUI>();

            if (component2)
            {
                if (component2.itemStack.Quantity == 0)
                {
                    HeroMerchant.Instance.heroMerchantInventory.SetItem(null, component2.slotIndex);
                }
                else
                {
                    HeroMerchant.Instance.heroMerchantInventory.RefreshSlotAt(component2.slotIndex);
                }
            }
            else
            {
                EquipmentInventorySlotGUI component3 = InventoryPanel.currentSelectedSlot.GetComponent <EquipmentInventorySlotGUI>();
                if (component3)
                {
                    if (component3.type == HeroMerchantInventory.EquipmentSlot.Potion)
                    {
                        if (component3.itemStack.Quantity > 0)
                        {
                            component3.UpdateItem();
                            HUDManager.Instance.SetPotionQuantity(component3.itemStack.Quantity);
                        }
                        else
                        {
                            HeroMerchant.Instance.heroMerchantInventory.SetEquippedItemByType(null, HeroMerchantInventory.EquipmentSlot.Potion);
                            HUDManager.Instance.SetEmptyConsumableIcon();
                        }
                    }
                }
                else
                {
                    ChestSlotGUI component4 = InventoryPanel.currentSelectedSlot.GetComponent <ChestSlotGUI>();
                    if (component4)
                    {
                        component4.UpdateItem();
                    }
                }
            }


            // Check ItemRegistry to see if this is a custom item
            ConsumableItemMaster consumableItemMaster = ItemRegister.GetItem <ConsumableItemMaster>(component.item.name);

            if (consumableItemMaster is null)
            {
                consumableItemMaster = component.item as ConsumableItemMaster;
            }


            bool isGuidenceEffect = (consumableItemMaster?.consumableEffectName is null) ? false : consumableItemMaster.consumableEffectName.Contains("Guidance");

            if (isGuidenceEffect)
            {
                DOVirtual.DelayedCall(0.1f, delegate
                {
                    GUIManager.Instance.DisableCurrentPanel();
                }, true);
            }
        }
Пример #13
0
        public void ItemRegister_UniqueItemCount_NoItems()
        {
            var register = new ItemRegister();

            Assert.Equal(0, register.UniqueItemCount());
        }