private void SetEachResult(IReadOnlyList <ShipLabels> labelsList, BattleInfo.BattleResult.Combined fleet) { var ships = Ships(fleet); for (var i = 0; i < ships.Length; i++) { var labels = labelsList[i]; if (i == fleet.Main.Length) { labels.Name.Text = "護衛"; labels.Hp.Reset(); continue; } var ship = ships[i]; if (ShipMaster.IsEnemyId(ship.Spec.Id)) { labels.Hp.Set(ship); labels.Name.SetName(ShortenName(ship.Name)); labels.Name.Left = CalcEnemyNameLeft(labels.Hp.Width); ToolTip.SetToolTip(labels.Name, ship.GetEquipString()); } else { labels.Set(ship, ToolTip); if (ship.Name.StartsWith("基地航空隊")) { labels.Name.SetName(ship.Name.Substring(2)); } } } for (var i = ships.Length; i < labelsList.Count; i++) { labelsList[i].Reset(); } }
private static BattleInfo.BattleResult.Combined FillEmpty(BattleInfo.BattleResult.Combined fleet) { return(new BattleInfo.BattleResult.Combined { Main = FillEmpty(fleet.Main), Guard = FillEmpty(fleet.Guard) }); }
private static ShipStatus[] Ships(BattleInfo.BattleResult.Combined fleet) { if (fleet.Guard.Length == 0) { return(fleet.Main); } return(fleet.Main.Concat(new[] { new ShipStatus() }.Concat(fleet.Guard)).ToArray()); }
private static IEnumerable <string> GenerateShipList(BattleInfo.BattleResult.Combined fleet, Func <ShipStatus, string> toName) { fleet = FillEmpty(fleet); if (fleet.Guard.Length > 0) { return(fleet.Main.Zip(fleet.Guard, (main, guard) => { if (main.Empty && guard.Empty) { return ","; } var name = ""; var hp = ""; if (!main.Empty) { name = toName(main); hp = $"{main.NowHp}/{main.MaxHp}"; } name += "・"; hp += "・"; if (!guard.Empty) { name += toName(guard); hp += $"{guard.NowHp}/{guard.MaxHp}"; } return name + "," + hp; }).ToList()); } var ships = fleet.Main; if (fleet.Main.Length > 6) { var result = new List <string>(); for (var i = 0; i < 12 - ships.Length; i++) { var ship = fleet.Main[i]; result.Add($"{toName(ship)},{ship.NowHp}/{ship.MaxHp}"); } for (var i = 0; i < ships.Length - 6; i++) { var s1 = ships[12 - ships.Length + i]; var s2 = ships[6 + i]; result.Add( $"{toName(s1)}・{toName(s2)}," + $"{s1.NowHp}/{s1.MaxHp}・{s2.NowHp}/{s2.MaxHp}"); } return(result); } return(ships.Select(ship => ship.Empty ? "," : $"{toName(ship)},{ship.NowHp}/{ship.MaxHp}")); }