public int EnemyLost { get; set; }\r
}\r
\r
+ public class AirFireResult\r
+ {\r
+ public string ShipName { get; set; }\r
+ public int Kind { get; set; }\r
+ public string[] Items { get; set; }\r
+ }\r
+\r
public string PhaseName { get; set; }\r
public int AirControlLevel { get; set; }\r
- public StageResult Stage1 { get; set; } = new StageResult();\r
- public StageResult Stage2 { get; set; } = new StageResult();\r
+ public StageResult Stage1 { get; set; }\r
+ public StageResult Stage2 { get; set; }\r
+ public AirFireResult AirFire { get; set; }\r
}\r
\r
[DesignerCategory("Code")]\r
private readonly Label[][][] _resultLabels = new Label[2][][];\r
private AirBattleResult[] _resultList;\r
private int _resultIndex;\r
+ private readonly ShipLabel _ciShipName;\r
+ private readonly Label _ciKind;\r
+ private readonly ToolTip _toolTip = new ToolTip{ShowAlways = true};\r
\r
public bool ShowResultAutomatic { get; set; }\r
\r
public AirBattleResultPanel()\r
{\r
const int top = 20;\r
+ const int ci = 168;\r
var labels = new[]\r
{\r
_phaseName =\r
_stage1 = new Label {Text = "stage1", Location = new Point(8, top), AutoSize = true},\r
new Label {Text = "stage2", Location = new Point(8, top + 14), AutoSize = true},\r
new Label {Text = "自軍", Location = new Point(67, 6), AutoSize = true},\r
- new Label {Text = "敵軍", Location = new Point(122, 6), AutoSize = true}\r
+ new Label {Text = "敵軍", Location = new Point(122, 6), AutoSize = true},\r
+ new Label {Text = "CI", Location = new Point(ci, 4), AutoSize = true}\r
};\r
Controls.AddRange(labels);\r
const int left = 53;\r
});\r
}\r
}\r
+ Controls.Add(_ciShipName = new ShipLabel\r
+ {\r
+ Location = new Point(ci, top),\r
+ Size = new Size((int)ShipNameWidth.CiShipName, 12)\r
+ });\r
+ Controls.Add(_ciKind = new Label\r
+ {\r
+ Location = new Point(ci, top + 14),\r
+ Size = new Size(24, 12)\r
+ });\r
_phaseName.Click += PhaseNameOnClick;\r
}\r
\r
labels[1][0].Text = $"{stage.EnemyCount}";\r
labels[1][1].Text = $"{stage.EnemyCount - stage.EnemyLost}";\r
}\r
+ ShowAirFireResult();\r
+ }\r
+\r
+ private void ShowAirFireResult()\r
+ {\r
+ var result = _resultList[_resultIndex];\r
+ if (result.AirFire == null)\r
+ {\r
+ _ciShipName.SetName(null);\r
+ _ciKind.Text = "";\r
+ _toolTip.SetToolTip(_ciKind, "");\r
+ }\r
+ else\r
+ {\r
+ _ciShipName.SetName(result.AirFire.ShipName, ShipNameWidth.CiShipName);\r
+ _ciKind.Text = result.AirFire.Kind.ToString();\r
+ _toolTip.SetToolTip(_ciKind, string.Join("\r\n", result.AirFire.Items));\r
+ }\r
}\r
\r
private void ClearResult()\r
}\r
}\r
}\r
+ _ciShipName.SetName(null);\r
+ _ciKind.Text = "";\r
+ _toolTip.SetToolTip(_ciKind, "");\r
}\r
}\r
}
\ No newline at end of file
var stage1 = json.api_stage1;\r
if (stage1 == null || (stage1.api_f_count == 0 && stage1.api_e_count == 0))\r
return;\r
- AirBattleResults.Add(new AirBattleResult\r
+ var result = new AirBattleResult\r
{\r
PhaseName = phaseName,\r
AirControlLevel = json.api_stage1.api_disp_seiku() ? (int)json.api_stage1.api_disp_seiku : 0,\r
EnemyCount = (int)json.api_stage2.api_e_count,\r
EnemyLost = (int)json.api_stage2.api_e_lostcount\r
}\r
- });\r
+ };\r
+ if (json.api_stage2 != null && json.api_stage2.api_air_fire())\r
+ {\r
+ var airfire = json.api_stage2.api_air_fire;\r
+ var idx = (int)airfire.api_idx;\r
+ result.AirFire = new AirBattleResult.AirFireResult\r
+ {\r
+ ShipName = idx < _friend.Length ? _friend[idx].Name : _guard[idx - 6].Name,\r
+ Kind = (int)airfire.api_kind,\r
+ Items = ((int[])airfire.api_use_items).Select(id => _itemInfo.GetSpecByItemId(id).Name).ToArray()\r
+ };\r
+ }\r
+ AirBattleResults.Add(result);\r
}\r
\r
private void CalcKoukuDamage(dynamic json)\r
public int NowHp => _status.NowHp;\r
public bool Escaped => _status.Escaped;\r
public ShipStatus.Damage DamageLevel => _status.DamageLevel;\r
- public int StartHp;\r
+ public string Name => _status.Name;\r
+ public int StartHp { get; private set; }\r
\r
public static Record[] Setup(ShipStatus[] ships, bool practice) =>\r
(from s in ships\r