select damage == 0\r
? null\r
: new[] {first}.Concat(from d in Enumerable.Range(2, damage < 2 ? 0 : damage - 1)\r
- let span = s.RepairTime(d) + TimeSpan.FromSeconds(30)\r
+ let span = s.CalcRepairTime(d) + TimeSpan.FromSeconds(30)\r
where span.TotalSeconds > 20 * 60\r
select new RepairTime(d - 1, Start + span)).ToArray()).ToArray();\r
}\r
return ratio > 0.75 ? Damage.Minor : ratio > 0.5 ? Damage.Small : ratio > 0.25 ? Damage.Half : Damage.Badly;\r
}\r
\r
- public TimeSpan RepairTime()\r
+ public TimeSpan RepairTime\r
{\r
- return RepairTime(MaxHp - NowHp);\r
+ get { return CalcRepairTime(MaxHp - NowHp); }\r
}\r
\r
- public TimeSpan RepairTime(int damage)\r
+ public TimeSpan CalcRepairTime(int damage)\r
{\r
var weight = Spec.RepairWeight;\r
var level = Level < 12 ? Level * 10 : Level * 5 + Math.Floor(Math.Sqrt(Level - 11)) * 10 + 50;\r
}\r
}\r
\r
- public class DamageStatus\r
- {\r
- public int Fleet { private set; get; }\r
- public string Name { private set; get; }\r
- public ShipStatus.Damage DamageLevel { private set; get; }\r
- public TimeSpan RepairTime { private set; get; }\r
-\r
- public DamageStatus(int fleet, string name, ShipStatus.Damage damage, TimeSpan time)\r
- {\r
- Fleet = fleet;\r
- Name = name;\r
- DamageLevel = damage;\r
- RepairTime = time;\r
- }\r
- }\r
-\r
public class ShipInfo\r
{\r
public const int FleetCount = 4;\r
select (int)Math.Floor(item.AntiAir * Math.Sqrt(slot.onslot))).DefaultIfEmpty().Sum();\r
}\r
\r
- public DamageStatus[] GetDamagedShipList(DockInfo dockInfo)\r
+ public ShipStatus[] GetDamagedShipList(DockInfo dockInfo)\r
{\r
- int oi;\r
- return (from s in _shipInfo.Values\r
+ return (from s in ShipList\r
where s.NowHp < s.MaxHp && !dockInfo.InNDock(s.Id)\r
- select new DamageStatus(FindFleet(s.Id, out oi), s.Name, s.DamageLevel, s.RepairTime())).\r
- OrderByDescending(entry => entry.RepairTime).ToArray();\r
+ select s).OrderByDescending(s => s.RepairTime).ToArray();\r
}\r
\r
public double GetLineOfSights(int fleet)\r