Ejemplo n.º 1
0
    private void CreatePiece(ScriptPiece.PieceType nType, ScriptPiece.PieceRotate nRotate = ScriptPiece.PieceRotate.None)
    {
        Quaternion nAltRotation = goAlternate.transform.localRotation;

        goAlternate.transform.localRotation = Quaternion.identity;
        ScriptPiece nPiece = new ScriptPiece();

        GameObject[] nBlocks = new GameObject[4] {
            (GameObject)Instantiate(prefabBlock),
            (GameObject)Instantiate(prefabBlock),
            (GameObject)Instantiate(prefabBlock),
            (GameObject)Instantiate(prefabBlock)
        };
        float   nTopPanelH = panelTop.GetComponent <RectTransform>().rect.height *canvas2d.scaleFactor;
        Vector3 nScreenPos = new Vector3(Screen.width / 2, Screen.height - nTopPanelH / 2, -cameraAlternate.transform.position.z);
        Vector3 nWorldPos  = cameraAlternate.ScreenToWorldPoint(nScreenPos);
        Vector3 nPartSize  = prefabBlock.transform.localScale;

        nPiece.SetBlocks(nWorldPos, nPartSize, nPartSize, nBlocks, nType, nRotate);
        mCurrentPiece = nPiece;
        goAlternate.transform.localRotation = nAltRotation;
    }
Ejemplo n.º 2
0
    private void StateWait()       //Main game loop
    {
        if (!panelTimer.GetComponent <ScriptTimer>().running)
        {
            ChangeState(GameState.Crank, true); return;
        }
        if (mActions.Count == 0)
        {
            return;
        }

        var           nPair     = mActions.Dequeue();
        GameFlow      nAction   = nPair.Key;
        ScriptClicker nPosition = (ScriptClicker)nPair.Value;

        switch (nAction)
        {
        case GameFlow.Enter:
            mActivePlayArea = true;
            ShowDropPosition(nPosition);
            break;

        case GameFlow.Select:
            if (mActivePlayArea)
            {
                ShowDropPosition(nPosition);
            }
            break;

        case GameFlow.Drop:
            if (mHasBomb)
            {
                if (ExplodeCurrentPiece())
                {
                    ChangeState(GameState.Explode);
                }
            }
            else if (DropCurrentPiece())
            {
                ChangeState(GameState.Drop);
            }
            break;

        case GameFlow.Deselect:
            HideDropPosition();
            mActivePlayArea = false;
            break;

        case GameFlow.Rotate:
            ScriptPiece.PieceType   nType   = mCurrentPiece.pieceType;
            ScriptPiece.PieceRotate nRotate = mCurrentPiece.GetNextRotate();
            DestroyPiece();
            CreatePiece(nType, nRotate);
            HideDropPosition();
            CheckNeedBomb();
            break;

        case GameFlow.Pause:
            ChangeState(GameState.Pause);

            textTotalPause.text   = mTotal.ToString();
            textSinglesPause.text = mSingles.ToString();
            textDoublesPause.text = mDoubles.ToString();
            textTriplesPause.text = mTriples.ToString();
            textQuadsPause.text   = mQuads.ToString();
            textScorePause.text   = mScore.ToString();

            panelTimer.GetComponent <ScriptTimer>().paused = true;
            animePause.enabled = true;
            animePause.SetBool("enter", true);
            break;
        }
    }