From 2d82b906749e7249b98b32a81c66a92e46c1cf10 Mon Sep 17 00:00:00 2001 From: Bardur Arantsson Date: Thu, 29 Mar 2012 21:10:46 +0200 Subject: Refactor: Move compass() and approximate_distance() from Lua to C --- lib/core/util.lua | 86 ------------------------------------------------------- 1 file changed, 86 deletions(-) (limited to 'lib/core') diff --git a/lib/core/util.lua b/lib/core/util.lua index 5128dfbe..eea13014 100644 --- a/lib/core/util.lua +++ b/lib/core/util.lua @@ -71,92 +71,6 @@ function msg_print(c, m) end end --- Returns the direction of the compass that y2, x2 is from y, x --- the return value will be one of the following: north, south, --- east, west, north-east, south-east, south-west, north-west, --- or "close" if it is within 2 tiles. -function compass(y, x, y2, x2) - local y_axis, x_axis, y_diff, x_diff, compass_dir - - -- is it close to the north/south meridian? - y_diff = y2 - y - - -- determine if y2, x2 is to the north or south of y, x - if (y_diff > -3) and (y_diff < 3) then - y_axis = nil - elseif y2 > y then - y_axis = "south" - else - y_axis = "north" - end - - -- is it close to the east/west meridian? - x_diff = x2 - x - - -- determine if y2, x2 is to the east or west of y, x - if (x_diff > -3) and (x_diff < 3) then - x_axis = nil - elseif x2 > x then - x_axis = "east" - else - x_axis = "west" - end - - -- Maybe it is very close - if ((not x_axis) and (not y_axis)) then compass_dir = "close" - -- Maybe it is (almost) due N/S - elseif not x_axis then compass_dir = y_axis - -- Maybe it is (almost) due E/W - elseif not y_axis then compass_dir = x_axis - -- or if it is neither - else compass_dir = y_axis.."-"..x_axis - end - - return compass_dir -end - --- Returns a relative approximation of the 'distance' of y2, x2 from y, x. -function approximate_distance(y, x, y2, x2) - local y_diff, x_diff, most_dist - - -- how far to away to the north/south - y_diff = y2 - y - - -- make sure it's a positive integer - if y_diff < 0 then - y_diff = 0 - y_diff - end - - -- how far to away to the east/west - x_diff = x2 - x - - -- make sure it's a positive integer - if x_diff < 0 then - x_diff = 0 - x_diff - end - - -- find which one is the larger distance - if x_diff > y_diff then - most_dist = x_diff - else - most_dist = y_diff - end - - -- how far away then? - if most_dist >= 41 then - how_far = "a very long way" - elseif most_dist >= 25 then - how_far = "a long way" - elseif most_dist >= 8 then - how_far = "quite some way" - else - how_far = "not very far" - end - - return how_far - -end - -- better timer add function __timers_callback_max = 0 -- cgit v1.2.3