\r
private dynamic Data(string json) => ((dynamic)JsonParser.Parse(json)).api_data;\r
\r
+ /// <summary>\r
+ /// NPC友軍の支援攻撃がある\r
+ /// </summary>\r
[TestMethod]\r
public void NpcFriendFleetAttack()\r
{\r
_battleInfo.InspectBattleResult(Data(logs[9]));\r
PAssert.That(() => !_battleInfo.DisplayedResultRank.IsError);\r
}\r
+\r
+ /// <summary>\r
+ /// 空襲戦で轟沈する\r
+ /// </summary>\r
+ [TestMethod]\r
+ public void LdAirbattleHaveSunkenShip()\r
+ {\r
+ var logs = ReadAllLines("ld_airbattle_001");\r
+ var battle = Data(logs[3]);\r
+ _shipInfo.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
\r
private BattleResultRank CalcLdAirBattleRank()\r
{\r
- var combined = _friend.Concat(_guard).ToArray();\r
- var friendNowShips = combined.Count(r => r.NowHp > 0);\r
+ var combined = _friend.Concat(_guard).Where(r => !r.Escaped).ToArray();\r
var friendGauge = combined.Sum(r => r.StartHp - r.NowHp);\r
- var friendSunk = combined.Count(r => r.NowHp == 0);\r
var friendGaugeRate = Floor((double)friendGauge / combined.Sum(r => r.StartHp) * 100);\r
\r
- if (friendSunk == 0)\r
- {\r
- if (friendGauge == 0)\r
- return BattleResultRank.P;\r
- if (friendGaugeRate < 10)\r
- return BattleResultRank.A;\r
- if (friendGaugeRate < 20)\r
- return BattleResultRank.B;\r
- if (friendGaugeRate < 50)\r
- return BattleResultRank.C;\r
- return BattleResultRank.D;\r
- }\r
- if (friendSunk < friendNowShips)\r
+ if (friendGauge == 0)\r
+ return BattleResultRank.P;\r
+ if (friendGaugeRate < 10)\r
+ return BattleResultRank.A;\r
+ if (friendGaugeRate < 20)\r
+ return BattleResultRank.B;\r
+ if (friendGaugeRate < 50)\r
+ return BattleResultRank.C;\r
+ if (friendGaugeRate < 80)\r
return BattleResultRank.D;\r
return BattleResultRank.E;\r
}\r