public void SetSpecies(PokemonSpecies pokemon)
        {
            frontImage.gameObject.SetActive(true);
            backImage.gameObject.SetActive(true);

            frontImage.sprite = pokemon.LoadSprite(PokemonSpecies.SpriteType.Front1, gender);
            backImage.sprite  = pokemon.LoadSprite(PokemonSpecies.SpriteType.Back, gender);
        }
Beispiel #2
0
        private IEnumerator AnimationCoroutine()
        {
            evolutionCanBeCancelled    = true;
            evolutionHasBeenCancelled  = false;
            EvolutionAnimationComplete = null;

            float musicInitialVolume = MusicSourceController.singleton.GetVolume();

            MusicSourceController.singleton.SetVolume(musicVolume);

            Sprite startSprite = entranceArguments.PokemonSprite;

            PokemonSpecies endSpecies = PokemonSpecies.GetPokemonSpeciesById(entranceArguments.evolution.targetId);

            Sprite endSprite = endSpecies.LoadSprite(PokemonSpecies.SpriteType.Front1, entranceArguments.pokemon.gender, entranceArguments.pokemon.IsShiny);

            pokemonSpriteController.SetSprite(startSprite);

            yield return(new WaitForSeconds(initialPauseTime));

            SoundFXController.singleton.PlayPokemonCry(entranceArguments.pokemon.speciesId);

            for (byte i = 0; i < bounceCount; i++)
            {
                yield return(StartCoroutine(Animation_Bounce(pokemonSpriteController.pokemonSpriteObject, bounceHeight, bounceSingleTime)));
            }

            yield return(new WaitForSeconds(bounceToShrinkDelayTime));

            yield return(StartCoroutine(GradualEffect((t) =>
            {
                pokemonSpriteController.SetScale(1 - t);
                pokemonSpriteController.SetWhiteness(t);
            },
                                                      shrinkTime)));

            if (!evolutionHasBeenCancelled)
            {
                pokemonSpriteController.SetSprite(endSprite);
            }

            evolutionCanBeCancelled = false; //Once sprite has been changed, evolution can't be cancelled

            yield return(StartCoroutine(GradualEffect((t) =>
            {
                pokemonSpriteController.SetScale(t);
                pokemonSpriteController.SetWhiteness(1 - t);
            },
                                                      unshrinkTime)));

            if (!evolutionHasBeenCancelled)
            {
                //Evolution is allowed to be completed

                SoundFXController.singleton.PlaySound("evolution_end");
                SoundFXController.singleton.PlayPokemonCry(endSpecies.id);

                yield return(StartCoroutine(
                                 textBoxController.RevealText(entranceArguments.pokemon.GetDisplayName()
                                                              + " evolved into a "
                                                              + endSpecies.name
                                                              + '!', true)
                                 ));

                //Once animation is completed, evolve the pokemon
                entranceArguments.pokemon.Evolve(entranceArguments.evolution);
            }
            else
            {
                //Evolution is cancelled

                yield return(StartCoroutine(
                                 textBoxController.RevealText("Oh, "
                                                              + entranceArguments.pokemon.GetDisplayName()
                                                              + " stopped evolving", true)
                                 ));
            }

            yield return(new WaitForSeconds(endDelayTime));

            MusicSourceController.singleton.SetVolume(musicInitialVolume);

            EvolutionAnimationComplete?.Invoke();
            yield break;
        }