OSDN Git Service

疲労タイマーの表示を一つにする
authorKazuhiro Fujieda <fujieda@users.sourceforge.jp>
Mon, 3 Nov 2014 09:31:05 +0000 (18:31 +0900)
committerKazuhiro Fujieda <fujieda@users.sourceforge.jp>
Sun, 9 Nov 2014 15:15:15 +0000 (00:15 +0900)
KancolleSniffer/ConditionTimer.cs
KancolleSniffer/MainForm.Designer.cs
KancolleSniffer/MainForm.cs
KancolleSniffer/ShipInfo.cs
KancolleSniffer/Sniffer.cs

index ccba897..291e80a 100644 (file)
@@ -6,15 +6,13 @@ namespace KancolleSniffer
     public class ConditionTimer\r
     {\r
         private readonly ShipInfo _shipInfo;\r
-        private readonly DateTime[][] _times = new DateTime[ShipInfo.FleetCount][];\r
+        private readonly DateTime[] _times = new DateTime[ShipInfo.FleetCount];\r
         private readonly bool[] _enable = new bool[ShipInfo.FleetCount];\r
         private readonly int[] _cond = new int[ShipInfo.FleetCount];\r
 \r
         public ConditionTimer(ShipInfo shipInfo)\r
         {\r
             _shipInfo = shipInfo;\r
-            for (var f = 0; f < _times.Length; f++)\r
-                _times[f] = new DateTime[3];\r
         }\r
 \r
         public void SetTimer()\r
@@ -23,18 +21,15 @@ namespace KancolleSniffer
             {\r
                 _enable[fleet] = true;\r
                 var cond = _cond[fleet] = CondMin(fleet);\r
-                var time49 = _times[fleet][2];\r
-                if (cond < 49 && time49 != DateTime.MinValue) // 計時中\r
+                if (cond < 49 && _times[fleet] != DateTime.MinValue) // 計時中\r
                 {\r
                     // コンディション値から推定される残り時刻と経過時間の差\r
-                    var diff = TimeSpan.FromMinutes((49 - cond + 2) / 3 * 3) - (time49 - DateTime.Now);\r
+                    var diff = TimeSpan.FromMinutes((49 - cond + 2) / 3 * 3) - (_times[fleet] - DateTime.Now);\r
                     if (diff >= TimeSpan.Zero && diff <= TimeSpan.FromMinutes(3)) // 差が0以上3分以内ならタイマーを更新しない。\r
                         return;\r
                 }\r
-                var thresh = new[] {30, 40, 49};\r
-                for (var i = 0; i < thresh.Length; i++)\r
-                    _times[fleet][i] = cond < thresh[i]\r
-                        ? DateTime.Now.AddMinutes((thresh[i] - cond + 2) / 3 * 3)\r
+                _times[fleet] = cond < 49\r
+                        ? DateTime.Now.AddMinutes((49 - cond + 2) / 3 * 3)\r
                         : DateTime.MinValue;\r
             }\r
         }\r
@@ -50,14 +45,9 @@ namespace KancolleSniffer
                 .DefaultIfEmpty(49).Min();\r
         }\r
 \r
-        public string[] GetTimerStrings(int fleet)\r
+        public DateTime GetTimer(int fleet)\r
         {\r
-            if (!_enable[fleet])\r
-                return new[] {"無効", "無効", "無効"};\r
-            var now = DateTime.Now;\r
-            return\r
-                (from time in _times[fleet] select time > now ? (time - now).ToString(@"mm\:ss") : "00:00")\r
-                    .ToArray();\r
+            return _enable[fleet] ? _times[fleet] : DateTime.MinValue;\r
         }\r
     }\r
 }
\ No newline at end of file
index 78780ab..77b43dc 100644 (file)
@@ -64,14 +64,10 @@ namespace KancolleSniffer
             this.label30 = new System.Windows.Forms.Label();\r
             this.labelFormation = new System.Windows.Forms.Label();\r
             this.label29 = new System.Windows.Forms.Label();\r
-            this.label19 = new System.Windows.Forms.Label();\r
             this.labelAirSuperiority = new System.Windows.Forms.Label();\r
             this.label27 = new System.Windows.Forms.Label();\r
