コード例 #1
0
 void blockMatch(int index, int rc, int val)
 {
     //ARGS: row/column index [0-14]; row=0, col=1; value that has been matched (for scoring purposes)
     for (int i = 0; i < 15; i++)
     {
         if (rc == 0)
         {
             //Clear Row
             gridTile toClear = GameController.getTileAt(i, index);
             toClear.empty = true;
             GameObject           clearGO   = GameController.getTileGO(toClear);
             tileObjectController clearCtrl = clearGO.GetComponent <tileObjectController> ();
             clearCtrl.MousedOut();
         }
         else
         {
             gridTile toClear = GameController.getTileAt(index, i);
             toClear.empty = true;
             GameObject           clearGO   = GameController.getTileGO(toClear);
             tileObjectController clearCtrl = clearGO.GetComponent <tileObjectController> ();
             clearCtrl.MousedOut();
         }
     }
 }
コード例 #2
0
    bool mouseInGrid()
    {
        gridTile currentTile = GameController.getTileAt(xPos, yPos);

        currentPentomino             = GameController.parsePentomino();
        int[,] currentPentominoShape = currentPentomino.shape;


        //TODO: Currently loops over and replaces all tiles - would be more efficient if it would work with only those not empty
        if (lastTile != currentTile)
        {
            for (int i = 0; i < 15; i++)
            {
                for (int j = 0; j < 15; j++)
                {
                    gridTile TileToEmpty = GameController.getTileAt(i, j);
                    if (TileToEmpty.empty)
                    {
                        GameObject GOtoEmpty = GameController.getTileGO(TileToEmpty);
                        GOtoEmpty.GetComponentInChildren <Canvas> ().enabled = false;
                        tileObjectController ControllerToEmpty = GOtoEmpty.GetComponent <tileObjectController> ();
                        ControllerToEmpty.MousedOut();
                    }
                }
            }
        }

        for (int i = 0; i < currentPentominoShape.GetLength(0); i++)
        {
            gridTile tmpTile = GameController.getTileAt(xPos + currentPentominoShape [i, 0], yPos + currentPentominoShape [i, 1]);
            if (inverted == 3)
            {
                tmpTile = GameController.getTileAt(xPos + (currentPentominoShape [i, 1] * -1), yPos + currentPentominoShape [i, 0]);
            }
            if (inverted == 2)
            {
                tmpTile = GameController.getTileAt(xPos + (currentPentominoShape [i, 0] * -1), yPos + (currentPentominoShape [i, 1] * -1));
            }
            if (inverted == 1)
            {
                tmpTile = GameController.getTileAt(xPos + currentPentominoShape [i, 1], yPos + (currentPentominoShape [i, 0] * -1));
            }
            if (tmpTile == null || tmpTile.empty == false)
            {
                return(false);
            }
        }

        for (int i = 0; i < currentPentominoShape.GetLength(0); i++)
        {
            gridTile tmpTile = GameController.getTileAt(xPos + currentPentominoShape [i, 0], yPos + currentPentominoShape [i, 1]);
            if (inverted == 3)
            {
                tmpTile = GameController.getTileAt(xPos + (currentPentominoShape [i, 1] * -1), yPos + currentPentominoShape [i, 0]);
            }
            if (inverted == 2)
            {
                tmpTile = GameController.getTileAt(xPos + (currentPentominoShape [i, 0] * -1), yPos + (currentPentominoShape [i, 1] * -1));
            }
            if (inverted == 1)
            {
                tmpTile = GameController.getTileAt(xPos + currentPentominoShape [i, 1], yPos + (currentPentominoShape [i, 0] * -1));
            }
            GameObject tmpGO = GameController.getTileGO(tmpTile);
            tmpGO.GetComponentInChildren <Canvas> ().enabled = true;
            tileObjectController tmpController = tmpGO.GetComponent <tileObjectController> ();
            tmpController.MousedOver();
            //tmpController.updateTileValue ("1");
            tmpController.updateTileValue(currentPentomino.values[i].ToString());
        }

        return(true);
    }
