Beispiel #1
0
    private void MouseEvents()
    {
        RaycastHit hit;

        if (Physics.Raycast(Camera.main.ScreenPointToRay(Input.mousePosition), out hit))
        {
            LaserLabObject target = hit.collider.GetComponent <LaserLabObject>();

            if (target != null)
            {
                if (target != previousHover)
                {
                    if (previousHover != null)
                    {
                        previousHover.OnHoverExit();
                    }
                    target.OnHoverEnter();
                    previousHover = target;
                }

                if (target is BoardObject)
                {
                    BoardObject boardObject = target as BoardObject;
                    Vector2Int  pos         = boardObject.getPos();
                    if (Input.GetMouseButtonDown(0))
                    {
                        if (boardObject.CanRotate)
                        {
                            boardObject.Rotate();
                            CalculateLaserPaths();
                            audioPlayer.PlayClip(rotateSound);
                        }
                        else
                        {
                            audioPlayer.PlayClip(dropSound);
                        }

                        SelectObject(-1);
                    }
                    else if (Input.GetMouseButtonDown(1))
                    {
                        if (boardObject.CanMove)
                        {
                            boardObject.Pickup();
                            level.board.SetBoardObject(pos, null);
                            AddToUnplaced(boardObject);
                            audioPlayer.PlayClip(pickupSound);
                        }
                        else
                        {
                            SelectObject(-1);
                            audioPlayer.PlayClip(dropSound);
                        }
                    }

                    if (selectedObjectIndex > -1)
                    {
                        SelectedObject.SetPreview(false);
                    }
                }
                else if (target is FloorTile)
                {
                    FloorTile  floor = target as FloorTile;
                    Vector2Int pos   = floor.getPos();
                    if (Input.GetMouseButtonDown(0))
                    {
                        if (!level.board.GetBoardObject(pos) && selectedObjectIndex != -1)
                        {
                            Place(pos);
                            audioPlayer.PlayClip(placeSound);
                        }
                        else
                        {
                            SelectObject(-1);
                        }
                    }
                    else if (Input.GetMouseButtonDown(1))
                    {
                        audioPlayer.PlayClip(dropSound);
                        SelectObject(-1);
                    }

                    if (selectedObjectIndex > -1)
                    {
                        if (level.board.GetBoardObject(pos))
                        {
                            SelectedObject.SetPreview(false);
                        }
                        else
                        {
                            SelectedObject.SetPreview(true);
                            SelectedObject.Move(pos);
                        }
                    }
                }
                else if (target is WallObject)
                {
                    WallObject wall = target as WallObject;
                    Vector2Int pos  = wall.getPos();

                    if ((Input.GetMouseButtonDown(0) || Input.GetMouseButtonDown(1)) && selectedObjectIndex > -1)
                    {
                        audioPlayer.PlayClip(dropSound);
                        SelectObject(-1);
                    }

                    if (selectedObjectIndex > -1)
                    {
                        SelectedObject.SetPreview(false);
                    }
                }
            }
            else
            {
                if (previousHover != null)
                {
                    previousHover.OnHoverExit();
                    previousHover = null;
                }

                if (Input.GetMouseButtonDown(0) || Input.GetMouseButtonDown(1))
                {
                    SelectObject(-1);
                    audioPlayer.PlayClip(dropSound);
                }

                if (selectedObjectIndex > -1)
                {
                    SelectedObject.SetPreview(false);
                }
            }
        }
        else
        {
            if (previousHover != null)
            {
                previousHover.OnHoverExit();
                previousHover = null;
            }

            if (selectedObjectIndex > -1)
            {
                SelectedObject.SetPreview(false);
            }

            if (Input.GetMouseButtonDown(0) || Input.GetMouseButtonDown(1))
            {
                SelectObject(-1);
            }
        }
    }