OSDN Git Service

一覧の防空のリサイズとスケールがおかしいのを直す
[kancollesniffer/KancolleSniffer.git] / KancolleSniffer / View / ShipLabels.cs
index 0528fb8..a828423 100644 (file)
 \r
 using System.Linq;\r
 using System.Windows.Forms;\r
+using KancolleSniffer.Model;\r
 \r
 namespace KancolleSniffer.View\r
 {\r
     public class ShipLabels : ControlsArranger\r
     {\r
-        public ShipLabel Fleet { get; set; }\r
+        public ShipLabel.Fleet Fleet { get; set; }\r
         public ShipLabel.Name Name { get; set; }\r
         public ShipLabel.Hp Hp { get; set; }\r
-        public ShipLabel Cond { get; set; }\r
-        public ShipLabel Level { get; set; }\r
-        public ShipLabel Exp { get; set; }\r
+        public ShipLabel.Cond Cond { get; set; }\r
+        public ShipLabel.Level Level { get; set; }\r
+        public ShipLabel.Exp Exp { get; set; }\r
         public Label BackGround { get; set; }\r
 \r
-        public override Control[] Controls =>\r
-            new Control[] {Hp, Cond, Level, Exp, Name, Fleet, BackGround}.Where(c => c != null)\r
-                .ToArray(); // 名前のZ-orderを下に\r
+        // Nameが長すぎる場合は他のラベルの下に隠れてほしいのでのZ-orderを下にする。\r
+        // サブクラスで追加するラベルはBackGroundで隠れないようにZ-orderを上にする。\r
+        public sealed override Control[] Controls =>\r
+            AddedControls.Concat(new Control[] {Fleet, Hp, Cond, Level, Exp, Name, BackGround}.Where(c => c != null))\r
+                .ToArray();\r
+\r
+        protected virtual Control[] AddedControls => new Control[0];\r
+\r
+        public virtual void Set(ShipStatus status)\r
+        {\r
+            foreach (var label in new ShipLabel[] {Fleet, Name, Hp, Cond, Level, Exp})\r
+                label?.Set(status);\r
+        }\r
+\r
+        public virtual void Reset()\r
+        {\r
+            foreach (var label in new ShipLabel[] {Fleet, Name, Hp, Cond, Level, Exp})\r
+                label?.Reset();\r
+        }\r
     }\r
 }
\ No newline at end of file