OSDN Git Service

要修復リストの作成と更新をShipInfoLabelsに移譲する
authorKazuhiro Fujieda <fujieda@users.sourceforge.jp>
Wed, 7 Jan 2015 11:03:19 +0000 (20:03 +0900)
committerKazuhiro Fujieda <fujieda@users.sourceforge.jp>
Thu, 8 Jan 2015 16:54:04 +0000 (01:54 +0900)
KancolleSniffer/MainForm.cs
KancolleSniffer/ShipInfoLabels.cs

index 5727a2a..549dd10 100644 (file)
@@ -34,7 +34,6 @@ namespace KancolleSniffer
         private readonly ConfigDialog _configDialog;\r
         private int _currentFleet;\r
         private readonly Label[] _labelCheckFleets;\r
-        private readonly ShipLabel[][] _damagedShipList = new ShipLabel[14][];\r
         private readonly ShipLabel[][] _ndockLabels = new ShipLabel[DockInfo.DockCount][];\r
         private readonly ShipInfoLabels _shipInfoLabels;\r
         private readonly ShipListForm _shipListForm;\r
@@ -60,8 +59,10 @@ namespace KancolleSniffer
             ShipLabel.ScaleFactor = _scaleFactor;\r
 \r
             SetupFleetClick();\r
-            _shipInfoLabels = new ShipInfoLabels(panelShipInfo, ShowShipOnShipList);\r
-            CreateDamagedShipList();\r
+            _shipInfoLabels = new ShipInfoLabels();\r
+            _shipInfoLabels.CreateLabels(panelShipInfo, ShowShipOnShipList);\r
+            _shipInfoLabels.CreateAkashiTimers(panelShipInfo);\r
+            _shipInfoLabels.CreateDamagedShipList(panelDamagedShipList);\r
             CreateNDockLabels();\r
             _shipListForm = new ShipListForm(_sniffer, _config) {Owner = this};\r
             _noticeQueue = new NoticeQueue(Ring);\r
@@ -541,60 +542,9 @@ namespace KancolleSniffer
             NotifyAkashiTimer();\r
         }\r
 \r
