Ejemplo n.º 1
0
    public void AttemptPairing()
    {
        if (Pair == null)
        {
            if (Finder == null)
            {
                Finder = GameObject.FindObjectOfType <SkarpetkasFinder>();
            }

            GameObject[] Skarpetkas = Finder.FindSkarpetkas();

            for (int i = 0; i < Skarpetkas.Length; i++)
            {
                if (Vector3.Distance(Skarpetkas[i].transform.position, this.gameObject.transform.position) <= PairingDistance)
                {
                    SkarpetkaController other = Skarpetkas[i].GetComponent <SkarpetkaController>();
                    if (other.Pair == null && other != this && Pair == null)
                    {
                        this.Pair  = other;
                        other.Pair = this;
                    }
                }
            }
        }
        else
        {
            Debug.LogError("Already Paired");
        }
    }
Ejemplo n.º 2
0
    public void AttemptToPickSkarpetka()
    {
        if (!Pile.gameObject.activeInHierarchy)
        {
            return;
        }

        Vector3 MousePos = Input.InputToWorldPosition();

        Transform           closestSkarpetka  = null;
        SkarpetkaController closestController = null;

        GameObject skarpetka = Finder.FindClosestSkarpetka(MousePos, null);

        if (skarpetka != null)
        {
            closestController = skarpetka.GetComponent <SkarpetkaController>();
        }

        if (Pile.SkarpetkasLeft > 0 && Vector3.Distance(MousePos, Pile.transform.position) <= PickReach)
        {
            if (closestController == null || Vector3.Distance(MousePos, closestController.transform.position) > Vector3.Distance(MousePos, Pile.transform.position))
            {
                closestController = Pile.SpawnSkarpetka(MousePos);
                closestSkarpetka  = closestController.transform;
            }
            else
            {
                closestSkarpetka = closestController.transform;
            }
        }
        else if (closestController != null && Vector3.Distance(closestController.transform.position, MousePos) <= PickReach)
        {
            closestSkarpetka = closestController.transform;
        }

        if (closestSkarpetka != null)
        {
            StartPos         = closestSkarpetka.position;
            PickedSkarpetka  = closestSkarpetka.gameObject;
            PickedController = PickedSkarpetka.GetComponent <SkarpetkaController>();
            PickOffset       = closestSkarpetka.position - MousePos;
            Picked           = true;
            if (closestController.Pair != null && closestController.Pair.GetComponent <SpriteRenderer>().sortingOrder > closestController.gameObject.GetComponent <SpriteRenderer>().sortingOrder)
            {
                Layerer.LayerSkarpetkas(null, PickedSkarpetka, true);
                Layerer.LayerSkarpetkas(null, closestController.Pair.gameObject, false);
            }
            else
            {
                Layerer.LayerSkarpetkas(null, PickedSkarpetka, true);
            }
            PickedSock.Invoke();
            StartCoroutine(MoveSkarpetka());
        }
    }
Ejemplo n.º 3
0
 public void AttemptToUnPair()
 {
     //Debug.Log("Skarpetka attempting to unpair");
     if (Pair != null)
     {
         Pair.Pair = null;
         this.Pair = null;
     }
     else
     {
         Debug.LogError("Not paired");
     }
 }
Ejemplo n.º 4
0
    private void InsertIntoBasket(SkarpetkaController sock)
    {
        if (sock.Pair == null)
        {
            Debug.LogError("WTF?");
            return;
        }

        Sock firstSock  = sock.GetComponent <Sock>();
        Sock secondSock = sock.Pair.GetComponent <Sock>();

        if (firstSock.Equals(secondSock))
        {
            //TODO beautiful animation of successful paired socks
            Destroy(firstSock.gameObject);
            Destroy(secondSock.gameObject);
            CorrectInsertion.Invoke();

            GameState.remainingSocksPairs--;

            if (GameState.remainingSocksPairs <= 0)
            {
                //Win level
                gameStateManager.victory();
            }
        }
        else
        {
            //TODO animation of wrong paired socks
            //sock.MoveTo(StartPos);
            Pile.RemovePairedSocks(firstSock, secondSock);
            Destroy(firstSock.gameObject);
            Destroy(secondSock.gameObject);

            WrongInsertion.Invoke();
            GameState.remainingLifes -= 2;
            FindObjectOfType <UIManager>().UpdateLifes(GameState.remainingLifes);
            GameState.remainingSocksPairs -= 2;

            if (GameState.remainingLifes <= 0)
            {
                gameStateManager.GameOver();
            }
        }
    }
Ejemplo n.º 5
0
    public SkarpetkaController SpawnSkarpetka(Vector3 pos)
    {
        if (Skarpetkas.Count > 0)
        {
            GameObject skarpetka = Skarpetkas[0];
            Skarpetkas.RemoveAt(0);
            skarpetka.transform.position = pos;
            skarpetka.SetActive(true);
            SkarpetkaController controller = skarpetka.GetComponent <SkarpetkaController>();

            RemovedSkarpetkas++;
            UpdateState();
            return(controller);
        }
        else
        {
            Debug.LogError("No more skarpetkas in the pile");
            return(null);
        }
    }
Ejemplo n.º 6
0
    public void AttemptToUnPairSkarpetkas()
    {
        //Debug.Log("Mover attempting to unpair");
        Vector3    MousePos = Input.InputToWorldPosition();
        GameObject Closest  = Finder.FindClosestSkarpetka(MousePos, null);

        if (Closest != null)
        {
            SkarpetkaController ClosestController = Closest.GetComponent <SkarpetkaController>();
            if (Vector3.Distance(Closest.transform.position, MousePos) <= PickReach && ClosestController.Pair != null)
            {
                ClosestController.AttemptToUnPair();

                if (ClosestController.Pair == null)
                {
                    UnPairedSocks.Invoke();
                }
            }
        }
    }
Ejemplo n.º 7
0
 public void DropSkarpetka()
 {
     Picked = false;
     if (PickedController != null)
     {
         if (Vector3.Distance(PickedController.transform.position, BasketPosition.position) <= InsertReach)
         {
             if (PickedController.Pair == null)
             {
                 PickedController.MoveTo(StartPos);
                 WrongInsertion.Invoke();
             }
             else
             {
                 InsertIntoBasket(PickedController);
             }
         }
         else
         {
             if (PickedController.Pair == null)
             {
                 PickedController.AttemptPairing();
                 if (PickedController.Pair == null)
                 {
                     DropedSock.Invoke();
                 }
                 else
                 {
                     PairedSocks.Invoke();
                 }
             }
             else
             {
                 DropedSock.Invoke();
             }
         }
     }
     PickedSkarpetka  = null;
     PickedController = null;
 }