var equips = ((int[][])json.api_eSlot).SelectMany(x => x);\r
return (from slot in equips.Zip(maxEq, (id, max) => new {id, max})\r
let spec = _itemInfo.GetSpecByItemId(slot.id)\r
- where spec.CanAirCombat()\r
+ where spec.CanAirCombat\r
select (int)Math.Floor(spec.AntiAir * Math.Sqrt(slot.max))).DefaultIfEmpty().Sum();\r
}\r
\r
Name = "";\r
}\r
\r
- public bool CanAirCombat()\r
+ public bool CanAirCombat\r
{\r
- switch (Type)\r
+ get\r
{\r
- case 6: // 艦戦\r
- case 7: // 艦爆\r
- case 8: // 艦攻\r
- case 11: // 水爆\r
- return true;\r
+ switch (Type)\r
+ {\r
+ case 6: // 艦戦\r
+ case 7: // 艦爆\r
+ case 8: // 艦攻\r
+ case 11: // 水爆\r
+ return true;\r
+ }\r
+ return false;\r
}\r
- return false;\r
}\r
\r
// http://ch.nicovideo.jp/biikame/blomaga/ar663428\r
return 0.9067950;\r
return 0;\r
}\r
+\r
+ public bool IsAircraft\r
+ {\r
+ get\r
+ {\r
+ switch (Type)\r
+ {\r
+ case 6:\r
+ case 7:\r
+ case 8:\r
+ case 9:\r
+ case 10:\r
+ case 11:\r
+ case 25: // オートジャイロ\r
+ case 26: // 対潜哨戒機\r
+ return true;\r
+ }\r
+ return false;\r
+ }\r
+ }\r
}\r
\r
public class ItemStatus\r
let ship = _shipInfo[id]\r
from slot in ship.Slot.Zip(ship.OnSlot, (s, o) => new {slot = s, onslot = o})\r
let item = _itemInfo[slot.slot]\r
- where item.CanAirCombat()\r
+ where item.CanAirCombat\r
select (int)Math.Floor(item.AntiAir * Math.Sqrt(slot.onslot))).DefaultIfEmpty().Sum();\r
}\r
\r
s.Fleet = -1;\r
list.Add(s);\r
list.AddRange(\r
- s.Slot.Where(id => id != -1).Select(\r
- id => CreateDummyEntry(_sniffer.Item.ItemDict[id].Spec.Name, 500))\r
+ (from e in Enumerable.Range(0, s.Slot.Length)\r
+ let slot = s.Slot[e]\r
+ let onslot = s.OnSlot[e]\r
+ let max = s.Spec.MaxEq[e]\r
+ where slot != -1\r
+ let item = _sniffer.Item.ItemDict[slot]\r
+ select\r
+ CreateDummyEntry(item.Spec.Name + (item.Level == 0 ? "" : "★" + item.Level) +\r
+ (!item.Spec.IsAircraft ? "" : " " + onslot + "/" + max), 500))\r
.DefaultIfEmpty(CreateDummyEntry("なし", 500)));\r
}\r
}\r