/*
**  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;