repair.Invalidate();\r
}\r
repair.Deck = deck.ToArray();\r
- var cap = _shipInfo[fs].Slot.Count(item => _itemInfo[item].Name == "艦艇修理施設") + 2;\r
+ var cap = _shipInfo[fs].Slot.Count(id => _itemInfo.GetName(id) == "艦艇修理施設") + 2;\r
var target = deck.Take(cap).Select(id =>\r
{\r
/*\r
}\r
Damage += NowHp;\r
NowHp = 0;\r
- var idex = _slotEx == 0 ? -1 : _itemInfo[_slotEx].Id;\r
+ var idex = _slotEx == 0 ? -1 : _itemInfo.GetItemId(_slotEx);\r
if (idex == 42) // ダメコン\r
{\r
_slotEx = -1;\r
}\r
for (var j = 0; j < _slot.Length; j++)\r
{\r
- var id = _itemInfo[_slot[j]].Id;\r
+ var id = _itemInfo.GetItemId(_slot[j]);\r
if (id == 42) // ダメコン\r
{\r
_slot[j] = -1;\r
var max = s.Spec.MaxEq[i];\r
if (slot == -1)\r
continue;\r
- var item = sniffer.Item.ItemDict[slot];\r
+ var item = sniffer.Item.GetStatus(slot);\r
if (item.Spec.Name == "ドラム缶(輸送用)")\r
drum++;\r
var airspec = "";\r
}\r
if (s.SlotEx > 0)\r
{\r
- var item = sniffer.Item.ItemDict[s.SlotEx];\r
+ var item = sniffer.Item.GetStatus(s.SlotEx);\r
equips.Add(new EquipColumn {Equip = item.Spec.Name, Color = item.Spec.Color});\r
}\r
if (drum != 0)\r
}\r
}\r
\r
- public ItemSpec this[int id] => GetSpecById(id);\r
+ public string GetName(int id) => _itemInfo[id].Spec.Name;\r
\r
- public ItemSpec GetSpecById(int id) => _itemInfo[id].Spec;\r
+ public int GetItemId(int id) => _itemInfo[id].Spec.Id;\r
\r
public ItemSpec GetSpecByItemId(int id) => _itemSpecs[id];\r
\r
- public Dictionary<int, ItemStatus> ItemDict => _itemInfo;\r
+ public ItemStatus GetStatus(int id) => _itemInfo[id];\r
\r
- public void SetItemOwner(ShipStatus[] shipList)\r
+ public ItemStatus[] GetItemListWithOwner(ShipStatus[] shipList)\r
{\r
foreach (var e in _itemInfo)\r
e.Value.Ship = new ShipStatus();\r
if (s.SlotEx != 0)\r
_itemInfo[s.SlotEx].Ship = s;\r
}\r
+ return (from e in _itemInfo where e.Key != -1 select e.Value).ToArray();\r
}\r
\r
public string GetUseItemName(int id) => _useItemName[id];\r
var now = _nowFunc();\r
var values = HttpUtility.ParseQueryString(request);\r
var id = int.Parse(values["api_slot_id"]);\r
- var name = _itemInfo[id].Name;\r
- var level = _itemInfo.ItemDict[id].Level;\r
+ var name = _itemInfo.GetName(id);\r
+ var level = _itemInfo.GetStatus(id).Level;\r
var success = (int)json.api_remodel_flag == 1 ? "○" : "×";\r
var certain = int.Parse(values["api_certain_flag"]) == 1 ? "○" : "";\r
var useName = "";\r
if (json.api_use_slot_id())\r
{\r
var use = (int[])json.api_use_slot_id;\r
- useName = _itemInfo[use[0]].Name;\r
+ useName = _itemInfo.GetName(use[0]);\r
useNum = use.Length.ToString();\r
}\r
var after = (int[])json.api_after_material;\r
if (!Spec.IsAircraftCarrier)\r
return Firepower + 5;\r
var specs = (from id in Slot\r
- let spec = _itemInfo.ItemDict[id].Spec\r
+ let spec = _itemInfo.GetStatus(id).Spec\r
where spec.IsAircraft\r
select new {torpedo = spec.Torpedo, bomber = spec.Bomber}).ToArray();\r
var torpedo = specs.Sum(s => s.torpedo);\r
var aircraft = 0;\r
var all = 0;\r
var vanilla = AntiSubmarine;\r
- foreach (var spec in Slot.Select(id => _itemInfo.ItemDict[id].Spec))\r
+ foreach (var spec in Slot.Select(id => _itemInfo.GetStatus(id).Spec))\r
{\r
vanilla -= spec.AntiSubmarine;\r
if (spec.IsReconSeaplane) // 水偵は除外\r
=> GetShipStatuses(fleet).Where(s => !s.Escaped).SelectMany(ship =>\r
ship.Slot.Zip(ship.OnSlot, (slot, onslot) =>\r
{\r
- var spec = _itemInfo[slot];\r
- if (!spec.CanAirCombat)\r
+ var item = _itemInfo.GetStatus(slot);\r
+ if (!item.Spec.CanAirCombat)\r
return 0;\r
- var item = _itemInfo.ItemDict[slot];\r
var bonus = 0;\r
if (onslot != 0 && item.Alv == 7 && withBonus)\r
- _alvBonus.TryGetValue(spec.Type, out bonus);\r
- return (int)Floor(spec.AntiAir * Sqrt(onslot)) + bonus;\r
+ _alvBonus.TryGetValue(item.Spec.Type, out bonus);\r
+ return (int)Floor(item.Spec.AntiAir * Sqrt(onslot)) + bonus;\r
})).Sum();\r
\r
public ShipStatus[] GetDamagedShipList(DockInfo dockInfo)\r
foreach (var s in _decks[fleet].Select(id => _shipInfo[id]))\r
{\r
var items = 0;\r
- foreach (var spec in s.Slot.Select(t => _itemInfo[t]))\r
+ foreach (var spec in s.Slot.Select(id => _itemInfo.GetStatus(id).Spec))\r
{\r
items += spec.LoS;\r
result += spec.LoS * spec.LoSScaleFactor();\r
\r
public ShipStatus[] ShipList => _shipInfo.ShipList;\r
\r
- public ItemStatus[] ItemList\r
- {\r
- get\r
- {\r
- _itemInfo.SetItemOwner(ShipList);\r
- return (from e in _itemInfo.ItemDict where e.Key != -1 select e.Value).ToArray();\r
- }\r
- }\r
+ public ItemStatus[] ItemList => _itemInfo.GetItemListWithOwner(ShipList);\r
\r
public AkashiTimer.RepairSpan[] GetAkashiTimers(int fleet) => _akashiTimer.GetTimers(fleet);\r
\r