{\r
var deck = _shipInfo.GetDeck(fleet);\r
var fs = deck[0];\r
- if (fs == -1 || !_shipInfo[fs].Name.StartsWith("明石") || _dockInfo.InNDock(fs) ||\r
- _missionInfo.InMission(fleet))\r
+ if (!_shipInfo[fs].Name.StartsWith("明石") || _dockInfo.InNDock(fs) || _missionInfo.InMission(fleet))\r
{\r
InvalidateTimer(fleet);\r
return;\r
if (_repairStatuses[fleet].DeckChanged(deck))\r
InvalidateTimer(fleet);\r
var cap = _shipInfo[fs].Slot.Count(item => _itemInfo[item].Name == "艦艇修理施設") + 2;\r
- var targets = deck.Take(cap).Where(id => id != -1 && !_dockInfo.InNDock(id)).ToArray();\r
+ var targets = deck.Take(cap).Where(id => !_dockInfo.InNDock(id)).ToArray();\r
var totalHp = (from id in targets\r
let status = _shipInfo[id]\r
where status.NowHp < status.MaxHp && status.DamageLevel < ShipStatus.Damage.Half\r
{\r
Friend = (from status in _shipInfo.GetShipStatuses((int)json.api_dock_id - 1)\r
select _shipMaster[status.ShipId].IsSubmarine).ToArray(),\r
- Enemy = (from id in (int[])json.api_ship_ke\r
- where id != -1\r
- select _shipMaster[id].IsSubmarine).ToArray()\r
+ Enemy = (from id in (int[])json.api_ship_ke where id != -1 select _shipMaster[id].IsSubmarine).ToArray()\r
};\r
}\r
\r
\r
public bool InNDock(int id)\r
{\r
- return _ndoc.Any(n => n == id);\r
+ return _ndoc.Any(n => n == id); // 空のドックのidは0\r
}\r
\r
public void InspectKDock(dynamic json)\r
TyKu = (int)entry.api_type[0] == 3 || (int)entry.api_type[2] == 11 ? (int)entry.api_tyku : 0 // 艦載機と水上爆撃機のみ\r
};\r
}\r
+ _itemSpecs[-1] = new ItemSpec();\r
}\r
\r
public void InspectSlotItem(dynamic json, bool full = false)\r
NowItems = ((object[])json).Length;\r
foreach (var entry in json)\r
_itemIds[(int)entry.api_id] = (int)entry.api_slotitem_id;\r
+ _itemIds[-1] = -1;\r
}\r
\r
public void InspectCreateItem(dynamic json)\r
\r
public ItemSpec this[int id]\r
{\r
- get\r
- {\r
- int itemId;\r
- ItemSpec spec;\r
- if (_itemIds.TryGetValue(id, out itemId) && _itemSpecs.TryGetValue(itemId, out spec))\r
- return spec;\r
- return new ItemSpec();\r
- }\r
+ get { return GetSpecById(id); }\r
+ }\r
+\r
+ public ItemSpec GetSpecById(int id)\r
+ {\r
+ return _itemSpecs[_itemIds[id]];\r
}\r
}\r
}
\ No newline at end of file
OnSlot = (from num in (dynamic[])entry.api_onslot select (int)num).ToArray(),\r
Slot = (from num in (dynamic[])entry.api_slot select (int)num).ToArray()\r
};\r
+ _shipInfo[-1] = new ShipStatus {Name = "不明"};\r
}\r
_conditionTimer.SetTimer();\r
}\r
public int GetAirSuperiority(int fleet)\r
{\r
return (from id in _decks[fleet]\r
- where _shipInfo.ContainsKey(id)\r
+ where id != -1\r
let ship = _shipInfo[id]\r
from slot in ship.Slot.Zip(ship.OnSlot, (s, o) => new {slot = s, onslot = o})\r
select (int)Math.Floor(_itemInfo[slot.slot].TyKu * Math.Sqrt(slot.onslot))).Sum();\r
ShipType = (int)entry.api_stype,\r
};\r
}\r
+ _shipSpecs[-1] = new ShipSpec {Name = "不明"};\r
}\r
\r
public ShipSpec this[int id]\r
{\r
- get\r
- {\r
- ShipSpec spec;\r
- return _shipSpecs.TryGetValue(id, out spec) ? spec : new ShipSpec {Name = "不明"};\r
- }\r
+ get { return _shipSpecs[id]; }\r
}\r
}\r
\r