void resetProgram(void) { char *initscript = "keyboard={}; keyboard['pressed']={};" "mouse={}; mouse['pressed']={};" "sprites={}"; l81.epoch = 0; if (l81.L) lua_close(l81.L); l81.L = lua_open(); luaopen_base(l81.L); luaopen_table(l81.L); luaopen_string(l81.L); luaopen_math(l81.L); luaopen_debug(l81.L); setNumber("WIDTH",l81.width); setNumber("HEIGHT",l81.height); luaL_loadbuffer(l81.L,initscript,strlen(initscript),"initscript"); lua_pcall(l81.L,0,0,0); /* Make sure that mouse parameters make sense even before the first * mouse event captured by SDL */ setTableFieldNumber("mouse","x",0); setTableFieldNumber("mouse","y",0); setTableFieldNumber("mouse","xrel",0); setTableFieldNumber("mouse","yrel",0); /* Register API */ lua_pushcfunction(l81.L,fillBinding); lua_setglobal(l81.L,"fill"); lua_pushcfunction(l81.L,filledBinding); lua_setglobal(l81.L,"filled"); lua_pushcfunction(l81.L,rectBinding); lua_setglobal(l81.L,"rect"); lua_pushcfunction(l81.L,ellipseBinding); lua_setglobal(l81.L,"ellipse"); lua_pushcfunction(l81.L,backgroundBinding); lua_setglobal(l81.L,"background"); lua_pushcfunction(l81.L,triangleBinding); lua_setglobal(l81.L,"triangle"); lua_pushcfunction(l81.L,lineBinding); lua_setglobal(l81.L,"line"); lua_pushcfunction(l81.L,textBinding); lua_setglobal(l81.L,"text"); lua_pushcfunction(l81.L,setFPSBinding); lua_setglobal(l81.L,"setFPS"); lua_pushcfunction(l81.L,getpixelBinding); lua_setglobal(l81.L,"getpixel"); lua_pushcfunction(l81.L,spriteBinding); lua_setglobal(l81.L,"sprite"); lua_pushcfunction(l81.L,polygonBinding); lua_setglobal(l81.L,"polygon"); initSpriteEngine(l81.L); /* Start with a black screen */ fillBackground(l81.fb,0,0,0); }
void mouseMovedEvent(int x, int y, int xrel, int yrel) { setTableFieldNumber("mouse","x",x); setTableFieldNumber("mouse","y",l81.height-1-y); setTableFieldNumber("mouse","xrel",xrel); setTableFieldNumber("mouse","yrel",-yrel); }