/*
** Usage:
** distance = hex_distance(x1, y1, x2, y2);
**
** Arguments:
** x1, y1 coordinate pair for first hex
** x2, y2 coordinate pair for second hex
**
** Returns:
** distance the distance between hexes in steps
**
** Notes:
** all coordinates must be positive integers
**
** copyright (c) 2006, John Leffingwell
** www.planetxot.com
*/
var x1,y1,x2,y2,xd,yoff,ymin,ymax,ymod,distance;
x1 = argument0;
y1 = argument1;
x2 = argument2;
y2 = argument3;
xd = abs(x1 - x2);
yoff = xd div 2;
if (((x1 mod 2) == 1) && ((x2 mod 2) == 0)) yoff += 1;
ymin = y1 - yoff;
ymax = ymin + xd;
ymod = 0;
if (y2 < ymin) ymod = ymin - y2;
if (y2 > ymax) ymod = y2 - ymax;
distance = xd + ymod;
return distance;