/// <summary> /// set square with teleport /// </summary> public void SetTeleports() { if (teleportDestinationCoord != Vector2Int.one * -1) { var sq = field.GetSquare(teleportDestinationCoord); teleportDestination = sq; sq.teleportOrigin = this; } }
public List <Combine> GetCombines(FieldBoard field, out List <Combine> allFoundCombines, ItemsTypes _prioritiseItem = ItemsTypes.NONE) { prioritiseItem = _prioritiseItem; maxCols = field.fieldData.maxCols; maxRows = field.fieldData.maxRows; //combines.Clear(); match3Combines.Clear(); tempCombinesPredict.Clear(); dic.Clear(); var color = -1; var combine = new Combine(); vChecking = false; //Horrizontal searching for (var row = 0; row < maxRows; row++) { color = -1; for (var col = 0; col < maxCols; col++) { var square = field.GetSquare(col, row); if (IsSquareNotNull(square)) { CheckMatches(square.Item, color, ref combine); color = square.Item.color; } } } vChecking = true; //Vertical searching for (var col = 0; col < maxCols; col++) { color = -1; for (var row = 0; row < maxRows; row++) { var square = field.GetSquare(col, row); if (IsSquareNotNull(square) && !square.Item.falling && !square.Item.destroying) { // if(match3Combines.Any(i=>i.items.Any(x=>x ==square.item))) continue; CheckMatches(square.Item, color, ref combine); color = square.Item.color; } } } allFoundCombines = match3Combines; // Debug.Log (" test combines detected " + tempCombines.Count); return(CheckCombines(dic, match3Combines)); }
private Square GetSquare(int col, int row, bool safe = false) { if (!field) { field = LevelManager.THIS.field; } return(field.GetSquare(col, row)); }
void SetOutline(int col, int row, float zRot) { Square square = _fieldBoard.GetSquare(col, row, true); if (square.type != SquareTypes.NONE) { if (row == 0 || col == 0 || col == maxCols - 1 || row == maxRows - 1) { var outline = Object.Instantiate(_fieldBoard.outline3, square.transform); outline.transform.localRotation = Quaternion.Euler(0, 0, zRot); if (zRot == 0) { outline.transform.localPosition = Vector3.zero + Vector3.left * 0.425f; } if (zRot == 90) { outline.transform.localPosition = Vector3.zero + Vector3.down * 0.425f; } if (zRot == 180) { outline.transform.localPosition = Vector3.zero + Vector3.right * 0.425f; } if (zRot == 270) { outline.transform.localPosition = Vector3.zero + Vector3.up * 0.425f; } if (row == 0 && col == 0) { //top left outline.transform.localRotation = Quaternion.Euler(0, 0, 180); outline.transform.localPosition = Vector3.zero + Vector3.left * 0.015f + Vector3.up * 0.015f; } if (row == 0 && col == maxCols - 1) { //top right outline.transform.localRotation = Quaternion.Euler(0, 0, 90); outline.transform.localPosition = Vector3.zero + Vector3.right * 0.015f + Vector3.up * 0.015f; } if (row == maxRows - 1 && col == 0) { //bottom left outline.transform.localRotation = Quaternion.Euler(0, 0, -90); outline.transform.localPosition = Vector3.zero + Vector3.left * 0.015f + Vector3.down * 0.015f; } if (row == maxRows - 1 && col == maxCols - 1) { //bottom right outline.transform.localRotation = Quaternion.Euler(0, 0, 0); outline.transform.localPosition = Vector3.zero + Vector3.right * 0.015f + Vector3.down * 0.015f; } } else { //top left if (_fieldBoard.GetSquare(col - 1, row - 1, true).type == SquareTypes.NONE && _fieldBoard.GetSquare(col, row - 1, true).type == SquareTypes.NONE && _fieldBoard.GetSquare(col - 1, row, true).type == SquareTypes.NONE) { var outline = Object.Instantiate(_fieldBoard.outline3, square.transform); outline.transform.localPosition = Vector3.zero + Vector3.left * 0.015f + Vector3.up * 0.015f; outline.transform.localRotation = Quaternion.Euler(0, 0, 180); } //top right if (_fieldBoard.GetSquare(col + 1, row - 1, true).type == SquareTypes.NONE && _fieldBoard.GetSquare(col, row - 1, true).type == SquareTypes.NONE && _fieldBoard.GetSquare(col + 1, row, true).type == SquareTypes.NONE) { var outline = Object.Instantiate(_fieldBoard.outline3, square.transform); outline.transform.localPosition = Vector3.zero + Vector3.right * 0.015f + Vector3.up * 0.015f; outline.transform.localRotation = Quaternion.Euler(0, 0, 90); } //bottom left if (_fieldBoard.GetSquare(col - 1, row + 1, true).type == SquareTypes.NONE && _fieldBoard.GetSquare(col, row + 1, true).type == SquareTypes.NONE && _fieldBoard.GetSquare(col - 1, row, true).type == SquareTypes.NONE) { var outline = Object.Instantiate(_fieldBoard.outline3, square.transform); outline.transform.localPosition = Vector3.zero + Vector3.left * 0.015f + Vector3.down * 0.015f; outline.transform.localRotation = Quaternion.Euler(0, 0, 270); } //bottom right if (_fieldBoard.GetSquare(col + 1, row + 1, true).type == SquareTypes.NONE && _fieldBoard.GetSquare(col, row + 1, true).type == SquareTypes.NONE && _fieldBoard.GetSquare(col + 1, row, true).type == SquareTypes.NONE) { var outline = Object.Instantiate(_fieldBoard.outline3, square.transform); outline.transform.localPosition = Vector3.zero + Vector3.right * 0.015f + Vector3.down * 0.015f; outline.transform.localRotation = Quaternion.Euler(0, 0, 0); } } } else { bool corner = false; if (_fieldBoard.GetSquare(col - 1, row, true).type != SquareTypes.NONE && _fieldBoard.GetSquare(col, row - 1, true).type != SquareTypes.NONE) { var outline = Object.Instantiate(_fieldBoard.outline2, square.transform); outline.transform.localPosition = Vector3.zero; outline.transform.localRotation = Quaternion.Euler(0, 0, 0); corner = true; } if (_fieldBoard.GetSquare(col + 1, row, true).type != SquareTypes.NONE && _fieldBoard.GetSquare(col, row + 1, true).type != SquareTypes.NONE) { var outline = Object.Instantiate(_fieldBoard.outline2, square.transform); outline.transform.localPosition = Vector3.zero; outline.transform.localRotation = Quaternion.Euler(0, 0, 180); corner = true; } if (_fieldBoard.GetSquare(col + 1, row, true).type != SquareTypes.NONE && _fieldBoard.GetSquare(col, row - 1, true).type != SquareTypes.NONE) { var outline = Object.Instantiate(_fieldBoard.outline2, square.transform); outline.transform.localPosition = Vector3.zero; outline.transform.localRotation = Quaternion.Euler(0, 0, 270); corner = true; } if (_fieldBoard.GetSquare(col - 1, row, true).type != SquareTypes.NONE && _fieldBoard.GetSquare(col, row + 1, true).type != SquareTypes.NONE) { var outline = Object.Instantiate(_fieldBoard.outline2, square.transform); outline.transform.localPosition = Vector3.zero; outline.transform.localRotation = Quaternion.Euler(0, 0, 90); corner = true; } if (!corner) { if (_fieldBoard.GetSquare(col, row - 1, true).type != SquareTypes.NONE) { var outline = Object.Instantiate(_fieldBoard.outline1, square.transform); outline.transform.localPosition = Vector3.zero + Vector3.up * 0.395f; outline.transform.localRotation = Quaternion.Euler(0, 0, 90); } if (_fieldBoard.GetSquare(col, row + 1, true).type != SquareTypes.NONE) { var outline = Object.Instantiate(_fieldBoard.outline1, square.transform); outline.transform.localPosition = Vector3.zero + Vector3.down * 0.395f; outline.transform.localRotation = Quaternion.Euler(0, 0, 90); } if (_fieldBoard.GetSquare(col - 1, row, true).type != SquareTypes.NONE) { var outline = Object.Instantiate(_fieldBoard.outline1, square.transform); outline.transform.localPosition = Vector3.zero + Vector3.left * 0.395f; outline.transform.localRotation = Quaternion.Euler(0, 0, 0); } if (_fieldBoard.GetSquare(col + 1, row, true).type != SquareTypes.NONE) { var outline = Object.Instantiate(_fieldBoard.outline1, square.transform); outline.transform.localPosition = Vector3.zero + Vector3.right * 0.395f; outline.transform.localRotation = Quaternion.Euler(0, 0, 0); } } } }