/
antim
/
LuaPlayer-by-YuliaTeam
Обзор
Документация
Войти
/
antim
/
LuaPlayer-by-YuliaTeam
Код
Задачи
Вики
Пакеты
0
Релизы
0
Аналитика
Безопасность
main
lua/timer.c
175 строк
7 KB
antim0118
Заменил заголовки файлов
25 фев 2026, 22:25
25 фев 2026, 22:25
842b6c8
Код
Авторство
О чём код?
/*-----------------------------------------------------------------------------------------------------------------------# #------------- This file is part of: ------------------------------------------------------------------------------------# #---█████----------------------------███████████--████------------------------------------------█████-█████-███████████--# #--░░███----------------------------░░███░░░░░███░░███-----------------------------------------░░███-░░███-░█░░░███░░░█--# #---░███--------█████-████--██████---░███----░███-░███---██████---█████-████--██████--████████--░░███-███--░---░███--░---# #---░███-------░░███-░███--░░░░░███--░██████████--░███--░░░░░███-░░███-░███--███░░███░░███░░███--░░█████-------░███------# #---░███--------░███-░███---███████--░███░░░░░░---░███---███████--░███-░███-░███████--░███-░░░----░░███--------░███------# #---░███------█-░███-░███--███░░███--░███---------░███--███░░███--░███-░███-░███░░░---░███---------░███--------░███------# #---███████████-░░████████░░████████-█████--------█████░░████████-░░███████-░░██████--█████--------█████-------█████-----# #--░░░░░░░░░░░---░░░░░░░░--░░░░░░░░-░░░░░--------░░░░░--░░░░░░░░---░░░░░███--░░░░░░--░░░░░--------░░░░░-------░░░░░------# #------------------------------------------------------------------███-░███----------------------------------------------# #-----------------------------------------------------------------░░██████-----------------------------------------------# #------------------------------------------------------------------░░░░░░------------------------------------------------# #------------------------------------------------------------------------------------ Made by Kodilo --------------------# #- Special Thanks to: ---------------------------------------------------------------------------------------------------# #------------------------------------------------------------------------------------------------------------------------# #- BenHur for intraFont -------------------------------------------------------------------------------------------------# #- Geecko for gLib2D ----------------------------------------------------------------------------------------------------# #- Arshia001 for PSPAALIB -----------------------------------------------------------------------------------------------# #- jonny & Raphael for PMP Mod ------------------------------------------------------------------------------------------# #- InsertWittyName & MK2k for PGE source code ---------------------------------------------------------------------------# #- Rinnegatamante & Nanni for example of awesome Lua Player -------------------------------------------------------------# #-----------------------------------------------------------------------------------------------------------------------*/ #include "timer.h" UserdataStubs(Timer, LUA_timer *); clock_t getCMs(void) { return clock() / (u64)(CLOCKS_PER_SEC / 1000); } LUA_timer *TIMER_CREATE() { LUA_timer *newTimer = (LUA_timer *)malloc(sizeof(LUA_timer)); if (!newTimer) { return NULL; } newTimer->measuredTime = getCMs(); newTimer->offset = 0; return newTimer; } float TIMER_START(LUA_timer *timer) { if (timer->measuredTime) return (getCMs() - timer->measuredTime + timer->offset); else { timer->measuredTime = getCMs(); return timer->offset; } } float TIMER_TIME(LUA_timer *timer) { if (timer->measuredTime) return (getCMs() - timer->measuredTime + timer->offset); else return timer->offset; } float TIMER_STOP(LUA_timer *timer) { if (timer->measuredTime) { timer->offset = getCMs() - timer->measuredTime + timer->offset; timer->measuredTime = (0); } return timer->offset; } float TIMER_RESET(LUA_timer *timer) { clock_t ret = 0; if (timer->measuredTime) ret = getCMs() - timer->measuredTime + timer->offset; else ret = timer->offset; timer->offset = 0; timer->measuredTime = 0; return ret; } int TIMER_REMOVE(LUA_timer **timer) { if (*timer) { free(*timer); *timer = NULL; } return 0; } static int luaTIMER_create(lua_State *L) { if (lua_gettop(L) != 0) { return luaL_error(L, "timer.create() takes no arguments"); } LUA_timer *tm = TIMER_CREATE(); if (!tm) return luaL_error(L, "timer.create() error creating timer"); *pushTimer(L) = tm; return 1; } static int luaTIMER_start(lua_State *L) { if (lua_gettop(L) != 1) return luaL_error(L, "timer.start(timered) takes 1 argument"); LUA_timer *tm = *toTimer(L, 1); lua_pushnumber(L, TIMER_START(tm)); return 1; } static int luaTIMER_time(lua_State *L) { if (lua_gettop(L) != 1) return luaL_error(L, "timer.time(timered) takes 1 argument"); LUA_timer *tm = *toTimer(L, 1); lua_pushnumber(L, TIMER_TIME(tm)); return 1; } static int luaTIMER_stop(lua_State *L) { if (lua_gettop(L) != 1) return luaL_error(L, "timer.stop(timered) takes 1 argument"); LUA_timer *tm = *toTimer(L, 1); lua_pushnumber(L, TIMER_STOP(tm)); return 1; } static int luaTIMER_reset(lua_State *L) { if (lua_gettop(L) != 1) return luaL_error(L, "timer.reset(timered) takes 1 argument"); LUA_timer *tm = *toTimer(L, 1); lua_pushnumber(L, TIMER_RESET(tm)); return 1; } static int luaTIMER_remove(lua_State *L) { if (lua_gettop(L) != 1) return luaL_error(L, "timer.remove(timered) takes 1 argument"); TIMER_REMOVE(toTimer(L, 1)); return 0; } static const luaL_Reg TIMER_methods[] = { {"create", luaTIMER_create}, {"start", luaTIMER_start}, {"time", luaTIMER_time}, {"stop", luaTIMER_stop}, {"reset", luaTIMER_reset}, {"remove", luaTIMER_remove}, {0, 0} }; int TIMER_init(lua_State *L) { luaL_register(L, "timer", TIMER_methods); return 0; }