-// Copyright (C) 2014 Kazuhiro Fujieda <fujieda@users.sourceforge.jp>\r
+// Copyright (C) 2014, 2015 Kazuhiro Fujieda <fujieda@users.osdn.me>\r
// \r
// This program is part of KancolleSniffer.\r
//\r
\r
public void Inspect(dynamic json)\r
{\r
- foreach (var entry in json)\r
+ var dict = new Dictionary<double, string>();\r
+ foreach (var entry in json.api_mst_stype)\r
+ dict[entry.api_id] = entry.api_name;\r
+ dict[8] = "高速戦艦" ;\r
+ foreach (var entry in json.api_mst_ship)\r
{\r
- _shipSpecs[(int)entry.api_id] = new ShipSpec\r
+ var shipSpec = _shipSpecs[(int)entry.api_id] = new ShipSpec\r
{\r
- Name = entry.api_name,\r
- FuelMax = (int)entry.api_fuel_max,\r
- BullMax = (int)entry.api_bull_max,\r
- MaxEq = (int[])entry.api_maxeq,\r
+ Id = (int)entry.api_id,\r
+ Name = ShipName(entry),\r
+ FuelMax = entry.api_fuel_max() ? (int)entry.api_fuel_max : 0,\r
+ BullMax = entry.api_bull_max() ? (int)entry.api_bull_max : 0,\r
ShipType = (int)entry.api_stype,\r
+ ShipTypeName = dict[entry.api_stype]\r
};\r
+ int[] maxEq;\r
+ shipSpec.MaxEq = entry.api_maxeq()\r
+ ? entry.api_maxeq\r
+ : MissingData.MaxEq.TryGetValue(shipSpec.Id, out maxEq) ? maxEq : null;\r
}\r
- _shipSpecs[-1] = new ShipSpec {Name = "不明", MaxEq = new int[NumSlots]};\r
+ _shipSpecs[-1] = new ShipSpec();\r
}\r
\r
- public ShipSpec this[int id]\r
+ // 深海棲艦の名前にelite/flagshipを付ける\r
+ private string ShipName(dynamic json)\r
{\r
- get { return _shipSpecs[id]; }\r
+ var name = json.api_name;\r
+ var flagship = json.api_yomi;\r
+ if ((int)json.api_id <= 500 || flagship == "-" || flagship == "")\r
+ return name;\r
+ return name + "(" + flagship + ")";\r
}\r
+\r
+ public ShipSpec this[int id] => _shipSpecs[id];\r
}\r
\r
- public struct ShipSpec\r
+ public class ShipSpec\r
{\r
+ public int Id { get; set; }\r
public string Name { get; set; }\r
public int FuelMax { get; set; }\r
public int BullMax { get; set; }\r
public int[] MaxEq { get; set; }\r
public int ShipType { get; set; }\r
+ public string ShipTypeName { get; set; }\r
\r
- public bool IsSubmarine\r
+ public ShipSpec()\r
{\r
- get { return ShipType == 13 || ShipType == 14; }\r
+ Id = -1;\r
+ Name = "";\r
+ MaxEq = new int[0];\r
}\r
\r
public double RepairWeight\r
{\r
- get {\r
+ get\r
+ {\r
switch (ShipType)\r
{\r
case 13: // 潜水艦\r
case 14: // 潜水空母\r
case 16: // 水上機母艦\r
case 17: // 揚陸艦\r
+ case 21: // 練習巡洋艦\r
return 1.0;\r
case 5: // 重巡洋艦\r
case 6: // 航空巡洋艦\r
return 1.0;\r
}\r
}\r
+\r
+ public bool IsSubmarine => ShipType == 13 || ShipType == 14;\r
+\r
+ public bool IsAircraftCarrier => ShipType == 7 || ShipType == 11 || ShipType == 18;\r
+\r
+ public bool IsAntiSubmarine\r
+ {\r
+ get\r
+ {\r
+ switch (ShipType)\r
+ {\r
+ case 2: // 駆逐\r
+ case 3: // 軽巡\r
+ case 4: // 雷巡\r
+ case 6: // 航巡\r
+ case 7: // 軽空\r
+ case 10: // 航戦\r
+ case 16: // 水母\r
+ case 17: // 揚陸艦\r
+ case 21: // 練巡\r
+ case 22: // 補給艦\r
+ return true;\r
+ }\r
+ return false;\r
+ }\r
+ }\r
+\r
+ public bool IsRepairShip => ShipType == 19;\r
}\r
}
\ No newline at end of file