fixed problems with the mouse movement. Closes #214

This commit is contained in:
oy 2010-10-13 12:47:42 +02:00
parent c828f7d725
commit e4fe7457c8
6 changed files with 13 additions and 15 deletions

View file

@ -48,7 +48,7 @@ void CInput::Init()
SDL_EnableKeyRepeat(SDL_DEFAULT_REPEAT_DELAY, SDL_DEFAULT_REPEAT_INTERVAL);
}
void CInput::MouseRelative(int *x, int *y)
void CInput::MouseRelative(float *x, float *y)
{
int nx = 0, ny = 0;
float Sens = g_Config.m_InpMousesens/100.0f;
@ -65,8 +65,8 @@ void CInput::MouseRelative(int *x, int *y)
}
}
*x = (int)(nx*Sens);
*y = (int)(ny*Sens);
*x = nx*Sens;
*y = ny*Sens;
}
void CInput::MouseModeAbsolute()

View file

@ -19,7 +19,7 @@ public:
virtual void Init();
virtual void MouseRelative(int *x, int *y);
virtual void MouseRelative(float *x, float *y);
virtual void MouseModeAbsolute();
virtual void MouseModeRelative();
virtual int MouseDoubleClick();

View file

@ -72,7 +72,7 @@ public:
virtual void MouseModeAbsolute() = 0;
virtual int MouseDoubleClick() = 0;
virtual void MouseRelative(int *x, int *y) = 0;
virtual void MouseRelative(float *x, float *y) = 0;
};

View file

@ -102,7 +102,7 @@ void CEmoticon::OnRender()
m_WasActive = true;
int x, y;
float x, y;
Input()->MouseRelative(&x, &y);
m_SelectorMouse.x += x;

View file

@ -304,9 +304,9 @@ void CGameClient::OnInit()
void CGameClient::DispatchInput()
{
// handle mouse movement
int x=0, y=0;
float x = 0.0f, y = 0.0f;
Input()->MouseRelative(&x, &y);
if(x || y)
if(x != 0.0f || y != 0.0f)
{
for(int h = 0; h < m_Input.m_Num; h++)
{

View file

@ -3194,8 +3194,8 @@ void CEditor::DoMapBorder()
void CEditor::UpdateAndRender()
{
static int s_MouseX = 0;
static int s_MouseY = 0;
static float s_MouseX = 0.0f;
static float s_MouseY = 0.0f;
if(m_Animate)
m_AnimateTime = (time_get()-m_AnimateStart)/(float)time_freq();
@ -3205,7 +3205,7 @@ void CEditor::UpdateAndRender()
// handle mouse movement
float mx, my, Mwx, Mwy;
int rx, ry;
float rx, ry;
{
Input()->MouseRelative(&rx, &ry);
m_MouseDeltaX = rx;
@ -3217,10 +3217,8 @@ void CEditor::UpdateAndRender()
s_MouseY += ry;
}
if(s_MouseX < 0) s_MouseX = 0;
if(s_MouseY < 0) s_MouseY = 0;
if(s_MouseX > UI()->Screen()->w) s_MouseX = (int)UI()->Screen()->w;
if(s_MouseY > UI()->Screen()->h) s_MouseY = (int)UI()->Screen()->h;
clamp(s_MouseX, 0.0f, UI()->Screen()->w);
clamp(s_MouseY, 0.0f, UI()->Screen()->h);
// update the ui
mx = s_MouseX;