// limitations under the License.\r
\r
using System;\r
+using System.ComponentModel;\r
using System.Drawing;\r
using System.Linq;\r
using System.Text.RegularExpressions;\r
private readonly ShipLabel[][] _labels = new ShipLabel[ShipInfo.MemberCount][];\r
private readonly ShipLabel[][] _combinedLabels = new ShipLabel[ShipInfo.MemberCount * 2][];\r
private readonly ShipLabel[] _akashiTimers = new ShipLabel[ShipInfo.MemberCount];\r
- private readonly ShipLabel[][] _repairList = new ShipLabel[16][];\r
- private Control _panelRepairList;\r
private readonly ShipLabel[][] _ndockLabels = new ShipLabel[DockInfo.DockCount][];\r
public static Color[] ColumnColors = {SystemColors.Control, Color.FromArgb(255, 250, 250, 250)};\r
\r
new ShipLabel {Location = new Point(129, y), AutoSize = true, AnchorRight = true},\r
new ShipLabel\r
{\r
- Location = new Point(132, y),\r
- Size = new Size(23, height),\r
+ Location = new Point(131, y),\r
+ Size = new Size(24, height),\r
TextAlign = ContentAlignment.MiddleRight\r
},\r
new ShipLabel\r
{\r
- Location = new Point(157, y),\r
- Size = new Size(23, height),\r
+ Location = new Point(156, y),\r
+ Size = new Size(24, height),\r
TextAlign = ContentAlignment.MiddleRight\r
},\r
new ShipLabel\r
{\r
- Location = new Point(177, y),\r
- Size = new Size(41, height),\r
+ Location = new Point(176, y),\r
+ Size = new Size(42, height),\r
TextAlign = ContentAlignment.MiddleRight\r
},\r
new ShipLabel {Location = new Point(2, y), AutoSize = true}, // 名前のZ-orderを下に\r
new ShipLabel {Location = new Point(x + 88, y), AutoSize = true, AnchorRight = true},\r
new ShipLabel\r
{\r
- Location = new Point(x + 86, y),\r
- Size = new Size(23, height),\r
+ Location = new Point(x + 85, y),\r
+ Size = new Size(24, height),\r
TextAlign = ContentAlignment.MiddleRight\r
},\r
new ShipLabel {Location = new Point(x + 2, y), AutoSize = true}, // 名前のZ-orderを下に\r
parent.ResumeLayout();\r
}\r
\r
+ public void AdjustAkashiTimers()\r
+ {\r
+ var scale = ShipLabel.ScaleFactor;\r
+ if (scale.Height < 1.2)\r
+ return;\r
+ for (var i = 0; i < _akashiTimers.Length; i++)\r
+ {\r
+ const int x = 55;\r
+ var y = 3 + 16 * (i + 1);\r
+ _akashiTimers[i].Location = new Point((int)Round(x * scale.Width) - 3, (int)Round(y * scale.Height));\r
+ _akashiTimers[i].Size = new Size((int)Round(31 * scale.Width) + 1, (int)Round(12 * scale.Height));\r
+ }\r
+ }\r
+\r
public void SetAkashiTimer(ShipStatus[] statuses, AkashiTimer.RepairSpan[] timers)\r
{\r
var shortest = -1;\r
continue;\r
}\r
if (i == shortest)\r
- label.ForeColor = Color.Red;\r
+ label.ForeColor = CUDColor.Red;\r
labelHp.ForeColor = Color.DimGray;\r
labelHp.SetHp(stat.NowHp + timer.Diff, stat.MaxHp);\r
}\r
}\r
\r
- public void CreateRepairList(Control parent, EventHandler onClick)\r
- {\r
- parent.SuspendLayout();\r
- for (var i = 0; i < _repairList.Length; i++)\r
- {\r
- var y = 3 + i * 16;\r
- const int height = 12;\r
- parent.Controls.AddRange(_repairList[i] = new[]\r
- {\r
- new ShipLabel {Location = new Point(0, y), Size = new Size(11, height)},\r
- new ShipLabel {Location = new Point(119, y), Size = new Size(5, height - 1)},\r
- new ShipLabel {Location = new Point(75, y), AutoSize = true},\r
- new ShipLabel {Location = new Point(9, y), AutoSize = true},\r
- new ShipLabel {Location = new Point(0, y - 2), Size = new Size(parent.Width, height + 3)}\r
- });\r
- foreach (var label in _repairList[i])\r
- {\r
- label.Scale();\r
- label.PresetColor = label.BackColor = ColumnColors[(i + 1) % 2];\r
- label.Click += onClick;\r
- }\r
- }\r
- _panelRepairList = parent;\r
- parent.ResumeLayout();\r
- }\r
-\r
- public void SetRepairList(ShipStatus[] list)\r
- {\r
- const int fleet = 0, name = 3, time = 2, damage = 1;\r
- var parent = _panelRepairList;\r
- var num = Min(list.Length, _repairList.Length);\r
- if (num == 0)\r
- {\r
- parent.Size = new Size(parent.Width, (int)Round(ShipLabel.ScaleFactor.Height * 19));\r
- var labels = _repairList[0];\r
- labels[fleet].Text = "";\r
- labels[name].SetName("なし");\r
- labels[time].Text = "";\r
- labels[damage].BackColor = labels[damage].PresetColor;\r
- return;\r
- }\r
- parent.Size = new Size(parent.Width, (int)Round(ShipLabel.ScaleFactor.Height * (num * 16 + 3)));\r
- for (var i = 0; i < num; i++)\r
- {\r
- var s = list[i];\r
- var labels = _repairList[i];\r
- labels[fleet].SetFleet(s);\r
- labels[name].SetName(s, ShipNameWidth.RepairList);\r
- labels[time].SetRepairTime(s);\r
- labels[damage].BackColor = ShipLabel.DamageColor(s, labels[damage].PresetColor);\r
- }\r
- }\r
-\r
public void CreateNDockLabels(Control parent, EventHandler onClick)\r
{\r
for (var i = 0; i < _ndockLabels.Length; i++)\r
public void SetNDockTimer(int dock, RingTimer timer, bool finishTime)\r
{\r
var label = _ndockLabels[dock][0];\r
- label.ForeColor = timer.IsFinished ? Color.Red : Color.Black;\r
+ label.ForeColor = timer.IsFinished ? CUDColor.Red : Color.Black;\r
label.Text = timer.ToString(finishTime);\r
}\r
}\r
\r
- [System.ComponentModel.DesignerCategory("Code")]\r
+ [DesignerCategory("Code")]\r
public class ShipLabel : Label\r
{\r
public static SizeF ScaleFactor { get; set; }\r
private int _left;\r
private SlotStatus _slotStatus;\r
\r
+ public override Color BackColor\r
+ {\r
+ get => base.BackColor;\r
+ set => base.BackColor = value == DefaultBackColor ? PresetColor : value;\r
+ }\r
+\r
[Flags]\r
private enum SlotStatus\r
{\r
case ShipStatus.Damage.Sunk:\r
return Color.CornflowerBlue;\r
case ShipStatus.Damage.Badly:\r
- return Color.Red;\r
+ return CUDColor.Red;\r
case ShipStatus.Damage.Half:\r
- return Color.Orange;\r
+ return CUDColor.Orange;\r
case ShipStatus.Damage.Small:\r
return Color.FromArgb(240, 240, 0);\r
default:\r
var cond = status.Cond;\r
Text = cond.ToString("D");\r
BackColor = cond >= 50\r
- ? Color.Yellow\r
+ ? CUDColor.Yellow\r
: cond >= 30\r
? PresetColor\r
- : cond >= 20 ? Color.Orange : Color.Red;\r
+ : cond >= 20\r
+ ? CUDColor.Orange\r
+ : CUDColor.Red;\r
}\r
\r
public void SetLevel(ShipStatus status)\r