Esempio n. 1
0
    public void ChangeTool(int newTool)
    {
        if (newTool != (int)currentTool)
        {
            previousTool = (int)currentTool;
            currentTool  = (Tools)newTool;

            switch (currentTool)
            {
            case Tools.Arrow:
                Cursor.SetCursor(standardCursor, Vector2.zero, CursorMode.Auto);
                if (currentPuzzleElementSelected && !currentPuzzleElementSelected.activeSelf)
                {
                    currentPuzzleElementSelected.SetActive(true);
                }
                break;

            case Tools.Brush:
                Cursor.SetCursor(brushCursor, new Vector2(0, brushCursor.height - 60), CursorMode.Auto);
                if (currentPuzzleElementSelected && currentPuzzleElementSelected.activeSelf)
                {
                    currentPuzzleElementSelected.SetActive(false);
                }
                break;

            case Tools.Eraser:
                Cursor.SetCursor(eraserCursor, new Vector2(0, eraserCursor.height - 126), CursorMode.Auto);
                if (currentPuzzleElementSelected && currentPuzzleElementSelected.activeSelf)
                {
                    currentPuzzleElementSelected.SetActive(false);
                }
                break;

            case Tools.Dropper:
                Cursor.SetCursor(dropperCursor, new Vector2(-11, dropperCursor.height - 11), CursorMode.Auto);
                if (currentPuzzleElementSelected && currentPuzzleElementSelected.activeSelf)
                {
                    currentPuzzleElementSelected.SetActive(false);
                }
                break;
            }
        }
        else
        {
            if (currentTool == Tools.Brush)
            {
                selectedTile        = TileButton.Tiles.None;
                currentSelectedTile = allTiles.blankCursorTile;
            }
        }
    }
