OSDN Git Service

ShipLabelのメソッドの引数にnullを渡して初期化できるようにする
authorKazuhiro Fujieda <fujieda@users.osdn.me>
Thu, 16 Nov 2017 10:43:44 +0000 (19:43 +0900)
committerKazuhiro Fujieda <fujieda@users.osdn.me>
Sat, 2 Dec 2017 11:26:11 +0000 (20:26 +0900)
KancolleSniffer/ShipLabels.cs
KancolleSniffer/ShipListPanel.cs

index ceb7371..badd89a 100644 (file)
@@ -104,21 +104,12 @@ namespace KancolleSniffer
             for (var i = 0; i < _labels.Length; i++)\r
             {\r
                 var labels = _labels[i];\r
-                if (i < statuses.Length)\r
-                {\r
-                    var s = statuses[i];\r
-                    labels[0].SetHp(s);\r
-                    labels[1].SetCond(s);\r
-                    labels[2].SetLevel(s);\r
-                    labels[3].SetExpToNext(s);\r
-                    labels[4].SetName(s, ShipNameWidth.MainPanel);\r
-                }\r
-                else\r
-                {\r
-                    labels[0].Text = labels[1].Text = labels[2].Text = labels[3].Text = "";\r
-                    labels[4].SetName("");\r
-                    labels[0].BackColor = labels[1].BackColor = labels[0].PresetColor;\r
-                }\r
+                var s = i < statuses.Length ? statuses[i] : null;\r
+                labels[0].SetHp(s);\r
+                labels[1].SetCond(s);\r
+                labels[2].SetLevel(s);\r
+                labels[3].SetExpToNext(s);\r
+                labels[4].SetName(s, ShipNameWidth.MainPanel);\r
             }\r
         }\r
 \r
@@ -175,19 +166,10 @@ namespace KancolleSniffer
                 var idx = i % ShipInfo.MemberCount;\r
                 var statuses = i < ShipInfo.MemberCount ? first : second;\r
                 var labels = _combinedLabels[i];\r
-                if (idx < statuses.Length)\r
-                {\r
-                    var s = statuses[idx];\r
-                    labels[0].SetHp(s);\r
-                    labels[1].SetCond(s);\r
-                    labels[2].SetName(s, ShipNameWidth.Combined);\r
-                }\r
-                else\r
-                {\r
-                    labels[0].Text = labels[1].Text = "";\r
-                    labels[2].SetName("");\r
-                    labels[0].BackColor = labels[1].BackColor = labels[0].PresetColor;\r
-                }\r
+                var s = idx < statuses.Length ? statuses[idx] : null;\r
+                labels[0].SetHp(s);\r
+                labels[1].SetCond(s);\r
+                labels[2].SetName(s, ShipNameWidth.Combined);\r
             }\r
         }\r
 \r
@@ -337,7 +319,12 @@ namespace KancolleSniffer
 \r
         public void SetName(ShipStatus status, ShipNameWidth width = ShipNameWidth.Max)\r
         {\r
-            SlotStatus empty = SlotStatus.Equipped;\r
+            if (status == null)\r
+            {\r
+                SetName("");\r
+                return;\r
+            }\r
+            var empty = SlotStatus.Equipped;\r
             if (status.Id != -1)\r
             {\r
                 if (status.Slot.All(item => item.Id == -1))\r
@@ -347,7 +334,7 @@ namespace KancolleSniffer
             }\r
             var dc = status.PreparedDamageControl;\r
             var dcname = dc == 42 ? "[ダ]" : dc == 43 ? "[メ]" : "";\r
-            SetName((status.Escaped ? "[避]" : dcname), status.Name, empty, width);\r
+            SetName(status.Escaped ? "[避]" : dcname, status.Name, empty, width);\r
         }\r
 \r
         public void SetName(string name)\r
@@ -363,7 +350,7 @@ namespace KancolleSniffer
         private void SetName(string prefix, string name, SlotStatus slotStatus, ShipNameWidth width = ShipNameWidth.Max)\r
         {\r
             if (name == null)\r
-                return;\r
+                name = "";\r
             _slotStatus = slotStatus;\r
             var lu = new Regex(@"^\p{Lu}").IsMatch(name);\r
             var shift = (int)Round(ScaleFactor.Height);\r
@@ -399,6 +386,12 @@ namespace KancolleSniffer
 \r
         public void SetHp(ShipStatus status)\r
         {\r
+            if (status == null)\r
+            {\r
+                Text = "";\r
+                BackColor = PresetColor;\r
+                return;\r
+            }\r
             Text = $"{status.NowHp:D}/{status.MaxHp:D}";\r
             BackColor = DamageColor(status, PresetColor);\r
         }\r
@@ -427,6 +420,12 @@ namespace KancolleSniffer
 \r
         public void SetCond(ShipStatus status)\r
         {\r
+            if (status == null)\r
+            {\r
+                Text = "";\r
+                BackColor = PresetColor;\r
+                return;\r
+            }\r
             var cond = status.Cond;\r
             Text = cond.ToString("D");\r
             BackColor = cond >= 50\r
@@ -440,16 +439,21 @@ namespace KancolleSniffer
 \r
         public void SetLevel(ShipStatus status)\r
         {\r
-            Text = status.Level.ToString("D");\r
+            Text = status?.Level.ToString("D");\r
         }\r
 \r
         public void SetExpToNext(ShipStatus status)\r
         {\r
-            Text = status.ExpToNext.ToString("D");\r
+            Text = status?.ExpToNext.ToString("D");\r
         }\r
 \r
         public void SetRepairTime(ShipStatus status)\r
         {\r
+            if (status == null)\r
+            {\r
+                Text = "";\r
+                return;\r
+            }\r
             SetRepairTime(status.RepairTime);\r
         }\r
 \r
@@ -460,7 +464,7 @@ namespace KancolleSniffer
 \r
         public void SetFleet(ShipStatus status)\r
         {\r
-            Text = new[] {"", "1", "2", "3", "4"}[status.Fleet + 1];\r
+            Text = status == null ? "" : new[] {"", "1", "2", "3", "4"}[status.Fleet + 1];\r
         }\r
 \r
         protected override void OnLayout(LayoutEventArgs levent)\r
index 017c71c..f1483c9 100644 (file)
@@ -423,12 +423,12 @@ namespace KancolleSniffer
         {\r
             var s = _shipList[i + ScrollBar.Value];\r
             var labels = _labelList[i];\r
-            for (var c = 0; c < 4; c++)\r
-            {\r
-                labels[c].Text = "";\r
-                labels[c].BackColor = labels[c].PresetColor;\r
-            }\r
-            labels[4].SetName("");\r
+            labels[0].SetHp(null);\r
+            labels[1].SetCond(null);\r
+            labels[2].SetLevel(null);\r
+            labels[3].SetExpToNext(null);\r
+            labels[4].SetName(null);\r
+            labels[5].SetFleet(null);\r
             labels[5].Text = s.Name;\r
             _labelPanelList[i].Visible = true;\r
         }\r