EquipmentCombineUtil.cs 2.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using System.Threading.Tasks;
  6. using WPfPointInfo.InfoProperty;
  7. namespace SAGA.MBI.ModeInfoEdit
  8. {
  9. public static class EquipmentCombineUtil
  10. {
  11. public static List<ItemProperty> GetGroupProperties(List<ItemProperty> items)
  12. {
  13. List<ItemProperty> resultItems=new List<ItemProperty>();
  14. var validItems = items.Where(i => i.Definition.CurrentIndex < i.Definition.Level).ToList();
  15. var groups = validItems.GroupBy(item =>
  16. {
  17. var key = item.Definition.Categories[item.Definition.CurrentIndex];
  18. item.Definition.MoveNext();
  19. return key;
  20. }).ToList();
  21. foreach (var gp in groups)
  22. {
  23. ItemProperty categoryItem = new ItemProperty() { Definition = PropertyDefinition.CreateCagetoryDefinition() };
  24. categoryItem.Definition.EditId = "Category_2";
  25. categoryItem.Value = gp.Key;
  26. List<ItemProperty> nextItems = new List<ItemProperty>();
  27. foreach (var item in gp.ToList())
  28. {
  29. if (item.Definition.CurrentIndex == item.Definition.Level)
  30. {
  31. categoryItem.Children.Add(item);
  32. }
  33. else if (item.Definition.CurrentIndex < item.Definition.Level)
  34. {
  35. nextItems.Add(item);
  36. }
  37. }
  38. if (nextItems.Any())
  39. {
  40. categoryItem.Children.AddRange(GetGroupProperties(nextItems));
  41. }
  42. resultItems.Add(categoryItem);
  43. }
  44. return resultItems;
  45. }
  46. public static List<ItemProperty> GetOriginProperties(string id1, string id2)
  47. {
  48. var combineItems= EquipmentCombineItem.GetCombineItem(id1, id2);
  49. return combineItems.Select(c => c.ConvertItemProperty()).ToList();
  50. }
  51. /// <summary>
  52. /// 获取分组后的属性信息
  53. /// </summary>
  54. /// <param name="id1"></param>
  55. /// <param name="id2"></param>
  56. /// <returns></returns>
  57. public static List<ItemProperty> GetProperties(string id1, string id2)
  58. {
  59. var items = GetOriginProperties(id1, id2);
  60. return GetGroupProperties(items);
  61. }
  62. }
  63. }