From 0e29bd91f2466627a24a515c6efe467676da4b88 Mon Sep 17 00:00:00 2001 From: Kazuhiro Fujieda Date: Sat, 12 Aug 2017 19:29:10 +0900 Subject: [PATCH] =?utf8?q?=E6=B5=B7=E6=88=A6=E5=A0=B1=E5=91=8A=E6=9B=B8?= =?utf8?q?=E3=81=AB=E5=A4=A7=E7=A0=B4=E8=89=A6=E3=81=AE=E6=AC=84=E3=82=92?= =?utf8?q?=E8=BF=BD=E5=8A=A0=E3=81=99=E3=82=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit --- KancolleSniffer/LogServer.cs | 50 ++++++++++++++++++++++++++++++++++++++++++-- LogViewer/tags.html | 4 ++-- 2 files changed, 50 insertions(+), 4 deletions(-) diff --git a/KancolleSniffer/LogServer.cs b/KancolleSniffer/LogServer.cs index af74ab9..51672bb 100644 --- a/KancolleSniffer/LogServer.cs +++ b/KancolleSniffer/LogServer.cs @@ -153,7 +153,7 @@ namespace KancolleSniffer } else if (path.EndsWith("海戦・ドロップ報告書.json")) { - records = 38; + records = 39; battle = true; } else if (path.EndsWith("開発報告書.json")) @@ -196,7 +196,7 @@ namespace KancolleSniffer if (material) entries = data.Take(9); if (battle) - entries = data.Concat(Enumerable.Repeat("", 3)).Take(38); + entries = ProcessBattleLog(data); if (entries.Count() != records) continue; if (number) @@ -221,6 +221,52 @@ namespace KancolleSniffer } } + private static IEnumerable ProcessBattleLog(string[] data) + { + if (data.Length == 35) + data = data.Concat(Enumerable.Repeat("", 3)).ToArray(); + if (data.Length != 38) + return data; + return AddDamagedShip(data); + } + + private static IEnumerable AddDamagedShip(string[] data) + { + var damaged = new List(); + for (var i = 11; i < 11 + 12; i += 2) + { + var ship = data[i]; + if (ship == "") + continue; + var hp = data[i + 1]; + try + { + if (ship.Contains("・")) + { + var ships = ship.Split('・'); + var hps = hp.Split('・'); + var nowMax = hps[0].Split('/').Select(int.Parse).ToArray(); + if (ShipStatus.CalcDamage(nowMax[0], nowMax[1]) == ShipStatus.Damage.Badly) + damaged.Add(ships[0]); + nowMax = hps[1].Split('/').Select(int.Parse).ToArray(); + if (ShipStatus.CalcDamage(nowMax[0], nowMax[1]) == ShipStatus.Damage.Badly) + damaged.Add(ships[1]); + } + else + { + var nowMax = hp.Split('/').Select(int.Parse).ToArray(); + if (ShipStatus.CalcDamage(nowMax[0], nowMax[1]) == ShipStatus.Damage.Badly) + damaged.Add(ship); + } + } + catch (FormatException) + { + return data; + } + } + return data.Take(23).Concat(new []{string.Join("・", damaged)}).Concat(data.Skip(23)); + } + private static void SendFile(Socket client, string path, string mime) { using (var header = new StreamWriter(new MemoryStream(), Encoding.ASCII)) diff --git a/LogViewer/tags.html b/LogViewer/tags.html index 4ca4648..5ad2723 100644 --- a/LogViewer/tags.html +++ b/LogViewer/tags.html @@ -62,7 +62,7 @@ opts.observable.on("mainTabChanged", function(idx) {