OSDN Git Service

疲労回復を通知する
authorKazuhiro Fujieda <fujieda@users.sourceforge.jp>
Sun, 9 Nov 2014 14:04:23 +0000 (23:04 +0900)
committerKazuhiro Fujieda <fujieda@users.sourceforge.jp>
Fri, 14 Nov 2014 11:26:33 +0000 (20:26 +0900)
KancolleSniffer/ConditionTimer.cs
KancolleSniffer/Config.cs
KancolleSniffer/ConfigDialog.Designer.cs
KancolleSniffer/ConfigDialog.cs
KancolleSniffer/MainForm.cs
KancolleSniffer/ShipInfo.cs
KancolleSniffer/Sniffer.cs
Sounds/hirou.mp3 [new file with mode: 0644]

index 291e80a..3b2587b 100644 (file)
@@ -9,6 +9,7 @@ namespace KancolleSniffer
         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
+        private readonly TimeSpan[] _prevLeftTimes = new TimeSpan[ShipInfo.FleetCount];\r
 \r
         public ConditionTimer(ShipInfo shipInfo)\r
         {\r
@@ -19,6 +20,8 @@ namespace KancolleSniffer
         {\r
             for (var fleet = 0; fleet < ShipInfo.FleetCount; fleet++)\r
             {\r
+                if (!_enable[fleet]) // タイマーが無効なら前回の残り時間を無効にする\r
+                    _prevLeftTimes[fleet] = TimeSpan.MinValue;\r
                 _enable[fleet] = true;\r
                 var cond = _cond[fleet] = CondMin(fleet);\r
                 if (cond < 49 && _times[fleet] != DateTime.MinValue) // 計時中\r
@@ -29,8 +32,8 @@ namespace KancolleSniffer
                         return;\r
                 }\r
                 _times[fleet] = cond < 49\r
-                        ? DateTime.Now.AddMinutes((49 - cond + 2) / 3 * 3)\r
-                        : DateTime.MinValue;\r
+                    ? DateTime.Now.AddMinutes((49 - cond + 2) / 3 * 3)\r
+                    : DateTime.MinValue;\r
             }\r
         }\r
 \r
@@ -49,5 +52,23 @@ namespace KancolleSniffer
         {\r
             return _enable[fleet] ? _times[fleet] : DateTime.MinValue;\r
         }\r
+\r
+        public int[] GetNotice()\r
+        {\r
+            var result = new int[_times.Length];\r
+            for (var f = 0; f < _times.Length; f++)\r
+            {\r
+                var now = _times[f] == DateTime.MinValue ? TimeSpan.Zero : _times[f] - DateTime.Now;\r
+                var prev = _prevLeftTimes[f];\r
+                _prevLeftTimes[f] = now;\r
+                if (prev == TimeSpan.MinValue)\r
+                    continue;\r
+                if (prev > TimeSpan.FromMinutes(9) && now <= TimeSpan.FromMinutes(9))\r
+                    result[f] = 40;\r
+                else if (prev > TimeSpan.Zero && now <= TimeSpan.Zero)\r
+                    result[f] = 49;\r
+            }\r
+            return result;\r
+        }\r
     }\r
 }
\ No newline at end of file
index 30236cc..ea0b725 100644 (file)
@@ -63,6 +63,7 @@ namespace KancolleSniffer
         public bool PlaySound { get; set; }\r
         public int MarginShips { get; set; }\r
         public int MarginEquips { get; set; }\r
+        public List<int> NotifyConditions { get; set; }\r
         public List<int> ResetHours { get; set; }\r
         public int SoundVolume { get; set; }\r
         public string MissionSoundFile { get; set; }\r
@@ -73,6 +74,7 @@ namespace KancolleSniffer
         public string DamagedShipSoundFile { get; set; }\r
         public string Akashi20MinSoundFile { get; set; }\r
         public string AkashiProgressSoundFile { get; set; }\r
+        public string ConditionSoundFile { get; set; }\r
         public bool Logging { get; set; }\r
         public string LogFile { get; set; }\r
         public ProxyConfig Proxy { get; set; }\r
@@ -84,6 +86,7 @@ namespace KancolleSniffer
             FlashWindow = ShowBaloonTip = PlaySound = true;\r
             MarginShips = 4;\r
             MarginEquips = 10;\r
