added mousebutton_{up/down} and mouse_motion events, renamed "pressed" to "down" and "released" to "up" in event names

git-svn-id: svn://anubis/anaglym/trunk@112 99a6e188-d820-4881-8870-2d33a10e2619
This commit is contained in:
Josh Holtrop 2009-10-19 21:50:53 +00:00
parent bd4eab495c
commit 66e8b9c015
4 changed files with 38 additions and 38 deletions

View File

@ -51,10 +51,10 @@ Engine::Engine(const string & path)
userEvent.user.code = 0; userEvent.user.code = 0;
m_event_update_present = false; m_event_update_present = false;
m_event_key_pressed_present = false; m_event_key_down_present = false;
m_event_key_released_present = false; m_event_key_up_present = false;
m_event_mousebutton_pressed_present = false; m_event_mousebutton_down_present = false;
m_event_mousebutton_released_present = false; m_event_mousebutton_up_present = false;
m_event_mouse_motion_present = false; m_event_mouse_motion_present = false;
} }
@ -102,10 +102,10 @@ bool Engine::load(const char * program)
} }
checkForFunction("update_event", update); checkForFunction("update_event", update);
checkForFunction("key_pressed_event", key_pressed); checkForFunction("key_down_event", key_down);
checkForFunction("key_released_event", key_released); checkForFunction("key_up_event", key_up);
checkForFunction("mousebutton_pressed_event", mousebutton_pressed); checkForFunction("mousebutton_down_event", mousebutton_down);
checkForFunction("mousebutton_released_event", mousebutton_released); checkForFunction("mousebutton_up_event", mousebutton_up);
checkForFunction("mouse_motion_event", mouse_motion); checkForFunction("mouse_motion_event", mouse_motion);
return true; return true;
@ -316,17 +316,17 @@ void Engine::run()
{ {
goto RET; goto RET;
} }
key_pressed_event(event.key.keysym.sym); key_down_event(event.key.keysym.sym);
break; break;
case SDL_KEYUP: case SDL_KEYUP:
key_released_event(event.key.keysym.sym); key_up_event(event.key.keysym.sym);
break; break;
case SDL_MOUSEBUTTONDOWN: case SDL_MOUSEBUTTONDOWN:
mousebutton_pressed_event(event.button.button, mousebutton_down_event(event.button.button,
event.button.x, event.button.y); event.button.x, event.button.y);
break; break;
case SDL_MOUSEBUTTONUP: case SDL_MOUSEBUTTONUP:
mousebutton_released_event(event.button.button, mousebutton_up_event(event.button.button,
event.button.x, event.button.y); event.button.x, event.button.y);
break; break;
case SDL_MOUSEMOTION: case SDL_MOUSEMOTION:
@ -370,62 +370,62 @@ void Engine::update_event()
m_drawing = false; m_drawing = false;
} }
void Engine::key_pressed_event(int keysym) void Engine::key_down_event(int keysym)
{ {
m_keysDown[sdl_keymap[keysym]] = true; m_keysDown[sdl_keymap[keysym]] = true;
if (m_event_key_pressed_present) if (m_event_key_down_present)
{ {
lua_getfield(m_luaState, LUA_GLOBALSINDEX, lua_getfield(m_luaState, LUA_GLOBALSINDEX,
AG_EVENT_PREFIX "key_pressed"); AG_EVENT_PREFIX "key_down");
lua_pushstring(m_luaState, sdl_keymap[keysym]); lua_pushstring(m_luaState, sdl_keymap[keysym]);
/* call the key pressed event function /* call the key down event function
* This pops the function ref and arguments from the stack */ * This pops the function ref and arguments from the stack */
int s = lua_pcall(m_luaState, 1, LUA_MULTRET, 0); int s = lua_pcall(m_luaState, 1, LUA_MULTRET, 0);
reportErrors(s); reportErrors(s);
} }
} }
void Engine::key_released_event(int keysym) void Engine::key_up_event(int keysym)
{ {
m_keysDown.erase(sdl_keymap[keysym]); m_keysDown.erase(sdl_keymap[keysym]);
if (m_event_key_pressed_present) if (m_event_key_up_present)
{ {
lua_getfield(m_luaState, LUA_GLOBALSINDEX, lua_getfield(m_luaState, LUA_GLOBALSINDEX,
AG_EVENT_PREFIX "key_released"); AG_EVENT_PREFIX "key_up");
lua_pushstring(m_luaState, sdl_keymap[keysym]); lua_pushstring(m_luaState, sdl_keymap[keysym]);
/* call the key released event function /* call the key up event function
* This pops the function ref and arguments from the stack */ * This pops the function ref and arguments from the stack */
int s = lua_pcall(m_luaState, 1, LUA_MULTRET, 0); int s = lua_pcall(m_luaState, 1, LUA_MULTRET, 0);
reportErrors(s); reportErrors(s);
} }
} }
void Engine::mousebutton_pressed_event(int button, int x, int y) void Engine::mousebutton_down_event(int button, int x, int y)
{ {
if (m_event_mousebutton_pressed_present) if (m_event_mousebutton_down_present)
{ {
lua_getfield(m_luaState, LUA_GLOBALSINDEX, lua_getfield(m_luaState, LUA_GLOBALSINDEX,
AG_EVENT_PREFIX "mousebutton_pressed"); AG_EVENT_PREFIX "mousebutton_down");
lua_pushinteger(m_luaState, button); lua_pushinteger(m_luaState, button);
lua_pushnumber(m_luaState, x); lua_pushnumber(m_luaState, x);
lua_pushnumber(m_luaState, y); lua_pushnumber(m_luaState, y);
/* call the mouse button pressed event function /* call the mouse button down event function
* This pops the function ref and arguments from the stack */ * This pops the function ref and arguments from the stack */
int s = lua_pcall(m_luaState, 3, LUA_MULTRET, 0); int s = lua_pcall(m_luaState, 3, LUA_MULTRET, 0);
reportErrors(s); reportErrors(s);
} }
} }
void Engine::mousebutton_released_event(int button, int x, int y) void Engine::mousebutton_up_event(int button, int x, int y)
{ {
if (m_event_mousebutton_released_present) if (m_event_mousebutton_up_present)
{ {
lua_getfield(m_luaState, LUA_GLOBALSINDEX, lua_getfield(m_luaState, LUA_GLOBALSINDEX,
AG_EVENT_PREFIX "mousebutton_released"); AG_EVENT_PREFIX "mousebutton_up");
lua_pushinteger(m_luaState, button); lua_pushinteger(m_luaState, button);
lua_pushnumber(m_luaState, x); lua_pushnumber(m_luaState, x);
lua_pushnumber(m_luaState, y); lua_pushnumber(m_luaState, y);
/* call the mouse button released event function /* call the mouse button up event function
* This pops the function ref and arguments from the stack */ * This pops the function ref and arguments from the stack */
int s = lua_pcall(m_luaState, 3, LUA_MULTRET, 0); int s = lua_pcall(m_luaState, 3, LUA_MULTRET, 0);
reportErrors(s); reportErrors(s);

View File

@ -117,10 +117,10 @@ class Engine
void registerLibraries(); void registerLibraries();
bool fileExists(const std::string & path); bool fileExists(const std::string & path);
void update_event(); void update_event();
void key_pressed_event(int keysym); void key_down_event(int keysym);
void key_released_event(int keysym); void key_up_event(int keysym);
void mousebutton_pressed_event(int button, int x, int y); void mousebutton_down_event(int button, int x, int y);
void mousebutton_released_event(int button, int x, int y); void mousebutton_up_event(int button, int x, int y);
void mouse_motion_event(int x, int y, int xrel, int yrel); void mouse_motion_event(int x, int y, int xrel, int yrel);
Object * createObject(bool is_static, GLuint display_list, Object * createObject(bool is_static, GLuint display_list,
float scale = 1.0f) float scale = 1.0f)
@ -149,10 +149,10 @@ class Engine
std::map<std::string, bool> m_keysDown; std::map<std::string, bool> m_keysDown;
bool m_event_update_present; bool m_event_update_present;
bool m_event_key_pressed_present; bool m_event_key_down_present;
bool m_event_key_released_present; bool m_event_key_up_present;
bool m_event_mousebutton_pressed_present; bool m_event_mousebutton_down_present;
bool m_event_mousebutton_released_present; bool m_event_mousebutton_up_present;
bool m_event_mouse_motion_present; bool m_event_mouse_motion_present;
}; };

View File

@ -7,7 +7,7 @@ function update_event()
end end
end end
function key_pressed_event(key) function key_down_event(key)
if (key == "d") then if (key == "d") then
ball2:destroy() ball2:destroy()
elseif (key == "p") then elseif (key == "p") then

View File

@ -21,7 +21,7 @@ ground = ag.loadStaticModel("crate", 10)
ground:setPosition(0, 0, -10) ground:setPosition(0, 0, -10)
ag.setCamera(2, -12, 8, 0, 0, 2, 0, 0, 1) ag.setCamera(2, -12, 8, 0, 0, 2, 0, 0, 1)
function key_pressed_event(key) function key_down_event(key)
if (key == "d") then if (key == "d") then
if (cratenum >= 1) then if (cratenum >= 1) then
local idx = math.random(cratenum) local idx = math.random(cratenum)