OSDN Git Service

勝利判定が狂うのを直す
authorKazuhiro Fujieda <fujieda@users.osdn.me>
Mon, 20 Mar 2017 11:28:31 +0000 (20:28 +0900)
committerKazuhiro Fujieda <fujieda@users.osdn.me>
Sun, 2 Apr 2017 14:18:09 +0000 (23:18 +0900)
KancolleSniffer.Test/SnifferTest.cs
KancolleSniffer.Test/logs
KancolleSniffer/BattleInfo.cs

index 3c5d33e..86ec2df 100644 (file)
@@ -420,6 +420,17 @@ namespace KancolleSniffer.Test
         }\r
 \r
         /// <summary>\r
+        /// B勝利を正しく判定する\r
+        /// </summary>\r
+        [TestMethod]\r
+        public void JudgeResultRankB()\r
+        {\r
+            var sniffer = new Sniffer();\r
+            SniffLogFile(sniffer, "battle_008");\r
+            PAssert.That(() => sniffer.Battle.ResultRank == BattleResultRank.B);\r
+        }\r
+\r
+        /// <summary>\r
         /// 熟練度込みの制空値を正しく計算する\r
         /// </summary>\r
         [TestMethod]\r
index 6d6e608..0e15852 160000 (submodule)
@@ -1 +1 @@
-Subproject commit 6d6e6084a33b5884824103bb6bf37521d69c697c
+Subproject commit 0e15852438f147225c0c8cba5d5553f96ab61ae4
index 604e691..61c21ab 100644 (file)
@@ -141,7 +141,7 @@ namespace KancolleSniffer
             var fstats = _shipInfo.GetShipStatuses(_fleet);\r
             FlagshipRecovery(fstats[0]);\r
             _friend = Record.Setup(fstats);\r
-            _enemyHp = nowhps.Skip(7).ToArray();\r
+            _enemyHp = nowhps.Skip(7).TakeWhile(hp => hp != -1).ToArray();\r
             _enemyStartHp = (int[])_enemyHp.Clone();\r
             EnemyResultStatus =\r
             (from id in\r
@@ -161,7 +161,7 @@ namespace KancolleSniffer
             {\r
                 _enemyGuardHp =\r
                     ((int[])json.api_nowhps_combined).\r
-                        Skip(7).ToArray();\r
+                        Skip(7).TakeWhile(hp => hp != -1).ToArray();\r
                 _enemyGuardStartHp = (int[])_enemyGuardHp.Clone();\r
             }\r
         }\r
@@ -543,15 +543,15 @@ namespace KancolleSniffer
 \r
         private void SetEnemyResultStatus()\r
         {\r
-            for (var i = 0; i < 6; i++)\r
+            for (var i = 0; i < _enemyHp.Length; i++)\r
             {\r
                 EnemyResultStatus[i].MaxHp = _enemyStartHp[i];\r
                 EnemyResultStatus[i].NowHp = _enemyHp[i];\r
             }\r
-            for (var i = 6; i < EnemyResultStatus.Length; i++)\r
+            for (var i = 0; i < _enemyGuardHp.Length; i++)\r
             {\r
-                EnemyResultStatus[i].MaxHp = _enemyGuardStartHp[i - 6];\r
-                EnemyResultStatus[i].NowHp = _enemyGuardHp[i - 6];\r
+                EnemyResultStatus[i + 6].MaxHp = _enemyGuardStartHp[i];\r
+                EnemyResultStatus[i + 6].NowHp = _enemyGuardHp[i];\r
             }\r
         }\r
 \r