\r
namespace KancolleSniffer.View\r
{\r
- public class BattleResultPanel : Panel\r
+ public class BattleResultPanel : PanelWithToolTip\r
{\r
private const int LineHeight = 16;\r
private readonly List<ShipLabel[]> _friendLabels = new List<ShipLabel[]>();\r
private readonly List<ShipLabel[]> _enemyLabels = new List<ShipLabel[]>();\r
private readonly List<Panel> _panelList = new List<Panel>();\r
private readonly List<ShipLabel> _hpLabels = new List<ShipLabel>();\r
- private readonly ResizableToolTip _toolTip = new ResizableToolTip {ShowAlways = true};\r
private readonly BattleInfo.BattleResult[] _result = new BattleInfo.BattleResult[2];\r
- private Label _phaseLabel, _rankLabel, _cellLabel;\r
- private BattleState _prevBattleState;\r
+ private Label _phaseLabel, _rankLabel, _supportLabel, _cellLabel;\r
private readonly BattleResultRank[] _rank = new BattleResultRank[2];\r
private readonly InformationPanel _informationPanel;\r
private CellInfo _cellInfo;\r
+ private string _supportType;\r
\r
public Spoiler Spoilers { get; set; }\r
\r
public void Update(Sniffer sniffer)\r
{\r
var state = sniffer.Battle.BattleState;\r
- var prev = _prevBattleState;\r
- _prevBattleState = state;\r
_cellInfo = sniffer.CellInfo;\r
- if (prev == BattleState.None && state != BattleState.None)\r
- _result[0] = _result[1] = null;\r
- if (prev != BattleState.None && state == BattleState.None &&\r
- !(_result[0] == null && _result[1] == null))\r
+ switch (sniffer.Battle.BattleState)\r
{\r
- ClearResult();\r
- SetPhase("結果");\r
- UpdateCellInfo(_cellInfo);\r
- return;\r
+ case BattleState.None:\r
+ if (_result[0] == null && _result[1] == null)\r
+ return;\r
+ ClearResult();\r
+ SetPhase("結果");\r
+ UpdateCellInfo(_cellInfo);\r
+ return;\r
+ case BattleState.Day:\r
+ case BattleState.SpNight:\r
+ _result[0] = _result[1] = null;\r
+ break;\r
+ case BattleState.Result:\r
+ case BattleState.Unknown:\r
+ return;\r
}\r
- if (state != BattleState.Day && state != BattleState.Night)\r
- return;\r
+ _supportType = sniffer.Battle.SupportType;\r
if ((Spoilers & Spoiler.BattleResult) != 0)\r
{\r
ShowResult(sniffer.Battle.Result);\r
ShowResultRank(sniffer.Battle.ResultRank);\r
- if (state == BattleState.Day)\r
- {\r
- _result[0] = sniffer.Battle.Result;\r
- _rank[0] = sniffer.Battle.ResultRank;\r
- SetPhase("昼戦");\r
- }\r
- else if (state == BattleState.Night)\r
+ switch (state)\r
{\r
- _result[1] = sniffer.Battle.Result;\r
- _rank[1] = sniffer.Battle.ResultRank;\r
- SetPhase("夜戦");\r
+ case BattleState.Day:\r
+ _result[0] = sniffer.Battle.Result;\r
+ _rank[0] = sniffer.Battle.ResultRank;\r
+ SetPhase("昼戦");\r
+ break;\r
+ case BattleState.Night:\r
+ case BattleState.SpNight:\r
+ _result[1] = sniffer.Battle.Result;\r
+ _rank[1] = sniffer.Battle.ResultRank;\r
+ SetPhase("夜戦");\r
+ break;\r
}\r
_informationPanel.Visible = true;\r
}\r
{\r
ClearResult();\r
SetPhase("結果");\r
- if (state == BattleState.Day)\r
+ switch (state)\r
{\r
- _result[0] = sniffer.Battle.Result;\r
- _rank[0] = sniffer.Battle.ResultRank;\r
- }\r
- else if (state == BattleState.Night)\r
- {\r
- _result[1] = sniffer.Battle.Result;\r
- _rank[1] = sniffer.Battle.ResultRank;\r
+ case BattleState.Day:\r
+ _result[0] = sniffer.Battle.Result;\r
+ _rank[0] = sniffer.Battle.ResultRank;\r
+ break;\r
+ case BattleState.Night:\r
+ case BattleState.SpNight:\r
+ _result[1] = sniffer.Battle.Result;\r
+ _rank[1] = sniffer.Battle.ResultRank;\r
+ break;\r
}\r
}\r
_informationPanel.SetInformation(sniffer.Battle);\r
panel.Visible = false;\r
_informationPanel.Visible = false;\r
_rankLabel.Text = "";\r
+ _supportLabel.Text = "";\r
}\r
\r
private void ShowResult(BattleInfo.BattleResult result)\r
var ship = friend.Main[i];\r
labels[0].SetHp(ship);\r
labels[1].SetName(ship, ShipNameWidth.BattleResult);\r
- _toolTip.SetToolTip(labels[1], GetEquipString(ship));\r
+ ToolTip.SetToolTip(labels[1], GetEquipString(ship));\r
}\r
if (friend.Guard.Length > 0)\r
{\r
var ship = friend.Guard[i];\r
labels[0].SetHp(ship);\r
labels[1].SetName(ship, ShipNameWidth.BattleResult);\r
- _toolTip.SetToolTip(labels[1], GetEquipString(ship));\r
+ ToolTip.SetToolTip(labels[1], GetEquipString(ship));\r
}\r
}\r
var friendLines = friend.Main.Length + (friend.Guard.Length > 0 ? friend.Guard.Length + 1 : 0);\r
var ship = enemy.Main[i];\r
labels[0].SetHp(ship);\r
labels[1].SetName(ShortenName(ship.Name));\r
- _toolTip.SetToolTip(labels[1], GetEquipString(ship));\r
+ ToolTip.SetToolTip(labels[1], GetEquipString(ship));\r
}\r
if (enemy.Guard.Length > 0)\r
{\r
var ship = enemy.Guard[i];\r
labels[0].SetHp(ship);\r
labels[1].SetName(ShortenName(ship.Name));\r
- _toolTip.SetToolTip(labels[1], GetEquipString(ship));\r
+ ToolTip.SetToolTip(labels[1], GetEquipString(ship));\r
}\r
}\r
var enemyLines = enemy.Main.Length + (enemy.Guard.Length > 0 ? enemy.Guard.Length + 1 : 0);\r
{\r
var result = new[] {"完全S", "勝利S", "勝利A", "勝利B", "敗北C", "敗北D", "敗北E"};\r
_rankLabel.Text = result[(int)rank];\r
+ _supportLabel.Text = _supportType;\r
}\r
\r
public void UpdateCellInfo(CellInfo cellInfo)\r
Size = new Size(42, 12)\r
};\r
Controls.Add(_rankLabel);\r
+ _supportLabel = new Label\r
+ {\r
+ Location = new Point(77, 4),\r
+ AutoSize = true\r
+ };\r
+ Controls.Add(_supportLabel);\r
_cellLabel = new Label\r
{\r
Location = new Point(0, 4),\r
base.OnMouseWheel(e);\r
}\r
\r
- protected override void ScaleControl(SizeF factor, BoundsSpecified specified)\r
- {\r
- base.ScaleControl(factor, specified);\r
- if (factor.Height > 1)\r
- _toolTip.Font = new Font(_toolTip.Font.FontFamily, _toolTip.Font.Size * factor.Height);\r
- }\r
-\r
- private class InformationPanel : Panel\r
+ private class InformationPanel : PanelWithToolTip\r
{\r
private readonly Label[] _formation;\r
private readonly Label[] _fighterPower;\r
- private readonly ResizableToolTip _toolTip = new ResizableToolTip {ShowAlways = true};\r
\r
public InformationPanel()\r
{\r
}\r
var fp = battleInfo.FighterPower;\r
_fighterPower[0].Text = fp[0].ToString("D");\r
- _toolTip.SetToolTip(_fighterPower[0], fp[0] == fp[1] ? "" : $"{fp[0]}~{fp[1]}");\r
+ ToolTip.SetToolTip(_fighterPower[0], fp[0] == fp[1] ? "" : $"{fp[0]}~{fp[1]}");\r
var efp = battleInfo.EnemyFighterPower;\r
_fighterPower[1].Text = efp.AirCombat + efp.UnknownMark;\r
- _toolTip.SetToolTip(_fighterPower[1],\r
+ ToolTip.SetToolTip(_fighterPower[1],\r
efp.AirCombat == efp.Interception ? "" : "防空:" + efp.Interception + efp.UnknownMark);\r
_fighterPower[2].Text =\r
new[] {"", "制空均衡", "制空確保", "航空優勢", "航空劣勢", "制空喪失"}[battleInfo.AirControlLevel + 1];\r
return "";\r
}\r
}\r
-\r
- protected override void ScaleControl(SizeF factor, BoundsSpecified specified)\r
- {\r
- base.ScaleControl(factor, specified);\r
- if (factor.Height > 1)\r
- _toolTip.Font = new Font(_toolTip.Font.FontFamily, _toolTip.Font.Size * factor.Height);\r
- }\r
}\r
}\r
}
\ No newline at end of file