100 lines
1.7 KiB
C++
100 lines
1.7 KiB
C++
#include "hooks.h"
|
||
|
||
cMouse g_Mouse;
|
||
|
||
void cMouse::Drag(bool& bDrag, bool bCheck, bool bDragCheck,int& x, int& y, int& xdif, int& ydif)
|
||
{
|
||
if(bCheck)
|
||
{
|
||
if(bDragCheck || (mouse1pressed && bDrag))
|
||
{
|
||
if(!bDrag)
|
||
bDrag = true;
|
||
|
||
if(xdif == -1 || ydif == -1)
|
||
{
|
||
xdif = mouse_x - x;
|
||
ydif = mouse_y - y;
|
||
}
|
||
|
||
x += mouse_x - (xdif + x);
|
||
y += mouse_y - (ydif + y);
|
||
}
|
||
else
|
||
{
|
||
if(bDrag)
|
||
bDrag = false;
|
||
|
||
xdif = -1;
|
||
ydif = -1;
|
||
}
|
||
}
|
||
}
|
||
|
||
bool cMouse::LeftClick(int x,int y,int w,int h)
|
||
{
|
||
return (mouse1pressed && IsOver(x,y,w,h));
|
||
}
|
||
|
||
bool cMouse::OneLeftClick(int x,int y,int w,int h)
|
||
{
|
||
return (mouse1released && IsOver(x,y,w,h));
|
||
}
|
||
|
||
bool cMouse::IsOver(int x,int y,int w,int h)
|
||
{
|
||
return (mouse_x > x && w+x > mouse_x && mouse_y > y && h+y > mouse_y);
|
||
}
|
||
|
||
void cMouse::Update()
|
||
{
|
||
int width, height;
|
||
pEngine->GetScreenSize(width, height);
|
||
|
||
static auto window = FindWindowA(0, "Valve001");
|
||
|
||
tagPOINT tp;
|
||
GetCursorPos(&tp);
|
||
|
||
LPPOINT pPoint = &tp;
|
||
ScreenToClient(window, pPoint);
|
||
|
||
mouse_x = pPoint->x;
|
||
mouse_y = pPoint->y;
|
||
|
||
if (mouse_x > width)
|
||
mouse_x = width;
|
||
|
||
if (mouse_x < 0)
|
||
mouse_x = 0;
|
||
|
||
if (mouse_y > height)
|
||
mouse_y = height;
|
||
|
||
if (mouse_y < 0)
|
||
mouse_y = 0;
|
||
|
||
if (GetAsyncKeyState(VK_LBUTTON))
|
||
mouse1pressed = true;
|
||
else if (!GetAsyncKeyState(VK_LBUTTON))
|
||
{
|
||
if (mouse1pressed)
|
||
mouse1released = true;
|
||
else
|
||
mouse1released = false;
|
||
|
||
mouse1pressed = false;
|
||
}
|
||
|
||
if (GetAsyncKeyState(VK_RBUTTON))
|
||
mouse2pressed = true;
|
||
else if (!GetAsyncKeyState(VK_RBUTTON))
|
||
{
|
||
if (mouse2pressed)
|
||
mouse2released = true;
|
||
else
|
||
mouse2released = false;
|
||
|
||
mouse2pressed = false;
|
||
}
|
||
} |