Exemple #1
0
        void HandleSelection()
        {
            if (!SelectionEnabled || !Input.GetMouseButtonUp(0))
            {
                return;
            }

            if (selectedPeg && selectedPeg != highlightedPeg)
            {
                if (highlightedPeg)
                {
                    bool added = highlightedPeg.TryAddingDisk(selectedPeg.SelectedDisk);
                    if (!added)
                    {
                        return;
                    }

                    Moves++;
                    selectedPeg.Clear();
                }

                selectedPeg.Deselect();
                selectedPeg = null;

                return;
            }

            if (highlightedPeg && selectedPeg != highlightedPeg)
            {
                selectedPeg = highlightedPeg;
                selectedPeg.Select();
                return;
            }

            if (highlightedPeg && highlightedPeg == selectedPeg)
            {
                selectedPeg.Deselect();
                selectedPeg = null;
            }
        }
Exemple #2
0
        void HighlightPeg()
        {
            if (highlightedPeg)
            {
                highlightedPeg.Highlight(false);
                highlightedPeg      = null;
                placeholder.Visible = false;
            }

            if (!SelectionEnabled || !Physics.Raycast(MouseToRay(), out RaycastHit hit))
            {
                return;
            }

            Peg peg = hit.transform.GetComponent <Peg>();

            if (!peg || (peg.DiskCount < 1 && !selectedPeg))
            {
                return;
            }

            highlightedPeg = peg;
            highlightedPeg.Highlight();

            if (
                !selectedPeg ||
                highlightedPeg == selectedPeg ||
                !highlightedPeg.CanPlace(selectedPeg.SelectedDisk)
                )
            {
                return;
            }

            placeholder.Size    = selectedPeg.SelectedDisk.Size;
            placeholder.Visible = true;

            highlightedPeg.Placeholder(placeholder.transform);
        }