Esempio n. 2
0
    // Update is called once per frame
    void Update()
    {
        if (mouseBlockedByUI || LevelManager.instance.mode != LevelManager.LevelMode.Editor)
        {
            return;
        }

        Vector3Int mousePos = HLTilemap.WorldToCell(cam.ScreenToWorldPoint(Input.mousePosition));

        // Change Tools Keyboard Controls -------------------------------------------
        if (!LevelManager.instance.levelName.isFocused && !LevelManager.instance.levelDescription.isFocused)
        {
            if (Input.GetKeyDown(KeyCode.R))
            {
                ChangeTool((int)Tools.Dropper);
            }

            if (Input.GetKeyDown(KeyCode.E))
            {
                ChangeTool((int)Tools.Eraser);
            }

            if (Input.GetKeyDown(KeyCode.W))
            {
                ChangeTool((int)Tools.Brush);
            }

            if (Input.GetKeyDown(KeyCode.Q))
            {
                ChangeTool((int)Tools.Arrow);
            }
        }
        // --------------------------------------------------------------------------


        // Change Tool to EyeDropper
        if (Input.GetKeyDown(KeyCode.LeftAlt) && !LevelManager.instance.levelName.isFocused && !LevelManager.instance.levelDescription.isFocused)
        {
            ChangeTool((int)Tools.Dropper);
        }

        switch (currentTool)
        {
        case Tools.Arrow:

            if (mousePos != previousCoordinate)
            {
                HLTilemap.SetTile(previousCoordinate, null);
                if (sizeLimit.HasTile(mousePos))
                {
                    HLTilemap.SetTile(mousePos, allTiles.blankArrowToolTile);
                    previousCoordinate = mousePos;
                }
                else
                {
                    previousCoordinate = new Vector3Int(-999, -999, -999);
                }
            }

            if (Input.GetMouseButton(0) && currentPuzzleElementSelected && sizeLimit.HasTile(mousePos))
            {
                currentPuzzleElementSelected.GetComponent <PuzzleElementPlaceHolder>().ChangeState(PuzzleElementPlaceHolder.States.InLevel);

                LinkElementPlaceholder LEP = currentPuzzleElementSelected.GetComponent <LinkElementPlaceholder>();
                if (LEP)
                {
                    if (!linkingObjects.ContainsKey(currentPuzzleElementSelected))
                    {
                        linkingObjects.Add(currentPuzzleElementSelected, LEP.type);
                    }
                }

                currentPuzzleElementSelected = null;
            }

            if (Input.GetMouseButton(1) && currentPuzzleElementSelected)
            {
                Destroy(currentPuzzleElementSelected);
                currentPuzzleElementSelected = null;
            }

            break;

        case Tools.Brush:

            if (mousePos != previousCoordinate)
            {
                HLTilemap.SetTile(previousCoordinate, null);
                if (sizeLimit.HasTile(mousePos))
                {
                    HLTilemap.SetTile(mousePos, currentSelectedTile);
                    previousCoordinate = mousePos;
                }
                else
                {
                    previousCoordinate = new Vector3Int(-999, -999, -999);
                }
            }

            // Paint Tiles
            if (Input.GetMouseButton(0) && currentSelectedTile != allTiles.blankCursorTile && sizeLimit.HasTile(mousePos))
            {
                desiredTM.SetTile(mousePos, currentSelectedTile);

                if (desiredTM != baseTM)
                {
                    baseTM.SetTile(mousePos, null);
                }

                if (desiredTM != collidable)
                {
                    collidable.SetTile(mousePos, null);
                }
            }

            // Erase Tiles
            if (Input.GetMouseButton(1))
            {
                if (collidable.GetTile(mousePos))
                {
                    collidable.SetTile(mousePos, null);
                }

                if (baseTM.GetTile(mousePos))
                {
                    baseTM.SetTile(mousePos, null);
                }
            }

            // Reset Brush
            if (Input.GetMouseButtonDown(2))
            {
                selectedTile        = TileButton.Tiles.None;
                currentSelectedTile = allTiles.blankCursorTile;
                previousCoordinate  = new Vector3Int(-999, -999, -999);
            }

            break;

        case Tools.Eraser:

            if (mousePos != previousCoordinate)
            {
                HLTilemap.SetTile(previousCoordinate, null);
                HLTilemap.SetTile(previousCoordinate, null);
                if (sizeLimit.HasTile(mousePos))
                {
                    HLTilemap.SetTile(mousePos, allTiles.blankArrowToolTile);
                    previousCoordinate = mousePos;
                }
                else
                {
                    previousCoordinate = new Vector3Int(-999, -999, -999);
                }
            }

            if (Input.GetMouseButton(0))
            {
                if (collidable.GetTile(mousePos))
                {
                    collidable.SetTile(mousePos, null);
                }

                if (baseTM.GetTile(mousePos))
                {
                    baseTM.SetTile(mousePos, null);
                }
            }

            break;

        case Tools.Dropper:

            if (Input.GetKeyUp(KeyCode.LeftAlt) && previousTool != -1 && previousTool != (int)Tools.Dropper)
            {
                ChangeTool(previousTool);
            }

            if (mousePos != previousCoordinate)
            {
                HLTilemap.SetTile(previousCoordinate, null);
                if (sizeLimit.HasTile(mousePos))
                {
                    HLTilemap.SetTile(mousePos, allTiles.blankArrowToolTile);
                    previousCoordinate = mousePos;
                }
                else
                {
                    previousCoordinate = new Vector3Int(-999, -999, -999);
                }
            }

            if (Input.GetMouseButtonUp(0))
            {
                Ray          ray = cam.ScreenPointToRay(Input.mousePosition);
                RaycastHit2D hit = Physics2D.Raycast(ray.origin, ray.direction);

                if (hit.collider && hit.collider.CompareTag("Placeholder"))
                {
                    currentPuzzleElementSelected = Instantiate(hit.collider.gameObject);
                    currentPuzzleElementSelected.GetComponent <PuzzleElementPlaceHolder>().ChangeState(PuzzleElementPlaceHolder.States.Selected);
                    ChangeTool((int)Tools.Arrow);

                    return;
                }

                TileBase tileSelected = null;

                if (collidable.GetTile(mousePos))
                {
                    tileSelected = collidable.GetTile(mousePos);
                    desiredTM    = collidable;
                }

                if (baseTM.GetTile(mousePos))
                {
                    tileSelected = baseTM.GetTile(mousePos);
                    desiredTM    = baseTM;
                }

                if (tileSelected)
                {
                    currentSelectedTile = tileSelected;
                    ChangeTool((int)Tools.Brush);
                }
            }

            break;
        }
    }
Esempio n. 3
0
 // Start is called before the first frame update
 void Start()
 {
     selectedTile        = TileButton.Tiles.None;
     currentSelectedTile = allTiles.blankCursorTile;
     Cursor.SetCursor(standardCursor, Vector2.zero, CursorMode.Auto);
 }