-            this.label21 = new System.Windows.Forms.Label();\r
-            this.labelCondTimer3 = new System.Windows.Forms.Label();\r
-            this.label20 = new System.Windows.Forms.Label();\r
-            this.labelCondTimer2 = new System.Windows.Forms.Label();\r
-            this.labelCondTimer1 = new System.Windows.Forms.Label();\r
+            this.labelCondTimerTitle = new System.Windows.Forms.Label();\r
+            this.labelCondTimer = new System.Windows.Forms.Label();\r
             this.label17 = new System.Windows.Forms.Label();\r
             this.label16 = new System.Windows.Forms.Label();\r
             this.label18 = new System.Windows.Forms.Label();\r
@@ -127,6 +123,7 @@ namespace KancolleSniffer
             this.NotifyIconOpenToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();\r
             this.NotifyIconExitToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();\r
             this.contextMenuStripMain = new System.Windows.Forms.ContextMenuStrip(this.components);\r
+            this.ShipListToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();\r
             this.ConfigToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();\r
             this.ExitToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();\r
             this.label22 = new System.Windows.Forms.Label();\r
@@ -160,7 +157,6 @@ namespace KancolleSniffer
             this.panelDamagedShipList = new System.Windows.Forms.Panel();\r
             this.labelDamgedShipListButton = new System.Windows.Forms.Label();\r
             this.label31 = new System.Windows.Forms.Label();\r
-            this.ShipListToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();\r
             this.panelHeadquarters.SuspendLayout();\r
             this.panelShipInfo.SuspendLayout();\r
             this.panelBattleInfo.SuspendLayout();\r
@@ -287,14 +283,10 @@ namespace KancolleSniffer
             // \r
             this.panelShipInfo.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;\r
             this.panelShipInfo.Controls.Add(this.panelBattleInfo);\r
-            this.panelShipInfo.Controls.Add(this.label19);\r
             this.panelShipInfo.Controls.Add(this.labelAirSuperiority);\r
             this.panelShipInfo.Controls.Add(this.label27);\r
-            this.panelShipInfo.Controls.Add(this.label21);\r
-            this.panelShipInfo.Controls.Add(this.labelCondTimer3);\r
-            this.panelShipInfo.Controls.Add(this.label20);\r
-            this.panelShipInfo.Controls.Add(this.labelCondTimer2);\r
-            this.panelShipInfo.Controls.Add(this.labelCondTimer1);\r
+            this.panelShipInfo.Controls.Add(this.labelCondTimerTitle);\r
+            this.panelShipInfo.Controls.Add(this.labelCondTimer);\r
             this.panelShipInfo.Controls.Add(this.label17);\r
             this.panelShipInfo.Controls.Add(this.label16);\r
             this.panelShipInfo.Controls.Add(this.label18);\r
@@ -310,7 +302,7 @@ namespace KancolleSniffer
             this.panelBattleInfo.Controls.Add(this.label30);\r
             this.panelBattleInfo.Controls.Add(this.labelFormation);\r
             this.panelBattleInfo.Controls.Add(this.label29);\r
-            this.panelBattleInfo.Location = new System.Drawing.Point(63, 117);\r
+            this.panelBattleInfo.Location = new System.Drawing.Point(64, 117);\r
             this.panelBattleInfo.Name = "panelBattleInfo";\r
             this.panelBattleInfo.Size = new System.Drawing.Size(171, 12);\r
             this.panelBattleInfo.TabIndex = 40;\r
@@ -349,15 +341,6 @@ namespace KancolleSniffer
             this.label29.TabIndex = 0;\r
             this.label29.Text = "交戦形";\r
             // \r
-            // label19\r
-            // \r
-            this.label19.AutoSize = true;\r
-            this.label19.Location = new System.Drawing.Point(64, 117);\r
-            this.label19.Name = "label19";\r
-            this.label19.Size = new System.Drawing.Size(29, 12);\r
-            this.label19.TabIndex = 34;\r
-            this.label19.Text = "疲労";\r
-            // \r
             // labelAirSuperiority\r
             // \r
             this.labelAirSuperiority.Location = new System.Drawing.Point(29, 117);\r
@@ -376,50 +359,22 @@ namespace KancolleSniffer
             this.label27.TabIndex = 23;\r
             this.label27.Text = "制空";\r
             // \r
-            // label21\r
-            // \r
-            this.label21.AutoSize = true;\r
-            this.label21.Location = new System.Drawing.Point(180, 117);\r
-            this.label21.Name = "label21";\r
-            this.label21.Size = new System.Drawing.Size(28, 12);\r
-            this.label21.TabIndex = 39;\r
-            this.label21.Text = "隠れ";\r
-            // \r
-            // labelCondTimer3\r
+            // labelCondTimerTitle\r
             // \r
