void DoVerticalMove(ReplacementNeighbors neighborsPositions) { if (mapInfo.CanWeMoveTileFromTo(neighborsPositions.top, neighborsPositions.actualPosition)) { tilemapManager.StartCoroutine(ChangeTilePositionWithLerp(neighborsPositions.actualPosition, neighborsPositions.top)); } }
void DoObliqueMove(ReplacementNeighbors neighborsPositions) { if (!moveLeft && mapInfo.CanWeMakeObliqueMoveToLeft(neighborsPositions) && !mapInfo.IsItPossibleToMoveTileDown(neighborsPositions.topRight)) { tilemapManager.StartCoroutine(ChangeTilePositionWithLerp(neighborsPositions.actualPosition, neighborsPositions.topRight)); } else if (moveLeft && mapInfo.CanWeMakeObliqueMoveToRight(neighborsPositions) && !mapInfo.IsItPossibleToMoveTileDown(neighborsPositions.topLeft)) { tilemapManager.StartCoroutine(ChangeTilePositionWithLerp(neighborsPositions.actualPosition, neighborsPositions.topLeft)); } }
void MoveTilesToEmptyPlacesInMap(int x, int idOfHorizontalLayerOfMap) { ReplacementNeighbors neighborsPositions = new ReplacementNeighbors(actualPosition: new Vector3Int(x, idOfHorizontalLayerOfMap, 0)); mapInfo.actualPositionOfEmptyTile = neighborsPositions.actualPosition; if (mapInfo.IsItPossibleToMoveTileDown(neighborsPositions.actualPosition)) { DoVerticalMove(neighborsPositions); } else { DoObliqueMove(neighborsPositions); } }