From 6b5beb944225ee2a63874957b63e2b5bb5386e46 Mon Sep 17 00:00:00 2001 From: Nameless <85962933+Misfiy@users.noreply.github.com> Date: Mon, 4 Sep 2023 13:13:37 +0200 Subject: [PATCH] Made it run more efficiently --- Handler.cs | 65 ++++++++++++++++++++++++++++++++++++++ PlayerHandler.cs | 82 ------------------------------------------------ 2 files changed, 65 insertions(+), 82 deletions(-) create mode 100644 Handler.cs delete mode 100644 PlayerHandler.cs diff --git a/Handler.cs b/Handler.cs new file mode 100644 index 0000000..72aaa0a --- /dev/null +++ b/Handler.cs @@ -0,0 +1,65 @@ +namespace AutoBroadcastSystem.Events +{ + using Exiled.Events.EventArgs.Player; + using Exiled.Events.EventArgs.Server; + using AutoBroadcastSystem; + using static AutoBroadcastSystem.CoroutinesHandler; + using Exiled.API.Features; + using MEC; + + public sealed class Handler + { + private readonly Config config = AutoBroadcast.Instance.Config; + public void OnRoundStart() + { + if (!config.CassieRoundStart.Message.IsEmpty()) Cassie.MessageTranslated(config.CassieRoundStart.Message, config.CassieRoundStart.Translation, default, default, config.CassieRoundStart.ShowSubtitles); + foreach (KeyValuePair autoBroadcast in config.Broadcasts) + { + Timing.CallDelayed(autoBroadcast.Key, () => + { + if (Round.IsStarted) Map.Broadcast(autoBroadcast.Value.Duration, autoBroadcast.Value.Message, default, autoBroadcast.Value.OverrideBroadcasts); + }); + } + foreach (KeyValuePair intervalBroadcast in config.BroadcastIntervals) + { + CoroutineHandle coroutine = Timing.RunCoroutine(IntervalBroadcast(intervalBroadcast.Key, intervalBroadcast.Value)); + Coroutines?.Add(coroutine); + }; + } + public void OnWaiting() => KillCoroutines(); + public void OnVerified(VerifiedEventArgs ev) + { + if (config.JoinMessage.Duration > 0 && !config.JoinMessage.Message.IsEmpty()) + { + string message = config.JoinMessage.Message.Replace("%name%", ev.Player.Nickname); + ev.Player.Broadcast(config.JoinMessage.Duration, message, default, config.JoinMessage.OverrideBroadcasts); + }; + } + public void OnRespawningTeam(RespawningTeamEventArgs ev) + { + if (ev.NextKnownTeam == Respawning.SpawnableTeamType.ChaosInsurgency) + { + if (!config.ChaosAnnouncement.Message.IsEmpty()) Cassie.MessageTranslated(config.ChaosAnnouncement.Message, config.ChaosAnnouncement.Translation, default, default, config.ChaosAnnouncement.ShowSubtitles); + } + } + + public void OnSpawned(SpawnedEventArgs ev) + { + if (config.SpawnBroadcasts.ContainsKey(ev.Player.Role.Type)) + { + SpawningBroadcasts broadcast = config.SpawnBroadcasts[ev.Player.Role.Type]; + if (broadcast.UseHints) ev.Player.ShowHint(broadcast.Message, broadcast.Duration); + else ev.Player.Broadcast(broadcast.Duration, broadcast.Message, default, broadcast.Override); + } + } + + public IEnumerator IntervalBroadcast(int interval, BroadcastSystem broadcast) + { + while (Round.IsStarted) + { + yield return Timing.WaitForSeconds(interval); + Map.Broadcast(broadcast.Duration, broadcast.Message, default, broadcast.OverrideBroadcasts); + } + } + } +} \ No newline at end of file diff --git a/PlayerHandler.cs b/PlayerHandler.cs deleted file mode 100644 index 71ad877..0000000 --- a/PlayerHandler.cs +++ /dev/null @@ -1,82 +0,0 @@ -namespace AutoBroadcastSystem.Events -{ - using Exiled.Events.EventArgs.Player; - using Exiled.Events.EventArgs.Server; - using AutoBroadcastSystem; - using static AutoBroadcastSystem.CoroutinesHandler; - using Exiled.API.Features; - using MEC; - - public sealed class Handler - { - readonly Config config = AutoBroadcast.Instance.Config; - public void OnRoundStart() - { - if(!config.CassieRoundStart.Message.IsEmpty()) Cassie.MessageTranslated(config.CassieRoundStart.Message, config.CassieRoundStart.Translation, default, default, config.CassieRoundStart.ShowSubtitles); - if (config.Broadcasts != null) - { - foreach (KeyValuePair autoBroadcast in config.Broadcasts) - { - Timing.CallDelayed(autoBroadcast.Key, () => - { - if (Round.IsStarted) Map.Broadcast(autoBroadcast.Value.Duration, autoBroadcast.Value.Message, default, autoBroadcast.Value.OverrideBroadcasts); - }); - } - } - if (config.BroadcastIntervals != null) - { - foreach (KeyValuePair intervalBroadcast in config.BroadcastIntervals) - { - Timing.CallDelayed(intervalBroadcast.Key, () => - { - CoroutineHandle coroutine = Timing.RunCoroutine(Interval(intervalBroadcast.Key, intervalBroadcast.Value)); - IntervalCoroutines?.Add(coroutine); - }); - }; - } - } - public void OnWaiting() - { - if(IntervalCoroutines == null) return; - foreach(CoroutineHandle coroutine in IntervalCoroutines) - { - if(coroutine.IsRunning) Timing.KillCoroutines(coroutine); - IntervalCoroutines.Remove(coroutine); - } - } - public void OnVerified(VerifiedEventArgs ev) - { - if (config.JoinMessage.Duration > 0 && !config.JoinMessage.Message.IsEmpty()) - { - string message = config.JoinMessage.Message.Replace("%name%", ev.Player.Nickname); - ev.Player.Broadcast(config.JoinMessage.Duration, message, default, config.JoinMessage.OverrideBroadcasts); - }; - } - public void OnRespawningTeam(RespawningTeamEventArgs ev) - { - if (ev.NextKnownTeam == Respawning.SpawnableTeamType.ChaosInsurgency) - { - if(!config.ChaosAnnouncement.Message.IsEmpty()) Cassie.MessageTranslated(config.ChaosAnnouncement.Message, config.ChaosAnnouncement.Translation, default, default, config.ChaosAnnouncement.ShowSubtitles); - } - } - - public void OnSpawned(SpawnedEventArgs ev) - { - if(config.SpawnBroadcasts.ContainsKey(ev.Player.Role.Type)) - { - SpawningBroadcasts stuff = config.SpawnBroadcasts[ev.Player.Role.Type]; - if(stuff.UseHints) ev.Player.ShowHint(stuff.Message, stuff.Duration); - else ev.Player.Broadcast(stuff.Duration, stuff.Message, default, stuff.Override); - } - } - - IEnumerator Interval(int interval, BroadcastSystem broadcast) - { - while (Round.IsStarted) - { - Map.Broadcast(broadcast.Duration, broadcast.Message, default, broadcast.OverrideBroadcasts); - yield return Timing.WaitForSeconds(interval); - } - } - } -} \ No newline at end of file