OSDN Git Service

複数のカウンタがある任務のカウンタの表示を詳細化する
authorKazuhiro Fujieda <fujieda@users.osdn.me>
Sat, 13 Jan 2018 13:56:45 +0000 (22:56 +0900)
committerKazuhiro Fujieda <fujieda@users.osdn.me>
Sat, 27 Jan 2018 08:34:01 +0000 (17:34 +0900)
KancolleSniffer.Test/QuestInfoTest.cs
KancolleSniffer/MainForm.cs
KancolleSniffer/QuestInfo.cs

index 181a4c6..e1e94a3 100644 (file)
@@ -263,7 +263,7 @@ namespace KancolleSniffer.Test
                 api_list = new[]\r
                 {\r
                     new {api_no = 228, api_category = 2, api_state = 2, api_title = "", api_progress_flag = 0},\r
-                    new {api_no = 230, api_category = 2, api_state = 2, api_title = "", api_progress_flag = 0},\r
+                    new {api_no = 230, api_category = 2, api_state = 2, api_title = "", api_progress_flag = 0}\r
                 }\r
             }));\r
             // 潜水艦3\r
@@ -271,7 +271,7 @@ namespace KancolleSniffer.Test
             {\r
                 new ShipStatus {NowHp = 0, MaxHp = 27, Spec = new ShipSpec {Id = 1532, ShipType = 13}},\r
                 new ShipStatus {NowHp = 0, MaxHp = 19, Spec = new ShipSpec {Id = 1530, ShipType = 13}},\r
-                new ShipStatus {NowHp = 0, MaxHp = 19, Spec = new ShipSpec {Id = 1530, ShipType = 13}},\r
+                new ShipStatus {NowHp = 0, MaxHp = 19, Spec = new ShipSpec {Id = 1530, ShipType = 13}}\r
             }, new ShipStatus[0]);\r
             questInfo.InspectBattleResult(Js(new {api_win_rank = "S"}));\r
             PAssert.That(() =>\r
@@ -594,5 +594,31 @@ namespace KancolleSniffer.Test
                 questInfo.Quests.Select(q => new {q.Id, q.Count.Now})\r
                     .SequenceEqual(new[] {new {Id = 702, Now = 1}, new {Id = 703, Now = 1}}));\r
         }\r
+\r
+        /// <summary>\r
+        /// 文字列表記にする\r
+        /// </summary>\r
+        [TestMethod]\r
+        public void ToStringTest()\r
+        {\r
+            var questInfo = new QuestInfo(null, null, () => new DateTime(2015, 1, 1));\r
+            var status = new Status\r
+            {\r
+                QuestCountList = new[]\r
+                {\r
+                    new QuestCount {Id = 211, Now = 2},\r
+                    new QuestCount {Id = 214, NowArray = new[] {20, 7, 10, 8}},\r
+                    new QuestCount {Id = 854, NowArray = new[] {1, 1, 1, 1}}\r
+                }\r
+            };\r
+            questInfo.LoadState(status);\r
+            PAssert.That(() => status.QuestCountList[0].ToString() == "2/3");\r
+            PAssert.That(() => status.QuestCountList[1].ToString() == "20/36 7/6 10/24 8/12");\r
+            var z = status.QuestCountList[2];\r
+            PAssert.That(() => z.ToString() == "4/4");\r
+            PAssert.That(() => z.ToToolTip() == "2-4 6-1 6-3 6-4");\r
+            z.NowArray = new[] {0, 0, 0, 0};\r
+            PAssert.That(() => z.ToToolTip() == "");\r
+        }\r
     }\r
 }
\ No newline at end of file
index 7111fae..6267c7b 100644 (file)
@@ -36,6 +36,7 @@ namespace KancolleSniffer
         private readonly Config _config = new Config();\r
         private readonly ConfigDialog _configDialog;\r
         private readonly ProxyManager _proxyManager;\r
+        private readonly ToolTip _toolTip = new ToolTip {ShowAlways = true};\r
         private int _currentFleet;\r
         private bool _combinedFleet;\r
         private readonly Label[] _labelCheckFleets;\r
@@ -941,18 +942,18 @@ namespace KancolleSniffer
                     {\r
                         count[i].Text = "";\r
                         count[i].ForeColor = Color.Black;\r
+                        _toolTip.SetToolTip(count[i], "");\r
                         continue;\r
                     }\r
-                    count[i].Text = c.NowArray != null ? $"{string.Join("|", c.NowArray)}" : $"{c.Now}/{c.Max}";\r
-                    count[i].ForeColor =\r
-                        (c.NowArray?.Zip(c.Spec.MaxArray, (n, m) => n >= m).All(x => x) ?? c.Now >= c.Spec.Max)\r
-                            ? CUDColor.Green\r
-                            : Color.Black;\r
+                    count[i].Text = c.ToString();\r
+                    count[i].ForeColor = c.Cleared ? CUDColor.Green : Color.Black;\r
+                    _toolTip.SetToolTip(count[i], c.ToToolTip());\r
                 }\r
                 else\r
                 {\r
                     category[i].BackColor = DefaultBackColor;\r
                     name[i].Text = count[i].Text = progress[i].Text = "";\r
+                    _toolTip.SetToolTip(count[i], "");\r
                 }\r
             }\r
         }\r
index ba9a416..267d344 100644 (file)
@@ -105,7 +105,6 @@ namespace KancolleSniffer
         public int Id { get; set; }\r
         public int Now { get; set; }\r
         public int[] NowArray { get; set; }\r
-        public int Max => Spec.Max;\r
 \r
         [XmlIgnore]\r
         public QuestSpec Spec { get; set; }\r
@@ -138,7 +137,7 @@ namespace KancolleSniffer
                     break;\r
             }\r
             var now = Now + Spec.Shift;\r
-            var max = Max + Spec.Shift;\r
+            var max = Spec.Max + Spec.Shift;\r
             var low = (int)Ceiling(max * progress / 100.0);\r
             var high = (int)Ceiling(max * next / 100.0);\r
             if (now < low)\r
@@ -153,6 +152,26 @@ namespace KancolleSniffer
             }\r
             return false;\r
         }\r
+\r
+        public override string ToString()\r
+        {\r
+            if (Id == 854)\r
+                return $"{NowArray.Count(n => n == 1)}/{Spec.MaxArray.Length}";\r
+            return NowArray != null\r
+                ? string.Join(" ", NowArray.Zip(Spec.MaxArray, (n, m) => $"{n}/{m}"))\r
+                : $"{Now}/{Spec.Max}";\r
+        }\r
+\r
+        public string ToToolTip()\r
+        {\r
+            return Id != 854\r
+                ? ""\r
+                : string.Join(" ",\r
+                    new[] {"2-4", "6-1", "6-3", "6-4"}.Zip(NowArray, (map, flag) => flag == 1 ? map : "")\r
+                        .Where(s => !string.IsNullOrEmpty(s)));\r
+        }\r
+\r
+        public bool Cleared => NowArray?.Zip(Spec.MaxArray, (n, m) => n >= m).All(x => x) ?? Now >= Spec.Max;\r
     }\r
 \r
     // @formatter:off\r