Beispiel #1
0
        public void OnSelectedStepChanged(object sender, RoutedPropertyChangedEventArgs <object> e)
        {
            var treeView = sender as TreeView;
            var model    = treeView.SelectedItem as CraftingStepViewModel;

            if (model?.Value == null || _selected == model.Value)
            {
                return;
            }

            var craftingStep = model.Value;

            ConditionModel?.Save();

            if (model.HasCondition)
            {
                ConditionModel = new ConditionControlViewModel(model.Condition, _itemBase, _affixes.ToList());
                Condition      = new ConditionControlView(ConditionModel);
                OnPropertyChanged(nameof(Condition));
            }
            else
            {
                Condition = null;
                OnPropertyChanged(nameof(Condition));
            }

            CraftingTree.Select(craftingStep);
            _selected = model.Value;
            Tree.UpdateTree(CraftingTree, _selected);
        }
        private CraftMetadata UpdateMetadataOnCraft(
            ICraftingStep craftingStep,
            CraftMetadata craftMetadata,
            Dictionary <string, int> currencyAmounts,
            ProgressManager progressManager)
        {
            if (!craftMetadata.CraftingStepMetadata.ContainsKey(craftingStep))
            {
                CraftingStepMetadata stepMetadata = new CraftingStepMetadata {
                    TimesVisited = 0, CurrencyAmounts = currencyAmounts
                };
                craftMetadata.CraftingStepMetadata.Add(craftingStep, stepMetadata);
            }

            craftMetadata.CraftingStepMetadata[craftingStep].TimesVisited++;

            if (currencyAmounts.Any())
            {
                craftMetadata.CraftingStepMetadata[craftingStep].TimesModified++;
            }

            foreach (var currency in currencyAmounts)
            {
                progressManager.SpendCurrency(currency.Key, currency.Value);
            }

            return(craftMetadata);
        }
        public CraftingTreeViewModel(CraftingTree craftingTree, ICraftingStep selected)
        {
            var craftingSteps = craftingTree.CraftingSteps.Select(x => new CraftingStepViewModel(x, selected));

            Tree = new ObservableCollection <CraftingStepViewModel>(craftingSteps.ToArray());
            OnPropertyChanged(nameof(Tree));
        }
Beispiel #4
0
        private void OnDeleteClick(object sender, RoutedEventArgs e)
        {
            if (_selected != null)
            {
                CraftingTree.Delete(_selected);

                Tree.UpdateTree(CraftingTree, _selected);
                _selected = null;
            }
        }
        public void UpdateTree(CraftingTree craftingTree, ICraftingStep selected)
        {
            Tree.Clear();
            var steps = craftingTree.CraftingSteps.Select(x => new CraftingStepViewModel(x, selected)).ToList();

            for (int i = 0; i < steps.Count(); i++)
            {
                steps[i].UpdateStatus();
                Tree.Add(steps[i]);
            }

            OnPropertyChanged(nameof(Tree));
        }
Beispiel #6
0
        private StatusMetadata UpdateMetadata(ICraftingStep craftingStep, StatusMetadata statusMetadata)
        {
            if (!statusMetadata.CraftingStepMetadata.ContainsKey(craftingStep))
            {
                statusMetadata.CraftingStepMetadata.Add(craftingStep, new CraftingStepStatusMetadata());
            }

            var craftingStepMetadata = statusMetadata.CraftingStepMetadata[craftingStep];

            craftingStepMetadata.Status = (ItemStatus)statusMetadata.CurrentStatus.Clone();
            craftingStepMetadata.TimesEvaluated++;

            return(statusMetadata);
        }
Beispiel #7
0
        private CraftMetadata UpdateMetadataOnCraft(ICraftingStep craftingStep, CraftMetadata craftMetadata, bool isModified)
        {
            if (!craftMetadata.CraftingStepMetadata.ContainsKey(craftingStep))
            {
                CraftingStepMetadata stepMetadata = new CraftingStepMetadata {
                    TimesVisited = 0, CurrencyAmounts = craftingStep.GetCurrency
                };
                craftMetadata.CraftingStepMetadata.Add(craftingStep, stepMetadata);
            }

            craftMetadata.CraftingStepMetadata[craftingStep].TimesVisited++;

            if (isModified)
            {
                craftMetadata.CraftingStepMetadata[craftingStep].TimesModified++;
            }


            return(craftMetadata);
        }
        public CraftingStepViewModel(ICraftingStep craftingStep, ICraftingStep selected)
        {
            _value = craftingStep;

            Options = craftingStep.Options == null ? new ObservableCollection <string>() : new ObservableCollection <string>(craftingStep.Options);

            if (craftingStep == selected)
            {
                _selected = true;
            }

            if (craftingStep.Children == null)
            {
                Children = new ObservableCollection <CraftingStepViewModel>();
            }
            else
            {
                var children = craftingStep.Children.Select(x => new CraftingStepViewModel(x, selected)).ToArray();
                Children = new ObservableCollection <CraftingStepViewModel>(children);
            }
        }
Beispiel #9
0
        public void Initialize()
        {
            var baseInfo = _configRepository.GetItemConfig();

            if (_baseInfo != null && _baseInfo.Equals(baseInfo))
            {
                return;
            }

            _baseInfo = baseInfo;
            _equipmentFactory.Initialize(baseInfo.ItemBase, baseInfo.Category, baseInfo.ItemLevel);
            _itemBase = _equipmentFactory.GetBaseItem();
            _affixes  = new ObservableCollection <Affix>(_equipmentFactory.GetPossibleAffixes());

            CraftingTree.ClearConditions();
            CraftingTree.Initialize();
            Condition = null;
            _selected = Tree.Tree[0].Value;
            Tree.UpdateTree(CraftingTree, _selected);
            OnPropertyChanged(nameof(Condition));
            OnPropertyChanged(nameof(Tree));
        }
Beispiel #10
0
 private void AddStep(List <ICraftingStep> craftingSteps, ICraftingStep craftingStep)
 {
     craftingSteps.Add(craftingStep);
 }
Beispiel #11
0
 private void UpdateMetadataOnChildrenVisit(ICraftingStep craftingStep, CraftMetadata craftMetadata)
 {
     craftMetadata.CraftingStepMetadata[craftingStep].TimesChildrenVisited++;
 }