-
Notifications
You must be signed in to change notification settings - Fork 1
/
gbutton.cpp
82 lines (69 loc) · 1.25 KB
/
gbutton.cpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
#include "Gbuttons.h"
#include <iostream>
LButton::LButton()
{
mPosition.x = 0;
mPosition.y = 0;
show=false;
press=false;
}
void LButton::setPosition( int x, int y )
{
mPosition.x = x;
mPosition.y = y;
}
void LButton::handleEvent( SDL_Event* e )
{
//If mouse event happened
if( e->type == SDL_MOUSEMOTION || e->type == SDL_MOUSEBUTTONDOWN || e->type == SDL_MOUSEBUTTONUP )
{
//Get mouse position
int x, y;
SDL_GetMouseState( &x, &y );
//Check if mouse is in button
bool inside = true;
//Mouse is left of the button
if( x < mPosition.x )
{
inside = false;
}
//Mouse is right of the button
else if( x > mPosition.x + BUTTON_WIDTH )
{
inside = false;
}
//Mouse above the button
else if( y < mPosition.y )
{
inside = false;
}
//Mouse below the button
else if( y > mPosition.y + BUTTON_HEIGHT )
{
inside = false;
}
//Mouse is outside button
if( !inside )
{
show=false;//mCurrentSprite = BUTTON_SPRITE_DEFAULT;
}
//Mouse is inside button
else
{
//Set mouse over sprite
switch( e->type )
{
case SDL_MOUSEMOTION:
show=true;
break;
case SDL_MOUSEBUTTONDOWN:
press=true;
break;
}
}
}
}
void LButton::render()
{
mCurrentsurface.render(0,0);
}