-
negative coordinates?
I'm working on a breakout game and i want the paddle to follow the mouse
It works from the left side of the client area to the far right of the screen but when i go over the left side of the client area, i expected it to return a negative value and the paddle keeps moving left but instead, i get some coordinate like (32070, 32389) and it goes right
i tried adding m.x < 5000 but for some reason, that doesn't work
Heres the function that moves the paddle and the function i use to get the mouse inputs
Code:
void C_Paddle::Paddle_Movement()
{
POINT m = Input.Get_Mouse();
RECT ClientRect;
GetClientRect(g_hwnd, &ClientRect);
if ((Paddle_Rect.left + Paddle_Size/2) < m.x && m.x < 5000)
{
Paddle_Rect.left++;
Paddle_Rect.right = Paddle_Rect.left + Paddle_Size;
}
if ((Paddle_Rect.left + Paddle_Size/2) > m.x)
{
Paddle_Rect.left--;
Paddle_Rect.right = Paddle_Rect.left + Paddle_Size;
}
}
Code:
void C_Input::Set_Mouse()
{
GetCursorPos(&Mouse);
ScreenToClient(g_hwnd, &Mouse);
}
POINT Get_Mouse() { return Mouse; }
Set_Mouse is constantly called in the main loop, would it be better practice to only call it from the wndproc?
[edit] What brush does the Ellipse function use?
[edit2] Why didn't i get any warnings when trying to access a private member?
-
Do you have variable overflow (or underflow) occurring (i.e. 0 minus 1 gives 65535)? I'm not familiar with mouse usage so I can't help you there.
-
Well, the mouse goes out the left side so i suppose so
it should give me a negative x position but y goes up to 32xxx too
are the members of POINT unsigned?
-
Point, according to the Platform SDK, is a long variable type. I think the problem is that the mouse cursor position is based on the window's position. What you need is to base it on the position on the screen rather than the window.
-
>>What you need is to base it on the position on the screen rather than the window.
I already have that
ScreenToClient(g_hwnd, &Mouse);
-
i found my mistake
Paddle_Size was an UINT
i changed it to an int and it works fine now =)
-
You should probably have it as the "long" variable type since that's what "POINT" actually uses.