private IEnumerator SpawnLettersCoroutine(List <ILivingLetterData> lettersToSpawn, Action spawnOverCallback) { PlayCartoonFightSfx(); yield return(new WaitForSeconds(1)); List <int> indices = new List <int>(); for (int i = 0; i < lettersToSpawn.Count; i++) { indices.Add(i); } bool throwLetterToTheRight = Random.Range(1, 40) % 2 == 0; for (int i = 0; i < lettersToSpawn.Count; i++) { int randIndex = indices[Random.Range(0, indices.Count)]; indices.Remove(randIndex); LL_LetterData letterToSpawn = (LL_LetterData)lettersToSpawn[randIndex]; SeparateLetterController separateLetterController = separateLetterControllers[i]; separateLetterController.Enable(); separateLetterController.SetPosition(transform.position, false); separateLetterController.SetLetter(letterToSpawn); separateLetterController.SetRotation(new Vector3(0, 0, Random.Range(0, 4) * 90)); separateLetterController.SetIsKinematic(false); separateLetterController.SetCorrectDropZone(MixedLettersGame.instance.dropZoneControllers[randIndex]); MixedLettersGame.instance.dropZoneControllers[randIndex].correctLetter = separateLetterController; separateLetterController.SetIsSubjectOfTutorial(MixedLettersGame.instance.roundNumber == 0 && randIndex == 0); separateLetterController.AddForce(new Vector3(throwLetterToTheRight ? Random.Range(2f, 6f) : Random.Range(-6f, -2f), Constants.GRAVITY.y * -0.45f), ForceMode.VelocityChange); throwLetterToTheRight = !throwLetterToTheRight; MixedLettersConfiguration.Instance.Context.GetAudioManager().PlaySound(Sfx.ThrowObj); MixedLettersConfiguration.Instance.Context.GetAudioManager().PlayLetterData(letterToSpawn); yield return(new WaitForSeconds(0.75f)); } yield return(new WaitForSeconds(1)); audioSource.Stop(); spawnOverCallback.Invoke(); }
public void VerifyLetters() { for (int i = 0; i < lettersInOrder.Count; i++) { DropZoneController dropZone = dropZoneControllers[i]; if (dropZone.droppedLetter == null || dropZone.droppedLetter.GetLetter().Id != lettersInOrder[i].Id || Mathf.Abs(dropZone.droppedLetter.transform.rotation.z) > 0.1f) { for (int j = 0; j < lettersInOrder.Count; j++) { SeparateLetterController letter = SeparateLettersSpawnerController.instance.separateLetterControllers[j]; letter.SetIsSubjectOfTutorial(roundNumber == 0 && letter == dropZone.correctLetter); } return; } } OnRoundWon(); }