public class BaseAirCoprs\r
{\r
private readonly ItemInfo _itemInfo;\r
- private List<int> _relocationgPlanes;\r
+ private List<int> _relocationgPlanes = new List<int>();\r
\r
public BaseAirCoprs(ItemInfo item)\r
{\r
_itemInfo = item;\r
}\r
\r
- public AirCorpsInfo[] AirCorps { get; set; }\r
+ public BaseInfo[] AllAirCorps { get; set; }\r
+\r
+ public class BaseInfo\r
+ {\r
+ public int AreaId { get; set; }\r
+ public string AreaName => AreaId == 6 ? "中部海域" : "限定海域";\r
+ public AirCorpsInfo[] AirCorps { get; set; }\r
+ }\r
\r
public class AirCorpsInfo\r
{\r
\r
public void Inspect(dynamic json)\r
{\r
- AirCorps = (from entry in (dynamic[])json\r
- select\r
- new AirCorpsInfo\r
- {\r
- Distance = (int)entry.api_distance,\r
- Action = (int)entry.api_action_kind,\r
- Planes = (from plane in (dynamic[])entry.api_plane_info\r
- select new PlaneInfo\r
- {\r
- Slot = _itemInfo.GetStatus((int)plane.api_slotid),\r
- State = (int)plane.api_state,\r
- Count = plane.api_count() ? (int)plane.api_count : 0,\r
- MaxCount = plane.api_max_count() ? (int)plane.api_max_count : 0,\r
- }).ToArray()\r
- }).ToArray();\r
+ AllAirCorps = (from entry in (dynamic[])json\r
+ group\r
+ new AirCorpsInfo\r
+ {\r
+ Distance = (int)entry.api_distance,\r
+ Action = (int)entry.api_action_kind,\r
+ Planes = (from plane in (dynamic[])entry.api_plane_info\r
+ select new PlaneInfo\r
+ {\r
+ Slot = _itemInfo.GetStatus((int)plane.api_slotid),\r
+ State = (int)plane.api_state,\r
+ Count = plane.api_count() ? (int)plane.api_count : 0,\r
+ MaxCount = plane.api_max_count() ? (int)plane.api_max_count : 0,\r
+ }).ToArray()\r
+ } by entry.api_area_id() ? (int)entry.api_area_id : 0\r
+ into grp\r
+ select new BaseInfo {AreaId = grp.Key, AirCorps = grp.ToArray()}).ToArray();\r
}\r
\r
public void InspectSetPlane(string request, dynamic json)\r
{\r
- if (AirCorps == null)\r
+ if (AllAirCorps == null)\r
return;\r
var values = HttpUtility.ParseQueryString(request);\r
- var airCorps = AirCorps[int.Parse(values["api_base_id"]) - 1];\r
+ var areaId = int.Parse(values["api_area_id"] ?? "0");\r
+ var airCorps =\r
+ AllAirCorps.First(b => b.AreaId == areaId).AirCorps[int.Parse(values["api_base_id"]) - 1];\r
if (json.api_distance()) // 2016春イベにはない\r
airCorps.Distance = (int)json.api_distance;\r
foreach (var planeInfo in json.api_plane_info)\r
\r
public void InspectSetAction(string request)\r
{\r
- if (AirCorps == null)\r
+ if (AllAirCorps == null)\r
return;\r
var values = HttpUtility.ParseQueryString(request);\r
+ var areaId = int.Parse(values["api_area_id"] ?? "0");\r
+ var airCorps = AllAirCorps.First(b => b.AreaId == areaId).AirCorps;\r
foreach (var entry in\r
values["api_base_id"].Split(',')\r
.Zip(values["api_action_kind"].Split(','), (b, a) => new {baseId = b, action = a}))\r
{\r
- AirCorps[int.Parse(entry.baseId) - 1].Action = int.Parse(entry.action);\r
+ airCorps[int.Parse(entry.baseId) - 1].Action = int.Parse(entry.action);\r
}\r
}\r
\r
- public void InspectEventObject(dynamic json)\r
+ public void InspectPlaneInfo(dynamic json)\r
{\r
_relocationgPlanes = json.api_base_convert_slot()\r
? new List<int>((int[])json.api_base_convert_slot)\r
: new List<int>();\r
}\r
\r
+ public void InspectEventObject(dynamic json)\r
+ {\r
+ InspectPlaneInfo(json);\r
+ }\r
+\r
public void SetItemHolder()\r
{\r
- if (AirCorps == null)\r
+ if (AllAirCorps == null)\r
return;\r
var name = new[] {"第一", "第二", "第三"};\r
var i = 0;\r
- foreach (var airCorps in AirCorps)\r
+ foreach (var baseInfo in AllAirCorps)\r
{\r
- if (i >= name.Length)\r
- break;\r
- var ship = new ShipStatus {Id = 1000 + i, Spec = new ShipSpec {Name = name[i++] + "基地航空隊"}};\r
- foreach (var plane in airCorps.Planes)\r
+ var areaAame = baseInfo.AreaName;\r
+ foreach (var airCorps in baseInfo.AirCorps)\r
{\r
- if (plane.State != 1)\r
- continue;\r
- _itemInfo.GetStatus(plane.Slot.Id).Holder = ship;\r
+ if (i >= name.Length)\r
+ break;\r
+ var ship = new ShipStatus\r
+ {\r
+ Id = 1000 + i,\r
+ Spec = new ShipSpec {Name = areaAame + " " + name[i++] + "航空隊"}\r
+ };\r
+ foreach (var plane in airCorps.Planes)\r
+ {\r
+ if (plane.State != 1)\r
+ continue;\r
+ _itemInfo.GetStatus(plane.Slot.Id).Holder = ship;\r
+ }\r
}\r
}\r
+ if (_relocationgPlanes == null)\r
+ return;\r
var relocating = new ShipStatus {Id = 1500, Spec = new ShipSpec {Name = "配置転換中"}};\r
foreach (var id in _relocationgPlanes)\r
_itemInfo.GetStatus(id).Holder = relocating;\r
if (sniffer.BaseAirCorps != null)\r
{\r
var name = new[] {"第一", "第二", "第三"};\r
- list.Add(new EquipColumn {Fleet = "基地航空隊"});\r
- var i = 0;\r
- foreach (var corps in sniffer.BaseAirCorps)\r
+ foreach (var baseInfo in sniffer.BaseAirCorps)\r
{\r
- if (i >= name.Length)\r
- break;\r
- var fp = corps.FighterPower;\r
- list.Add(new EquipColumn\r
+ list.Add(new EquipColumn {Fleet = baseInfo.AreaName + " 基地航空隊"});\r
+ var i = 0;\r
+ foreach (var airCorps in baseInfo.AirCorps)\r
{\r
- Ship = name[i++] + " " + corps.ActionName,\r
- Spec = "制空" + (fp[0] == fp[1] ? fp[0].ToString() : fp[0] + "~" + fp[1]) + " 距離" + corps.Distance\r
- });\r
- list.AddRange(corps.Planes.Select(plane => new EquipColumn\r
- {\r
- Equip =\r
- plane.State != 1 ? plane.StateName : GenEquipString(plane.Slot, plane.Count, plane.MaxCount),\r
- Color = plane.Slot.Spec.Color\r
- }));\r
+ if (i >= name.Length)\r
+ break;\r
+ var fp = airCorps.FighterPower;\r
+ list.Add(new EquipColumn\r
+ {\r
+ Ship = name[i++] + " " + airCorps.ActionName,\r
+ Spec = "制空" + (fp[0] == fp[1] ? fp[0].ToString() : fp[0] + "~" + fp[1]) +\r
+ " 距離" + airCorps.Distance\r
+ });\r
+ list.AddRange(airCorps.Planes.Select(plane => new EquipColumn\r
+ {\r
+ Equip =\r
+ plane.State != 1\r
+ ? plane.StateName\r
+ : GenEquipString(plane.Slot, plane.Count, plane.MaxCount),\r
+ Color = plane.Slot.Spec.Color\r
+ }));\r
+ }\r
}\r
}\r
_equipList = list.ToArray();\r
_questInfo.QuestCount = (int)data.api_parallel_quest_count;\r
if (data.api_event_object())\r
_baseAirCoprs.InspectEventObject(data.api_event_object);\r
+ if (data.api_plane_info())\r
+ _baseAirCoprs.InspectPlaneInfo(data.api_plane_info);\r
_battleInfo.CleanupResult();\r
_battleInfo.InBattle = false;\r
_shipInfo.ClearEscapedShips();\r
{\r
_exMapInfo.InspectMapInfo(data);\r
_miscTextInfo.InspectMapInfo(data);\r
+ if (data.api_air_base())\r
+ _baseAirCoprs.Inspect(data.api_air_base);\r
return Update.Item;\r
}\r
if (url.EndsWith("api_req_member/get_practice_enemyinfo"))\r
\r
public string MiscText => _miscTextInfo.Text;\r
\r
- public BaseAirCoprs.AirCorpsInfo[] BaseAirCorps => _baseAirCoprs.AirCorps;\r
+ public BaseAirCoprs.BaseInfo[] BaseAirCorps => _baseAirCoprs.AllAirCorps;\r
\r
public void SetLogWriter(Action<string, string, string> writer, Func<DateTime> nowFunc)\r
{\r
}\r
if (sniffer.BaseAirCorps != null)\r
{\r
- sb.Append("基地航空隊\r\n");\r
- var i = 0;\r
- var name = new[] {"第一 ", "第二 ", "第三 "};\r
- foreach (var airCorps in sniffer.BaseAirCorps)\r
+ foreach (var baseInfo in sniffer.BaseAirCorps)\r
{\r
- sb.Append(name[i++]);\r
- sb.Append(\r
- string.Join(",",\r
- from plane in airCorps.Planes\r
- select plane.State == 1\r
- ? dict[plane.Slot.Spec.Name] + ItemStatusString(plane.Slot)\r
- : plane.StateName) + "\r\n");\r
+ sb.Append(baseInfo.AreaName + " 基地航空隊\r\n");\r
+ var i = 0;\r
+ var name = new[] {"第一 ", "第二 ", "第三 "};\r
+ foreach (var airCorps in baseInfo.AirCorps)\r
+ {\r
+ sb.Append(name[i++]);\r
+ sb.Append(\r
+ string.Join(",",\r
+ from plane in airCorps.Planes\r
+ select plane.State == 1\r
+ ? dict[plane.Slot.Spec.Name] + ItemStatusString(plane.Slot)\r
+ : plane.StateName) + "\r\n");\r
+ }\r
}\r
}\r
return sb.ToString();\r