Example #1
0
        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;

            bool spawnLettersInOrder  = MixedLettersGame.instance.Difficulty == MixedLettersGame.MixedLettersDifficulty.VeryEasy;
            int  numDegreesOfRotation = GetNumDegreesOfRotation();

            for (int i = 0; i < lettersToSpawn.Count; i++)
            {
                int indexToSpawn = spawnLettersInOrder ? i : indices[Random.Range(0, indices.Count)];
                indices.Remove(indexToSpawn);

                LL_LetterData letterToSpawn = (LL_LetterData)lettersToSpawn[indexToSpawn];

                SeparateLetterController separateLetterController = separateLetterControllers[i];
                separateLetterController.Enable();
                separateLetterController.SetPosition(transform.position, false);
                separateLetterController.SetLetter(letterToSpawn);
                separateLetterController.SetRotation(new Vector3(0, 0, Random.Range(0, numDegreesOfRotation + 1) * -90));
                separateLetterController.SetIsKinematic(false);
                separateLetterController.SetCorrectDropZone(MixedLettersGame.instance.dropZoneControllers[indexToSpawn]);
                MixedLettersGame.instance.dropZoneControllers[indexToSpawn].correctLetter = separateLetterController;
                separateLetterController.SetIsSubjectOfTutorial(MixedLettersGame.instance.roundNumber == 0 && indexToSpawn == 0 && MixedLettersGame.instance.TutorialEnabled);
                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().PlayVocabularyData(letterToSpawn);

                yield return(new WaitForSeconds(0.75f));
            }

            yield return(new WaitForSeconds(1));

            audioSource.Stop();

            spawnOverCallback.Invoke();
        }
Example #2
0
        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();
        }