}\r
\r
/// <summary>\r
+ /// 6隻未満の場合\r
+ /// </summary>\r
+ [TestMethod]\r
+ public void InspectShip2BattleResult()\r
+ {\r
+ var sniffer = new Sniffer();\r
+ var result = "";\r
+ sniffer.SetLogWriter((path, s, h) => { result += s + "|"; }, () => new DateTime(2019, 1, 1));\r
+ sniffer.EnableLog(LogType.Battle);\r
+ SnifferTest.SniffLogFile(sniffer, "battle_003");\r
+ Assert.IsFalse(sniffer.IsBattleResultError);\r
+ Assert.AreEqual("2019-01-01 00:00:00,鎮守府正面海域,1,出撃,S,反航戦,単縦陣,単縦陣,敵偵察艦,駆逐艦,睦月," +\r
+ "早波改(Lv54),32/32,五月雨(Lv20),16/16,,,,,,,,,駆逐ハ級,0/24,,,,,,,,,,,0,0,,1-1|",\r
+ result);\r
+ }\r
+\r
+ /// <summary>\r
/// 基地空襲戦\r
/// </summary>\r
[TestMethod]\r
sniffer.EnableLog(LogType.Battle);\r
SnifferTest.SniffLogFile(sniffer, "airraid_battle_001");\r
Assert.AreEqual("2019-01-01 00:00:00,アリューシャン列島沖,12,出撃,S,同航戦,単縦陣,輪形陣,,,," +\r
- "基地航空隊1(Lv0),200/200,基地航空隊2(Lv0),200/200,基地航空隊3(Lv0),200/200," +\r
+ "基地航空隊1(Lv0),200/200,基地航空隊2(Lv0),200/200,基地航空隊3(Lv0),200/200,,,,,,," +\r
"北方棲妹,790/790,砲台小鬼,130/130,砲台小鬼,130/130,飛行場姫,500/500,飛行場姫,500/500,集積地棲姫,600/600,425~426,231,航空優勢,44-3|",\r
result);\r
}\r
\r
private string CreateLog(dynamic result)\r
{\r
- var fShips = GenerateFriendShipList();\r
- var eShips = GenerateEnemyShipList();\r
+ var fShips = GenerateShipList(_battleInfo.Result.Friend, s => $"{s.Name}(Lv{s.Level})");\r
+ var eShips = GenerateShipList(_battleInfo.Result.Enemy, s => $"{s.Name}");\r
var boss = "";\r
if (_cell.Start)\r
boss = "出撃";\r
return name == "" ? itemName : name + "+" + itemName;\r
}\r
\r
- private IEnumerable<string> GenerateFriendShipList()\r
+ private static IEnumerable<string> GenerateShipList(BattleInfo.BattleResult.Combined fleet,\r
+ Func<ShipStatus, string> toName)\r
{\r
- if (_battleInfo.Result.Friend.Guard.Length > 0)\r
+ fleet = FillEmpty(fleet);\r
+ if (fleet.Guard.Length > 0)\r
{\r
- var mainShips = _battleInfo.Result.Friend.Main;\r
- var guardShips = _battleInfo.Result.Friend.Guard;\r
- return mainShips.Zip(guardShips, (main, guard) =>\r
+ return fleet.Main.Zip(fleet.Guard, (main, guard) =>\r
{\r
if (main.Empty && guard.Empty)\r
return ",";\r
var hp = "";\r
if (!main.Empty)\r
{\r
- name = $"{main.Name}(Lv{main.Level})";\r
+ name = toName(main);\r
hp = $"{main.NowHp}/{main.MaxHp}";\r
}\r
name += "・";\r
hp += "・";\r
if (!guard.Empty)\r
{\r
- name += $"{guard.Name}(Lv{guard.Level})";\r
+ name += toName(guard);\r
hp += $"{guard.NowHp}/{guard.MaxHp}";\r
}\r
return name + "," + hp;\r
}).ToList();\r
}\r
- var ships = _battleInfo.Result.Friend.Main;\r
- if (ships.Length > 6)\r
+ var ships = fleet.Main;\r
+ if (fleet.Main.Length > 6)\r
{\r
var result = new List<string>();\r
for (var i = 0; i < 12 - ships.Length; i++)\r
{\r
- var ship = ships[i];\r
- result.Add($"{ship.Name}(Lv{ship.Level}),{ship.NowHp}/{ship.MaxHp}");\r
+ var ship = fleet.Main[i];\r
+ result.Add($"{toName(ship)},{ship.NowHp}/{ship.MaxHp}");\r
}\r
for (var i = 0; i < ships.Length - 6; i++)\r
{\r
var s1 = ships[12 - ships.Length + i];\r
var s2 = ships[6 + i];\r
result.Add(\r
- $"{s1.Name}(Lv{s1.Level})・{s2.Name}(Lv{s2.Level})," +\r
+ $"{toName(s1)}・{toName(s2)}," +\r
$"{s1.NowHp}/{s1.MaxHp}・{s2.NowHp}/{s2.MaxHp}");\r
}\r
return result;\r
}\r
- return ships.Select(ship =>\r
- {\r
- if (ship.Empty)\r
- return ",";\r
- return $"{ship.Name}(Lv{ship.Level}),{ship.NowHp}/{ship.MaxHp}";\r
- }).ToList();\r
+ return ships.Select(ship => ship.Empty ? "," : $"{toName(ship)},{ship.NowHp}/{ship.MaxHp}");\r
}\r
\r
- private IEnumerable<string> GenerateEnemyShipList()\r
+ private static BattleInfo.BattleResult.Combined FillEmpty(BattleInfo.BattleResult.Combined fleet)\r
{\r
- var result = _battleInfo.Result.Enemy.Main.Concat(Enumerable.Repeat(new ShipStatus(), 6)).Take(6);\r
- if (_battleInfo.Result.Enemy.Guard.Length == 0)\r
- {\r
- return result.Select(s => s.Empty ? "," : $"{s.Name},{s.NowHp}/{s.MaxHp}").ToList();\r
- }\r
- var mainShips = result;\r
- var guardShips = _battleInfo.Result.Enemy.Guard.Concat(Enumerable.Repeat(new ShipStatus(), 6)).Take(6);\r
- return mainShips.Zip(guardShips, (main, guard) =>\r
+ return new BattleInfo.BattleResult.Combined\r
{\r
- if (main.Empty && guard.Empty)\r
- return ",";\r
- var name = "";\r
- var hp = "";\r
- if (!main.Empty)\r
- {\r
- name = $"{main.Name}";\r
- hp = $"{main.NowHp}/{main.MaxHp}";\r
- }\r
- name += "・";\r
- hp += "・";\r
- if (!guard.Empty)\r
- {\r
- name += $"{guard.Name}";\r
- hp += $"{guard.NowHp}/{guard.MaxHp}";\r
- }\r
- return name + "," + hp;\r
- }).ToList();\r
+ Main = FillEmpty(fleet.Main),\r
+ Guard = FillEmpty(fleet.Guard)\r
+ };\r
+ }\r
+\r
+ private static readonly ShipStatus[] Padding =\r
+ Enumerable.Repeat(new ShipStatus(), ShipInfo.MemberCount).ToArray();\r
+\r
+ private static ShipStatus[] FillEmpty(ShipStatus[] ships)\r
+ {\r
+ return ships.Length > ShipInfo.MemberCount || ships.Length == 0\r
+ ? ships\r
+ : ships.Concat(Padding).Take(ShipInfo.MemberCount).ToArray();\r
}\r
\r
private string FormationName(dynamic f)\r