_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
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