OSDN Git Service

帰投後の遠征欄に艦隊の遠征関連のパラメータを表示する
authorKazuhiro Fujieda <fujieda@users.osdn.me>
Sat, 4 Aug 2018 08:38:11 +0000 (17:38 +0900)
committerKazuhiro Fujieda <fujieda@users.osdn.me>
Sat, 4 Aug 2018 09:35:05 +0000 (18:35 +0900)
KancolleSniffer/MainForm.Designer.cs
KancolleSniffer/MainForm.cs
KancolleSniffer/Model/ItemSpec.cs
KancolleSniffer/View/FleetPanel.cs

index 5b42277..95ebbca 100644 (file)
@@ -165,13 +165,13 @@ namespace KancolleSniffer
             this.labelFuelSq4 = new System.Windows.Forms.Label();\r
             this.labelAkashiRepair = new System.Windows.Forms.Label();\r
             this.labelClearQuest = new System.Windows.Forms.Label();\r
-            this.panelRepairList = new RepairListForMain();\r
-            this.labelQuestCount1 = new ShipLabel();\r
-            this.labelQuestCount2 = new ShipLabel();\r
-            this.labelQuestCount3 = new ShipLabel();\r
-            this.labelQuestCount4 = new ShipLabel();\r
-            this.labelQuestCount5 = new ShipLabel();\r
-            this.labelQuestCount6 = new ShipLabel();\r
+            this.panelRepairList = new KancolleSniffer.View.RepairListForMain();\r
+            this.labelQuestCount1 = new KancolleSniffer.View.ShipLabel();\r
+            this.labelQuestCount2 = new KancolleSniffer.View.ShipLabel();\r
+            this.labelQuestCount3 = new KancolleSniffer.View.ShipLabel();\r
+            this.labelQuestCount4 = new KancolleSniffer.View.ShipLabel();\r
+            this.labelQuestCount5 = new KancolleSniffer.View.ShipLabel();\r
+            this.labelQuestCount6 = new KancolleSniffer.View.ShipLabel();\r
             this.panelHeadquarters.SuspendLayout();\r
             this.panelShipInfo.SuspendLayout();\r
             this.panelBattleInfo.SuspendLayout();\r
@@ -720,34 +720,34 @@ namespace KancolleSniffer
             // \r
             // labelMissionName3\r
             // \r
-            this.labelMissionName3.Location = new System.Drawing.Point(57, 33);\r
+            this.labelMissionName3.Location = new System.Drawing.Point(32, 33);\r
             this.labelMissionName3.Name = "labelMissionName3";\r
-            this.labelMissionName3.Size = new System.Drawing.Size(113, 12);\r
+            this.labelMissionName3.Size = new System.Drawing.Size(139, 12);\r
             this.labelMissionName3.TabIndex = 5;\r
             this.labelMissionName3.Click += new System.EventHandler(this.labelMission_Click);\r
             // \r
             // labelMissionName2\r
             // \r
-            this.labelMissionName2.Location = new System.Drawing.Point(57, 18);\r
+            this.labelMissionName2.Location = new System.Drawing.Point(32, 18);\r
             this.labelMissionName2.Name = "labelMissionName2";\r
-            this.labelMissionName2.Size = new System.Drawing.Size(113, 12);\r
+            this.labelMissionName2.Size = new System.Drawing.Size(139, 12);\r
             this.labelMissionName2.TabIndex = 4;\r
             this.labelMissionName2.Click += new System.EventHandler(this.labelMission_Click);\r
             // \r
             // labelMissionName1\r
             // \r
-            this.labelMissionName1.Location = new System.Drawing.Point(57, 3);\r
+            this.labelMissionName1.Location = new System.Drawing.Point(32, 3);\r
             this.labelMissionName1.Name = "labelMissionName1";\r
-            this.labelMissionName1.Size = new System.Drawing.Size(113, 12);\r
+            this.labelMissionName1.Size = new System.Drawing.Size(139, 12);\r
             this.labelMissionName1.TabIndex = 3;\r
             this.labelMissionName1.Click += new System.EventHandler(this.labelMission_Click);\r
             // \r
             // labelMission3\r
             // \r
             this.labelMission3.Cursor = System.Windows.Forms.Cursors.Hand;\r
-            this.labelMission3.Location = new System.Drawing.Point(171, 32);\r
+            this.labelMission3.Location = new System.Drawing.Point(171, 33);\r
             this.labelMission3.Name = "labelMission3";\r
-            this.labelMission3.Size = new System.Drawing.Size(47, 15);\r
+            this.labelMission3.Size = new System.Drawing.Size(47, 12);\r
             this.labelMission3.TabIndex = 8;\r
             this.labelMission3.TextAlign = System.Drawing.ContentAlignment.MiddleRight;\r
             this.labelMission3.Click += new System.EventHandler(this.labelMission_Click);\r
@@ -755,9 +755,9 @@ namespace KancolleSniffer
             // labelMission2\r
             // \r
             this.labelMission2.Cursor = System.Windows.Forms.Cursors.Hand;\r
-            this.labelMission2.Location = new System.Drawing.Point(171, 17);\r
+            this.labelMission2.Location = new System.Drawing.Point(171, 18);\r
             this.labelMission2.Name = "labelMission2";\r
-            this.labelMission2.Size = new System.Drawing.Size(47, 15);\r
+            this.labelMission2.Size = new System.Drawing.Size(47, 12);\r
             this.labelMission2.TabIndex = 7;\r
             this.labelMission2.TextAlign = System.Drawing.ContentAlignment.MiddleRight;\r
             this.labelMission2.Click += new System.EventHandler(this.labelMission_Click);\r
