{\r
None,\r
Cond,\r
+ CondAscend = Cond,\r
+ CondDescend,\r
ExpToNext,\r
+ ExpToNextAscend = ExpToNext,\r
+ ExpToNextDescend,\r
Repair\r
}\r
\r
labelHeaderCond.Text = "cond";\r
labelHeaderExp.Text = "Exp";\r
break;\r
- case SortOrder.Cond:\r
+ case SortOrder.CondAscend:\r
labelHeaderCond.Text = "cond▴";\r
labelHeaderExp.Text = "Exp";\r
break;\r
- case SortOrder.ExpToNext:\r
+ case SortOrder.CondDescend:\r
+ labelHeaderCond.Text = "cond▾";\r
+ labelHeaderExp.Text = "Exp";\r
+ break;\r
+ case SortOrder.ExpToNextAscend:\r
labelHeaderCond.Text = "cond";\r
labelHeaderExp.Text = "Exp▴";\r
break;\r
+ case SortOrder.ExpToNextDescend:\r
+ labelHeaderCond.Text = "cond";\r
+ labelHeaderExp.Text = "Exp▾";\r
+ break;\r
}\r
}\r
\r
\r
private void labelHeaderCond_Click(object sender, EventArgs e)\r
{\r
- _config.ShipList.SortOrder = _config.ShipList.SortOrder == SortOrder.Cond ? SortOrder.None : SortOrder.Cond;\r
+ var sl = _config.ShipList;\r
+ switch (sl.SortOrder)\r
+ {\r
+ case SortOrder.CondAscend:\r
+ sl.SortOrder = SortOrder.CondDescend;\r
+ break;\r
+ case SortOrder.CondDescend:\r
+ sl.SortOrder = SortOrder.None;\r
+ break;\r
+ default:\r
+ sl.SortOrder = SortOrder.CondAscend;\r
+ break;\r
+ }\r
UpdateList();\r
}\r
\r
private void labelHeaderExp_Click(object sender, EventArgs e)\r
{\r
- _config.ShipList.SortOrder = _config.ShipList.SortOrder == SortOrder.ExpToNext\r
- ? SortOrder.None\r
- : SortOrder.ExpToNext;\r
+ var sl = _config.ShipList;\r
+ switch (sl.SortOrder)\r
+ {\r
+ case SortOrder.ExpToNextAscend:\r
+ sl.SortOrder = SortOrder.ExpToNextDescend;\r
+ break;\r
+ case SortOrder.ExpToNextDescend:\r
+ sl.SortOrder = SortOrder.None;\r
+ break;\r
+ default:\r
+ sl.SortOrder = SortOrder.ExpToNextAscend;\r
+ break;\r
+ }\r
UpdateList();\r
}\r
\r
{\r
if (a == null || b == null)\r
throw new ArgumentNullException();\r
- if (_shipType && a.Spec.ShipType != b.Spec.ShipType)\r
- return a.Spec.ShipType - b.Spec.ShipType;\r
- switch (_order)\r
+ if (_shipType)\r
{\r
- case ListForm.SortOrder.None:\r
- case ListForm.SortOrder.ExpToNext:\r
- break;\r
- case ListForm.SortOrder.Cond:\r
- if (a.Cond != b.Cond)\r
- return a.Cond - b.Cond;\r
- break;\r
- case ListForm.SortOrder.Repair:\r
- if (a.RepairTime != b.RepairTime)\r
- return (int)(b.RepairTime - a.RepairTime).TotalSeconds;\r
- break;\r
+ if (a.Spec.ShipType != b.Spec.ShipType)\r
+ return a.Spec.ShipType - b.Spec.ShipType;\r
+ if (a.Level != b.Level)\r
+ {\r
+ if (a.Level == 1000)\r
+ return -1;\r
+ if (b.Level == 1000)\r
+ return 1;\r
+ }\r
+ }\r
+ if (_order == ListForm.SortOrder.Repair && a.RepairTime != b.RepairTime)\r
+ return (int)(b.RepairTime - a.RepairTime).TotalSeconds;\r
+ if (a.Cond != b.Cond)\r
+ {\r
+ if (_order == ListForm.SortOrder.CondAscend)\r
+ return a.Cond - b.Cond;\r
+ if (_order == ListForm.SortOrder.CondDescend)\r
+ return b.Cond - a.Cond;\r
+ }\r
+ if (a.Level != b.Level)\r
+ {\r
+ if (_order == ListForm.SortOrder.ExpToNextAscend)\r
+ return b.Level - a.Level;\r
+ if (_order == ListForm.SortOrder.ExpToNextDescend)\r
+ return a.Level - b.Level;\r
+ if (!_shipType) // Condが同じかSortOrder.Noneで艦種なし\r
+ return b.Level - a.Level;\r
+ }\r
+ if (a.ExpToNext != b.ExpToNext)\r
+ {\r
+ if (_order == ListForm.SortOrder.ExpToNextAscend)\r
+ return a.ExpToNext - b.ExpToNext;\r
+ if (_order == ListForm.SortOrder.ExpToNextDescend)\r
+ return b.ExpToNext - a.ExpToNext;\r
}\r
- if ((!_shipType || _order == ListForm.SortOrder.ExpToNext) && a.Level != b.Level)\r
- return b.Level - a.Level;\r
- if (_order == ListForm.SortOrder.ExpToNext && a.ExpToNext != b.ExpToNext)\r
- return a.ExpToNext - b.ExpToNext;\r
if (a.Spec.SortNo != b.Spec.SortNo)\r
return a.Spec.SortNo - b.Spec.SortNo;\r
return a.Id - b.Id;\r