From 97c563c266e6fbfddff88ba47367ce6da7acaa40 Mon Sep 17 00:00:00 2001 From: Kazuhiro Fujieda Date: Wed, 29 Jul 2015 20:54:08 +0900 Subject: [PATCH] =?utf8?q?=E6=B3=8A=E5=9C=B0=E4=BF=AE=E7=90=86=E3=81=A7?= =?utf8?q?=E4=BF=AE=E7=90=86=E3=81=8C=E5=AE=8C=E4=BA=86=E3=81=97=E3=81=9F?= =?utf8?q?=E8=89=A6=E5=A8=98=E3=81=8C=E3=81=84=E3=81=9F=E3=82=89=E9=80=9A?= =?utf8?q?=E7=9F=A5=E3=81=99=E3=82=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit --- KancolleSniffer/AkashiTimer.cs | 61 ++++++++++++++++++++++++++++++---------- KancolleSniffer/Config.cs | 2 ++ KancolleSniffer/ConfigDialog.cs | 4 ++- KancolleSniffer/MainForm.cs | 14 +++++---- KancolleSniffer/Sniffer.cs | 2 +- Sounds/syuuri2.mp3 | Bin 0 -> 6144 bytes 6 files changed, 60 insertions(+), 23 deletions(-) create mode 100644 Sounds/syuuri2.mp3 diff --git a/KancolleSniffer/AkashiTimer.cs b/KancolleSniffer/AkashiTimer.cs index 2fa2190..c499654 100644 --- a/KancolleSniffer/AkashiTimer.cs +++ b/KancolleSniffer/AkashiTimer.cs @@ -96,28 +96,57 @@ namespace KancolleSniffer }).ToArray(); } - public string GetNotice(DateTime start, DateTime prev, DateTime now) + public Notice GetNotice(DateTime start, DateTime prev, DateTime now) { - var msg = string.Join(" ", _target.Where(s => + var m20 = TimeSpan.FromMinutes(20); + var proc = new List(); + var comp = new List(); + foreach (var s in _target) { var damage = s.MaxHp - s.NowHp; - if (damage < 2) - return false; - for (var d = 2; d <= damage; d++) + if (damage == 0) + continue; + if (damage == 1) + { + if (prev - start < m20 && now - start >= m20) + comp.Add(s.Name); + continue; + } + // スリープで時間が飛んだときに修理完了だけを表示するために、 + // 完全回復から減らしながら所要時間と経過時間と比較する。 + for (var d = damage; d >= 2; d--) { var sec = s.CalcRepairSec(d) + 60; if (sec <= 20 * 60) + { + if (d == damage && (prev - start < m20 && now - start >= m20)) + comp.Add(s.Name); continue; + } var span = TimeSpan.FromSeconds(sec); - if (span > prev - start && span <= now - start) - return true; + if (span <= prev - start || now - start < span) + continue; + if (d == damage) + comp.Add(s.Name); + else + proc.Add(s.Name); + break; } - return false; - }).Select(s => s.Name)); - return msg == "" ? "" : "修理進行: " + msg; + } + return new Notice + { + Proceeded = proc.Count == 0 ? "" : string.Join(" ", proc), + Completed = comp.Count == 0 ? "" : string.Join(" ", comp) + }; } } + public class Notice + { + public string Proceeded { get; set; } + public string Completed { get; set; } + } + public AkashiTimer(ShipInfo ship, ItemInfo item, DockInfo dock) { _shipInfo = ship; @@ -205,16 +234,18 @@ namespace KancolleSniffer return _repairStatuses[fleet].GetTimers(_start, DateTime.Now); } - public string[] GetNotice() + public Notice[] GetNotice() { var now = DateTime.Now; var prev = _prev; _prev = now; if (prev == DateTime.MinValue || _start == DateTime.MinValue) - return new string[0]; - if (prev - _start < TimeSpan.FromMinutes(20) && now - _start >= TimeSpan.FromMinutes(20)) - return new[] {"20分経過しました。"}; - return _repairStatuses.Select(repair => repair.GetNotice(_start, prev, now)).ToArray(); + return new Notice[0]; + var r = _repairStatuses.Select(repair => repair.GetNotice(_start, prev, now)).ToArray(); + var m20 = TimeSpan.FromMinutes(20); + if (prev - _start < m20 && now - _start >= m20) + r[0].Proceeded = "20分経過しました。"; + return r; } } } \ No newline at end of file diff --git a/KancolleSniffer/Config.cs b/KancolleSniffer/Config.cs index 773f40c..ba92aac 100644 --- a/KancolleSniffer/Config.cs +++ b/KancolleSniffer/Config.cs @@ -105,6 +105,7 @@ namespace KancolleSniffer public string DamagedShipSoundFile { get; set; } public string Akashi20MinSoundFile { get; set; } public string AkashiProgressSoundFile { get; set; } + public string AkashiCompleteSoundFile { get; set; } public string ConditionSoundFile { get; set; } public bool DebugLogging { get; set; } public string DebugLogFile { get; set; } @@ -131,6 +132,7 @@ namespace KancolleSniffer DamagedShipSoundFile = Path.Combine(dir, "taiha.mp3"); Akashi20MinSoundFile = Path.Combine(dir, "20min.mp3"); AkashiProgressSoundFile = Path.Combine(dir, "syuuri.mp3"); + AkashiCompleteSoundFile = Path.Combine(dir, "syuuri2.mp3"); ConditionSoundFile = Path.Combine(dir, "hirou.mp3"); DebugLogFile = Path.Combine(dir, "log.txt"); Proxy = new ProxyConfig(); diff --git a/KancolleSniffer/ConfigDialog.cs b/KancolleSniffer/ConfigDialog.cs index 9cc6acc..cb5e7c4 100644 --- a/KancolleSniffer/ConfigDialog.cs +++ b/KancolleSniffer/ConfigDialog.cs @@ -40,7 +40,7 @@ namespace KancolleSniffer listBoxSoundFile.Items.AddRange(new object[] { "遠征終了", "入渠終了", "建造完了", "艦娘数超過", "装備数超過", - "大破警告", "泊地修理20分経過", "泊地修理進行", "疲労回復" + "大破警告", "泊地修理20分経過", "泊地修理進行", "泊地修理完了","疲労回復" }); numericUpDownMaterialLogInterval.Maximum = 1440; } @@ -75,6 +75,7 @@ namespace KancolleSniffer _soundSetting["大破警告"] = _config.DamagedShipSoundFile; _soundSetting["泊地修理20分経過"] = _config.Akashi20MinSoundFile; _soundSetting["泊地修理進行"] = _config.AkashiProgressSoundFile; + _soundSetting["泊地修理完了"] = _config.AkashiCompleteSoundFile; _soundSetting["疲労回復"] = _config.ConditionSoundFile; listBoxSoundFile.SelectedIndex = -1; @@ -177,6 +178,7 @@ namespace KancolleSniffer _config.DamagedShipSoundFile = _soundSetting["大破警告"]; _config.Akashi20MinSoundFile = _soundSetting["泊地修理20分経過"]; _config.AkashiProgressSoundFile = _soundSetting["泊地修理進行"]; + _config.AkashiCompleteSoundFile = _soundSetting["泊地修理完了"]; _config.ConditionSoundFile = _soundSetting["疲労回復"]; } diff --git a/KancolleSniffer/MainForm.cs b/KancolleSniffer/MainForm.cs index 6176fc0..4bc55f2 100644 --- a/KancolleSniffer/MainForm.cs +++ b/KancolleSniffer/MainForm.cs @@ -423,17 +423,19 @@ namespace KancolleSniffer var msgs = _sniffer.GetAkashiTimerNotice(); if (msgs.Length == 0) return; - if (msgs[0] == "20分経過しました。") + if (msgs[0].Proceeded == "20分経過しました。") { - _noticeQueue.Enqueue("泊地修理", msgs[0], _config.Akashi20MinSoundFile); - return; + _noticeQueue.Enqueue("泊地修理", msgs[0].Proceeded, _config.Akashi20MinSoundFile); + msgs[0].Proceeded = ""; + // 修理完了がいるかもしれないので続ける } var fn = new[] {"第一艦隊", "第二艦隊", "第三艦隊", "第四艦隊"}; for (var i = 0; i < fn.Length; i++) { - if (msgs[i] == "") - continue; - _noticeQueue.Enqueue("泊地修理 " + fn[i], msgs[i], _config.AkashiProgressSoundFile); + if (msgs[i].Proceeded != "") + _noticeQueue.Enqueue("泊地修理 " + fn[i], "修理進行:" + msgs[i].Proceeded, _config.AkashiProgressSoundFile); + if (msgs[i].Completed != "") + _noticeQueue.Enqueue("泊地修理 " + fn[i], "修理完了:" + msgs[i].Completed, _config.AkashiCompleteSoundFile); } } diff --git a/KancolleSniffer/Sniffer.cs b/KancolleSniffer/Sniffer.cs index 8f28c4e..227933e 100644 --- a/KancolleSniffer/Sniffer.cs +++ b/KancolleSniffer/Sniffer.cs @@ -431,7 +431,7 @@ namespace KancolleSniffer return _akashiTimer.GetTimers(fleet); } - public string[] GetAkashiTimerNotice() + public AkashiTimer.Notice[] GetAkashiTimerNotice() { return _akashiTimer.GetNotice(); } diff --git a/Sounds/syuuri2.mp3 b/Sounds/syuuri2.mp3 new file mode 100644 index 0000000000000000000000000000000000000000..03079627384e764b072bb94b0af867ee4adb8f86 GIT binary patch literal 6144 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 E0g2^t(f|Me literal 0 HcmV?d00001 -- 2.11.0