예제 #1
0
    public void PlaceTileAction()
    {
        Ray        ray = Services.GameManager.currentCamera.ScreenPointToRay(Input.mousePosition);
        RaycastHit hit = new RaycastHit();

        if (Physics.Raycast(ray, out hit, Mathf.Infinity, Services.LevelEditor.topTileLayer))
        {
            Vector3 pointOnBoard = hit.transform.position;
            selectedTile.transform.position = new Vector3(pointOnBoard.x, pointOnBoard.y + 0.2f, pointOnBoard.z);
            //selectedTile.transform.parent = null;
            selectedTile.transform.parent = Services.LevelEditor.transform;
            tileInPosition = true;
        }
        else
        {
            tileInPosition = false;
            if (Physics.Raycast(ray, out hit, Mathf.Infinity, Services.LevelEditor.invisPlane))
            {
                selectedTile.transform.position = hit.point;
            }
        }


        //finalize tile placement
        if (Input.GetMouseButtonDown(0) && tileInPosition)
        {
            tileInPosition = false;

            BoardSpace space = CalculateSpaceFromLocation(selectedTile.transform.position);
            space.AddTile(selectedTile, false);
            space.gameObject.layer = LayerMask.NameToLayer("Default");

            for (int i = 0; i < space.tileStack.Count; ++i)
            {
                space.tileStack[i].gameObject.layer = LayerMask.NameToLayer("TileLayer");
            }

            selectedTile.GetComponent <MeshRenderer>().sortingOrder = 0;

            selectedTile.transform.SetParent(mainBoard.transform);
            selectedTile.gameObject.layer = LayerMask.NameToLayer("TopTiles");
            selectedTile       = null;
            currentSpawnedTile = null;
        }
    }
예제 #2
0
    public void FinalizeTilePlacement()
    {
        BoardSpace space = CalculateSpaceFromLocation(spawnedTile.transform.position);

        space.AddTile(spawnedTile, false);
        spawnedTile.GetComponent <MeshRenderer> ().sortingOrder = 0;
        ToggleGlow(spawnedTile, "normal");
        SetSpaceGlow("normal");
        if (highlightedSpace != null)
        {
            ToggleGlow(highlightedSpace, "normal");
        }
        boardManager.CheckForScore();
        if (!firstTileFinalized)
        {
            firstTileFinalized = true;
            if ((space.colNum == 0) && (space.rowNum != 0))
            {
                boardManager.sideAboutToCollapse = 0;
            }
            else if (space.rowNum == 5)
            {
                boardManager.sideAboutToCollapse = 1;
            }
            else if (space.colNum == 5)
            {
                boardManager.sideAboutToCollapse = 2;
            }
            else
            {
                boardManager.sideAboutToCollapse = 3;
            }

            List <BoardSpace> boardspaces = boardManager.GetSpaceListFromSideNum();
            foreach (BoardSpace bs in boardspaces)
            {
                bs.gameObject.GetComponent <Renderer> ().material = boardManager.mats [7];
                bs.aboutToCollapse = true;
            }
        }
        mode = "Select Stack";
        spawnedTile.GetComponent <AudioSource> ().Play();
    }