+            NotifyConditions = new List<int>(new[]{40, 49});\r
             ResetHours = new List<int>();\r
             SoundVolume = 100;\r
             var dir = Path.GetDirectoryName(Application.ExecutablePath);\r
@@ -96,6 +99,7 @@ namespace KancolleSniffer
             DamagedShipSoundFile = Path.Combine(dir, "taiha.mp3");\r
             Akashi20MinSoundFile = Path.Combine(dir, "20min.mp3");\r
             AkashiProgressSoundFile = Path.Combine(dir, "syuuri.mp3");\r
+            ConditionSoundFile = Path.Combine(dir, "hirou.mp3");\r
             LogFile = Path.Combine(dir, "log.txt");\r
 // ReSharper restore AssignNullToNotNullAttribute\r
             Proxy = new ProxyConfig();\r
index 5c48bac..63cead6 100644 (file)
@@ -47,6 +47,12 @@ namespace KancolleSniffer
         {\r
             this.components = new System.ComponentModel.Container();\r
             this.groupBoxNotification = new System.Windows.Forms.GroupBox();\r
+            this.label6 = new System.Windows.Forms.Label();\r
+            this.checkBoxCond49 = new System.Windows.Forms.CheckBox();\r
+            this.checkBoxCond40 = new System.Windows.Forms.CheckBox();\r
+            this.label5 = new System.Windows.Forms.Label();\r
+            this.numericUpDownMarginEquips = new System.Windows.Forms.NumericUpDown();\r
+            this.label4 = new System.Windows.Forms.Label();\r
             this.numericUpDownMarginShips = new System.Windows.Forms.NumericUpDown();\r
             this.label2 = new System.Windows.Forms.Label();\r
             this.label1 = new System.Windows.Forms.Label();\r
@@ -74,21 +80,21 @@ namespace KancolleSniffer
             this.contextMenuStrip = new System.Windows.Forms.ContextMenuStrip(this.components);\r
             this.ProxyToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();\r
             this.DebugToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();\r
-            this.numericUpDownMarginEquips = new System.Windows.Forms.NumericUpDown();\r
-            this.label5 = new System.Windows.Forms.Label();\r
-            this.label4 = new System.Windows.Forms.Label();\r
             this.groupBoxNotification.SuspendLayout();\r
+            ((System.ComponentModel.ISupportInitialize)(this.numericUpDownMarginEquips)).BeginInit();\r
             ((System.ComponentModel.ISupportInitialize)(this.numericUpDownMarginShips)).BeginInit();\r
             this.groupBoxSound.SuspendLayout();\r
             ((System.ComponentModel.ISupportInitialize)(this.numericUpDownSoundVolume)).BeginInit();\r
             this.groupBoxShow.SuspendLayout();\r
             this.groupBoxAchievement.SuspendLayout();\r
             this.contextMenuStrip.SuspendLayout();\r
-            ((System.ComponentModel.ISupportInitialize)(this.numericUpDownMarginEquips)).BeginInit();\r
             this.SuspendLayout();\r
             // \r
             // groupBoxNotification\r
             // \r
+            this.groupBoxNotification.Controls.Add(this.label6);\r
+            this.groupBoxNotification.Controls.Add(this.checkBoxCond49);\r
+            this.groupBoxNotification.Controls.Add(this.checkBoxCond40);\r
             this.groupBoxNotification.Controls.Add(this.label5);\r
             this.groupBoxNotification.Controls.Add(this.numericUpDownMarginEquips);\r
             this.groupBoxNotification.Controls.Add(this.label4);\r
@@ -100,11 +106,72 @@ namespace KancolleSniffer
             this.groupBoxNotification.Controls.Add(this.checkBoxFlash);\r
             this.groupBoxNotification.Location = new System.Drawing.Point(6, 71);\r
             this.groupBoxNotification.Name = "groupBoxNotification";\r
-            this.groupBoxNotification.Size = new System.Drawing.Size(240, 126);\r
+            this.groupBoxNotification.Size = new System.Drawing.Size(240, 147);\r
             this.groupBoxNotification.TabIndex = 0;\r
             this.groupBoxNotification.TabStop = false;\r
             this.groupBoxNotification.Text = "通知";\r
             // \r
+            // label6\r
+            // \r
+            this.label6.AutoSize = true;\r
+            this.label6.Location = new System.Drawing.Point(4, 126);\r
+            this.label6.Name = "label6";\r
+            this.label6.Size = new System.Drawing.Size(105, 12);\r
+            this.label6.TabIndex = 13;\r
+            this.label6.Text = "疲労回復を通知する";\r
+            // \r
+            // checkBoxCond49\r
+            // \r
+            this.checkBoxCond49.AutoSize = true;\r
+            this.checkBoxCond49.Location = new System.Drawing.Point(175, 125);\r
+            this.checkBoxCond49.Name = "checkBoxCond49";\r
+            this.checkBoxCond49.Size = new System.Drawing.Size(60, 16);\r
+            this.checkBoxCond49.TabIndex = 12;\r
+            this.checkBoxCond49.Text = "cond49";\r
+            this.checkBoxCond49.UseVisualStyleBackColor = true;\r
+            // \r
+            // checkBoxCond40\r
+            // \r
+            this.checkBoxCond40.AutoSize = true;\r
+            this.checkBoxCond40.Location = new System.Drawing.Point(113, 125);\r
+            this.checkBoxCond40.Name = "checkBoxCond40";\r
+            this.checkBoxCond40.Size = new System.Drawing.Size(60, 16);\r
+            this.checkBoxCond40.TabIndex = 11;\r
+            this.checkBoxCond40.Text = "cond40";\r
+            this.checkBoxCond40.UseVisualStyleBackColor = true;\r
+            // \r
+            // label5\r
+            // \r
+            this.label5.AutoSize = true;\r
+            this.label5.Location = new System.Drawing.Point(113, 103);\r
+            this.label5.Name = "label5";\r
+            this.label5.Size = new System.Drawing.Size(70, 12);\r
+            this.label5.TabIndex = 9;\r
+            this.label5.Text = "個で通知する";\r
+            // \r
+            // numericUpDownMarginEquips\r
+            // \r
+            this.numericUpDownMarginEquips.Location = new System.Drawing.Point(76, 101);\r
+            this.numericUpDownMarginEquips.Margin = new System.Windows.Forms.Padding(0, 3, 0, 3);\r
+            this.numericUpDownMarginEquips.Maximum = new decimal(new int[] {\r
+            99,\r
+            0,\r
+            0,\r
+            0});\r
+            this.numericUpDownMarginEquips.Name = "numericUpDownMarginEquips";\r
+            this.numericUpDownMarginEquips.Size = new System.Drawing.Size(36, 19);\r
+            this.numericUpDownMarginEquips.TabIndex = 8;\r
+            this.numericUpDownMarginEquips.TextAlign = System.Windows.Forms.HorizontalAlignment.Right;\r
+            // \r
+            // label4\r
+            // \r
+            this.label4.AutoSize = true;\r
+            this.label4.Location = new System.Drawing.Point(47, 103);\r
+            this.label4.Name = "label4";\r
+            this.label4.Size = new System.Drawing.Size(29, 12);\r
+            this.label4.TabIndex = 7;\r
+            this.label4.Text = "装備";\r
+            // \r
             // numericUpDownMarginShips\r
             // \r
             this.numericUpDownMarginShips.Location = new System.Drawing.Point(76, 81);\r
@@ -178,7 +245,7 @@ namespace KancolleSniffer
             this.groupBoxSound.Controls.Add(this.textBoxSoundFile);\r
             this.groupBoxSound.Controls.Add(this.numericUpDownSoundVolume);\r
             this.groupBoxSound.Controls.Add(this.label3);\r
-            this.groupBoxSound.Location = new System.Drawing.Point(6, 245);\r
+            this.groupBoxSound.Location = new System.Drawing.Point(6, 266);\r
             this.groupBoxSound.Name = "groupBoxSound";\r
             this.groupBoxSound.Size = new System.Drawing.Size(240, 138);\r
             this.groupBoxSound.TabIndex = 1;\r
@@ -245,7 +312,7 @@ namespace KancolleSniffer
             // \r
             this.buttonOk.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)));\r
             this.buttonOk.DialogResult = System.Windows.Forms.DialogResult.OK;\r