Esempio n. 4
0
    public void TileToPaintSelected(TileButton.Tiles tile)
    {
        if (tile == selectedTile)
        {
            currentSelectedTile = allTiles.blankCursorTile;
            selectedTile        = TileButton.Tiles.None;

            return;
        }

        selectedTile = tile;

        switch (tile)
        {
        case TileButton.Tiles.Ground:
            currentSelectedTile = allTiles.groundTile;
            desiredTM           = baseTM;
            break;

        case TileButton.Tiles.DarkGround:
            currentSelectedTile = allTiles.darkGroundTile;
            desiredTM           = baseTM;
            break;

        case TileButton.Tiles.VerticalWall:
            currentSelectedTile = allTiles.verticalWallTile;
            desiredTM           = collidable;
            break;

        case TileButton.Tiles.HorizontalWall:
            currentSelectedTile = allTiles.horizontalWallTile;
            desiredTM           = collidable;
            break;

        case TileButton.Tiles.LUCorner:
            currentSelectedTile = allTiles.LUCornerTile;
            desiredTM           = collidable;
            break;

        case TileButton.Tiles.LDCorner:
            currentSelectedTile = allTiles.LDCornerTile;
            desiredTM           = collidable;
            break;

        case TileButton.Tiles.RUCorner:
            currentSelectedTile = allTiles.RUCornerTile;
            desiredTM           = collidable;
            break;

        case TileButton.Tiles.RDCorner:
            currentSelectedTile = allTiles.RDCornerTile;
            desiredTM           = collidable;
            break;

        case TileButton.Tiles.DeadEndUp:
            currentSelectedTile = allTiles.DeadEndUp;
            desiredTM           = collidable;
            break;

        case TileButton.Tiles.DeadEndDown:
            currentSelectedTile = allTiles.DeadEndDown;
            desiredTM           = collidable;
            break;

        case TileButton.Tiles.DeadEndRight:
            currentSelectedTile = allTiles.DeadEndRight;
            desiredTM           = collidable;
            break;

        case TileButton.Tiles.DeadEndLeft:
            currentSelectedTile = allTiles.DeadEndLeft;
            desiredTM           = collidable;
            break;

        case TileButton.Tiles.DeadContinuousLeft:
            currentSelectedTile = allTiles.DeadContinuousLeft;
            desiredTM           = collidable;
            break;

        case TileButton.Tiles.DeadContinuousRight:
            currentSelectedTile = allTiles.DeadContinuousRight;
            desiredTM           = collidable;
            break;

        case TileButton.Tiles.DeadContinuousUp:
            currentSelectedTile = allTiles.DeadContinuousUp;
            desiredTM           = collidable;
            break;

        case TileButton.Tiles.DeadContinuousDown:
            currentSelectedTile = allTiles.DeadContinuousDown;
            desiredTM           = collidable;
            break;

        case TileButton.Tiles.RotatingCylinder:
            currentSelectedTile = allTiles.RotatingCylinder;
            desiredTM           = collidable;
            break;

        case TileButton.Tiles.lightsPanel:
            currentSelectedTile = allTiles.LightsPanel;
            desiredTM           = collidable;
            break;
        }

        if (currentTool != Tools.Brush)
        {
            ChangeTool(1);
        }
    }
    public static int CheckTile(TileBase tile)
    {
        TileButton.Tiles i  = TileButton.Tiles.None;
        AllTiles         aT = PuzzleEditorController.instance.allTiles;

        if (tile == aT.groundTile)
        {
            i = TileButton.Tiles.Ground;
        }
        else if (tile == aT.darkGroundTile)
        {
            i = TileButton.Tiles.DarkGround;
        }
        else if (tile == aT.verticalWallTile)
        {
            i = TileButton.Tiles.VerticalWall;
        }
        else if (tile == aT.horizontalWallTile)
        {
            i = TileButton.Tiles.HorizontalWall;
        }
        else if (tile == aT.LUCornerTile)
        {
            i = TileButton.Tiles.LUCorner;
        }
        else if (tile == aT.LDCornerTile)
        {
            i = TileButton.Tiles.LDCorner;
        }
        else if (tile == aT.RUCornerTile)
        {
            i = TileButton.Tiles.RUCorner;
        }
        else if (tile == aT.RDCornerTile)
        {
            i = TileButton.Tiles.RDCorner;
        }
        else if (tile == aT.DeadEndUp)
        {
            i = TileButton.Tiles.DeadEndUp;
        }
        else if (tile == aT.DeadEndDown)
        {
            i = TileButton.Tiles.DeadEndDown;
        }
        else if (tile == aT.DeadEndLeft)
        {
            i = TileButton.Tiles.DeadEndLeft;
        }
        else if (tile == aT.DeadEndRight)
        {
            i = TileButton.Tiles.DeadEndRight;
        }
        else if (tile == aT.DeadContinuousLeft)
        {
            i = TileButton.Tiles.DeadContinuousLeft;
        }
        else if (tile == aT.DeadContinuousRight)
        {
            i = TileButton.Tiles.DeadContinuousRight;
        }
        else if (tile == aT.DeadContinuousUp)
        {
            i = TileButton.Tiles.DeadContinuousUp;
        }
        else if (tile == aT.DeadContinuousDown)
        {
            i = TileButton.Tiles.DeadContinuousDown;
        }
        else if (tile == aT.RotatingCylinder)
        {
            i = TileButton.Tiles.RotatingCylinder;
        }
        else if (tile == aT.LightsPanel)
        {
            i = TileButton.Tiles.lightsPanel;
        }

        return((int)i);
    }