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"); } }
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()); } }
public void AttemptToUnPair() { //Debug.Log("Skarpetka attempting to unpair"); if (Pair != null) { Pair.Pair = null; this.Pair = null; } else { Debug.LogError("Not paired"); } }
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(); } } }
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); } }
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(); } } } }
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; }