コード例 #1
0
        public void Reset()
        {
            droppedLetter = null;
            correctLetter = null;

            Unhighlight();
            isChosen = false;

            rotateButtonController.Disable();
        }
コード例 #2
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;

            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();
        }
コード例 #3
0
        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();
        }
コード例 #4
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();
        }
コード例 #5
0
        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();
        }