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<ShipLabels> _friendLabels = new List<ShipLabels>();\r
+ private readonly List<ShipLabels> _enemyLabels = new List<ShipLabels>();\r
private readonly List<ShipLabel> _hpLabels = new List<ShipLabel>();\r
private readonly BattleInfo.BattleResult[] _result = new BattleInfo.BattleResult[2];\r
private Label _phaseLabel, _rankLabel, _supportLabel, _cellLabel;\r
private void ClearResult()\r
{\r
_scrollPosition = AutoScrollPosition;\r
- foreach (var panel in _panelList)\r
- panel.Visible = false;\r
+ foreach (var labels in _friendLabels)\r
+ labels.BackPanel.Visible = false;\r
_informationPanel.Visible = false;\r
_rankLabel.Text = "";\r
_supportLabel.Text = "";\r
{\r
var labels = _friendLabels[i];\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
+ labels.Name.SetName(ship, ShipNameWidth.BattleResult);\r
+ labels.Hp.SetHp(ship);\r
+ ToolTip.SetToolTip(labels.Name, GetEquipString(ship));\r
}\r
if (friend.Guard.Length > 0)\r
{\r
- _friendLabels[friend.Main.Length][1].Text = "護衛";\r
- _friendLabels[friend.Main.Length][0].SetHp(null);\r
+ _friendLabels[friend.Main.Length].Name.Text = "護衛";\r
+ _friendLabels[friend.Main.Length].Hp.SetHp(null);\r
for (var i = 0; i < friend.Guard.Length; i++)\r
{\r
var labels = _friendLabels[friend.Main.Length + 1 + i];\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
+ labels.Name.SetName(ship, ShipNameWidth.BattleResult);\r
+ labels.Hp.SetHp(ship);\r
+ ToolTip.SetToolTip(labels.Name, GetEquipString(ship));\r
}\r
}\r
var friendLines = friend.Main.Length + (friend.Guard.Length > 0 ? friend.Guard.Length + 1 : 0);\r
for (var i = friendLines; i < _friendLabels.Count; i++)\r
{\r
- _friendLabels[i][0].SetHp(null);\r
- _friendLabels[i][1].SetName("");\r
+ _friendLabels[i].Name.SetName("");\r
+ _friendLabels[i].Hp.SetHp(null);\r
}\r
for (var i = 0; i < enemy.Main.Length; i++)\r
{\r
var labels = _enemyLabels[i];\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
+ labels.Name.SetName(ShortenName(ship.Name));\r
+ labels.Hp.SetHp(ship);\r
+ ToolTip.SetToolTip(labels.Name, GetEquipString(ship));\r
}\r
if (enemy.Guard.Length > 0)\r
{\r
- _enemyLabels[enemy.Main.Length][1].Text = "護衛";\r
- _enemyLabels[enemy.Main.Length][0].SetHp(null);\r
+ _enemyLabels[enemy.Main.Length].Name.Text = "護衛";\r
+ _enemyLabels[enemy.Main.Length].Hp.SetHp(null);\r
for (var i = 0; i < enemy.Guard.Length; i++)\r
{\r
var labels = _enemyLabels[enemy.Main.Length + 1 + i];\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
+ labels.Name.SetName(ShortenName(ship.Name));\r
+ labels.Hp.SetHp(ship);\r
+ ToolTip.SetToolTip(labels.Name, GetEquipString(ship));\r
}\r
}\r
var enemyLines = enemy.Main.Length + (enemy.Guard.Length > 0 ? enemy.Guard.Length + 1 : 0);\r
for (var i = enemyLines; i < _enemyLabels.Count; i++)\r
{\r
- _enemyLabels[i][0].SetHp(null);\r
- _enemyLabels[i][1].SetName("");\r
+ _enemyLabels[i].Name.SetName("");\r
+ _enemyLabels[i].Hp.SetHp(null);\r
}\r
var lines = Max(friendLines, enemyLines);\r
for (var i = 0; i < lines; i++)\r
{\r
- var panel = _panelList[i];\r
- if (panel.Visible)\r
- continue;\r
- panel.Location = Scaler.Move(AutoScrollPosition.X, AutoScrollPosition.Y, 0, (int)panel.Tag);\r
+ var panel = _friendLabels[i].BackPanel;\r
panel.Visible = true;\r
}\r
- for (var i = lines; i < _panelList.Count; i++)\r
- _panelList[i].Visible = false;\r
+ for (var i = lines; i < _friendLabels.Count; i++)\r
+ _friendLabels[i].BackPanel.Visible = false;\r
ResumeLayout(); // スクロールバーの有無を決定する\r
var panelWidth = Max(ClientSize.Width, // スクロールバーの有無を反映した横幅\r
- _enemyLabels[0][1].Location.X + _enemyLabels.Max(labels => labels[1].Size.Width) - 1); // 敵の名前の右端\r
+ _enemyLabels[0].Name.Location.X + _enemyLabels.Max(labels => labels.Name.Size.Width) - 1); // 敵の名前の右端\r
for (var i = 0; i < lines; i++)\r
- _panelList[i].Width = panelWidth;\r
+ _friendLabels[i].BackPanel.Width = panelWidth;\r
_informationPanel.Location = Scaler.Move(AutoScrollPosition.X, AutoScrollPosition.Y, 0, 20);\r
_informationPanel.Visible = true;\r
UpdateCellInfo(_cellInfo);\r
for (var i = 0; i < 13; i++)\r
{\r
var y = LineHeight * i + 38;\r
- var panel = new Panel\r
+ var friend = new ShipLabels\r
{\r
- Location = new Point(0, y),\r
- Size = new Size(0, LineHeight),\r
- BackColor = CustomColors.ColumnColors.DarkFirst(i),\r
- Visible = false,\r
- Tag = y\r
- };\r
- _panelList.Add(panel);\r
-\r
- var friend = new[]\r
- {\r
- new ShipLabel\r
+ Name = new ShipLabel {Location = new Point(1, 2), AutoSize = true},\r
+ Hp = new ShipLabel\r
{\r
Location = new Point(101, 0),\r
AutoSize = true,\r
TextAlign = ContentAlignment.MiddleLeft,\r
Cursor = Cursors.Hand\r
},\r
- new ShipLabel {Location = new Point(1, 2), AutoSize = true}\r
+ BackPanel = new Panel\r
+ {\r
+ Location = new Point(0, y),\r
+ Size = new Size(0, LineHeight),\r
+ BackColor = CustomColors.ColumnColors.DarkFirst(i),\r
+ }\r
};\r
_friendLabels.Add(friend);\r
- _hpLabels.Add(friend[0]);\r
- friend[0].Click += HpLabelClickHandler;\r
- var enemy = new[]\r
+ friend.Arrange(this, CustomColors.ColumnColors.DarkFirst(i));\r
+ _hpLabels.Add(friend.Hp);\r
+ friend.Hp.Click += HpLabelClickHandler;\r
+ var enemy = new ShipLabels\r
{\r
- new ShipLabel\r
+ Name = new ShipLabel {Location = new Point(164, 2), AutoSize = true},\r
+ Hp = new ShipLabel\r
{\r
Location = new Point(119, 0),\r
AutoSize = true,\r
MinimumSize = new Size(0, LineHeight),\r
TextAlign = ContentAlignment.MiddleLeft\r
- },\r
- new ShipLabel {Location = new Point(164, 2), AutoSize = true}\r
+ }\r
};\r
_enemyLabels.Add(enemy);\r
- foreach (var label in friend.Concat(enemy))\r
- {\r
- panel.Controls.Add(label);\r
- label.BackColor = CustomColors.ColumnColors.DarkFirst(i);\r
- }\r
- Controls.Add(panel);\r
+ enemy.Arrange(friend.BackPanel, CustomColors.ColumnColors.DarkFirst(i));\r
}\r
}\r
\r