_battleInfo.InspectBattleResult(Data(logs[6]));\r
PAssert.That(() => _shipInfo.Fleets[1].Ships[5].NowHp == 6);\r
}\r
+\r
+ /// <summary>\r
+ /// 護衛退避艦がいるときに勝利判定がずれる\r
+ /// </summary>\r
+ [TestMethod]\r
+ public void WrongResultRankWithEscapedShip()\r
+ {\r
+ var logs = ReadAllLines("escape_rank_001");\r
+ var battle = Data(logs[3]);\r
+ InjectShips(battle, JsonObject.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
_guard = json.api_f_nowhps_combined()\r
? Record.Setup(_shipInfo.Fleets[1].ActualShips, practice)\r
: new Record[0];\r
+ SetEscapedFlag(json);\r
+ }\r
+\r
+ /// <summary>\r
+ /// EscapedはShipStatusにあるがBattleBriefTestの用のログにはShipStatusがないので、\r
+ /// ここで戦闘用のAPIを元に設定する。\r
+ /// </summary>\r
+ private void SetEscapedFlag(dynamic json)\r
+ {\r
+ if (json.api_escape_idx())\r
+ {\r
+ foreach (int idx in json.api_escape_idx)\r
+ _friend[idx - 1].Escaped = true;\r
+ }\r
+ if (json.api_escape_idx_combined())\r
+ {\r
+ foreach (int idx in json.api_escape_idx_combined)\r
+ _guard[idx - 1].Escaped = true;\r
+ }\r
}\r
\r
private void SetupEnemyDamageRecord(dynamic json, bool practice)\r
private bool _practice;\r
public ShipStatus SnapShot => (ShipStatus)_status.Clone();\r
public int NowHp => _status.NowHp;\r
- public bool Escaped => _status.Escaped;\r
+ public bool Escaped { get; set; }\r
public ShipStatus.Damage DamageLevel => _status.DamageLevel;\r
public string Name => _status.Name;\r
public int StartHp { get; private set; }\r
\r
public ResultRankParams(Record[] records)\r
{\r
- var staying = records.Where(r => !r.Escaped).ToArray();\r
Count = records.Length;\r
- Sunk = staying.Count(r => r.NowHp == 0);\r
- Gauge = staying.Sum(r => r.StartHp - r.NowHp);\r
- GaugeRate = (int)((double)Gauge / records.Sum(r => r.StartHp) * 100);\r
+ Sunk = records.Count(r => r.NowHp == 0);\r
+ Gauge = records.Sum(r => r.StartHp - r.NowHp);\r
+ GaugeRate = (int)((double)Gauge / records.Sum(r => r.Escaped ? 0 : r.StartHp) * 100);\r
}\r
}\r
\r