private readonly ShipInfo _shipInfo;\r
private readonly DateTime[][] _times = new DateTime[ShipInfo.FleetCount][];\r
private readonly bool[] _enable = new bool[ShipInfo.FleetCount];\r
+ private readonly int[] _cond = new int[ShipInfo.FleetCount];\r
\r
public ConditionTimer(ShipInfo shipInfo)\r
{\r
for (var fleet = 0; fleet < ShipInfo.FleetCount; fleet++)\r
{\r
_enable[fleet] = true;\r
- var cond =\r
- (from id in _shipInfo.GetDeck(fleet) where id != -1 select _shipInfo[id].Cond)\r
- .DefaultIfEmpty(49).Min();\r
+ var cond = _cond[fleet] = CondMin(fleet);\r
var time49 = _times[fleet][2];\r
if (cond < 49 && time49 != DateTime.MinValue) // 計時中\r
{\r
}\r
}\r
\r
- public void Disable(int fleet)\r
+ public void Invalidate(int fleet)\r
{\r
- _enable[fleet] = false;\r
+ _enable[fleet] = _cond[fleet] == CondMin(fleet);\r
+ }\r
+\r
+ private int CondMin(int fleet)\r
+ {\r
+ return (from id in _shipInfo.GetDeck(fleet) where id != -1 select _shipInfo[id].Cond)\r
+ .DefaultIfEmpty(49).Min();\r
}\r
\r
public string[] GetTimerStrings(int fleet)\r
var fleet = int.Parse(values["api_id"]) - 1;\r
var idx = int.Parse(values["api_ship_idx"]);\r
var ship = int.Parse(values["api_ship_id"]);\r
- _conditionTimer.Disable(fleet);\r
if (idx == -1)\r
{\r
var deck = _decks[fleet];\r
for (var i = 1; i < deck.Length; i++)\r
deck[i] = -1;\r
+ _conditionTimer.Invalidate(fleet);\r
return;\r
}\r
if (ship == -1)\r
// 入れ替えの場合\r
if ((_decks[f][i] = _decks[fleet][idx]) == -1)\r
RemoveShip(f, i);\r
- _conditionTimer.Disable(f);\r
+ if (f != fleet)\r
+ _conditionTimer.Invalidate(f);\r
});\r
_decks[fleet][idx] = ship;\r
+ _conditionTimer.Invalidate(fleet);\r
}\r
\r
private void AlterShip(int ship, Action<int, int> action)\r
for (var i = idx; i < deck.Length - 1; i++)\r
deck[i] = deck[i + 1];\r
deck[deck.Length - 1] = -1;\r
- _conditionTimer.Disable(fleet);\r
+ _conditionTimer.Invalidate(fleet);\r
}\r
\r
public void InspectPowerup(string request, dynamic json)\r