-            this.buttonOk.Location = new System.Drawing.Point(87, 392);\r
+            this.buttonOk.Location = new System.Drawing.Point(87, 413);\r
             this.buttonOk.Margin = new System.Windows.Forms.Padding(3, 8, 3, 3);\r
             this.buttonOk.Name = "buttonOk";\r
             this.buttonOk.Size = new System.Drawing.Size(75, 23);\r
@@ -258,7 +325,7 @@ namespace KancolleSniffer
             // \r
             this.buttonCancel.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)));\r
             this.buttonCancel.DialogResult = System.Windows.Forms.DialogResult.Cancel;\r
-            this.buttonCancel.Location = new System.Drawing.Point(165, 392);\r
+            this.buttonCancel.Location = new System.Drawing.Point(165, 413);\r
             this.buttonCancel.Margin = new System.Windows.Forms.Padding(3, 6, 3, 3);\r
             this.buttonCancel.Name = "buttonCancel";\r
             this.buttonCancel.Size = new System.Drawing.Size(75, 23);\r
@@ -309,7 +376,7 @@ namespace KancolleSniffer
             this.groupBoxAchievement.Controls.Add(this.label8);\r
             this.groupBoxAchievement.Controls.Add(this.checkBoxReset14);\r
             this.groupBoxAchievement.Controls.Add(this.checkBoxReset02);\r
