Difference between revisions of "GetDistanceInTiles"
From UODemo Wiki
(Created page with 'integer '''getDistanceInTiles'''(location ''A'', location ''B'');<br> This function will return 9999 if A.x or B.x is greater or equal to 5120. Otherwise the absolute value of t…') |
(No difference)
|
Revision as of 22:33, 14 April 2010
integer getDistanceInTiles(location A, location B);
This function will return 9999 if A.x or B.x is greater or equal to 5120. Otherwise the absolute value of the difference between A and B is made for both x and y and the highest value of the two is returned. The Z value is ignored when calculating the difference.
Pseudo-code (using signed integers):integer DistanceInTiles(location A, location B) { if(A.x >= 5120 || B.x >= 5120) return 9999; Xdiff = A.x - B.x; ydiff = A.y - B.y; if(xdiff < 0) xdiff = -xdiff; if(ydiff < 0) ydiff = -ydiff; if(A.x < 5120) // OSI-bug (?), A.x is always lower than 5120 { if(5120 - xdiff > xdiff) xdiff = 5120 - xdiff; if(4096 - ydiff > ydiff) ydiff = 4096 - ydiff; } if(xdiff > ydiff) retval = xdiff; else retval = ydiff; return retval; }
Return to the Command List.