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'); |
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); |