public void Reset() { droppedLetter = null; correctLetter = null; Unhighlight(); isChosen = false; rotateButtonController.Disable(); }
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(); }
public void SetDroppedLetter(SeparateLetterController letter) { if (letter != null) { if (droppedLetter != null) { Vector3 position = transform.position; position.y += LETTER_SWAP_DROP_OFFSET; droppedLetter.SetPosition(position, false); droppedLetter.SetIsKinematic(false); droppedLetter.droppedZone = null; } rotateButtonController.Enable(); } else { rotateButtonController.Disable(); } droppedLetter = letter; Unhighlight(); }
private IEnumerator LoseAnimationCoroutine(Action OnAnimationEnded) { int numLettersToDrop = 0; foreach (DropZoneController dropZoneController in MixedLettersGame.instance.dropZoneControllers) { if (dropZoneController.isActiveAndEnabled && dropZoneController.droppedLetter != null) { numLettersToDrop++; } } MixedLettersGame.instance.HideDropZones(); if (numLettersToDrop != 0) { yield return(new WaitForSeconds(LOSE_ANIMATION_DROP_DELAY)); foreach (DropZoneController dropZoneController in MixedLettersGame.instance.dropZoneControllers) { if (dropZoneController.droppedLetter != null) { dropZoneController.droppedLetter.SetIsKinematic(false); numLettersToDrop--; if (numLettersToDrop == 0) { break; } else { yield return(new WaitForSeconds(LOSE_ANIMATION_DROP_OFFSET)); } } } } yield return(new WaitForSeconds(LOSE_ANIMATION_POOF_DELAY)); List <int> letterIndicesList = new List <int>(); List <float> letterAbscissasList = new List <float>(); for (int i = 0; i < separateLetterControllers.Length; i++) { SeparateLetterController letterController = separateLetterControllers[i]; if (letterController.isActiveAndEnabled) { letterIndicesList.Add(i); letterAbscissasList.Add(letterController.transform.position.x); } } int[] letterIndicesArray = letterIndicesList.ToArray(); float[] letterAbscissasArray = letterAbscissasList.ToArray(); Array.Sort(letterAbscissasArray, letterIndicesArray); for (int i = letterIndicesArray.Length - 1; i >= 0; i--) { separateLetterControllers[letterIndicesArray[i]].Vanish(); if (i != 0) { yield return(new WaitForSeconds(LOSE_ANIMATION_POOF_OFFSET)); } } yield return(new WaitForSeconds(LOSE_ANIMATION_END_DELAY)); OnAnimationEnded(); }