/// <summary> /// Control <see cref="State"/> based on mouse input. /// </summary> private bool ProcessMouseMessage(MouseMessage mouseMessage) { if (mouseMessage == MouseMessage.WM_LBUTTONUP) { // left mouse up lock (StateLock) { // no matter what state it was before, we just released left mouse, therefore get to idle state State = AimBotState.Up; } return(true); } if (mouseMessage == MouseMessage.WM_LBUTTONDOWN) { if (!GameProcess.IsValid || !GameData.Player.IsAlive() || TriggerBot.IsHotKeyDown()) { return(true); } // left mouse down lock (StateLock) { if (State == AimBotState.Up) { // change state and signal to not call CallNextHookEx (stop this left mouse down) State = AimBotState.DownSuppressed; return(false); } } } return(true); }
/// <summary> /// Try release suppressed mouse down. /// </summary> private bool TryMouseDown() { var mouseDown = false; lock (StateLock) { if (State == AimBotState.DownSuppressed) { mouseDown = true; State = AimBotState.Down; } } if (mouseDown) { U.MouseLeftDown(); } return(mouseDown); }