mirror of
https://github.com/cheat-engine/cheat-engine
synced 2026-08-15 02:26:08 -04:00
184 lines
5.4 KiB
ObjectPascal
Executable file
184 lines
5.4 KiB
ObjectPascal
Executable file
unit LuaProgressBar;
|
|
|
|
{$mode delphi}
|
|
|
|
interface
|
|
|
|
uses
|
|
Classes, SysUtils, lua, lualib, lauxlib, LuaHandler, ceguicomponents,
|
|
pluginexports, controls, ComCtrls, betterControls;
|
|
|
|
procedure initializeLuaProgressBar;
|
|
|
|
implementation
|
|
|
|
uses luaclass, LuaWinControl;
|
|
|
|
|
|
function createProgressBar(L: Plua_State): integer; cdecl;
|
|
var
|
|
ProgressBar: TProgressBar;
|
|
parameters: integer;
|
|
owner: TWincontrol;
|
|
begin
|
|
result:=0;
|
|
|
|
parameters:=lua_gettop(L);
|
|
if parameters>=1 then
|
|
owner:=lua_toceuserdata(L, -parameters)
|
|
else
|
|
owner:=nil;
|
|
|
|
lua_pop(L, lua_gettop(L));
|
|
|
|
|
|
ProgressBar:=TProgressBar.Create(owner);
|
|
if owner<>nil then
|
|
ProgressBar.Parent:=owner;
|
|
|
|
luaclass_newClass(L, ProgressBar);
|
|
result:=1;
|
|
end;
|
|
|
|
function progressbar_stepIt(L: Plua_State): integer; cdecl;
|
|
var progressbar: TCustomProgressBar;
|
|
begin
|
|
result:=0;
|
|
progressbar:=luaclass_getClassObject(L);
|
|
progressbar.StepIt;
|
|
end;
|
|
|
|
function progressbar_stepBy(L: Plua_State): integer; cdecl;
|
|
var
|
|
progressbar: TCustomProgressBar;
|
|
begin
|
|
result:=0;
|
|
progressbar:=luaclass_getClassObject(L);
|
|
if lua_gettop(L)>=1 then
|
|
progressbar.StepBy(lua_tointeger(L, -1));
|
|
end;
|
|
|
|
|
|
function progressbar_getMax(L: PLua_State): integer; cdecl;
|
|
var
|
|
progressbar: Tcustomprogressbar;
|
|
begin
|
|
progressbar:=luaclass_getClassObject(L);
|
|
lua_pushinteger(L, progressbar.Max);
|
|
result:=1;
|
|
end;
|
|
|
|
function progressbar_setMax(L: PLua_State): integer; cdecl;
|
|
var
|
|
progressbar: Tcustomprogressbar;
|
|
begin
|
|
result:=0;
|
|
progressbar:=luaclass_getClassObject(L);
|
|
if lua_gettop(l)>=1 then
|
|
progressbar.max:=lua_tointeger(L, -1);
|
|
end;
|
|
|
|
function progressbar_getMin(L: PLua_State): integer; cdecl;
|
|
var
|
|
progressbar: Tcustomprogressbar;
|
|
begin
|
|
progressbar:=luaclass_getClassObject(L);
|
|
lua_pushinteger(L, progressbar.Min);
|
|
result:=1;
|
|
end;
|
|
|
|
function progressbar_setMin(L: PLua_State): integer; cdecl;
|
|
var
|
|
progressbar: Tcustomprogressbar;
|
|
begin
|
|
result:=0;
|
|
progressbar:=luaclass_getClassObject(L);
|
|
if lua_gettop(l)>=1 then
|
|
progressbar.Min:=lua_tointeger(L, -1);
|
|
end;
|
|
|
|
function progressbar_getPosition(L: PLua_State): integer; cdecl;
|
|
var
|
|
progressbar: Tcustomprogressbar;
|
|
begin
|
|
progressbar:=luaclass_getClassObject(L);
|
|
lua_pushinteger(L, progressbar.Position);
|
|
result:=1;
|
|
end;
|
|
|
|
function progressbar_setPosition(L: PLua_State): integer; cdecl;
|
|
var
|
|
progressbar: Tcustomprogressbar;
|
|
begin
|
|
result:=0;
|
|
progressbar:=luaclass_getClassObject(L);
|
|
if lua_gettop(l)>=1 then
|
|
progressbar.Position:=lua_tointeger(L, -1);
|
|
end;
|
|
|
|
function progressbar_setPosition2(L: PLua_State): integer; cdecl;
|
|
var
|
|
progressbar: Tcustomprogressbar;
|
|
newPos: integer;
|
|
begin
|
|
result:=0;
|
|
progressbar:=luaclass_getClassObject(L);
|
|
if lua_gettop(l)>=1 then
|
|
begin
|
|
newPos:=lua_tointeger(L, -1);
|
|
if newPos>progressbar.Position then
|
|
begin
|
|
if newPos=progressbar.Max then
|
|
begin
|
|
progressbar.Max:=progressbar.Max+1;
|
|
progressbar.Position:=newPos+1;
|
|
progressbar.Position:=newPos;
|
|
progressbar.Max:=progressbar.Max-1;
|
|
end
|
|
else
|
|
begin
|
|
progressbar.Position:=newPos+1;
|
|
progressbar.Position:=newPos;
|
|
end;
|
|
end
|
|
else
|
|
progressbar.Position:=newPos;
|
|
end;
|
|
end;
|
|
|
|
procedure progressbar_addMetaData(L: PLua_state; metatable: integer; userdata: integer );
|
|
begin
|
|
wincontrol_addMetaData(L, metatable, userdata);
|
|
luaclass_addClassFunctionToTable(L, metatable, userdata, 'stepIt', progressbar_stepIt);
|
|
luaclass_addClassFunctionToTable(L, metatable, userdata, 'stepBy', progressbar_stepBy);
|
|
luaclass_addClassFunctionToTable(L, metatable, userdata, 'getMax', progressbar_getMax);
|
|
luaclass_addClassFunctionToTable(L, metatable, userdata, 'setMax', progressbar_setMax);
|
|
luaclass_addClassFunctionToTable(L, metatable, userdata, 'getMin', progressbar_getMin);
|
|
luaclass_addClassFunctionToTable(L, metatable, userdata, 'setMin', progressbar_setMin);
|
|
luaclass_addClassFunctionToTable(L, metatable, userdata, 'getPosition', progressbar_getPosition);
|
|
luaclass_addClassFunctionToTable(L, metatable, userdata, 'setPosition', progressbar_setPosition);
|
|
luaclass_addClassFunctionToTable(L, metatable, userdata, 'setPosition2', progressbar_setPosition2); // without slow progress animation on win7 and later
|
|
|
|
luaclass_addPropertyToTable(L, metatable, userdata, 'Min', progressbar_getMin, progressbar_setMin);
|
|
luaclass_addPropertyToTable(L, metatable, userdata, 'Max', progressbar_getMax, progressbar_setMax);
|
|
luaclass_addPropertyToTable(L, metatable, userdata, 'Position', progressbar_getPosition, progressbar_setPosition);
|
|
end;
|
|
|
|
procedure initializeLuaProgressBar;
|
|
begin
|
|
lua_register(LuaVM, 'createProgressBar', createProgressBar);
|
|
lua_register(LuaVM, 'progressbar_stepIt', progressbar_stepIt);
|
|
lua_register(LuaVM, 'progressbar_stepBy', progressbar_stepBy);
|
|
lua_register(LuaVM, 'progressbar_getMax', progressbar_getMax);
|
|
lua_register(LuaVM, 'progressbar_setMax', progressbar_setMax);
|
|
lua_register(LuaVM, 'progressbar_getMin', progressbar_getMin);
|
|
lua_register(LuaVM, 'progressbar_setMin', progressbar_setMin);
|
|
lua_register(LuaVM, 'progressbar_getPosition', progressbar_getPosition);
|
|
lua_register(LuaVM, 'progressbar_setPosition', progressbar_setPosition);
|
|
end;
|
|
|
|
initialization
|
|
luaclass_register(TCustomProgressBar, progressbar_addMetaData);
|
|
|
|
end.
|
|
|