Exemple #1
0
 /// <summary>
 /// set square with teleport
 /// </summary>
 public void SetTeleports()
 {
     if (teleportDestinationCoord != Vector2Int.one * -1)
     {
         var sq = field.GetSquare(teleportDestinationCoord);
         teleportDestination = sq;
         sq.teleportOrigin   = this;
     }
 }
Exemple #2
0
    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));
    }
Exemple #3
0
 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);
                    }
                }
            }
        }