OSDN Git Service

泊地修理の最初の修理時間を定数にする
authorKazuhiro Fujieda <fujieda@users.osdn.me>
Fri, 14 Apr 2017 12:10:45 +0000 (21:10 +0900)
committerKazuhiro Fujieda <fujieda@users.osdn.me>
Sat, 22 Apr 2017 06:42:51 +0000 (15:42 +0900)
KancolleSniffer.Test/logs
KancolleSniffer/AkashiTimer.cs

index 192e1f1..8a7773d 160000 (submodule)
@@ -1 +1 @@
-Subproject commit 192e1f168c2952a9ea4e435e48449090c7adb9bc
+Subproject commit 8a7773d0959f0c040eb06b7cb31f1940828dd02a
index 6ce572c..d39cda1 100644 (file)
@@ -43,6 +43,11 @@ namespace KancolleSniffer
         {\r
             private ShipStatus[] _target = new ShipStatus[0];\r
             private int[] _deck = new int[0];\r
+            private const int FirstRepairTime = 20;\r
+\r
+            private bool PassedFirstRepairTime(DateTime start, DateTime prev, DateTime now) =>\r
+                prev - start < TimeSpan.FromMinutes(FirstRepairTime) &&\r
+                now - start >= TimeSpan.FromMinutes(FirstRepairTime);\r
 \r
             private int RepairTime(ShipStatus ship, int damage) => ship.CalcRepairSec(damage) + 70;\r
 \r
@@ -70,14 +75,14 @@ namespace KancolleSniffer
                     var damage = s.MaxHp - s.NowHp;\r
                     if (damage == 0)\r
                         return new RepairSpan(0, TimeSpan.MinValue);\r
-                    if (spent < TimeSpan.FromMinutes(20))\r
-                        return new RepairSpan(0, TimeSpan.FromMinutes(20) - spent);\r
+                    if (spent < TimeSpan.FromMinutes(FirstRepairTime))\r
+                        return new RepairSpan(0, TimeSpan.FromMinutes(FirstRepairTime) - spent);\r
                     if (damage == 1)\r
                         return new RepairSpan(1, TimeSpan.Zero);\r
                     for (var d = 2; d <= damage; d++)\r
                     {\r
                         var sec = RepairTime(s, d);\r
-                        if (sec <= 20 * 60)\r
+                        if (sec <= FirstRepairTime * 60)\r
                             continue;\r
                         if (TimeSpan.FromSeconds(sec) > spent)\r
                             return new RepairSpan(d - 1, TimeSpan.FromSeconds(sec) - spent);\r
@@ -88,7 +93,6 @@ namespace KancolleSniffer
 \r
             public Notice GetNotice(DateTime start, DateTime prev, DateTime now)\r
             {\r
-                var m20 = TimeSpan.FromMinutes(20);\r
                 var proc = new List<string>();\r
                 var comp = new List<string>();\r
                 foreach (var s in _target)\r
@@ -98,7 +102,7 @@ namespace KancolleSniffer
                         continue;\r
                     if (damage == 1)\r
                     {\r
-                        if (prev - start < m20 && now - start >= m20)\r
+                        if (PassedFirstRepairTime(start, prev, now))\r
                             comp.Add(s.Name);\r
                         continue;\r
                     }\r
@@ -107,9 +111,9 @@ namespace KancolleSniffer
                     for (var d = damage; d >= 2; d--)\r
                     {\r
                         var sec = RepairTime(s, d);\r
-                        if (sec <= 20 * 60)\r
+                        if (sec <= FirstRepairTime * 60)\r
                         {\r
-                            if (d == damage && (prev - start < m20 && now - start >= m20))\r
+                            if (d == damage && PassedFirstRepairTime(start, prev, now))\r
                                 comp.Add(s.Name);\r
                             continue;\r
                         }\r