From: Kazuhiro Fujieda Date: Sat, 12 Aug 2017 10:29:10 +0000 (+0900) Subject: 海戦報告書に大破艦の欄を追加する X-Git-Tag: v9.23~8 X-Git-Url: http://git.osdn.net/view?p=kancollesniffer%2FKancolleSniffer.git;a=commitdiff_plain;h=0e29bd91f2466627a24a515c6efe467676da4b88 海戦報告書に大破艦の欄を追加する --- 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) {