{\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
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
\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
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
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