OSDN Git Service

Nelson Touchに対応する
authorKazuhiro Fujieda <fujieda@users.osdn.me>
Sun, 16 Sep 2018 09:23:49 +0000 (18:23 +0900)
committerKazuhiro Fujieda <fujieda@users.osdn.me>
Sun, 16 Sep 2018 09:23:49 +0000 (18:23 +0900)
KancolleSniffer.Test/BattleTest.cs
KancolleSniffer.Test/logs
KancolleSniffer/Model/BattleInfo.cs

index 3da8eb4..bbc40c7 100644 (file)
@@ -173,5 +173,19 @@ namespace KancolleSniffer.Test
             _battleInfo.InspectBattleResult(Data(logs[9]));\r
             PAssert.That(() => !_battleInfo.DisplayedResultRank.IsError);\r
         }\r
+\r
+        /// <summary>\r
+        /// Nelson Touchに対応する\r
+        /// </summary>\r
+        [TestMethod]\r
+        public void NelsonTouch()\r
+        {\r
+            var logs = ReadAllLines("nelsontouch_001");\r
+            var battle = Data(logs[3]);\r
+            InjectShips(battle, JsonParser.Parse(logs[0]));\r
+            _battleInfo.InspectBattle(logs[1], logs[2], battle);\r
+            _battleInfo.InspectBattleResult(Data(logs[6]));\r
+            PAssert.That(() => !_battleInfo.DisplayedResultRank.IsError);\r
+        }\r
     }\r
 }
\ No newline at end of file
index 3afc5fe..32096b6 160000 (submodule)
@@ -1 +1 @@
-Subproject commit 3afc5fea4ba89193e91402e4ed52242def758e1d
+Subproject commit 32096b62d31c8b82559549d5586c59dec97250ea
index f00e849..0f3242b 100644 (file)
@@ -452,15 +452,18 @@ namespace KancolleSniffer.Model
             Array.Copy(_guard, 0, records[1], 6, _guard.Length);\r
             Array.Copy(_enemy, records[0], _enemy.Length);\r
             Array.Copy(_enemyGuard, 0, records[0], 6, _enemyGuard.Length);\r
-            for (var i = 0; i < eFlags.Length; i++)\r
+            for (var turn = 0; turn < eFlags.Length; turn++)\r
             {\r
-                // 一度に複数の目標を狙う攻撃はないものと仮定する\r
-                var hit = new {t = targets[i][0], d = damages[i].Sum(d => d >= 0 ? d : 0)};\r
-                if (hit.t == -1)\r
+                if (ignoreFriendDamage && eFlags[turn] == 1)\r
                     continue;\r
-                if (ignoreFriendDamage && eFlags[i] == 1)\r
-                    continue;\r
-                records[eFlags[i]][hit.t].ApplyDamage(hit.d);\r
+                for (var shot = 0; shot < targets[turn].Length; shot++)\r
+                {\r
+                    var target = targets[turn][shot];\r
+                    var damage  = damages[turn][shot];\r
+                    if (target == -1 || damage == -1)\r
+                        continue;\r
+                    records[eFlags[turn]][target].ApplyDamage(damage);\r
+                }\r
             }\r
         }\r
 \r