From 5ba6c4ef880b98b92df14f64ad742340beabe71a Mon Sep 17 00:00:00 2001 From: Kazuhiro Fujieda Date: Tue, 11 Oct 2016 20:54:42 +0900 Subject: [PATCH] =?utf8?q?=E5=9F=BA=E5=9C=B0=E8=88=AA=E7=A9=BA=E9=9A=8A?= =?utf8?q?=E3=81=AE=E9=A3=9B=E8=A1=8C=E5=A0=B4=E6=8B=A1=E5=BC=B5=E3=81=AB?= =?utf8?q?=E5=AF=BE=E5=BF=9C=E3=81=99=E3=82=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit --- KancolleSniffer/BaseAirCoprs.cs | 30 +++++++++++++++++++++++++----- KancolleSniffer/Sniffer.cs | 5 +++++ 2 files changed, 30 insertions(+), 5 deletions(-) diff --git a/KancolleSniffer/BaseAirCoprs.cs b/KancolleSniffer/BaseAirCoprs.cs index d617f4d..dba0bc1 100644 --- a/KancolleSniffer/BaseAirCoprs.cs +++ b/KancolleSniffer/BaseAirCoprs.cs @@ -12,7 +12,9 @@ // See the License for the specific language governing permissions and // limitations under the License. +using System; using System.Collections.Generic; +using System.Collections.Specialized; using System.Linq; using static System.Math; @@ -134,9 +136,7 @@ namespace KancolleSniffer if (AllAirCorps == null) return; var values = HttpUtility.ParseQueryString(request); - var areaId = int.Parse(values["api_area_id"] ?? "0"); - var airCorps = - AllAirCorps.First(b => b.AreaId == areaId).AirCorps[int.Parse(values["api_base_id"]) - 1]; + var airCorps = GetBaseInfo(values).AirCorps[int.Parse(values["api_base_id"]) - 1]; if (json.api_distance()) // 2016春イベにはない airCorps.Distance = (int)json.api_distance; foreach (var planeInfo in json.api_plane_info) @@ -165,8 +165,7 @@ namespace KancolleSniffer if (AllAirCorps == null) return; var values = HttpUtility.ParseQueryString(request); - var areaId = int.Parse(values["api_area_id"] ?? "0"); - var airCorps = AllAirCorps.First(b => b.AreaId == areaId).AirCorps; + var airCorps = GetBaseInfo(values).AirCorps; foreach (var entry in values["api_base_id"].Split(',') .Zip(values["api_action_kind"].Split(','), (b, a) => new {baseId = b, action = a})) @@ -175,6 +174,27 @@ namespace KancolleSniffer } } + public void InspectExpandBase(string request, dynamic json) + { + var values = HttpUtility.ParseQueryString(request); + var baseInfo = GetBaseInfo(values); + var airCorps = baseInfo.AirCorps; + Array.Resize(ref airCorps, airCorps.Length + 1); + baseInfo.AirCorps = airCorps; + airCorps[airCorps.Length - 1] = new AirCorpsInfo + { + Planes = + ((dynamic[])json[0].api_plane_info). + Select(plane => new PlaneInfo {Slot = new ItemStatus()}).ToArray() + }; + } + + private BaseInfo GetBaseInfo(NameValueCollection values) + { + var areaId = int.Parse(values["api_area_id"] ?? "0"); // 古いAPIに対応するため + return AllAirCorps.First(b => b.AreaId == areaId); + } + public void InspectPlaneInfo(dynamic json) { _relocationgPlanes = json.api_base_convert_slot() diff --git a/KancolleSniffer/Sniffer.cs b/KancolleSniffer/Sniffer.cs index b941c9c..4107a48 100644 --- a/KancolleSniffer/Sniffer.cs +++ b/KancolleSniffer/Sniffer.cs @@ -483,6 +483,11 @@ namespace KancolleSniffer _baseAirCoprs.InspectSetAction(request); return Update.Ship; } + if (url.EndsWith("api_req_air_corps/expand_base")) + { + _baseAirCoprs.InspectExpandBase(request, data); + return Update.Ship; + } return Update.None; } -- 2.11.0