| | |
| | |
|
| | | const newRect = { ...glassDetail };
|
| | | newRect.x += deltaX / scale;
|
| | | newRect.y -= deltaY / scale;
|
| | | newRect.y += deltaY / scale;
|
| | |
|
| | | const otherRects = layout.glassDetails.filter(r => !r.isRemain && r !== glassDetail);
|
| | | let isValidMove = true;
|
| | |
| | |
|
| | | switch (direction) {
|
| | | case 'up':
|
| | | glassDetail.y -= maxStep;
|
| | | glassDetail.y += maxStep;
|
| | | break;
|
| | | case 'down':
|
| | | glassDetail.y += maxStep;
|
| | | glassDetail.y -= maxStep;
|
| | | break;
|
| | | case 'left':
|
| | | glassDetail.x -= maxStep;
|
| | |
| | |
|
| | | //向上移动计算坐标
|
| | | const getAvailableSpaceUp = (glassDetail, layout, obstacles) => {
|
| | | let maxSpace = glassDetail.y;
|
| | | let maxSpace = layout.height - glassDetail.y - glassDetail.height;
|
| | | obstacles.forEach(obstacle => {
|
| | | if (obstacle.y > glassDetail.y + glassDetail.height &&
|
| | | obstacle.x <= glassDetail.x + glassDetail.width &&
|
| | |
| | |
|
| | | //向下移动计算坐标
|
| | | const getAvailableSpaceDown = (glassDetail, layout, obstacles) => {
|
| | | let maxSpace = layout.height - (glassDetail.y + glassDetail.height);;
|
| | | let maxSpace = glassDetail.y;
|
| | | obstacles.forEach(obstacle => {
|
| | | if (obstacle.y + obstacle.height < glassDetail.y &&
|
| | | obstacle.x <= glassDetail.x + glassDetail.width &&
|