-            this.groupBoxAchievement.Location = new System.Drawing.Point(6, 201);\r
+            this.groupBoxAchievement.Location = new System.Drawing.Point(6, 222);\r
             this.groupBoxAchievement.Name = "groupBoxAchievement";\r
             this.groupBoxAchievement.Size = new System.Drawing.Size(240, 40);\r
             this.groupBoxAchievement.TabIndex = 5;\r
@@ -377,45 +444,13 @@ namespace KancolleSniffer
             this.DebugToolStripMenuItem.Text = "デバッグ設定(&D)";\r
             this.DebugToolStripMenuItem.Click += new System.EventHandler(this.DebugToolStripMenuItem_Click);\r
             // \r
-            // numericUpDownMarginEquips\r
-            // \r
-            this.numericUpDownMarginEquips.Location = new System.Drawing.Point(76, 101);\r
-            this.numericUpDownMarginEquips.Margin = new System.Windows.Forms.Padding(0, 3, 0, 3);\r
-            this.numericUpDownMarginEquips.Maximum = new decimal(new int[] {\r
-            99,\r
-            0,\r
-            0,\r
-            0});\r
-            this.numericUpDownMarginEquips.Name = "numericUpDownMarginEquips";\r
-            this.numericUpDownMarginEquips.Size = new System.Drawing.Size(36, 19);\r
-            this.numericUpDownMarginEquips.TabIndex = 8;\r
-            this.numericUpDownMarginEquips.TextAlign = System.Windows.Forms.HorizontalAlignment.Right;\r
-            // \r
-            // label5\r
-            // \r
-            this.label5.AutoSize = true;\r
-            this.label5.Location = new System.Drawing.Point(113, 103);\r
-            this.label5.Name = "label5";\r
-            this.label5.Size = new System.Drawing.Size(70, 12);\r
-            this.label5.TabIndex = 9;\r
-            this.label5.Text = "個で通知する";\r
-            // \r
-            // label4\r
-            // \r
-            this.label4.AutoSize = true;\r
-            this.label4.Location = new System.Drawing.Point(47, 103);\r
-            this.label4.Name = "label4";\r
-            this.label4.Size = new System.Drawing.Size(29, 12);\r
-            this.label4.TabIndex = 7;\r
-            this.label4.Text = "装備";\r
-            // \r
             // ConfigDialog\r
             // \r
             this.AcceptButton = this.buttonOk;\r
             this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F);\r
             this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;\r
             this.CancelButton = this.buttonCancel;\r
-            this.ClientSize = new System.Drawing.Size(252, 424);\r
+            this.ClientSize = new System.Drawing.Size(252, 445);\r
             this.ContextMenuStrip = this.contextMenuStrip;\r
             this.Controls.Add(this.groupBoxAchievement);\r
             this.Controls.Add(this.groupBoxShow);\r
@@ -432,6 +467,7 @@ namespace KancolleSniffer
             this.Load += new System.EventHandler(this.ConfigDialog_Load);\r
             this.groupBoxNotification.ResumeLayout(false);\r
             this.groupBoxNotification.PerformLayout();\r
