Pass mouse coordinates (mousex, mousey, mouseb, mousebq) and Lua click handling

This commit is contained in:
Simon Robertshaw 2011-05-31 18:38:13 +01:00
parent 2327d9678d
commit 2c8c4bc567
4 changed files with 22 additions and 12 deletions

View File

@ -9,4 +9,6 @@ function do_step()
increment = 2 increment = 2
end end
tpt.drawtext(numberthing, 50, "Oh my god, this is amazing", 255, 255, 255, 255) tpt.drawtext(numberthing, 50, "Oh my god, this is amazing", 255, 255, 255, 255)
tpt.drawtext(mousex, mousey, "Oh my god, this is amazing", 255, 255, 255, 255)
return true
end end

View File

@ -6,7 +6,7 @@
#include <defines.h> #include <defines.h>
void luacon_open(); void luacon_open();
int luacon_step(); int luacon_step(int mx, int my, int mb, int mbq, char key);
int luacon_keypress(char key); int luacon_keypress(char key);
int luacon_eval(char *command); int luacon_eval(char *command);
char *luacon_geterror(); char *luacon_geterror();

View File

@ -34,17 +34,23 @@ void luacon_open(){
luaL_openlibs(l); luaL_openlibs(l);
luaL_openlib(l, "tpt", tptluaapi, 0); luaL_openlib(l, "tpt", tptluaapi, 0);
} }
int luacon_step(){ int luacon_step(int mx, int my, int mb, int mbq, char key){
if(step_function && step_function[0]){ if(step_function && step_function[0]){
//Set mouse globals
lua_pushinteger(l, mbq);
lua_pushinteger(l, mb);
lua_pushinteger(l, my);
lua_pushinteger(l, mx);
lua_setfield(l, LUA_GLOBALSINDEX, "mousex");
lua_setfield(l, LUA_GLOBALSINDEX, "mousey");
lua_setfield(l, LUA_GLOBALSINDEX, "mouseb");
lua_setfield(l, LUA_GLOBALSINDEX, "mousebq");
lua_getfield(l, LUA_GLOBALSINDEX, step_function); lua_getfield(l, LUA_GLOBALSINDEX, step_function);
lua_call(l, 0, 0); lua_call(l, 0, 0);
return lua_toboolean(l, -1);
} }
return 0; return 0;
} }
int luacon_keypress(char key){
//Nothing here yet
return 0;
}
int luacon_eval(char *command){ int luacon_eval(char *command){
return luaL_dostring (l, command); return luaL_dostring (l, command);
} }

View File

@ -2372,9 +2372,9 @@ int main(int argc, char *argv[])
} }
} }
} }
#ifdef LUACONSOLE //#ifdef LUACONSOLE
luacon_keypress(sdl_key); //luacon_keypress(sdl_key);
#endif //#endif
#ifdef PYCONSOLE #ifdef PYCONSOLE
if (pyready==1 && pygood==1) if (pyready==1 && pygood==1)
if (pkey!=NULL && sdl_key!=NULL) if (pkey!=NULL && sdl_key!=NULL)
@ -2466,6 +2466,11 @@ int main(int argc, char *argv[])
bq = b; // bq is previous mouse state bq = b; // bq is previous mouse state
b = SDL_GetMouseState(&x, &y); // b is current mouse state b = SDL_GetMouseState(&x, &y); // b is current mouse state
#ifdef LUACONSOLE
if(luacon_step(x, y, b, bq, sdl_key))
b = 0; //Mouse click was handled by Lua step
#endif
for (i=0; i<SC_TOTAL; i++)//draw all the menu sections for (i=0; i<SC_TOTAL; i++)//draw all the menu sections
{ {
draw_menu(vid_buf, i, active_menu); draw_menu(vid_buf, i, active_menu);
@ -3372,9 +3377,6 @@ int main(int argc, char *argv[])
} }
//execute python step hook //execute python step hook
#ifdef LUACONSOLE
luacon_step();
#endif
#ifdef PYCONSOLE #ifdef PYCONSOLE
if (pyready==1 && pygood==1) if (pyready==1 && pygood==1)
if (pstep!=NULL) if (pstep!=NULL)