示例#1
0
 private void Awake()
 {
     boardLogic = new BoardLogic(width, height);
     boardLogic.FillBoardWithCells();
     activePieces   = new List <BoardPieceController>();
     inactivePieces = new List <BoardPieceController>();
     for (int i = 0; i < (width * height) * 2; i++)
     {
         BoardPieceController piece = GameObject.Instantiate(piecePrefab, inactiveHolder);
         piece.gameObject.SetActive(false);
         inactivePieces.Add(piece);
     }
     pieceSprite = new List <Sprite>();
     pieceSprite.Add(greenPiece);
     pieceSprite.Add(bluePiece);
     pieceSprite.Add(purplePiece);
     pieceSprite.Add(redPiece);
     pieceSprite.Add(yellowPiece);
     CreateFromBoard();
     canMove          = true;
     tweeningPiece    = new List <BoardPieceController>();
     boardState       = START_DELAY;
     delayer          = 1;
     time             = 15;
     timeDisplay.text = time.ToString(TIME_SCHEME);
     startPanel.SetActive(true);
     startDelayCounter = Time.time;
 }
示例#2
0
 public void RemovePiece(BoardPieceController bpc)
 {
     activePieces.Remove(bpc);
     bpc.gameObject.SetActive(false);
     bpc.transform.SetParent(inactiveHolder);
     inactivePieces.Add(bpc);
     tweeningPiece.Remove(bpc);
 }
示例#3
0
    public void RemovePiece(int bpc)
    {
        BoardPieceController boardPieceController = activePieces[bpc];

        activePieces.RemoveAt(bpc);
        boardPieceController.gameObject.SetActive(false);
        boardPieceController.transform.SetParent(inactiveHolder);
        inactivePieces.Add(boardPieceController);
    }
示例#4
0
 private void CreateFromBoard()
 {
     int[] board = boardLogic.GetBoard();
     boardLogic.PrintBoard();
     for (int i = 0; i < board.Length; i++)
     {
         int y         = Mathf.FloorToInt(i / width);
         int x         = i - (y * width);
         int pieceType = board[i];
         BoardPieceController newPiece = inactivePieces[0];
         inactivePieces.RemoveAt(0);
         newPiece.transform.SetParent(pieceHolder);
         newPiece.x           = x;
         newPiece.y           = y;
         newPiece.gameManager = this;
         newPiece.SetSprite(pieceSprite[pieceType]);
         newPiece.gameObject.SetActive(true);
         newPiece.transform.localPosition = new Vector3(x * pieceWidth, y * InvertedHeight, 0);
         activePieces.Add(newPiece);
     }
 }
示例#5
0
    public void RefillBoard()
    {
        List <int> positionsToRefil = new List <int>();

        int[] board = boardLogic.GetBoard();
        for (int i = 0; i < board.Length; i++)
        {
            if (board[i] == -1)
            {
                positionsToRefil.Add(i);
            }
        }

        boardLogic.RefillBoard();
        board = boardLogic.GetBoard();

        for (int v = 0; v < positionsToRefil.Count; v++)
        {
            int i = positionsToRefil[v];

            int y         = Mathf.FloorToInt(i / width);
            int x         = i - (y * width);
            int pieceType = board[i];
            BoardPieceController newPiece = inactivePieces[0];
            inactivePieces.RemoveAt(0);
            newPiece.transform.SetParent(pieceHolder);
            newPiece.x           = x;
            newPiece.y           = y;
            newPiece.gameManager = this;
            newPiece.SetSprite(pieceSprite[pieceType]);
            newPiece.gameObject.SetActive(true);
            newPiece.transform.localPosition = new Vector3(x * pieceWidth, 20, 0);
            newPiece.transform.localScale    = new Vector3(1, 1, 1);
            activePieces.Add(newPiece);
            tweeningPiece.Add(newPiece);
            newPiece.ShiftDownOnFill(y * InvertedHeight);
        }
    }
示例#6
0
 public void PieceTweenDone(BoardPieceController bpc)
 {
     tweeningPiece.Remove(bpc);
 }