-            this.labelCondTimer3.Location = new System.Drawing.Point(205, 117);\r
-            this.labelCondTimer3.Name = "labelCondTimer3";\r
-            this.labelCondTimer3.Size = new System.Drawing.Size(31, 12);\r
-            this.labelCondTimer3.TabIndex = 38;\r
-            this.labelCondTimer3.Text = "00:00";\r
-            this.labelCondTimer3.TextAlign = System.Drawing.ContentAlignment.MiddleRight;\r
+            this.labelCondTimerTitle.AutoSize = true;\r
+            this.labelCondTimerTitle.Location = new System.Drawing.Point(148, 117);\r
+            this.labelCondTimerTitle.Name = "labelCondTimerTitle";\r
+            this.labelCondTimerTitle.Size = new System.Drawing.Size(0, 12);\r
+            this.labelCondTimerTitle.TabIndex = 39;\r
             // \r
-            // label20\r
+            // labelCondTimer\r
             // \r
-            this.label20.AutoSize = true;\r
-            this.label20.Location = new System.Drawing.Point(122, 117);\r
-            this.label20.Name = "label20";\r
-            this.label20.Size = new System.Drawing.Size(29, 12);\r
-            this.label20.TabIndex = 36;\r
-            this.label20.Text = "間宮";\r
-            // \r
-            // labelCondTimer2\r
-            // \r
-            this.labelCondTimer2.Location = new System.Drawing.Point(148, 117);\r
-            this.labelCondTimer2.Name = "labelCondTimer2";\r
-            this.labelCondTimer2.Size = new System.Drawing.Size(31, 12);\r
-            this.labelCondTimer2.TabIndex = 37;\r
-            this.labelCondTimer2.Text = "00:00";\r
-            this.labelCondTimer2.TextAlign = System.Drawing.ContentAlignment.MiddleRight;\r
-            // \r
-            // labelCondTimer1\r
-            // \r
-            this.labelCondTimer1.Location = new System.Drawing.Point(90, 117);\r
-            this.labelCondTimer1.Name = "labelCondTimer1";\r
-            this.labelCondTimer1.Size = new System.Drawing.Size(31, 12);\r
-            this.labelCondTimer1.TabIndex = 35;\r
-            this.labelCondTimer1.Text = "00:00";\r
-            this.labelCondTimer1.TextAlign = System.Drawing.ContentAlignment.MiddleRight;\r
+            this.labelCondTimer.Location = new System.Drawing.Point(206, 117);\r
+            this.labelCondTimer.Name = "labelCondTimer";\r
+            this.labelCondTimer.Size = new System.Drawing.Size(31, 12);\r
+            this.labelCondTimer.TabIndex = 38;\r
+            this.labelCondTimer.Text = "00:00";\r
+            this.labelCondTimer.TextAlign = System.Drawing.ContentAlignment.MiddleRight;\r
             // \r
             // label17\r
             // \r
@@ -917,19 +872,26 @@ namespace KancolleSniffer
             this.ConfigToolStripMenuItem,\r
             this.ExitToolStripMenuItem});\r
             this.contextMenuStripMain.Name = "contextMenuStripToolTip";\r
-            this.contextMenuStripMain.Size = new System.Drawing.Size(153, 92);\r
+            this.contextMenuStripMain.Size = new System.Drawing.Size(142, 70);\r
+            // \r
+            // ShipListToolStripMenuItem\r
+            // \r
+            this.ShipListToolStripMenuItem.Name = "ShipListToolStripMenuItem";\r
+            this.ShipListToolStripMenuItem.Size = new System.Drawing.Size(141, 22);\r
+            this.ShipListToolStripMenuItem.Text = "艦娘一覧(&L)";\r
+            this.ShipListToolStripMenuItem.Click += new System.EventHandler(this.ShipListToolStripMenuItem_Click);\r
             // \r
             // ConfigToolStripMenuItem\r
             // \r
             this.ConfigToolStripMenuItem.Name = "ConfigToolStripMenuItem";\r
-            this.ConfigToolStripMenuItem.Size = new System.Drawing.Size(152, 22);\r
+            this.ConfigToolStripMenuItem.Size = new System.Drawing.Size(141, 22);\r
             this.ConfigToolStripMenuItem.Text = "設定(&O)";\r
             this.ConfigToolStripMenuItem.Click += new System.EventHandler(this.ConfigToolStripMenuItem_Click);\r
             // \r
             // ExitToolStripMenuItem\r
             // \r
             this.ExitToolStripMenuItem.Name = "ExitToolStripMenuItem";\r
