From c212095a4065a634505b6f1459a3da7cb45acad7 Mon Sep 17 00:00:00 2001 From: Scott_NZ Date: Mon, 8 Oct 2012 17:16:42 +1300 Subject: [PATCH] Improve the stability of CountdownTimer --- OpenRA.Mods.RA/Missions/Allies02Script.cs | 2 +- OpenRA.Mods.RA/Missions/CountdownTimer.cs | 45 ++++++++++++----------- 2 files changed, 25 insertions(+), 22 deletions(-) diff --git a/OpenRA.Mods.RA/Missions/Allies02Script.cs b/OpenRA.Mods.RA/Missions/Allies02Script.cs index 56cef8a40a..8715035a4e 100644 --- a/OpenRA.Mods.RA/Missions/Allies02Script.cs +++ b/OpenRA.Mods.RA/Missions/Allies02Script.cs @@ -401,7 +401,7 @@ namespace OpenRA.Mods.RA.Missions void StartReinforcementsTimer() { Sound.Play("timergo1.aud"); - reinforcementsTimer = new CountdownTimer(ReinforcementsTicks, ReinforcementsTimerExpired); + reinforcementsTimer = new CountdownTimer(ReinforcementsTicks, ReinforcementsTimerExpired, true); reinforcementsTimerWidget = new CountdownTimerWidget(reinforcementsTimer, "Reinforcements arrive in", new float2(Game.viewport.Width * 0.1f, Game.viewport.Height * 0.8f)); Ui.Root.AddChild(reinforcementsTimerWidget); } diff --git a/OpenRA.Mods.RA/Missions/CountdownTimer.cs b/OpenRA.Mods.RA/Missions/CountdownTimer.cs index c80ebc4b54..e0b0fcd3fb 100644 --- a/OpenRA.Mods.RA/Missions/CountdownTimer.cs +++ b/OpenRA.Mods.RA/Missions/CountdownTimer.cs @@ -18,30 +18,33 @@ namespace OpenRA.Mods.RA.Missions { public int TicksLeft { get; set; } - public Action OnExpired { get; set; } - public Action OnOneMinuteRemaining { get; set; } - public Action OnTwoMinutesRemaining { get; set; } - public Action OnThreeMinutesRemaining { get; set; } - public Action OnFourMinutesRemaining { get; set; } - public Action OnFiveMinutesRemaining { get; set; } - public Action OnTenMinutesRemaining { get; set; } - public Action OnTwentyMinutesRemaining { get; set; } - public Action OnThirtyMinutesRemaining { get; set; } - public Action OnFortyMinutesRemaining { get; set; } + public event Action OnExpired = t => { }; + public event Action OnOneMinuteRemaining = t => { }; + public event Action OnTwoMinutesRemaining = t => { }; + public event Action OnThreeMinutesRemaining = t => { }; + public event Action OnFourMinutesRemaining = t => { }; + public event Action OnFiveMinutesRemaining = t => { }; + public event Action OnTenMinutesRemaining = t => { }; + public event Action OnTwentyMinutesRemaining = t => { }; + public event Action OnThirtyMinutesRemaining = t => { }; + public event Action OnFortyMinutesRemaining = t => { }; - public CountdownTimer(int ticksLeft, Action onExpired) + public CountdownTimer(int ticksLeft, Action onExpired, bool withNotifications) { TicksLeft = ticksLeft; - OnExpired = onExpired; - OnOneMinuteRemaining = t => Sound.Play("1minr.aud"); - OnTwoMinutesRemaining = t => Sound.Play("2minr.aud"); - OnThreeMinutesRemaining = t => Sound.Play("3minr.aud"); - OnFourMinutesRemaining = t => Sound.Play("4minr.aud"); - OnFiveMinutesRemaining = t => Sound.Play("5minr.aud"); - OnTenMinutesRemaining = t => Sound.Play("10minr.aud"); - OnTwentyMinutesRemaining = t => Sound.Play("20minr.aud"); - OnThirtyMinutesRemaining = t => Sound.Play("30minr.aud"); - OnFortyMinutesRemaining = t => Sound.Play("40minr.aud"); + OnExpired += onExpired; + if (withNotifications) + { + OnOneMinuteRemaining += t => Sound.Play("1minr.aud"); + OnTwoMinutesRemaining += t => Sound.Play("2minr.aud"); + OnThreeMinutesRemaining += t => Sound.Play("3minr.aud"); + OnFourMinutesRemaining += t => Sound.Play("4minr.aud"); + OnFiveMinutesRemaining += t => Sound.Play("5minr.aud"); + OnTenMinutesRemaining += t => Sound.Play("10minr.aud"); + OnTwentyMinutesRemaining += t => Sound.Play("20minr.aud"); + OnThirtyMinutesRemaining += t => Sound.Play("30minr.aud"); + OnFortyMinutesRemaining += t => Sound.Play("40minr.aud"); + } } public void Tick()