@@ -765,9 +765,9 @@ namespace KancolleSniffer
             // labelMission1\r
             // \r
             this.labelMission1.Cursor = System.Windows.Forms.Cursors.Hand;\r
-            this.labelMission1.Location = new System.Drawing.Point(171, 2);\r
+            this.labelMission1.Location = new System.Drawing.Point(171, 3);\r
             this.labelMission1.Name = "labelMission1";\r
-            this.labelMission1.Size = new System.Drawing.Size(47, 15);\r
+            this.labelMission1.Size = new System.Drawing.Size(47, 12);\r
             this.labelMission1.TabIndex = 6;\r
             this.labelMission1.TextAlign = System.Drawing.ContentAlignment.MiddleRight;\r
             this.labelMission1.Click += new System.EventHandler(this.labelMission_Click);\r
@@ -777,9 +777,9 @@ namespace KancolleSniffer
             this.label15.AutoSize = true;\r
             this.label15.Location = new System.Drawing.Point(2, 33);\r
             this.label15.Name = "label15";\r
-            this.label15.Size = new System.Drawing.Size(53, 12);\r
+            this.label15.Size = new System.Drawing.Size(29, 12);\r
             this.label15.TabIndex = 2;\r
-            this.label15.Text = "第四艦隊";\r
+            this.label15.Text = "第四";\r
             this.label15.Click += new System.EventHandler(this.labelMission_Click);\r
             // \r
             // label14\r
@@ -787,9 +787,9 @@ namespace KancolleSniffer
             this.label14.AutoSize = true;\r
             this.label14.Location = new System.Drawing.Point(2, 18);\r
             this.label14.Name = "label14";\r
-            this.label14.Size = new System.Drawing.Size(53, 12);\r
+            this.label14.Size = new System.Drawing.Size(29, 12);\r
             this.label14.TabIndex = 1;\r
-            this.label14.Text = "第三艦隊";\r
+            this.label14.Text = "第三";\r
             this.label14.Click += new System.EventHandler(this.labelMission_Click);\r
             // \r
             // label13\r
@@ -797,9 +797,9 @@ namespace KancolleSniffer
             this.label13.AutoSize = true;\r
             this.label13.Location = new System.Drawing.Point(2, 3);\r
             this.label13.Name = "label13";\r
-            this.label13.Size = new System.Drawing.Size(53, 12);\r
+            this.label13.Size = new System.Drawing.Size(29, 12);\r
             this.label13.TabIndex = 0;\r
-            this.label13.Text = "第二艦隊";\r
+            this.label13.Text = "第二";\r
             this.label13.Click += new System.EventHandler(this.labelMission_Click);\r
             // \r
             // timerMain\r
index bfb5617..c6b7400 100644 (file)
@@ -613,6 +613,7 @@ namespace KancolleSniffer
             NotifyDamagedShip();\r
             UpdateChargeInfo();\r
             UpdateRepairList();\r
+            UpdateMissionLabels();\r
             if (_listForm.Visible)\r
                 _listForm.UpdateList();\r
         }\r
@@ -785,10 +786,31 @@ namespace KancolleSniffer
 \r
         private void UpdateMissionLabels()\r
         {\r
-            foreach (var entry in\r
-                new[] {labelMissionName1, labelMissionName2, labelMissionName3}.Zip(_sniffer.Missions,\r
-                    (label, mission) => new {label, mission.Name}))\r
-                entry.label.Text = entry.Name;\r
+            var labels = new[] {labelMissionName1, labelMissionName2, labelMissionName3};\r
+            var names = _sniffer.Missions.Select(mission => mission.Name).ToArray();\r
+            for (var i = 0; i < ShipInfo.FleetCount - 1; i++)\r
+            {\r
+                labels[i].Text = string.IsNullOrEmpty(names[i])\r
+                    ? GenerateFleetSpecForMission(i + 1)\r
+                    : names[i];\r
+            }\r
+        }\r
+\r
+        private string GenerateFleetSpecForMission(int fleetNumber)\r
+        {\r
+            var result = new List<string>();\r
+            var fleet = _sniffer.Fleets[fleetNumber];\r
+            var kira = fleet.Ships.Count(ship => ship.Cond > 49);\r
+            var plus = fleet.Ships[0].Cond > 49;\r
+            if (kira > 0)\r
+                result.Add($"キラ{kira}{(plus ? "+" : "")}");\r
+            var drums = fleet.Ships.SelectMany(ship => ship.Slot).Count(item => item.Spec.IsDrum);\r
+            var drumShips = fleet.Ships.Count(ship => ship.Slot.Any(item => item.Spec.IsDrum));\r
+            if (drums > 0)\r
+                result.Add($"ド{drums}({drumShips}隻)");\r
+            if (fleet.DaihatsuBonus > 0)\r
+                result.Add($"ダ{fleet.DaihatsuBonus * 100:f1}%");\r
+            return string.Join(" ", result);\r
         }\r
 \r
         private void labelMission_Click(object sender, EventArgs e)\r
index 468bdba..95c5196 100644 (file)
@@ -141,6 +141,8 @@ namespace KancolleSniffer.Model
 \r
         public bool IsAntiAirGun => Type == 21;\r
 \r
+        public bool IsDrum => Id == 75;\r
+\r
         public double ContactTriggerRate\r
         {\r
             get\r
index 931dd09..fb3703a 100644 (file)
@@ -74,7 +74,7 @@ namespace KancolleSniffer.View
 \r
             public void Add(ShipStatus s)\r
             {\r
-                var drum = s.Slot.Count(item => item.Spec.Name == "ドラム缶(輸送用)");\r
+                var drum = s.Slot.Count(item => item.Spec.IsDrum);\r
                 DrumShips += drum != 0 ? 1 : 0;\r
                 Drum += drum;\r
                 Level += s.Level;\r