+            ((System.ComponentModel.ISupportInitialize)(this.numericUpDownMarginEquips)).EndInit();\r
             ((System.ComponentModel.ISupportInitialize)(this.numericUpDownMarginShips)).EndInit();\r
             this.groupBoxSound.ResumeLayout(false);\r
             this.groupBoxSound.PerformLayout();\r
@@ -441,7 +477,6 @@ namespace KancolleSniffer
             this.groupBoxAchievement.ResumeLayout(false);\r
             this.groupBoxAchievement.PerformLayout();\r
             this.contextMenuStrip.ResumeLayout(false);\r
-            ((System.ComponentModel.ISupportInitialize)(this.numericUpDownMarginEquips)).EndInit();\r
             this.ResumeLayout(false);\r
 \r
         }\r
@@ -479,5 +514,8 @@ namespace KancolleSniffer
         private System.Windows.Forms.Label label5;\r
         private System.Windows.Forms.NumericUpDown numericUpDownMarginEquips;\r
         private System.Windows.Forms.Label label4;\r
+        private System.Windows.Forms.Label label6;\r
+        private System.Windows.Forms.CheckBox checkBoxCond49;\r
+        private System.Windows.Forms.CheckBox checkBoxCond40;\r
     }\r
 }
\ No newline at end of file
index e8e3042..f737f7b 100644 (file)
@@ -18,7 +18,6 @@
 using System;\r
 using System.Collections.Generic;\r
 using System.IO;\r
-using System.Linq;\r
 using System.Windows.Forms;\r
 \r
 namespace KancolleSniffer\r
@@ -39,7 +38,7 @@ namespace KancolleSniffer
             listBoxSoundFile.Items.AddRange(new object[]\r
             {\r
                 "遠征終了", "入渠終了", "建造完了", "艦娘数超過", "装備数超過",\r
-                "大破警告", "泊地修理20分経過", "泊地修理進行"\r
+                "大破警告", "泊地修理20分経過", "泊地修理進行", "疲労回復"\r
             });\r
         }\r
 \r
@@ -52,9 +51,10 @@ namespace KancolleSniffer
             groupBoxSound.Enabled = checkBoxSound.Checked = _config.PlaySound;\r
             numericUpDownMarginShips.Value = _config.MarginShips;\r
             numericUpDownMarginEquips.Value = _config.MarginEquips;\r
-\r
-            checkBoxReset02.Checked = _config.ResetHours.Any(x => x == 2);\r
-            checkBoxReset14.Checked = _config.ResetHours.Any(x => x == 14);\r
+            checkBoxCond40.Checked = _config.NotifyConditions.Contains(40);\r
+            checkBoxCond49.Checked = _config.NotifyConditions.Contains(49);\r
+            checkBoxReset02.Checked = _config.ResetHours.Contains(2);\r
+            checkBoxReset14.Checked = _config.ResetHours.Contains(14);\r
 \r
             numericUpDownSoundVolume.Value = _config.SoundVolume;\r
 \r
@@ -66,6 +66,8 @@ namespace KancolleSniffer
             _soundSetting["大破警告"] = _config.DamagedShipSoundFile;\r
             _soundSetting["泊地修理20分経過"] = _config.Akashi20MinSoundFile;\r
             _soundSetting["泊地修理進行"] = _config.AkashiProgressSoundFile;\r
+            _soundSetting["疲労回復"] = _config.ConditionSoundFile;\r
+\r
             listBoxSoundFile.SelectedIndex = 0;\r
         }\r
 \r
@@ -79,6 +81,12 @@ namespace KancolleSniffer
             _config.MarginShips = (int)numericUpDownMarginShips.Value;\r
             _config.MarginEquips = (int)numericUpDownMarginEquips.Value;\r
 \r
+            _config.NotifyConditions.Clear();\r
+            if (checkBoxCond40.Checked)\r
+                _config.NotifyConditions.Add(40);\r
+            if (checkBoxCond49.Checked)\r
+                _config.NotifyConditions.Add(49);\r
+\r
             _config.ResetHours.Clear();\r
             if (checkBoxReset02.Checked)\r
                 _config.ResetHours.Add(2);\r