コード例 #3
0
    bool checkMatch()
    {
        List <int> xMatches = new List <int> ();
        List <int> yMatches = new List <int> ();

        for (int i = 0; i < 15; i++)
        {
            totalsTile bottom = GameController.getTotalTile(i, 0);
            totalsTile right  = GameController.getTotalTile(i, 2);

            if (bottom.currentValue == bottom.currentTarget)
            {
                xMatches.Add(i);
            }
            if (right.currentValue == right.currentTarget)
            {
                yMatches.Add(i);
            }
        }

        foreach (var xM in xMatches)
        {
            for (int i = 0; i < 15; i++)
            {
                gridTile g = GameController.getTileAt(xM, i);
                g.empty        = true;
                g.currentValue = 0;
                GameObject           clearGO   = GameController.getTileGO(g);
                tileObjectController clearCtrl = clearGO.GetComponent <tileObjectController> ();
                clearCtrl.MousedOut();
                clearCtrl.returnTextColour();
            }

            for (int i = 0; i < 8; i++)
            {
                //Instantiate laser animations
                if (i == 0)
                {
                    Vector3 pos = new Vector3(xM, 7);

                    GameObject CentreLaser = (GameObject)Instantiate(
                        centreLaserPrefab,
                        pos,
                        Quaternion.identity,
                        this.transform
                        );

                    Animator LaserAnimator = CentreLaser.GetComponent <Animator>();
                    LaserAnimator.Play("centreLaser");

                    Destroy(CentreLaser, 0.6f);
                }
                else
                {
                    Vector3 pos1 = new Vector3(xM, 7 + i);
                    Vector3 pos2 = new Vector3(xM, 7 - i);

                    GameObject Laser1 = (GameObject)Instantiate(
                        centreLaserPrefab,
                        pos1,
                        Quaternion.identity,
                        this.transform
                        );

                    GameObject Laser2 = (GameObject)Instantiate(
                        centreLaserPrefab,
                        pos2,
                        Quaternion.identity,
                        this.transform
                        );

                    Animator Laser1Animator = Laser1.GetComponent <Animator>();
                    Laser1Animator.Play("centreLaser");

                    Animator Laser2Animator = Laser2.GetComponent <Animator>();
                    Laser2Animator.Play("centreLaser");

                    Destroy(Laser1, 0.6f);
                    Destroy(Laser2, 0.6f);
                }
            }
            totalsTile bottom = GameController.getTotalTile(xM, 0);
            totalsTile top    = GameController.getTotalTile(xM, 1);
            bottom.currentTarget = bottom.currentTarget * 2;
            top.currentTarget    = bottom.currentTarget;
            bottom.currentValue  = 0;
            top.currentValue     = 0;
            GameObject           bGO         = GameController.getTotalsGO(bottom);
            GameObject           tGO         = GameController.getTotalsGO(top);
            tileObjectController bController = bGO.GetComponent <tileObjectController> ();
            tileObjectController tController = tGO.GetComponent <tileObjectController> ();
            bController.updateTileValue(bottom.currentTarget.ToString());
            tController.updateTileValue(bottom.currentTarget.ToString());
            if (yMatches.Count > 0)
            {
                GameController.score += bottom.currentTarget;
                Text scoreText = GameController.scoreText;
                scoreText.text = "Score: " + GameController.score.ToString();
            }
            else
            {
                GameController.score += bottom.currentTarget / 2;
                Text scoreText = GameController.scoreText;
                scoreText.text = "Score: " + GameController.score.ToString();
            }
        }

        foreach (var yM in yMatches)
        {
            for (int i = 0; i < 15; i++)
            {
                gridTile g = GameController.getTileAt(i, yM);
                g.empty        = true;
                g.currentValue = 0;
                GameObject           clearGO   = GameController.getTileGO(g);
                tileObjectController clearCtrl = clearGO.GetComponent <tileObjectController> ();
                clearCtrl.MousedOut();
                clearCtrl.returnTextColour();
            }

            for (int i = 0; i < 8; i++)
            {
                //Instantiate laser animations
                if (i == 0)
                {
                    Vector3 pos = new Vector3(7, yM);

                    GameObject CentreLaser = (GameObject)Instantiate(
                        centreLaserPrefab,
                        pos,
                        Quaternion.identity,
                        this.transform
                        );
                    Animator LaserAnimator = CentreLaser.GetComponent <Animator>();
                    LaserAnimator.Play("centreLaser");
                    //LaserAnimator.StartPlayback ();
                    Destroy(CentreLaser, 0.6f);
                }
                else
                {
                    Vector3 pos1 = new Vector3(7 + i, yM);
                    Vector3 pos2 = new Vector3(7 - i, yM);

                    GameObject Laser1 = (GameObject)Instantiate(
                        centreLaserPrefab,
                        pos1,
                        Quaternion.identity,
                        this.transform
                        );

                    GameObject Laser2 = (GameObject)Instantiate(
                        centreLaserPrefab,
                        pos2,
                        Quaternion.identity,
                        this.transform
                        );

                    Animator Laser1Animator = Laser1.GetComponent <Animator>();
                    Laser1Animator.Play("centreLaser");
                    Animator Laser2Animator = Laser2.GetComponent <Animator>();
                    Laser2Animator.Play("centreLaser");

                    Destroy(Laser1, 0.6f);
                    Destroy(Laser2, 0.6f);
                }
            }
            totalsTile right = GameController.getTotalTile(yM, 2);
            totalsTile left  = GameController.getTotalTile(yM, 3);
            right.currentTarget = right.currentTarget * 2;
            left.currentTarget  = right.currentTarget;
            right.currentValue  = 0;
            left.currentValue   = 0;
            GameObject           rGO         = GameController.getTotalsGO(right);
            GameObject           lGO         = GameController.getTotalsGO(left);
            tileObjectController rController = rGO.GetComponent <tileObjectController> ();
            tileObjectController lController = lGO.GetComponent <tileObjectController> ();
            rController.updateTileValue(right.currentTarget.ToString());
            lController.updateTileValue(right.currentTarget.ToString());
            if (xMatches.Count > 0)
            {
                GameController.score += right.currentTarget;
                Text scoreText = GameController.scoreText;
                scoreText.text = "Score: " + GameController.score.ToString();
            }
            else
            {
                GameController.score += right.currentTarget / 2;
                Text scoreText = GameController.scoreText;
                scoreText.text = "Score: " + GameController.score.ToString();
            }
        }

        if (xMatches.Count > 0 || yMatches.Count > 0)
        {
            //Debug.Log (xMatches.Count + ", " + yMatches.Count);
            return(true);
        }

        return(false);
    }