bool CheckCubeMoveable(Vector3 moveDirect) { for (int i = 0; i < currentControlCubes.Length; i++) { var newPos = VectorUtility.AddPosition(PositionUtils.TransIndexToUnitPosition(currentControlCubes[i].GetComponent <GameTileView>().Index), moveDirect); if (newPos.x < 0 || newPos.x >= sizeX || newPos.y < 0) { return(false); } if (newPos.y < sizeY && !CubeDataManager.Instance.IsEmpty((int)newPos.x, (int)newPos.y)) { return(false); } } return(true); }
public bool UpdateMoveCubeWithUnitTime() { if (CubeDataManager.Instance.UpdateLock) { return(false); } if (CheckCubeMoveable(Vector3.down)) { foreach (var cube in currentControlCubes) { var newPos = VectorUtility.AddPosition(PositionUtils.TransIndexToUnitPosition(cube.GetComponent <GameTileView>().Index), Vector3.down); cube.GetComponent <GameTileView>().UpdatePositionByIndex(cube.GetComponent <GameTileView>().Index, PositionUtils.TransUnitPositionToIndex(newPos)); } return(true); } return(false); }
public bool MoveCube(Vector3 moveDirect) { if (CubeDataManager.Instance.UpdateLock) { return(false); } if (CheckCubeMoveable(moveDirect)) { foreach (var cube in currentControlCubes) { var newPos = VectorUtility.AddPosition(PositionUtils.TransIndexToUnitPosition(cube.GetComponent <GameTileView>().Index), moveDirect); cube.GetComponent <GameTileView>().UpdateTartgetPosition(PositionUtils.TransUnitPositionToPosition(moveDirect)); cube.GetComponent <GameTileView>().Index = PositionUtils.TransUnitPositionToIndex(newPos); } changeDirectBufferTime = 0; return(true); } return(false); }