hedgewars/uScript.pas
changeset 10603 bda5c7caf396
parent 10589 98ea597e5cd9
child 10611 58cad46782ff
equal deleted inserted replaced
10602:1ec0268f28af 10603:bda5c7caf396
   303         LuaCallError('Invalid sprite id!', call, paramsyntax);
   303         LuaCallError('Invalid sprite id!', call, paramsyntax);
   304         LuaToSpriteOrd:= -1;
   304         LuaToSpriteOrd:= -1;
   305         end
   305         end
   306     else
   306     else
   307         LuaToSpriteOrd:= i;
   307         LuaToSpriteOrd:= i;
       
   308 end;
       
   309 
       
   310 function LuaToMapGenOrd(L : Plua_State; i: LongInt; call, paramsyntax: shortstring): LongInt; inline;
       
   311 begin
       
   312     if lua_isnoneornil(L, i) then i:= -1
       
   313     else i:= lua_tointeger(L, i);
       
   314     if (i < ord(Low(TMapGen))) or (i > ord(High(TMapGen))) then
       
   315         begin
       
   316         LuaCallError('Invalid mapgen id!', call, paramsyntax);
       
   317         LuaToMapGenOrd:= -1;
       
   318         end
       
   319     else
       
   320         LuaToMapGenOrd:= i;
   308 end;
   321 end;
   309 
   322 
   310 // wrapped calls //
   323 // wrapped calls //
   311 
   324 
   312 // functions called from Lua:
   325 // functions called from Lua:
  2311     exit;
  2324     exit;
  2312 
  2325 
  2313 ScriptSetString('Seed', cSeed);
  2326 ScriptSetString('Seed', cSeed);
  2314 ScriptSetInteger('TemplateFilter', cTemplateFilter);
  2327 ScriptSetInteger('TemplateFilter', cTemplateFilter);
  2315 ScriptSetInteger('TemplateNumber', LuaTemplateNumber);
  2328 ScriptSetInteger('TemplateNumber', LuaTemplateNumber);
  2316 ScriptSetInteger('MapGen', cMapGen);
  2329 ScriptSetInteger('MapGen', ord(cMapGen));
  2317 
  2330 
  2318 ScriptCall('onPreviewInit');
  2331 ScriptCall('onPreviewInit');
  2319 
  2332 
  2320 // pop game variables
  2333 // pop game variables
  2321 ParseCommand('seed ' + ScriptGetString('Seed'), true, true);
  2334 ParseCommand('seed ' + ScriptGetString('Seed'), true, true);
  2322 cTemplateFilter  := ScriptGetInteger('TemplateFilter');
  2335 cTemplateFilter  := ScriptGetInteger('TemplateFilter');
  2323 LuaTemplateNumber:= ScriptGetInteger('TemplateNumber');
  2336 LuaTemplateNumber:= ScriptGetInteger('TemplateNumber');
  2324 cMapGen          := ScriptGetInteger('MapGen');
  2337 cMapGen          := TMapGen(ScriptGetInteger('MapGen'));
  2325 end;
  2338 end;
  2326 
  2339 
  2327 procedure ScriptOnGameInit;
  2340 procedure ScriptOnGameInit;
  2328 var i, j, k: LongInt;
  2341 var i, j, k: LongInt;
  2329 begin
  2342 begin
  2335 ScriptSetInteger('BorderColor', ExplosionBorderColor);
  2348 ScriptSetInteger('BorderColor', ExplosionBorderColor);
  2336 ScriptSetInteger('GameFlags', GameFlags);
  2349 ScriptSetInteger('GameFlags', GameFlags);
  2337 ScriptSetString('Seed', cSeed);
  2350 ScriptSetString('Seed', cSeed);
  2338 ScriptSetInteger('TemplateFilter', cTemplateFilter);
  2351 ScriptSetInteger('TemplateFilter', cTemplateFilter);
  2339 ScriptSetInteger('TemplateNumber', LuaTemplateNumber);
  2352 ScriptSetInteger('TemplateNumber', LuaTemplateNumber);
  2340 ScriptSetInteger('MapGen', cMapGen);
  2353 ScriptSetInteger('MapGen', ord(cMapGen));
  2341 ScriptSetInteger('ScreenHeight', cScreenHeight);
  2354 ScriptSetInteger('ScreenHeight', cScreenHeight);
  2342 ScriptSetInteger('ScreenWidth', cScreenWidth);
  2355 ScriptSetInteger('ScreenWidth', cScreenWidth);
  2343 ScriptSetInteger('TurnTime', cHedgehogTurnTime);
  2356 ScriptSetInteger('TurnTime', cHedgehogTurnTime);
  2344 ScriptSetInteger('CaseFreq', cCaseFactor);
  2357 ScriptSetInteger('CaseFreq', cCaseFactor);
  2345 ScriptSetInteger('HealthCaseProb', cHealthCaseProb);
  2358 ScriptSetInteger('HealthCaseProb', cHealthCaseProb);
  2364 
  2377 
  2365 // pop game variables
  2378 // pop game variables
  2366 ParseCommand('seed ' + ScriptGetString('Seed'), true, true);
  2379 ParseCommand('seed ' + ScriptGetString('Seed'), true, true);
  2367 cTemplateFilter  := ScriptGetInteger('TemplateFilter');
  2380 cTemplateFilter  := ScriptGetInteger('TemplateFilter');
  2368 LuaTemplateNumber:= ScriptGetInteger('TemplateNumber');
  2381 LuaTemplateNumber:= ScriptGetInteger('TemplateNumber');
  2369 cMapGen          := ScriptGetInteger('MapGen');
  2382 cMapGen          := TMapGen(ScriptGetInteger('MapGen'));
  2370 GameFlags        := ScriptGetInteger('GameFlags');
  2383 GameFlags        := ScriptGetInteger('GameFlags');
  2371 cHedgehogTurnTime:= ScriptGetInteger('TurnTime');
  2384 cHedgehogTurnTime:= ScriptGetInteger('TurnTime');
  2372 cCaseFactor      := ScriptGetInteger('CaseFreq');
  2385 cCaseFactor      := ScriptGetInteger('CaseFreq');
  2373 cHealthCaseProb  := ScriptGetInteger('HealthCaseProb');
  2386 cHealthCaseProb  := ScriptGetInteger('HealthCaseProb');
  2374 cHealthCaseAmount:= ScriptGetInteger('HealthCaseAmount');
  2387 cHealthCaseAmount:= ScriptGetInteger('HealthCaseAmount');
  2698     si : TStatInfoType;
  2711     si : TStatInfoType;
  2699     st : TSound;
  2712     st : TSound;
  2700     he : THogEffect;
  2713     he : THogEffect;
  2701     cg : TCapGroup;
  2714     cg : TCapGroup;
  2702     spr: TSprite;
  2715     spr: TSprite;
       
  2716     mg : TMapGen;
  2703 begin
  2717 begin
  2704 // initialize lua
  2718 // initialize lua
  2705 luaState:= lua_open;
  2719 luaState:= lua_open;
  2706 TryDo(luaState <> nil, 'lua_open failed', true);
  2720 TryDo(luaState <> nil, 'lua_open failed', true);
  2707 
  2721 
  2789     ScriptSetInteger(EnumToStr(cg), ord(cg));
  2803     ScriptSetInteger(EnumToStr(cg), ord(cg));
  2790 
  2804 
  2791 for spr:= Low(TSprite) to High(TSprite) do
  2805 for spr:= Low(TSprite) to High(TSprite) do
  2792     ScriptSetInteger(EnumToStr(spr), ord(spr));
  2806     ScriptSetInteger(EnumToStr(spr), ord(spr));
  2793 
  2807 
       
  2808 for mg:= Low(TMapGen) to High(TMapGen) do
       
  2809     ScriptSetInteger(EnumToStr(mg), ord(mg));
  2794 
  2810 
  2795 ScriptSetInteger('gstDrowning'      , gstDrowning);
  2811 ScriptSetInteger('gstDrowning'      , gstDrowning);
  2796 ScriptSetInteger('gstHHDriven'      , gstHHDriven);
  2812 ScriptSetInteger('gstHHDriven'      , gstHHDriven);
  2797 ScriptSetInteger('gstMoving'        , gstMoving);
  2813 ScriptSetInteger('gstMoving'        , gstMoving);
  2798 ScriptSetInteger('gstAttacked'      , gstAttacked);
  2814 ScriptSetInteger('gstAttacked'      , gstAttacked);
  2819 
  2835 
  2820 // land flags
  2836 // land flags
  2821 ScriptSetInteger('lfIndestructible', lfIndestructible);
  2837 ScriptSetInteger('lfIndestructible', lfIndestructible);
  2822 ScriptSetInteger('lfIce'           , lfIce);
  2838 ScriptSetInteger('lfIce'           , lfIce);
  2823 ScriptSetInteger('lfBouncy'        , lfBouncy);
  2839 ScriptSetInteger('lfBouncy'        , lfBouncy);
  2824 
       
  2825 // mapgen
       
  2826 ScriptSetInteger('mgRandom', mgRandom);
       
  2827 ScriptSetInteger('mgMaze'  , mgMaze);
       
  2828 ScriptSetInteger('mgPerlin', mgPerlin);
       
  2829 ScriptSetInteger('mgDrawn' , mgDrawn);
       
  2830 
  2840 
  2831 // register functions
  2841 // register functions
  2832 lua_register(luaState, _P'HideHog', @lc_hidehog);
  2842 lua_register(luaState, _P'HideHog', @lc_hidehog);
  2833 lua_register(luaState, _P'RestoreHog', @lc_restorehog);
  2843 lua_register(luaState, _P'RestoreHog', @lc_restorehog);
  2834 lua_register(luaState, _P'SaveCampaignVar', @lc_savecampaignvar);
  2844 lua_register(luaState, _P'SaveCampaignVar', @lc_savecampaignvar);