-            this.ExitToolStripMenuItem.Size = new System.Drawing.Size(152, 22);\r
+            this.ExitToolStripMenuItem.Size = new System.Drawing.Size(141, 22);\r
             this.ExitToolStripMenuItem.Text = "終了(&X)";\r
             this.ExitToolStripMenuItem.Click += new System.EventHandler(this.ExitToolStripMenuItem_Click);\r
             // \r
@@ -1241,13 +1203,6 @@ namespace KancolleSniffer
             this.label31.TabIndex = 46;\r
             this.label31.Text = "要修復";\r
             // \r
-            // ShipListToolStripMenuItem\r
-            // \r
-            this.ShipListToolStripMenuItem.Name = "ShipListToolStripMenuItem";\r
-            this.ShipListToolStripMenuItem.Size = new System.Drawing.Size(152, 22);\r
-            this.ShipListToolStripMenuItem.Text = "艦娘一覧(&L)";\r
-            this.ShipListToolStripMenuItem.Click += new System.EventHandler(this.ShipListToolStripMenuItem_Click);\r
-            // \r
             // MainForm\r
             // \r
             this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F);\r
@@ -1367,12 +1322,8 @@ namespace KancolleSniffer
         private System.Windows.Forms.Label label4;\r
         private System.Windows.Forms.Label label17;\r
         private System.Windows.Forms.Label label16;\r
-        private System.Windows.Forms.Label labelCondTimer2;\r
-        private System.Windows.Forms.Label labelCondTimer1;\r
-        private System.Windows.Forms.Label label19;\r
-        private System.Windows.Forms.Label label20;\r
-        private System.Windows.Forms.Label label21;\r
-        private System.Windows.Forms.Label labelCondTimer3;\r
+        private System.Windows.Forms.Label labelCondTimerTitle;\r
+        private System.Windows.Forms.Label labelCondTimer;\r
         private System.Windows.Forms.NotifyIcon notifyIconMain;\r
         private System.Windows.Forms.ContextMenuStrip contextMenuStripMain;\r
         private System.Windows.Forms.ToolStripMenuItem ConfigToolStripMenuItem;\r
index 23fc433..a145620 100644 (file)
@@ -425,10 +425,22 @@ namespace KancolleSniffer
 \r
         private void UpdateCondTimers()\r
         {\r
-            foreach (var entry in\r
-                new[] {labelCondTimer1, labelCondTimer2, labelCondTimer3}.Zip(\r
-                    _sniffer.GetConditionTimers(_currentFleet), (label, timer) => new {label, timer}))\r
-                entry.label.Text = entry.timer;\r
+            var timer = _sniffer.GetConditionTimers(_currentFleet);\r
+            var now = DateTime.Now;\r
+            if (timer == DateTime.MinValue)\r
+            {\r
+                labelCondTimerTitle.Text = "";\r
+                labelCondTimer.Text = "";\r
+                return;\r
+            }\r
+            if (timer - now >= TimeSpan.FromMinutes(9))\r
+            {\r
+                labelCondTimerTitle.Text = "状態40まで";\r
+                labelCondTimer.Text = (timer - now - TimeSpan.FromMinutes(9)).ToString(@"mm\:ss");\r
+                return;\r
+            }\r
+            labelCondTimerTitle.Text = "状態49まで";\r
+            labelCondTimer.Text = (timer - now >= TimeSpan.Zero ? (timer - now) : TimeSpan.Zero).ToString(@"mm\:ss");\r
         }\r
 \r
         private void CreateAkashiTimers()\r
index 9ab38a9..3f32aa5 100644 (file)
@@ -352,9 +352,9 @@ namespace KancolleSniffer
             }\r
         }\r
 \r
-        public string[] GetConditionTimers(int fleet)\r
+        public DateTime GetConditionTimer(int fleet)\r
         {\r
-            return _conditionTimer.GetTimerStrings(fleet);\r
+            return _conditionTimer.GetTimer(fleet);\r
         }\r
 \r
         public ChargeStatus[] ChargeStatuses\r
index bf34930..1e3403b 100644 (file)
@@ -278,9 +278,9 @@ namespace KancolleSniffer
             get { return _missionInfo.Missions; }\r
         }\r
 \r
-        public string[] GetConditionTimers(int fleet)\r
+        public DateTime GetConditionTimers(int fleet)\r
         {\r
-            return _shipInfo.GetConditionTimers(fleet);\r
+            return _shipInfo.GetConditionTimer(fleet);\r
         }\r
 \r
         public ShipStatus[] GetShipStatuses(int fleet)\r