Lua: changed sleep() to wait() and waitbreak() that are now in seconds, and the last one returns early with a value of 1 if user hit esc. They allow delay of zero if you only want to poll keyboard/mouse and update mouse position. Added updatescreen(): It must be followed by wait() or waitbreak(), because of the double-buffer screen system. See the Sierpinski scripts for example usage.
git-svn-id: svn://pulkomandy.tk/GrafX2/trunk@1662 416bcca6-2ee7-4201-b75f-2eb2f807beb1
This commit is contained in:
parent
6e316937f4
commit
4fc9c2ef30
@ -949,21 +949,74 @@ int L_MessageBox(lua_State* L)
|
||||
return 0;
|
||||
}
|
||||
|
||||
int L_Sleep(lua_State* L)
|
||||
int L_Wait(lua_State* L)
|
||||
{
|
||||
int delay;
|
||||
float delay;
|
||||
Uint32 end;
|
||||
int nb_args=lua_gettop(L);
|
||||
|
||||
LUA_ARG_LIMIT (1, "sleep");
|
||||
LUA_ARG_NUMBER(1, "sleep", delay, 0, 10000);
|
||||
LUA_ARG_LIMIT (1, "wait");
|
||||
LUA_ARG_NUMBER(1, "wait", delay, 0.0, 10.0);
|
||||
|
||||
end = SDL_GetTicks()+delay;
|
||||
// Simple 'yield'
|
||||
if (delay == 0.0)
|
||||
{
|
||||
Get_input(0);
|
||||
return 0;
|
||||
}
|
||||
// Wait specified time
|
||||
end = SDL_GetTicks()+(int)(delay*1000.0);
|
||||
|
||||
do
|
||||
{
|
||||
Get_input(20);
|
||||
} while (SDL_GetTicks()<end);
|
||||
return 0;
|
||||
}
|
||||
|
||||
int L_Wait_break(lua_State* L)
|
||||
{
|
||||
float delay;
|
||||
Uint32 end;
|
||||
int nb_args=lua_gettop(L);
|
||||
|
||||
LUA_ARG_LIMIT (1, "waitbreak");
|
||||
LUA_ARG_NUMBER(1, "waitbreak", delay, 0.0, DBL_MAX);
|
||||
|
||||
// Simple 'yield'
|
||||
if (delay == 0.0)
|
||||
{
|
||||
Get_input(0);
|
||||
lua_pushinteger(L, (Key == KEY_ESC));
|
||||
return 1;
|
||||
}
|
||||
// Wait specified time
|
||||
end = SDL_GetTicks()+(int)(delay*1000.0);
|
||||
|
||||
do
|
||||
{
|
||||
Get_input(20);
|
||||
if (Key == KEY_ESC)
|
||||
{
|
||||
lua_pushinteger(L, 1);
|
||||
return 1;
|
||||
}
|
||||
} while (SDL_GetTicks()<end);
|
||||
|
||||
lua_pushinteger(L, 0);
|
||||
return 1;
|
||||
}
|
||||
|
||||
int L_Update_screen(lua_State* L)
|
||||
{
|
||||
int nb_args=lua_gettop(L);
|
||||
|
||||
LUA_ARG_LIMIT (0, "updatescreen");
|
||||
|
||||
Update_colors_during_script();
|
||||
Hide_cursor();
|
||||
Display_all_screen();
|
||||
Display_cursor();
|
||||
|
||||
return 0;
|
||||
}
|
||||
@ -1164,8 +1217,9 @@ void Run_script(char *scriptdir)
|
||||
lua_register(L,"getsparecolor",L_GetSpareColor);
|
||||
lua_register(L,"getsparetranscolor",L_GetSpareTransColor);
|
||||
lua_register(L,"clearpicture",L_ClearPicture);
|
||||
lua_register(L,"sleep",L_Sleep);
|
||||
|
||||
lua_register(L,"wait",L_Wait);
|
||||
lua_register(L,"waitbreak",L_Wait_break);
|
||||
lua_register(L,"updatescreen",L_Update_screen);
|
||||
|
||||
// For debug only
|
||||
luaL_openlibs(L);
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user