public MyAStar(ESearchOrder searchOrder = ESearchOrder.LeftRightDownUp) { SetSearchOrder(searchOrder); }
/// <summary> /// Set search order. /// </summary> public void SetSearchOrder(ESearchOrder order) { KeyValuePair <int, int> left = new KeyValuePair <int, int>(-1, 0); KeyValuePair <int, int> right = new KeyValuePair <int, int>(1, 0); KeyValuePair <int, int> up = new KeyValuePair <int, int>(0, -1); KeyValuePair <int, int> down = new KeyValuePair <int, int>(0, 1); mSearchOder = order; switch (order) { case ESearchOrder.LeftRightUpDown: { mMoveDirections[0] = left; mMoveDirections[1] = right; mMoveDirections[2] = up; mMoveDirections[3] = down; } break; case ESearchOrder.LeftRightDownUp: { mMoveDirections[0] = left; mMoveDirections[1] = right; mMoveDirections[2] = down; mMoveDirections[3] = up; } break; case ESearchOrder.RightLeftUpDown: { mMoveDirections[0] = right; mMoveDirections[1] = left; mMoveDirections[2] = up; mMoveDirections[3] = down; } break; case ESearchOrder.RightLeftDownUp: { mMoveDirections[0] = right; mMoveDirections[1] = left; mMoveDirections[2] = down; mMoveDirections[3] = up; } break; case ESearchOrder.UpDownLeftRight: { mMoveDirections[0] = up; mMoveDirections[1] = down; mMoveDirections[2] = left; mMoveDirections[3] = right; } break; case ESearchOrder.UpDownRightLeft: { mMoveDirections[0] = up; mMoveDirections[1] = down; mMoveDirections[2] = right; mMoveDirections[3] = left; } break; case ESearchOrder.DownUpLeftRight: { mMoveDirections[0] = down; mMoveDirections[1] = up; mMoveDirections[2] = left; mMoveDirections[3] = right; } break; case ESearchOrder.DownUpRightLeft: { mMoveDirections[0] = down; mMoveDirections[1] = up; mMoveDirections[2] = right; mMoveDirections[3] = left; } break; } }