public void UpdateAttributeList() { _attiblist.Clear(); Dictionary<string, List<float>> copy = (Tree.HighlightedAttributes == null) ? null : new Dictionary<string, List<float>>(Tree.HighlightedAttributes); foreach (var item in Tree.SelectedAttributes) { var a = new Attribute(InsertNumbersInAttributes(item)); if (copy != null && copy.ContainsKey(item.Key)) { var citem = copy[item.Key]; a.Deltas = item.Value.Zip(citem, (s, h) => s - h).ToArray(); copy.Remove(item.Key); } else { a.Deltas = (copy != null) ? item.Value.ToArray() : item.Value.Select(v => 0f).ToArray(); } _attiblist.Add(a); } if (copy != null) { foreach (var item in copy) { var a = new Attribute(InsertNumbersInAttributes(new KeyValuePair<string, List<float>>(item.Key, item.Value.Select(v => 0f).ToList()))); a.Deltas = item.Value.Select((h) => 0 - h).ToArray(); // if(item.Value.Count == 0) a.Missing = true; _attiblist.Add(a); } } _attibuteCollection.Refresh(); tbUsedPoints.Text = "" + (Tree.SkilledNodes.Count - 1); }
public void UpdateAllAttributeList() { _allAttributesList.Clear(); if (_itemAttributes != null) { Dictionary<string, List<float>> attritemp = Tree.SelectedAttributesWithoutImplicit; foreach (ItemAttributes.Attribute mod in _itemAttributes.NonLocalMods) { if (attritemp.ContainsKey(mod.TextAttribute)) { for (int i = 0; i < mod.Value.Count; i++) { attritemp[mod.TextAttribute][i] += mod.Value[i]; } } else { attritemp[mod.TextAttribute] = mod.Value; } } foreach (var a in SkillTree.ImplicitAttributes(attritemp, Tree.Level)) { string key = SkillTree.RenameImplicitAttributes.ContainsKey(a.Key) ? SkillTree.RenameImplicitAttributes[a.Key] : a.Key; if (!attritemp.ContainsKey(key)) attritemp[key] = new List<float>(); for (int i = 0; i < a.Value.Count; i++) { if (attritemp.ContainsKey(key) && attritemp[key].Count > i) attritemp[key][i] += a.Value[i]; else { attritemp[key].Add(a.Value[i]); } } } foreach (string item in (attritemp.Select(InsertNumbersInAttributes))) { var a = new Attribute(item); _allAttributesList.Add(a); } } _allAttributeCollection.Refresh(); }