public void setPathDir(int _now_pre, int _next_now) { // _now_pre == nowIDX - preIDX switch (_now_pre) { case 1: previousPathDir = PathDir.LEFT; break; case -1: previousPathDir = PathDir.RIGHT; break; default: // UP or DOWN if (_now_pre > 0) { previousPathDir = PathDir.UP; } else { previousPathDir = PathDir.DOWN; } break; } // _next_now == nextIDX - nowIDX switch (_next_now) { case 1: nextPathDir = PathDir.RIGHT; break; case -1: nextPathDir = PathDir.LEFT; break; default: if (_next_now > 0) { nextPathDir = PathDir.DOWN; } else { nextPathDir = PathDir.UP; } break; } }
private int getAdjacent(int pos, PathDir dir) { int tmpPos = -1; switch (dir) { case PathDir.LT: if (0 == pos % _row || 0 == pos / _row) { return(-1); } tmpPos = pos - _row - 1; break; case PathDir.T: if (0 == pos % _row) { return(-1); } tmpPos = pos - 1; break; case PathDir.RT: if (0 == pos % _row || _column - 1 == pos / _row) { return(-1); } tmpPos = pos + _row - 1; break; case PathDir.L: if (0 == pos / _row) { return(-1); } tmpPos = pos - _row; break; case PathDir.R: if (_column - 1 == pos / _row) { return(-1); } tmpPos = pos + _row; break; case PathDir.LB: if (_row - 1 == pos % _row || 0 == pos / _row) { return(-1); } tmpPos = pos - _row + 1; break; case PathDir.B: if (_row - 1 == pos % _row) { return(-1); } tmpPos = pos + 1; break; case PathDir.RB: if (_row - 1 == pos % _row || _column - 1 == pos / _row) { return(-1); } tmpPos = pos + _row + 1; break; } if (tmpPos < 0 || tmpPos >= _total) { return(-1); } else { return(tmpPos); } }