Exemplo n.º 1
0
    // Generates a boxgrid
    private void GenerateBoxGrid(Transform startPoint, Transform endPoint, ref List <BoxGrid> boxGrid)
    {
        generatorIndex++;

        int numberOfXGrid = (int)NumberOfGrids(startPoint, endPoint, 'x');
        int numberOfYGrid = (int)NumberOfGrids(startPoint, endPoint, 'y');
        int numberOfZGrid = (int)NumberOfGrids(startPoint, endPoint, 'z');

        int currentTempGridArraySize = (numberOfXGrid * numberOfYGrid * numberOfZGrid);

        BoxGrid[] tempGridArray = new BoxGrid[currentTempGridArraySize];

        if (generatorIndex == previousGeneratorIndex)
        {
            gridArraySizeForRemovingBoxGridsFromList[generatorIndex] = gridArraySizeForRemovingBoxGridsFromList[generatorIndex] + currentTempGridArraySize;
        }
        else
        {
            gridArraySizeForRemovingBoxGridsFromList[generatorIndex] = currentTempGridArraySize;
        }

        int l = 0;

        for (int i = 0; i < numberOfXGrid; i++)
        {
            for (int j = 0; j < numberOfYGrid; j++)
            {
                for (int k = 0; k < numberOfZGrid; k++)
                {
                    tempGridArray[l] = new BoxGrid(new Vector3((startPoint.position.x) + i * BoxGrid.gridSize * Mathf.Sign(endPoint.position.x - startPoint.position.x),
                                                               (startPoint.position.y) + j * BoxGrid.gridSize * Mathf.Sign(endPoint.position.y - startPoint.position.y),
                                                               (startPoint.position.z) + k * BoxGrid.gridSize * Mathf.Sign(endPoint.position.z - startPoint.position.z)));

                    l++;
                }
            }
        }

        generatorIndex = (generatorIndex == tunnelGenarator.GetNumberOfTunnelObjects()) ? -1 : generatorIndex;

        boxGrid.RemoveRange(0, gridArraySizeForRemovingBoxGridsFromList[generatorIndex + 1]);

        previousGeneratorIndex = generatorIndex;

        boxGrid.AddRange(tempGridArray);
    }
Exemplo n.º 2
0
    public bool IsValidGridPos()
    {
        foreach (Transform child in transform)
        {
            Vector2 v = BoxGrid.RoundVec2(child.position);

            // Not inside Border?
            if (!BoxGrid.InsideBorder(v))
            {
                return(false);
            }

            // Block in grid cell (and not part of same group)?
            if (BoxGrid.grid[(int)v.x, (int)v.y] != null &&
                BoxGrid.grid[(int)v.x, (int)v.y].parent != transform)
            {
                return(false);
            }
        }
        return(true);
    }
Exemplo n.º 3
0
    public void UpdateGrid()
    {
        // Remove old children from grid
        for (int y = 0; y < BoxGrid.h; ++y)
        {
            for (int x = 0; x < BoxGrid.w; ++x)
            {
                if (BoxGrid.grid[x, y] != null)
                {
                    if (BoxGrid.grid[x, y].parent == transform)
                    {
                        BoxGrid.grid[x, y] = null;
                    }
                }
            }
        }

        // Add new children to grid
        foreach (Transform child in transform)
        {
            Vector2 v = BoxGrid.RoundVec2(child.position);
            BoxGrid.grid[(int)v.x, (int)v.y] = child;
        }
    }
