private static CraftingCondition CreateTestCondition(params CraftingSubcondition[] subconditions)
        {
            CraftingCondition condition = new CraftingCondition();

            condition.CraftingSubConditions.AddRange(subconditions.ToList());
            return(condition);
        }
        public void CountSubconditionWithMultipleSubconditionsIsValidTest()
        {
            int range        = 10;
            int conditionMin = _random.Next(range);
            int conditionMax = range + _random.Next(range);

            string modType = "TestModType";

            var subcondition = CreateCraftingSubcondition(
                SubconditionAggregateType.Count,
                StatValueType.Flat,
                1,
                1,
                CreateTestAffix(conditionMin, conditionMax, modType));

            CraftingCondition condition = CreateTestCondition(subcondition, subcondition);

            var stat = CreateStat(range, modType);

            Equipment item = new Equipment();

            item.Stats.Add(stat);

            Assert.IsTrue(_conditionResolver.IsValid(condition, item));
        }
        public void CountSubconditionIsValidTest()
        {
            int range        = 10;
            int conditionMin = _random.Next(range);
            int conditionMax = range + _random.Next(range);

            string modType = "TestModType";

            var subcondition = CreateCraftingSubcondition(
                SubconditionAggregateType.Count,
                StatValueType.Flat,
                1,
                1,
                CreateTestAffix(conditionMin, conditionMax, modType));

            CraftingCondition condition = CreateTestCondition(subcondition);

            Equipment item = new Equipment();

            Stat stat = new Stat();

            stat.Value1 = range;

            Affix affix = new Affix();

            affix.Group          = modType;
            affix.GenerationType = "Prefix";

            stat.Affix = affix;

            item.Stats.Add(stat);

            Assert.IsTrue(_conditionResolver.IsValid(condition, item));
        }
        public void NotSubconditionPresentModIsInvalidTest()
        {
            int range        = 10;
            int conditionMin = _random.Next(range);
            int conditionMax = range + _random.Next(range);

            string modType = "TestModType1";

            var subcondition = CreateCraftingSubcondition(
                SubconditionAggregateType.If,
                StatValueType.Flat,
                null,
                null,
                CreateTestAffix(conditionMin, conditionMax, modType));

            CraftingCondition condition = CreateTestCondition(subcondition, subcondition);

            var stat1 = CreateStat(conditionMax + range, modType);

            Equipment item = new Equipment();

            item.Stats.Add(stat1);

            Assert.IsFalse(_conditionResolver.IsValid(condition, item));
        }
        public void AndSubconditionIsValidTest()
        {
            int range        = 10;
            int conditionMin = _random.Next(range);
            int conditionMax = range + _random.Next(range);

            string modType1 = "TestModType1";
            string modType2 = "TestModType2";

            var subcondition = CreateCraftingSubcondition(
                SubconditionAggregateType.And,
                StatValueType.Flat,
                null,
                null,
                CreateTestAffix(conditionMin, conditionMax, modType1),
                CreateTestAffix(conditionMin, conditionMax, modType2));

            CraftingCondition condition = CreateTestCondition(subcondition, subcondition);

            var stat1 = CreateStat(range, modType1);
            var stat2 = CreateStat(range, modType2);

            Equipment item = new Equipment();

            item.Stats.Add(stat1);
            item.Stats.Add(stat2);

            Assert.IsTrue(_conditionResolver.IsValid(condition, item));
        }
Esempio n. 6
0
        public ConditionControlViewModel(CraftingCondition condition, PoeCrafting.Entities.ItemBase itemBase, List <Affix> affixes)
        {
            _itemBase          = itemBase;
            _affixes           = affixes;
            _craftingCondition = condition;

            SubconditionControls = new ObservableCollection <SubconditionControlView>();

            for (int i = condition.CraftingSubConditions.Count - 1; i >= 0; i--)
            {
                var model = new SubconditionControlViewModel(condition.CraftingSubConditions[i], affixes, GetNextIndex(), _itemBase);
                var subconditionControl = new SubconditionControlView(model);
                model.OnDeleteEvent += (x, y) => RemoveSubcondition(y.Control);
                SubconditionControls.Add(subconditionControl);
            }

            if (SubconditionControls.Count == 0)
            {
                AddSubcondition();
            }

            SelectedSubcondition = SubconditionControls[0];

            OnPropertyChanged(nameof(SelectedSubcondition));
            OnPropertyChanged(nameof(SubconditionControls));
        }
Esempio n. 7
0
        public ConditionControl(CraftingCondition condition, ItemBase itemBase, List <Affix> affixes)
        {
            _itemBase          = itemBase;
            _affixes           = affixes;
            _craftingCondition = condition;

            SubconditionControls = new ObservableCollection <SubconditionControl>();

            for (int i = condition.CraftingSubConditions.Count - 1; i >= 0; i--)
            {
                var subconditionControl = new SubconditionControl(condition.CraftingSubConditions[i], affixes, GetNextIndex(), _itemBase);
                subconditionControl.OnDeleteEvent += (x, y) => RemoveSubcondition(y.Control);
                SubconditionControls.Add(subconditionControl);
            }

            if (SubconditionControls.Count == 0)
            {
                AddSubcondition();
            }

            SelectedSubcondition = SubconditionControls[0];

            OnPropertyChanged(nameof(SelectedSubcondition));
            OnPropertyChanged(nameof(SubconditionControls));

            DataContext = this;
            InitializeComponent();
        }
        public bool IsValid(CraftingCondition condition, Equipment item)
        {
            int validCount = 0;

            for (int i = condition.CraftingSubConditions.Count - 1; i >= 0; i--)
            {
                if (IsSubconditionValid(condition.CraftingSubConditions[i], item))
                {
                    validCount++;
                }
            }
            return(validCount == condition.CraftingSubConditions.Count);
        }
        private void AddClicked(object sender, RoutedEventArgs e)
        {
            var a = (ComboBoxNewAction.SelectedValue as ImageAndActionContainer);

            if (a == null)
            {
                return;
            }

            CraftingCondition newCondition = new CraftingCondition(Sim, a.CraftingAction);

            CraftingConditions.Add(newCondition);
            ListViewConditions.SelectedIndex = CraftingConditions.Count - 1;
            newCondition.PropertyChanged    += OnChanged;
            newCondition.CollectionChanged  += OnChanged;
        }
        public void NotSubconditionZeroModsIsValidTest()
        {
            int range        = 10;
            int conditionMin = _random.Next(range);
            int conditionMax = range + _random.Next(range);

            string modType = "TestModType1";

            var subcondition = CreateCraftingSubcondition(
                SubconditionAggregateType.If,
                StatValueType.Flat,
                null,
                null,
                CreateTestAffix(conditionMin, conditionMax, modType));

            CraftingCondition condition = CreateTestCondition(subcondition, subcondition);

            Equipment item = new Equipment();

            Assert.IsTrue(_conditionResolver.IsValid(condition, item));
        }
        public void CountSubconditionWithZeroItemModsIsInvalidTest()
        {
            int range        = 10;
            int conditionMin = _random.Next(range);
            int conditionMax = range + _random.Next(range);

            string modType = "TestModType";

            var subcondition = CreateCraftingSubcondition(
                SubconditionAggregateType.Count,
                StatValueType.Flat,
                1,
                3,
                CreateTestAffix(conditionMin, conditionMax, modType));

            CraftingCondition condition = CreateTestCondition(subcondition, subcondition);

            Equipment item = new Equipment();

            Assert.IsFalse(_conditionResolver.IsValid(condition, item));
        }