/* * ##### ResetBoard ##### * Eine Routine (IEnumerator) ohne Uebergabeparameter. * Aufruf, wenn Spieler eine falsche Bodenplatte beruehrt. Wird auch in Player.cs aufgerufen * Wartet auf das Beenden aller Routinen und setzt dann alle Tiles (indem sie eine Schleife durchlaeuft) zurueck. * Wartet anschliessend auf das Beenden der Routinen beim Zuruecksetzen in die Ursprungsposition. */ public IEnumerator ResetBoard(Vector3 currentTilePos) { // warten auf das Beenden aller laufenden Routinen des Typs MoveTileSmooth yield return(WaitForOtherRoutines()); // Animation der Fallen yield return(_trap.TriggerRandomTrap(currentTilePos, _player.transform.Find("RaycastPos").position)); // Spieler wird zurueckgesetzt yield return(ResetPlayer(1.0f)); // alle Tiles zuruecksetzen for (int i = 0; i < _tilesList.Count; i++) { Vector3 direction = new Vector3( _tilesList[i].transform.position.x, _tilesList[i].transform.position.y + _heightDifference, _tilesList[i].transform.position.z ); StartCoroutine(MoveSmooth(_tilesList[i], direction, _tileSpeed)); // Zuruecksetzen mittels der Routine MoveTileSmooth } _tilesList[0].GetComponent <AudioSource>().Play(); // warten bis wieder alle Bodenplatten auf der richtigen Position liegen yield return(WaitForOtherRoutines()); // alle Referenzen der Bodenplatten aus der Liste entfernen _tilesList.Clear(); // alle Routinen wurden abgearbeitet _activeCoroutines = 0; // das Feld wurde bereinigt, der Spieler kann sich wieder bewegen _player.CanMove = true; }