From 751707197da8f9b632e96a7022b6089d541b0fef Mon Sep 17 00:00:00 2001 From: Kazuhiro Fujieda Date: Fri, 21 Feb 2020 19:55:58 +0900 Subject: [PATCH] =?utf8?q?=E5=A0=B1=E5=91=8A=E6=9B=B8=E3=81=AE=E6=B5=B7?= =?utf8?q?=E6=88=A6=E3=81=AB=E4=B8=AD=E7=A0=B4=E8=89=A6=E3=82=92=E8=A1=A8?= =?utf8?q?=E7=A4=BA=E3=81=99=E3=82=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit --- KancolleSniffer.Test/BattleLogProcessorTest.cs | 7 +++++-- KancolleSniffer.Test/LogProcessorTest.cs | 2 +- KancolleSniffer/Log/BattleLogProcessor.cs | 29 +++++++++++++++++--------- LogViewer/tags.tag | 10 +++++---- 4 files changed, 31 insertions(+), 17 deletions(-) diff --git a/KancolleSniffer.Test/BattleLogProcessorTest.cs b/KancolleSniffer.Test/BattleLogProcessorTest.cs index fd9f6db..6a6441f 100644 --- a/KancolleSniffer.Test/BattleLogProcessorTest.cs +++ b/KancolleSniffer.Test/BattleLogProcessorTest.cs @@ -41,11 +41,14 @@ namespace KancolleSniffer.Test input[14] = "5/36"; input[15] = "綾波改二(Lv148)"; input[16] = "20/37"; + input[17] = "夕立改二(Lv148)"; + input[18] = "18/36"; input[37] = "制空権確保"; var result = new BattleLogProcessor().Process(input); PAssert.That(() => result[5] == "T字有利"); PAssert.That(() => result[37] == "確保"); PAssert.That(() => result[38] == "龍鳳改(Lv97)・夕立改(Lv148)"); + PAssert.That(() => result[39] == "夕立改二(Lv148)"); } [TestMethod] @@ -100,7 +103,7 @@ namespace KancolleSniffer.Test var result = new BattleLogProcessor().Process(input); PAssert.That(() => result[21] == "潮改二(Lv94)・龍驤改二(Lv99)" && result[22] == "33/33・50/50"); - PAssert.That(() => result.Length == 40); + PAssert.That(() => result.Length == 41); } [TestMethod] @@ -109,7 +112,7 @@ namespace KancolleSniffer.Test var input = Enumerable.Repeat("", 38).ToArray(); input[1] = "サーモン海域"; var result = new BattleLogProcessor(new Dictionary {{"サーモン海域", "5-4"}}).Process(input); - PAssert.That(() => result[39] == "5-4"); + PAssert.That(() => result[40] == "5-4"); } } } \ No newline at end of file diff --git a/KancolleSniffer.Test/LogProcessorTest.cs b/KancolleSniffer.Test/LogProcessorTest.cs index b8c7c8c..8b9769c 100644 --- a/KancolleSniffer.Test/LogProcessorTest.cs +++ b/KancolleSniffer.Test/LogProcessorTest.cs @@ -68,7 +68,7 @@ namespace KancolleSniffer.Test result.First() == "[\"2018-09-08 11:28:01\",\"鎮守府正面海域\",\"3\",\"ボス\",\"A\",\"同航戦\",\"単縦陣\",\"単縦陣\",\"敵主力艦隊\",\"駆逐艦\",\"雷\"," + "\"浜波改(Lv78)\",\"32/32\",\"涼風(Lv10)\",\"3/16\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\"," + - "\"軽巡ホ級\",\"0/33\",\"駆逐イ級\",\"0/20\",\"駆逐イ級\",\"7/20\",\"\",\"\",\"\",\"\",\"\",\"\",\"0\",\"0\",\"\",\"涼風(Lv10)\",\"1-1\"]"); + "\"軽巡ホ級\",\"0/33\",\"駆逐イ級\",\"0/20\",\"駆逐イ級\",\"7/20\",\"\",\"\",\"\",\"\",\"\",\"\",\"0\",\"0\",\"\",\"涼風(Lv10)\",\"\",\"1-1\"]"); } /// diff --git a/KancolleSniffer/Log/BattleLogProcessor.cs b/KancolleSniffer/Log/BattleLogProcessor.cs index 8a8ad06..e374f89 100644 --- a/KancolleSniffer/Log/BattleLogProcessor.cs +++ b/KancolleSniffer/Log/BattleLogProcessor.cs @@ -62,9 +62,11 @@ namespace KancolleSniffer.Log if (data[7].EndsWith("航行序列")) data[7] = data[7].Substring(0, 4); data[37] = ShortenAirBattleResult(data[37]); - var result = new string[40]; - result[38] = GenerateDamagedShip(data); - result[39] = map; + var result = new string[41]; + var damage = GenerateDamagedShip(data); + result[38] = damage[0]; + result[39] = damage[1]; + result[40] = map; Array.Copy(data, result, 38); return result; } @@ -88,9 +90,10 @@ namespace KancolleSniffer.Log } } - private static string GenerateDamagedShip(string[] data) + private static string[] GenerateDamagedShip(string[] data) { - var damaged = new List(); + var badly = new List(); + var half = new List(); for (var i = 11; i < 11 + 12; i += 2) { if (data[i] == "") @@ -99,18 +102,24 @@ namespace KancolleSniffer.Log var hp = data[i + 1]; try { - damaged.AddRange(from entry in ship.Split('・').Zip(hp.Split('・'), (s, h) => new {s, h}) + foreach (var entry in from entry in ship.Split('・').Zip(hp.Split('・'), (s, h) => new {s, h}) where entry.h.Contains("/") let nm = entry.h.Split('/').Select(int.Parse).ToArray() - where ShipStatus.CalcDamage(nm[0], nm[1]) == ShipStatus.Damage.Badly - select entry.s); + let level = ShipStatus.CalcDamage(nm[0], nm[1]) + select new {level, name = entry.s}) + { + if (entry.level == ShipStatus.Damage.Half) + half.Add(entry.name); + else if (entry.level == ShipStatus.Damage.Badly) + badly.Add(entry.name); + } } catch (FormatException) { - return ""; + return new[] {"", ""}; } } - return string.Join("・", damaged); + return new []{string.Join("・", badly), string.Join("・", half)}; } private static readonly Regex Kana = new Regex(@"\([^)]+\)\(", RegexOptions.Compiled); diff --git a/LogViewer/tags.tag b/LogViewer/tags.tag index 6d81974..3bfd73a 100644 --- a/LogViewer/tags.tag +++ b/LogViewer/tags.tag @@ -83,7 +83,7 @@ this.rangeTabChange = function(e) {