hedgewars/uScript.pas
branchwebgl
changeset 9521 8054d9d775fd
parent 9264 21df1a0ec9ed
parent 9409 6564baf7dedf
child 9950 2759212a27de
equal deleted inserted replaced
9282:92af50454cf2 9521:8054d9d775fd
    56 {$IFDEF USE_LUA_SCRIPT}
    56 {$IFDEF USE_LUA_SCRIPT}
    57 
    57 
    58 uses LuaPas,
    58 uses LuaPas,
    59     uConsole,
    59     uConsole,
    60     uConsts,
    60     uConsts,
    61     uVisualGears,
       
    62     uGears,
    61     uGears,
    63     uGearsList,
    62     uGearsList,
    64     uGearsUtils,
    63     uGearsUtils,
    65     uFloat,
    64     uFloat,
    66     uWorld,
    65     uWorld,
    82     uTextures,
    81     uTextures,
    83     uLandGraphics,
    82     uLandGraphics,
    84     SDLh,
    83     SDLh,
    85     SysUtils,
    84     SysUtils,
    86     uIO,
    85     uIO,
    87     uPhysFSLayer
    86     uVisualGearsList,
    88 {$IFDEF PAS2C}, hwpacksmounter{$ENDIF}
    87     uGearsHandlersMess,
       
    88     uPhysFSLayer,
       
    89 {$IFDEF PAS2C}
       
    90     hwpacksmounter
       
    91 {$ELSE},
       
    92     typinfo
       
    93 {$ENDIF}
    89     ;
    94     ;
    90 
    95 
    91 var luaState : Plua_State;
    96 var luaState : Plua_State;
    92     ScriptAmmoLoadout : shortstring;
    97     ScriptAmmoLoadout : shortstring;
    93     ScriptAmmoProbability : shortstring;
    98     ScriptAmmoProbability : shortstring;
   229 
   234 
   230 function lc_enablegameflags(L : Plua_State) : LongInt; Cdecl;
   235 function lc_enablegameflags(L : Plua_State) : LongInt; Cdecl;
   231 var i : integer;
   236 var i : integer;
   232 begin
   237 begin
   233     for i:= 1 to lua_gettop(L) do
   238     for i:= 1 to lua_gettop(L) do
   234         if (GameFlags and lua_tointeger(L, i)) = 0 then
   239         GameFlags := GameFlags or LongWord(lua_tointeger(L, i));
   235             GameFlags := GameFlags + LongWord(lua_tointeger(L, i));
       
   236     ScriptSetInteger('GameFlags', GameFlags);
   240     ScriptSetInteger('GameFlags', GameFlags);
   237     lc_enablegameflags:= 0;
   241     lc_enablegameflags:= 0;
   238 end;
   242 end;
   239 
   243 
   240 function lc_disablegameflags(L : Plua_State) : LongInt; Cdecl;
   244 function lc_disablegameflags(L : Plua_State) : LongInt; Cdecl;
   241 var i : integer;
   245 var i : integer;
   242 begin
   246 begin
   243     for i:= 1 to lua_gettop(L) do
   247     for i:= 1 to lua_gettop(L) do
   244         if (GameFlags and lua_tointeger(L, i)) <> 0 then
   248         GameFlags := (GameFlags and (not (LongWord(lua_tointeger(L, i)))));
   245             GameFlags := GameFlags - LongWord(lua_tointeger(L, i));
       
   246     ScriptSetInteger('GameFlags', GameFlags);
   249     ScriptSetInteger('GameFlags', GameFlags);
   247     lc_disablegameflags:= 0;
   250     lc_disablegameflags:= 0;
   248 end;
   251 end;
   249 
   252 
   250 function lc_cleargameflags(L : Plua_State) : LongInt; Cdecl;
   253 function lc_cleargameflags(L : Plua_State) : LongInt; Cdecl;
  1488             if col then
  1491             if col then
  1489                 DeleteCI(gear);
  1492                 DeleteCI(gear);
  1490             gear^.X:= int2hwfloat(x);
  1493             gear^.X:= int2hwfloat(x);
  1491             gear^.Y:= int2hwfloat(y);
  1494             gear^.Y:= int2hwfloat(y);
  1492             if col then
  1495             if col then
  1493                 AddGearCI(gear);
  1496                 AddCI(gear);
  1494             SetAllToActive
  1497             SetAllToActive
  1495             end
  1498             end
  1496         end;
  1499         end;
  1497     lc_setgearposition:= 0
  1500     lc_setgearposition:= 0
  1498 end;
  1501 end;
  1892         lua_pushnil(L)
  1895         lua_pushnil(L)
  1893         end
  1896         end
  1894     else
  1897     else
  1895         ScriptLoad(lua_tostring(L, 1));
  1898         ScriptLoad(lua_tostring(L, 1));
  1896     lc_hedgewarsscriptload:= 0;
  1899     lc_hedgewarsscriptload:= 0;
       
  1900 end;
       
  1901 
       
  1902 
       
  1903 function lc_declareachievement(L : Plua_State) : LongInt; Cdecl;
       
  1904 var gear: PGear;
       
  1905 begin
       
  1906     if lua_gettop(L) <> 4 then
       
  1907         LuaError('Lua: Wrong number of parameters passed to DeclareAchievement!')
       
  1908     else
       
  1909         declareAchievement(lua_tostring(L, 1), lua_tostring(L, 2), lua_tostring(L, 3), lua_tointeger(L, 4));
       
  1910     lc_declareachievement:= 0
  1897 end;
  1911 end;
  1898 ///////////////////
  1912 ///////////////////
  1899 
  1913 
  1900 procedure ScriptPrintStack;
  1914 procedure ScriptPrintStack;
  1901 var n, i : LongInt;
  1915 var n, i : LongInt;
  2342 ScriptSetInteger('gfResetWeps', gfResetWeps);
  2356 ScriptSetInteger('gfResetWeps', gfResetWeps);
  2343 ScriptSetInteger('gfPerHogAmmo', gfPerHogAmmo);
  2357 ScriptSetInteger('gfPerHogAmmo', gfPerHogAmmo);
  2344 ScriptSetInteger('gfDisableWind', gfDisableWind);
  2358 ScriptSetInteger('gfDisableWind', gfDisableWind);
  2345 ScriptSetInteger('gfMoreWind', gfMoreWind);
  2359 ScriptSetInteger('gfMoreWind', gfMoreWind);
  2346 ScriptSetInteger('gfTagTeam', gfTagTeam);
  2360 ScriptSetInteger('gfTagTeam', gfTagTeam);
       
  2361 ScriptSetInteger('gfShoppaBorder', gfShoppaBorder);
  2347 
  2362 
  2348 ScriptSetInteger('gmLeft', gmLeft);
  2363 ScriptSetInteger('gmLeft', gmLeft);
  2349 ScriptSetInteger('gmRight', gmRight);
  2364 ScriptSetInteger('gmRight', gmRight);
  2350 ScriptSetInteger('gmUp', gmUp);
  2365 ScriptSetInteger('gmUp', gmUp);
  2351 ScriptSetInteger('gmDown', gmDown);
  2366 ScriptSetInteger('gmDown', gmDown);
  2511 lua_register(luaState, _P'GetCurAmmoType', @lc_getcurammotype);
  2526 lua_register(luaState, _P'GetCurAmmoType', @lc_getcurammotype);
  2512 lua_register(luaState, _P'TestRectForObstacle', @lc_testrectforobstacle);
  2527 lua_register(luaState, _P'TestRectForObstacle', @lc_testrectforobstacle);
  2513 
  2528 
  2514 lua_register(luaState, _P'SetGearAIHints', @lc_setaihintsongear);
  2529 lua_register(luaState, _P'SetGearAIHints', @lc_setaihintsongear);
  2515 lua_register(luaState, _P'HedgewarsScriptLoad', @lc_hedgewarsscriptload);
  2530 lua_register(luaState, _P'HedgewarsScriptLoad', @lc_hedgewarsscriptload);
       
  2531 lua_register(luaState, _P'DeclareAchievement', @lc_declareachievement);
  2516 
  2532 
  2517 
  2533 
  2518 ScriptClearStack; // just to be sure stack is empty
  2534 ScriptClearStack; // just to be sure stack is empty
  2519 ScriptLoaded:= false;
  2535 ScriptLoaded:= false;
  2520 end;
  2536 end;