-        public void CreateDamagedShipList()\r
-        {\r
-            var parent = panelDamagedShipList;\r
-            parent.SuspendLayout();\r
-            for (var i = 0; i < _damagedShipList.Length; i++)\r
-            {\r
-                var y = 3 + i * 16;\r
-                const int height = 12;\r
-                parent.Controls.AddRange(_damagedShipList[i] = new[]\r
-                {\r
-                    new ShipLabel {Location = new Point(1, y), Size = new Size(11, height)},\r
-                    new ShipLabel {Location = new Point(79, y), AutoSize = true},\r
-                    new ShipLabel {Location = new Point(123, y), Size = new Size(5, height - 1)},\r
-                    new ShipLabel {Location = new Point(10, 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 _damagedShipList[i])\r
-                {\r
-                    label.Scale(_scaleFactor);\r
-                    label.PresetColor = label.BackColor = ShipInfoLabels.ColumnColors[(i + 1) % 2];\r
-                }\r
-            }\r
-            parent.ResumeLayout();\r
-        }\r
-\r
         private void UpdateDamagedShipList()\r
         {\r
-            const int fleet = 0, name = 3, time = 1, damage = 2;\r
-            var parent = panelDamagedShipList;\r
-            var list = _sniffer.DamagedShipList;\r
-            var num = Math.Min(list.Length, _damagedShipList.Length);\r
-            if (num == 0)\r
-            {\r
-                parent.Size = new Size(parent.Width, (int)Math.Round(_scaleFactor.Height * 19));\r
-                var labels = _damagedShipList[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)Math.Round(_scaleFactor.Height * (num * 16 + 3)));\r
-            var colors = new[] {Color.FromArgb(255, 225, 225, 21), Color.Orange, Color.Red};\r
-            for (var i = 0; i < num; i++)\r
-            {\r
-                var s = list[i];\r
-                var labels = _damagedShipList[i];\r
-                labels[fleet].SetFleet(s);\r
-                labels[name].SetName(s);\r
-                labels[time].SetRepairTime(s);\r
-                labels[damage].BackColor = (int)s.DamageLevel == 0\r
-                    ? labels[damage].PresetColor\r
-                    : colors[(int)s.DamageLevel - 1];\r
-            }\r
+            _shipInfoLabels.SetDamagedShipList(_sniffer.DamagedShipList);\r
         }\r
 \r
         private void UpdateQuestList()\r
index 1c53a5d..02c6786 100644 (file)
@@ -26,15 +26,11 @@ namespace KancolleSniffer
     {\r
         private readonly ShipLabel[][] _labels = new ShipLabel[ShipInfo.MemberCount][];\r
         private readonly Label[] _akashiTimers = new Label[ShipInfo.MemberCount];\r
+        private readonly ShipLabel[][] _damagedShipList = new ShipLabel[14][];\r
+        private Control _panelDamagedShipList;\r
         public static Color[] ColumnColors = {SystemColors.Control, Color.FromArgb(255, 250, 250, 250)};\r
 \r
-        public ShipInfoLabels(Control parent, EventHandler onClick)\r
-        {\r
-            CreateLabels(parent, onClick);\r
-            CreateAkashiTimers(parent);\r
-        }\r
-\r
-        private void CreateLabels(Control parent, EventHandler onClick)\r
+        public void CreateLabels(Control parent, EventHandler onClick)\r
         {\r
             parent.SuspendLayout();\r
             const int top = 3, height = 12, lh = 16;\r
@@ -105,7 +101,7 @@ namespace KancolleSniffer
             }\r
         }\r
 \r
-        private void CreateAkashiTimers(Control parent)\r
+        public void CreateAkashiTimers(Control parent)\r
         {\r
             parent.SuspendLayout();\r
             for (var i = 0; i < _akashiTimers.Length; i++)\r
@@ -148,6 +144,61 @@ namespace KancolleSniffer
                 labelHp.SetHp(stat.NowHp + timer.Diff, stat.MaxHp);\r
             }\r
         }\r
+\r
+        public void CreateDamagedShipList(Control parent)\r
+        {\r
+            parent.SuspendLayout();\r
+            for (var i = 0; i < _damagedShipList.Length; i++)\r
+            {\r
+                var y = 3 + i * 16;\r
+                const int height = 12;\r
+                parent.Controls.AddRange(_damagedShipList[i] = new[]\r
+                {\r
+                    new ShipLabel {Location = new Point(1, y), Size = new Size(11, height)},\r
+                    new ShipLabel {Location = new Point(79, y), AutoSize = true},\r
+                    new ShipLabel {Location = new Point(123, y), Size = new Size(5, height - 1)},\r
+                    new ShipLabel {Location = new Point(10, 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 _damagedShipList[i])\r
+                {\r
+                    label.Scale(ShipLabel.ScaleFactor);\r
+                    label.PresetColor = label.BackColor = ColumnColors[(i + 1) % 2];\r
+                }\r
+            }\r
+            _panelDamagedShipList = parent;\r
+            parent.ResumeLayout();\r
+        }\r
+\r
+        public void SetDamagedShipList(ShipStatus[] list)\r
+        {\r
+            const int fleet = 0, name = 3, time = 1, damage = 2;\r
+            var parent = _panelDamagedShipList;\r
+            var num = Math.Min(list.Length, _damagedShipList.Length);\r
+            if (num == 0)\r
+            {\r
+                parent.Size = new Size(parent.Width, (int)Math.Round(ShipLabel.ScaleFactor.Height * 19));\r
+                var labels = _damagedShipList[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)Math.Round(ShipLabel.ScaleFactor.Height * (num * 16 + 3)));\r
+            var colors = new[] { Color.FromArgb(255, 225, 225, 21), Color.Orange, Color.Red };\r
+            for (var i = 0; i < num; i++)\r
+            {\r
+                var s = list[i];\r
+                var labels = _damagedShipList[i];\r
+                labels[fleet].SetFleet(s);\r
+                labels[name].SetName(s);\r
+                labels[time].SetRepairTime(s);\r
+                labels[damage].BackColor = (int)s.DamageLevel == 0\r
+                    ? labels[damage].PresetColor\r
+                    : colors[(int)s.DamageLevel - 1];\r
+            }\r
+        }\r
     }\r
 \r
     [System.ComponentModel.DesignerCategory("Code")]\r