# HG changeset patch
# User Henek
# Date 1295731865 -3600
# Node ID 7a720b5d2247cec73873d24d9b1d68c52aaf608c
# Parent  652139f230c78e600c0595e33b82fcff7901d41d
added GetGearRaduis and minor Tracker things

diff -r 652139f230c7 -r 7a720b5d2247 hedgewars/uScript.pas
--- a/hedgewars/uScript.pas	Sat Jan 22 22:39:35 2011 +0300
+++ b/hedgewars/uScript.pas	Sat Jan 22 22:31:05 2011 +0100
@@ -1164,6 +1164,25 @@
         lua_pushboolean(L, hasBorder);
     lc_maphasborder:= 1
 end;
+
+function lc_getgearradius(L : Plua_State) : LongInt; Cdecl;
+var gear : PGear;
+begin
+    if lua_gettop(L) <> 1 then
+        begin
+        LuaError('Lua: Wrong number of parameters passed to GetGearRadius!');
+        lua_pushnil(L); // return value on stack (nil)
+        end
+    else
+        begin
+        gear:= GearByUID(lua_tointeger(L, 1));
+        if gear <> nil then
+            lua_pushinteger(L, gear^.Radius)
+        else
+            lua_pushnil(L);
+        end;
+    lc_getgearradius:= 1
+end;
 ///////////////////
 
 procedure ScriptPrintStack;
@@ -1571,6 +1590,7 @@
 lua_register(luaState, 'CampaignLock', @lc_campaignlock);
 lua_register(luaState, 'CampaignUnlock', @lc_campaignunlock);
 lua_register(luaState, 'GetGearElasticity', @lc_getgearelasticity);
+lua_register(luaState, 'GetGearRadius', @lc_getgearradius);
 lua_register(luaState, 'GetGearMessage', @lc_getgearmessage);
 lua_register(luaState, 'SetGearMessage', @lc_setgearmessage);
 lua_register(luaState, 'GetRandom', @lc_getrandom);
diff -r 652139f230c7 -r 7a720b5d2247 share/hedgewars/Data/Scripts/Tracker.lua
--- a/share/hedgewars/Data/Scripts/Tracker.lua	Sat Jan 22 22:39:35 2011 +0300
+++ b/share/hedgewars/Data/Scripts/Tracker.lua	Sat Jan 22 22:31:05 2011 +0100
@@ -224,6 +224,27 @@
     end
 end
 
+-- Run a function on all gears within a box
+function runOnGearsInBox(func, x, y, w, h)
+    for k, gear in ipairs(gears) do
+        gx, gy = GetGearPosition(gear)
+        if gx >= x and gy >= y and gx <= x + w and gy <= y + h then
+            func(gear)
+        end
+    end
+end
+
+-- Run a function on all gears within a circle
+function runOnGearsInCircle(func, x, y, r)
+    for k, gear in ipairs(gears) do
+        gx, gy = GetGearPosition(gear)
+        gr = GetGearRadius(gear)
+        if (r + gr) ^ 2 >= (x - gx) ^ 2 + (y - gy) ^ 2 then
+            func(gear)
+        end
+    end
+end
+
 -- Run a function on all tracked hogs
 function runOnHogs(func)
     for k, hogs in pairs(teams) do