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, northeast, southeast, southwest, northwest,
 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.1