OSDN Git Service

戦闘結果のエラーに関する問題を修正する
authorKazuhiro Fujieda <fujieda@users.osdn.me>
Sat, 25 Nov 2017 06:49:24 +0000 (15:49 +0900)
committerKazuhiro Fujieda <fujieda@users.osdn.me>
Tue, 28 Nov 2017 14:43:21 +0000 (23:43 +0900)
 * エラーが何度も出ることがあるのを直す
 * 開幕夜戦のAPIが前の戦闘とつながるのを直す

KancolleSniffer.Test/SnifferTest.cs
KancolleSniffer/MainForm.cs
KancolleSniffer/ShipInfo.cs
KancolleSniffer/Sniffer.cs

index 8219876..ff0d17f 100644 (file)
@@ -124,7 +124,7 @@ namespace KancolleSniffer.Test
         {\r
             var sniffer = new Sniffer();\r
             SniffLogFile(sniffer, "practice_001");\r
-            PAssert.That(() => sniffer.WrongBattleResult.Length == 0);\r
+            PAssert.That(() => sniffer.WrongBattleResult.Count == 0);\r
         }\r
 \r
         /// <summary>\r
@@ -135,7 +135,7 @@ namespace KancolleSniffer.Test
         {\r
             var sniffer = new Sniffer();\r
             SniffLogFile(sniffer, "combined_battle_001");\r
-            PAssert.That(() => sniffer.WrongBattleResult.Length == 0);\r
+            PAssert.That(() => sniffer.WrongBattleResult.Count == 0);\r
         }\r
 \r
         /// <summary>\r
@@ -146,7 +146,7 @@ namespace KancolleSniffer.Test
         {\r
             var sniffer = new Sniffer();\r
             SniffLogFile(sniffer, "combined_battle_002");\r
-            PAssert.That(() => sniffer.WrongBattleResult.Length == 0);\r
+            PAssert.That(() => sniffer.WrongBattleResult.Count == 0);\r
         }\r
 \r
         /// <summary>\r
@@ -157,7 +157,7 @@ namespace KancolleSniffer.Test
         {\r
             var sniffer = new Sniffer();\r
             SniffLogFile(sniffer, "combined_battle_003");\r
-            PAssert.That(() => sniffer.WrongBattleResult.Length == 0);\r
+            PAssert.That(() => sniffer.WrongBattleResult.Count == 0);\r
         }\r
 \r
         /// <summary>\r
index 8e27ebc..e8b8640 100644 (file)
@@ -103,21 +103,15 @@ namespace KancolleSniffer
             ProcessRequestMain(url, request, response);\r
         }\r
 \r
-        private List<string[]> _battleApiLog = new List<string[]>();\r
+        private readonly List<string[]> _battleApiLog = new List<string[]>();\r
 \r
         private void ProcessRequestMain(string url, string request, string response)\r
         {\r
             try\r
             {\r
                 UpdateInfo(_sniffer.Sniff(url, request, JsonParser.Parse(response)));\r
+                CheckBattleResult();\r
                 SaveBattleApi(url, request, response);\r
-                if (_sniffer.WrongBattleResult.Length > 0)\r
-                {\r
-                    if (_errorDialog.ShowDialog(this,\r
-                            "戦闘結果の計算に誤りがあります。",\r
-                            GenerateBattleErrorLog()) == DialogResult.Abort)\r
-                        Application.Exit();\r
-                }\r
             }\r
             catch (RuntimeBinderException e)\r
             {\r
@@ -140,12 +134,26 @@ namespace KancolleSniffer
             }\r
         }\r
 \r
+        private void CheckBattleResult()\r
+        {\r
+            if (_sniffer.WrongBattleResult.Count > 0)\r
+            {\r
+                if (_errorDialog.ShowDialog(this,\r
+                        "戦闘結果の計算に誤りがあります。",\r
+                        GenerateBattleErrorLog()) == DialogResult.Abort)\r
+                    Application.Exit();\r
+                _sniffer.WrongBattleResult.Clear();\r
+            }\r
+        }\r
+\r
         private void SaveBattleApi(string url, string request, string response)\r
         {\r
-            if (_sniffer.Battle.BattleState == BattleState.Day)\r
-                _battleApiLog = new List<string[]> {new[] {url, request, response}};\r
-            if (_sniffer.Battle.BattleState == BattleState.Night || _sniffer.Battle.BattleState == BattleState.Result)\r
+            if (_sniffer.Battle.BattleState != BattleState.None)\r
+            {\r
                 _battleApiLog.Add(new[] {url, request, response});\r
+                return;\r
+            }\r
+            _battleApiLog.Clear();\r
         }\r
 \r
         private string GenerateBattleErrorLog()\r
index 5b0ff5f..2a56d59 100644 (file)
@@ -66,6 +66,7 @@ namespace KancolleSniffer
         private readonly List<int> _escapedShips = new List<int>();\r
         private int _combinedFleetType;\r
         private ShipStatus[] _battleResult = new ShipStatus[0];\r
+        public List<ShipStatusPair> WrongBattleResult { get; private set; } = new List<ShipStatusPair>();\r
 \r
         public class ShipStatusPair\r
         {\r
@@ -79,8 +80,6 @@ namespace KancolleSniffer
             }\r
         }\r
 \r
-        public ShipStatusPair[] WrongBattleResult { get; private set; } = new ShipStatusPair[0];\r
-\r
         public ShipInfo(ItemInfo itemInfo)\r
         {\r
             _itemInfo = itemInfo;\r
@@ -140,7 +139,8 @@ namespace KancolleSniffer
         {\r
             WrongBattleResult = (from assumed in _battleResult\r
                 let actual = GetStatus(assumed.Id)\r
-                where assumed.NowHp != actual.NowHp select new ShipStatusPair(assumed, actual)).ToArray();\r
+                where assumed.NowHp != actual.NowHp\r
+                select new ShipStatusPair(assumed, actual)).ToList();\r
             _battleResult = new ShipStatus[0];\r
         }\r
 \r
index 00b4d64..d26d9cf 100644 (file)
@@ -508,7 +508,7 @@ namespace KancolleSniffer
 \r
         public int[] GetDeck(int fleet) => _shipInfo.GetDeck(fleet);\r
 \r
-        public ShipInfo.ShipStatusPair[] WrongBattleResult => _shipInfo.WrongBattleResult;\r
+        public List<ShipInfo.ShipStatusPair> WrongBattleResult => _shipInfo.WrongBattleResult;\r
 \r
         public int CombinedFleetType => _shipInfo.CombinedFleetType;\r
 \r