예제 #1
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));
        }
예제 #2
0
 public void CreateItem()
 {
     _factory.Initialize(SelectedItemBase, Category);
     Equipment = _factory.CreateEquipment();
     Status    = new ItemStatus();
 }
예제 #3
0
        private void UpdateAffixDescriptions()
        {
            if (SelectedBase == null)
            {
                AffixDescriptions = string.Empty;
                OnPropertyChanged(nameof(AffixDescriptions));
                return;
            }

            StringBuilder builder = new StringBuilder();

            _factory.Initialize(SelectedBase, Categories.IndexOf(_selectedCategory), ItemLevel);

            var affixes     = _factory.GetPossibleAffixes();
            var types       = affixes.GroupBy(x => x.Type);
            var totalWeight = affixes.Sum(x => x.Weight);

            foreach (var type in types)
            {
                if (type.Key == "Meta")
                {
                    continue;
                }
                builder.AppendLine(type.Key);

                var groups = type.GroupBy(x => x.Group);

                foreach (var group in groups)
                {
                    var items = group.ToList();

                    builder.AppendLine("\t" + group.Key);

                    if (items.Any(x => x.StatName2 != null && !x.StatName2.Contains("Dummy")))
                    {
                        builder.AppendLine("\tStat 1: " + items[0].StatName1);
                        builder.AppendLine("\tStat 2: " + items[0].StatName2);
                    }
                    if (items.Any(x => x.StatName3 != null && !x.StatName3.Contains("Dummy")))
                    {
                        builder.AppendLine("\tStat 3: " + items[0].StatName3);
                    }


                    foreach (var item in items)
                    {
                        var chance = item.Weight / (float)totalWeight * 100;
                        if (item.StatName2 != null && !item.StatName2.Contains("Dummy"))
                        {
                            builder.AppendLine("\t\tilvl: " + item.ILvl + "\tT" + item.Tier + "\t" + chance.ToString("0.###") + "%\t");

                            builder.AppendLine("\t\t\t\t\t" + item.StatMin1 + "-" + item.StatMax1);
                            builder.AppendLine("\t\t\t\t\t" + item.StatMin2 + "-" + item.StatMax2);

                            if (item.StatName3 != null && !item.StatName3.Contains("Dummy"))
                            {
                                builder.AppendLine("\t\t\t\t" + "ilvl: " + item.ILvl + "\t" + item.StatMin3 + " - " + item.StatMax3);
                            }
                        }
                        else
                        {
                            builder.AppendLine("\t\tilvl: " + item.ILvl + "\tT" + item.Tier + "\t" + chance.ToString("0.###") + "%\t" + item.StatMin1 + "-" + item.StatMax1);
                        }
                    }
                }
            }

            AffixDescriptions = builder.ToString();
            OnPropertyChanged(nameof(AffixDescriptions));
        }