Exemplo n.º 4
0
    private void Update()
    {
        // Move Left
        if (Input.GetButtonDown("Left") && UIControl.canDrop == true)
        {
            // Modify position
            transform.position += new Vector3(-1, 0, 0);

            // See if valid
            if (IsValidGridPos())
            {
                // Its valid. Update grid.
                UpdateGrid();
            }
            else
            {
                // Its not valid. revert.
                transform.position += new Vector3(1, 0, 0);
            }
        }
        // Move Right
        else if (Input.GetButtonDown("Right") && UIControl.canDrop == true)
        {
            // Modify position
            transform.position += new Vector3(1, 0, 0);

            // See if valid
            if (IsValidGridPos())
            {
                // It's valid. Update grid.
                UpdateGrid();
            }
            else
            {
                // It's not valid. revert.
                transform.position += new Vector3(-1, 0, 0);
            }
        }
        // Rotate
        else if (Input.GetButtonDown("Rotate") && groupName.ToLower() != "o" && UIControl.canDrop == true)
        {
            transform.Rotate(0, 0, -90);

            // See if valid
            if (IsValidGridPos())
            {
                // It's valid. Update grid.
                UpdateGrid();
            }
            else
            {
                // It's not valid. revert.
                transform.Rotate(0, 0, 90);
            }
        }
        else if (Input.GetButtonDown("Fall") && UIControl.canDrop == true)
        {
            Scoring.score++;

            // Modify position
            transform.position += new Vector3(0, -1, 0);

            // See if valid
            if (IsValidGridPos())
            {
                // It's valid. Update grid.
                UpdateGrid();
            }
            else
            {
                // It's not valid. revert.
                transform.position += new Vector3(0, 1, 0);

                // Clear filled horizontal lines
                BoxGrid.DeleteFullRows();

                // Disable script
                enabled = false;

                // Spawn next Group
                FindObjectOfType <Spawner>().SpawnNext();
            }
            Scoring.UpdateUI();
        }
        // Move Downwards and Fall
        else if (UIControl.canDrop == true && Time.time - lastFall >= fallTick)
        {
            // Modify position
            transform.position += new Vector3(0, -1, 0);

            // See if valid
            if (IsValidGridPos())
            {
                // It's valid. Update grid.
                UpdateGrid();
            }
            else
            {
                // It's not valid. revert.
                transform.position += new Vector3(0, 1, 0);

                // Clear filled horizontal lines
                BoxGrid.DeleteFullRows();

                // Disable script
                enabled = false;

                // Spawn next Group
                FindObjectOfType <Spawner>().SpawnNext();
            }

            lastFall = Time.time;
        }
        // Move Downwards and Fall
        else if (Input.GetButton("Hard Drop") || hardDrop == true)
        {
            if (UIControl.canDrop == true)
            {
                // Modify position
                transform.position += new Vector3(0, -1, 0);
                Scoring.score++;

                // See if valid
                if (IsValidGridPos())
                {
                    // It's valid. Update grid.
                    UpdateGrid();
                }
                else
                {
                    // It's not valid. revert.
                    transform.position += new Vector3(0, 1, 0);

                    // Clear filled horizontal lines
                    BoxGrid.DeleteFullRows();

                    // Disable script
                    enabled = false;
                    Scoring.UpdateUI();

                    // Spawn next Group
                    FindObjectOfType <Spawner>().SpawnNext();
                }
            }
        }
    }
Exemplo n.º 5
0
    public void UIInput(string control)
    {
        if (target != null)
        {
            // Move Left
            if (control == "Left" && canDrop == true)
            {
                // Modify position
                target.transform.position += new Vector3(-1, 0, 0);

                sfxSource.PlayOneShot(move);

                // See if valid
                if (target.IsValidGridPos())
                {
                    // Its valid. Update grid.
                    target.UpdateGrid();
                }
                else
                {
                    // Its not valid. revert.
                    target.transform.position += new Vector3(1, 0, 0);
                }
            }
            // Move Right
            else if (control == "Right" && canDrop == true)
            {
                // Modify position
                target.transform.position += new Vector3(1, 0, 0);

                sfxSource.PlayOneShot(move);

                // See if valid
                if (target.IsValidGridPos())
                {
                    // It's valid. Update grid.
                    target.UpdateGrid();
                }
                else
                {
                    // It's not valid. revert.
                    target.transform.position += new Vector3(-1, 0, 0);
                }
            }
            // Rotate
            else if (control == "Rotate" && target.groupName.ToLower() != "o" && canDrop == true)
            {
                sfxSource.PlayOneShot(rotate);

                target.transform.Rotate(0, 0, -90);

                // See if valid
                if (target.IsValidGridPos())
                {
                    // It's valid. Update grid.
                    target.UpdateGrid();
                }
                else
                {
                    // It's not valid. revert.
                    target.transform.Rotate(0, 0, 90);
                }
            }
            else if (control == "Soft Drop")
            {
                if (canDrop == true)
                {
                    Scoring.score++;

                    // Modify position
                    target.transform.position += new Vector3(0, -1, 0);
                    sfxSource.PlayOneShot(move);

                    // See if valid
                    if (target.IsValidGridPos())
                    {
                        // It's valid. Update grid.
                        target.UpdateGrid();
                    }
                    else
                    {
                        // It's not valid. revert.
                        target.transform.position += new Vector3(0, 1, 0);

                        // Clear filled horizontal lines
                        BoxGrid.DeleteFullRows();

                        // Disable script
                        target.enabled = false;

                        // Spawn next Group
                        FindObjectOfType <Spawner>().SpawnNext();
                    }
                    Scoring.UpdateUI();
                }
            }
            else if (control == "Hard Drop" && canDrop == true)
            {
                target.hardDrop = true;
            }
        }
    }