@@ -95,6 +103,7 @@ namespace KancolleSniffer
             _config.DamagedShipSoundFile = _soundSetting["大破警告"];\r
             _config.Akashi20MinSoundFile = _soundSetting["泊地修理20分経過"];\r
             _config.AkashiProgressSoundFile = _soundSetting["泊地修理進行"];\r
+            _config.ConditionSoundFile = _soundSetting["疲労回復"];\r
         }\r
 \r
         private void checkBoxSound_CheckedChanged(object sender, EventArgs e)\r
index 5a5bcb9..653675a 100644 (file)
@@ -425,7 +425,7 @@ namespace KancolleSniffer
 \r
         private void UpdateCondTimers()\r
         {\r
-            var timer = _sniffer.GetConditionTimers(_currentFleet);\r
+            var timer = _sniffer.GetConditionTimer(_currentFleet);\r
             var now = DateTime.Now;\r
             if (timer == DateTime.MinValue)\r
             {\r
@@ -433,14 +433,27 @@ namespace KancolleSniffer
                 labelCondTimer.Text = "";\r
                 return;\r
             }\r
-            if (timer - now >= TimeSpan.FromMinutes(9))\r
+            var span = TimeSpan.FromSeconds(Math.Ceiling((timer - now).TotalSeconds));\r
+            if (span >= TimeSpan.FromMinutes(9))\r
             {\r
                 labelCondTimerTitle.Text = "cond40まで";\r
-                labelCondTimer.Text = (timer - now - TimeSpan.FromMinutes(9)).ToString(@"mm\:ss");\r
+                labelCondTimer.Text = (span - TimeSpan.FromMinutes(9)).ToString(@"mm\:ss");\r
+            }\r
+            else\r
+            {\r
+                labelCondTimerTitle.Text = "cond49まで";\r
+                labelCondTimer.Text = (span >= TimeSpan.Zero ? span : TimeSpan.Zero).ToString(@"mm\:ss");\r
+            }\r
+            var notice = _sniffer.GetConditionNotice();\r
+            if (notice == null)\r
                 return;\r
+            var fn = new[] {"第一艦隊", "第二艦隊", "第三艦隊", "第四艦隊"};\r
+            for (var i = 0; i < fn.Length; i++)\r
+            {\r
+                if (!_config.NotifyConditions.Contains(notice[i]))\r
+                    return;\r
+                _noticeQueue.Enqueue("疲労が回復しました", fn[i] + " cond" + notice[i].ToString("D"), _config.ConditionSoundFile);\r
             }\r
-            labelCondTimerTitle.Text = "cond49まで";\r
-            labelCondTimer.Text = (timer - now >= TimeSpan.Zero ? (timer - now) : TimeSpan.Zero).ToString(@"mm\:ss");\r
         }\r
 \r
         private void CreateAkashiTimers()\r
index 3f32aa5..35d657d 100644 (file)
@@ -352,11 +352,16 @@ namespace KancolleSniffer
             }\r
         }\r
 \r
-        public DateTime GetConditionTimer(int fleet)\r
+        public DateTime GetConditionTiemr(int fleet)\r
         {\r
             return _conditionTimer.GetTimer(fleet);\r
         }\r
 \r
+        public int[] GetConditionNotice()\r
+        {\r
+            return _conditionTimer.GetNotice();\r
+        }\r
+\r
         public ChargeStatus[] ChargeStatuses\r
         {\r
             get\r
index 1e3403b..743d208 100644 (file)
@@ -278,9 +278,14 @@ namespace KancolleSniffer
             get { return _missionInfo.Missions; }\r
         }\r
 \r
-        public DateTime GetConditionTimers(int fleet)\r
+        public DateTime GetConditionTimer(int fleet)\r
         {\r
-            return _shipInfo.GetConditionTimer(fleet);\r
+            return _shipInfo.GetConditionTiemr(fleet);\r
+        }\r
+\r
+        public int[] GetConditionNotice()\r
+        {\r
+            return _shipInfo.GetConditionNotice();\r
         }\r
 \r
         public ShipStatus[] GetShipStatuses(int fleet)\r
diff --git a/Sounds/hirou.mp3 b/Sounds/hirou.mp3
new file mode 100644 (file)
index 0000000..0846c5b
Binary files /dev/null and b/Sounds/hirou.mp3 differ