Esempio n. 1
0
    public override void OnRelease()
    {
        if (cam == null)
        {
            cam = Camera.main;
        }

        RaycastHit2D hit = Physics2D.Raycast(cam.ScreenToWorldPoint(Input.mousePosition), Vector3.zero);

        if (hit)
        {
            PuzzleSlot newSlot = hit.collider.GetComponent <PuzzleSlot>();
            if (newSlot != null)
            {
                newSlot.Put(this);
            }
        }
        else if (curSlot != null)
        {
            curSlot.Put(this);
        }

        isSelected        = false;
        Ren.sortingOrder -= 1;
        OnPieceDeselect();
    }
    private void PuzzlePiece_OnPieceDeselect()
    {
        PuzzleSlot.DisableColliders();
        PuzzlePiece.EnableColliders();

        if (PuzzleSlot.IsAllMatch())
        {
            print("hallelujah");
        }
    }
Esempio n. 3
0
 public void PreparePuzzle()
 {
     foreach (PuzzleAssemblyPiece piece in Pieces)
     {
         piece.GrabMesh();
         PuzzleSlot newSlot = Instantiate(SlotPrefab, piece.transform.position, piece.transform.rotation, this.transform);
         piece.matchingSlot = newSlot;
         Slots.Add(newSlot);
         newSlot.StartTrackingPiece(piece);
     }
 }
Esempio n. 4
0
    public void StartMagnetizing(PuzzleSlot goToMe)
    {
        isMagnetizing     = true;
        magnetizingTarget = goToMe;
        GetComponent <Collider>().enabled = false;
        rigidbody.useGravity      = false;
        rigidbody.velocity        = Vector3.zero;
        rigidbody.angularVelocity = Vector3.zero;

        magSpeed      = Vector3.Distance(transform.position, goToMe.transform.position) / 0.5f;
        rotationSpeed = Quaternion.Angle(transform.rotation, goToMe.transform.rotation) / 0.5f;
    }
    void Update()
    {
        if (Input.GetMouseButtonDown(0))
        {
            if (!EventSystem.current.IsPointerOverGameObject())
            {
                RaycastHit hit;
                Ray        ray = Camera.main.ScreenPointToRay(Input.mousePosition);

                if (Physics.Raycast(ray, out hit))
                {
                    PuzzleSlot        puzzleSlot = hit.transform.gameObject.GetComponent <PuzzleSlot>();
                    Puzzle            puzzle     = hit.transform.gameObject.GetComponent <Puzzle>();
                    PuzzlePieceCycler cycler     = hit.transform.gameObject.GetComponent <PuzzlePieceCycler>();
                    Container         container  = hit.transform.gameObject.GetComponent <Container>();
                    PuzzlePiece       piece      = hit.transform.gameObject.GetComponent <PuzzlePiece>();

                    if (puzzleSlot != null)
                    {
                        puzzleSlot.UsePuzzleSlot(inventory);
                    }
                    else if (puzzle != null)
                    {
                        puzzle.PutPuzzlePiece(inventory);
                    }
                    else if (cycler != null)
                    {
                        cycler.CyclePieces();
                    }
                    else if (container != null)
                    {
                        inventory.AddToInventory(container.TakePiece());
                    }
                    else if (piece != null)
                    {
                        //inventory.ChangeSelected(piece);
                    }
                }
                else
                {//Clicked on "nothing"
                }
            }
            else
            {//Clicked a UI element
            }
        }
    }
    private void Start()
    {
        PuzzleParent pP = jigsawSlotPrefab.GetComponent <PuzzleParent>();

        float startX = transform.position.x - pP.Width * (cols - 1) / 2.0f;
        float startY = transform.position.y - pP.Height * (rows - 1) / 2.0f;

        float gapX = pP.Width;
        float gapY = pP.Height;

        List <Sprite> tempSpriteList = new List <Sprite>();

        foreach (var item in spriteList)
        {
            tempSpriteList.Add(item);
        }
        for (int y = 0; y < rows; y++)
        {
            for (int x = 0; x < cols; x++)
            {
                GameObject tempSlot = Instantiate(jigsawSlotPrefab, transform);
                tempSlot.transform.position = new Vector3(startX + x * gapX, startY + (rows - 1 - y) * gapY);
                PuzzleSlot pS = tempSlot.GetComponent <PuzzleSlot>();
                pS.name = spriteList[y * cols + x].name;

                GameObject tempPiece = Instantiate(tempJigsawPiecePrefab, tempPiecesStorage);
                tempPiece.transform.position = new Vector3(startX + x * gapX, startY + (rows - 1 - y) * gapY);
                PuzzlePiece pPc = tempPiece.GetComponent <PuzzlePiece>();
                pPc.Sprite = tempSpriteList.GetRandomAndRemove();

                pS.Put(pPc);

                if ((y * cols + x) % 3 == 0)
                {
                    pieces1.Add(pPc);
                    pPc.Hide();
                }
            }
        }
        int length = pieces1.Count / 2;

        for (int i = 0; i < length; i++)
        {
            pieces2.Add(pieces1.GetRandomAndRemove());
        }
    }
 private void PuzzlePiece_OnPieceSelect()
 {
     PuzzleSlot.EnableColliders();
     PuzzlePiece.DisableColliders();
 }