コミットメタ情報

リビジョン33c0f48efd3b9ff48d0469bc483825d00304387f (tree)
日時2018-03-04 20:42:01
作者Kazuhiro Fujieda <fujieda@user...>
コミッターKazuhiro Fujieda

ログメッセージ

装備一覧に同一装備をまとめる階層を追加して見やすくする

変更サマリ

差分

--- a/KancolleSniffer/ItemTreeView.cs
+++ b/KancolleSniffer/ItemTreeView.cs
@@ -35,42 +35,61 @@ namespace KancolleSniffer
3535
3636 private TreeNode CreateItemNodes(IEnumerable<ItemStatus> itemList)
3737 {
38- var grouped = from byItem in (from item in itemList
38+ var grouped = from item in itemList
3939 where item.Spec.Id != -1
40- orderby item.Spec.Type, item.Spec.Id, item.Alv, item.Level descending
41- group item by new {item.Spec.Id, item.Alv, item.Level}
42- into grp
43- from byShip in
44- (from item in grp
45- let ship = item.Holder
46- orderby ship.Level descending, ship.Spec.SortNo
47- group item by item.Holder.Id)
48- group byShip by grp.Key)
49- group byItem by byItem.First().First().Spec.Type;
40+ orderby item.Spec.Type, item.Spec.Id, item.Alv, item.Level
41+ group item by item.Spec.Type
42+ into byTypeGroup
43+ from bySpec in (from item in byTypeGroup
44+ group item by item.Spec.Id
45+ into bySpecGroup
46+ from byParam in (from item in bySpecGroup
47+ group item by new {item.Alv, item.Level}
48+ into byParamGroup
49+ from byHolder in (from item in byParamGroup group item by item.Holder.Id)
50+ group byHolder by byParamGroup.Key)
51+ group byParam by bySpecGroup.Key)
52+ group bySpec by byTypeGroup.Key;
5053
5154 var root = new TreeNode();
5255 foreach (var byType in grouped)
5356 {
54- var typeName = byType.First().First().First().Spec.TypeName;
57+ var typeName = byType.First().First().First().First().Spec.TypeName;
5558 var typeNode = new TreeNode();
5659 typeNode.Name = typeNode.Text = typeName;
5760 root.Nodes.Add(typeNode);
58- foreach (var byItem in byType)
61+ foreach (var bySpec in byType)
5962 {
60- var item = byItem.First().First();
63+ var item = bySpec.First().First().First();
6164 var itemNode = new TreeNode();
62- itemNode.Name = itemNode.Text = item.Spec.Name +
63- (item.Alv == 0 ? "" : "+" + item.Alv) +
64- (item.Level == 0 ? "" : "★" + item.Level);
65+ itemNode.Name = itemNode.Text = item.Spec.Name + "x" +
66+ bySpec.SelectMany(spec => spec).SelectMany(param => param).Count();
6567 typeNode.Nodes.Add(itemNode);
66- foreach (var byShip in byItem)
68+ foreach (var byParam in bySpec)
6769 {
68- var ship = byShip.First().Holder;
69- var name = byShip.Key == -1
70- ? "未装備x" + byShip.Count()
71- : (ship.Fleet != -1 ? ship.Fleet + 1 + " " : "") +
72- ship.Name + (ship.Level > 0 ? "Lv" + ship.Level : "") + "×" + byShip.Count();
73- itemNode.Nodes.Add(name, name);
70+ TreeNode paramNode;
71+ if (bySpec.Count() == 1 && byParam.Key.Alv == 0 && byParam.Key.Level == 0)
72+ {
73+ paramNode = itemNode;
74+ }
75+ else
76+ {
77+ paramNode = new TreeNode();
78+ item = byParam.First().First();
79+ paramNode.Name = paramNode.Text =
80+ (item.Spec.IsAircraft ? "+" + item.Alv : "") + "★" + item.Level + "x" +
81+ byParam.SelectMany(param => param).Count();
82+ itemNode.Nodes.Add(paramNode);
83+ }
84+ foreach (var byShip in byParam)
85+ {
86+ var ship = byShip.First().Holder;
87+ var name = byShip.Key == -1
88+ ? "未装備x" + byShip.Count()
89+ : (ship.Fleet != -1 ? ship.Fleet + 1 + " " : "") +
90+ ship.Name + (ship.Level > 0 ? "Lv" + ship.Level : "") + "x" + byShip.Count();
91+ paramNode.Nodes.Add(name, name);
92+ }
7493 }
7594 }
7695 }
@@ -93,7 +112,7 @@ namespace KancolleSniffer
93112 // ReSharper disable PossibleNullReferenceException
94113 => x.Level == y.Level && x.Spec == y.Spec && x.Holder.Id == y.Holder.Id &&
95114 x.Holder.Fleet == y.Holder.Fleet;
96- // ReSharper restore PossibleNullReferenceException
115+ // ReSharper restore PossibleNullReferenceException
97116
98117 public int GetHashCode(ItemStatus obj) => obj.Level + obj.Spec.GetHashCode() + obj.Holder.GetHashCode();
99118 }
旧リポジトリブラウザで表示