예제 #1
0
    void CheckWinCondition(DeskEllement a_updatedEllement)
    {
        //Should find position of updated figure.
        Vector2Int indexes = GetDeskEllemenIndexes(a_updatedEllement);

        bool isWin = CheckWinCondition(new Vector2Int(indexes.x, 0), new Vector2Int(0, 1));

        if (!isWin)
        {
            isWin = CheckWinCondition(new Vector2Int(0, indexes.y), new Vector2Int(1, 0));
            if (!isWin)
            {
                if (indexes.x == indexes.y)
                {
                    //Diagonal check
                    isWin = CheckWinCondition(new Vector2Int(0, 0), new Vector2Int(1, 1));
                }

                if (!isWin)
                {
                    if ((indexes.x + indexes.y) == (deskEllements.GetLength(0) - 1))
                    {
                        //Diagonal check
                        isWin = CheckWinCondition(new Vector2Int(0, 3), new Vector2Int(1, -1));
                    }
                }
            }
        }

        if (isWin)
        {
            GameEvents.Instance.OnCollectLine();
        }
    }
예제 #2
0
    private void OnDeskTap(DeskEllement ellement)
    {
        if (GameManager.Instance.ActiveStepPhase == PlayerStepPhase.Place)
        {
            if (figureContainer.SelectedFigure != null)
            {
                var figure = figureContainer.SelectedFigure;
                ellement.AttachFigure(figure);
                figure.Attach();

                GameEvents.Instance.OnAttachFigure(ellement, figure);
                ActiveStepPhase = PlayerStepPhase.Select;
            }
        }
    }
예제 #3
0
    public Vector2Int GetDeskEllemenIndexes(DeskEllement a_ellement)
    {
        for (int i = 0; i < deskEllements.GetLength(0); ++i)
        {
            for (int j = 0; j < deskEllements.GetLength(1); ++j)
            {
                if (deskEllements[i, j] == a_ellement)
                {
                    return(new Vector2Int(i, j));
                }
            }
        }

        Debug.LogError("Can not find ellement");
        return(new Vector2Int(0, 0));
    }
예제 #4
0
    void CreateMap()
    {
        Debug.Log("CreateMap");
        if (deskView != null && deskEllementPrefab != null)
        {
            if (deskEllementContainer == null)
            {
                deskEllementContainer = this.gameObject;
            }

            deskView.localScale = new Vector3(Width * ellementStep, deskView.localScale.y, Height * ellementStep);

            deskEllements = new DeskEllement[Width, Height];
            for (int i = 0; i < deskEllements.GetLength(0); ++i)
            {
                for (int j = 0; j < deskEllements.GetLength(1); ++j)
                {
                    DeskEllement ellement = Instantiate(deskEllementPrefab, deskEllementContainer.transform, false) as DeskEllement;

                    ellement.transform.localPosition = new Vector3((i - Width / 2f) * ellementStep, 0, (j - Height / 2f) * ellementStep);
                    deskEllements[i, j] = ellement;
                }
            }
        }

        deskEllementContainer.transform.localPosition = new Vector3(ellementStep / 2, deskEllementContainer.transform.localPosition.y, ellementStep / 2);

        /*var render = deskEllementContainer.GetComponent<Renderer>();
         * if (render != null)
         * {
         *  Vector3 rendererSize = render.bounds.size;
         *  deskEllementContainer.transform.localPosition = new Vector3(-rendererSize.x/2, deskEllementContainer.transform.localPosition.y, -rendererSize.z / 2);
         * }*/

        /*float offsetPos = -ellementStep * size / 2;
         * deskEllementContainer.transform.localPosition = new Vector3(offsetPos, deskEllementContainer.transform.localPosition.y, offsetPos);*/
    }
예제 #5
0
 private void OnFigureAttached(DeskEllement a_deskEllement, Figure a_figure)
 {
     selectedFigure = null;
 }
예제 #6
0
 void OnFigureAttached(DeskEllement a_ellement, Figure a_figure)
 {
     //Check for complete lines.
     CheckWinCondition(a_ellement);
 }