|
|
|
|
@ -272,11 +272,11 @@ int GetDirection8(int x1, int y1, int x2, int y2)
|
|
|
|
|
{ 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 }, |
|
|
|
|
{ 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 } |
|
|
|
|
}; |
|
|
|
|
unsigned char trans[4][3] = { { 3, 4, 5 }, |
|
|
|
|
{ 3, 2, 1 }, |
|
|
|
|
{ 7, 0, 1 }, |
|
|
|
|
{ 7, 6, 5 } }; |
|
|
|
|
int mx, my, md; |
|
|
|
|
ALIGN_BY_1 BYTE urtoll[] = { 3, 4, 5 }, |
|
|
|
|
ultolr[] = { 3, 2, 1 }, |
|
|
|
|
lrtoul[] = { 7, 6, 5 }, |
|
|
|
|
lltour[] = { 7, 0, 1 }; |
|
|
|
|
|
|
|
|
|
mx = abs(x2 - x1); |
|
|
|
|
if (mx > 15) |
|
|
|
|
@ -287,13 +287,13 @@ int GetDirection8(int x1, int y1, int x2, int y2)
|
|
|
|
|
md = Dirs[my][mx]; |
|
|
|
|
if (x1 > x2) { |
|
|
|
|
if (y1 > y2) |
|
|
|
|
md = trans[0][md]; |
|
|
|
|
md = urtoll[md]; |
|
|
|
|
else |
|
|
|
|
md = trans[1][md]; |
|
|
|
|
md = ultolr[md]; |
|
|
|
|
} else if (y1 > y2) |
|
|
|
|
md = trans[3][md]; |
|
|
|
|
md = lrtoul[md]; |
|
|
|
|
else |
|
|
|
|
md = trans[2][md]; |
|
|
|
|
md = lltour[md]; |
|
|
|
|
return md; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|