Ejemplo n.º 1
0
    IEnumerator SetupBattle(string dialog = "")
    {
        Debug.Log("Setting Up ...");

        playerUnit.Setup(playerParty.GetHealthyPokemon());
        // playerHud.SetData(playerUnit._Pokemon);

        wildUnit.Setup(wildPokemon);
        // wildHud.SetData(wildUnit._Pokemon);
        Debug.Log("Pokemons Choosed ...");

        _partyScreen.Init();

        yield return(TransitionManager._instance.TransitionEffect_FadeOut());

        dialogBox.SetMoveNames(playerUnit._Pokemon.Moves);

        string _dialog = $"A wild {wildUnit._Pokemon.Base.Name} appeared!";

        yield return(dialogBox.WriteType(_dialog));

        // yield return StartCoroutine(ActionSelection_Interaction());
        yield return(ChooseFirstTurn());

        currentCoroutine = null;
    }
    /*
     * IEnumerator SwitchPokemon_OLD(Pokemon newPokemon)
     * {
     *  //Debug Info------------------------------------------
     *  //Debug.Log("Current pokemon info:");
     *  //MyDebug.ShowPokemonState(playerUnit.Pokemon);
     *  //----------------------------------------------------
     *
     *  //Reset volatile status and boosts in current pokemon
     *  playerUnit.Pokemon.ResetVolatileStatus();
     *  playerUnit.Pokemon.ResetStateBoosts();
     *
     *  //Check if current pokemon is still alive
     *  if (playerUnit.Pokemon.CurrentHP > 0)
     *  {
     *      yield return dialogBox.TypeDialog($"Come back {playerUnit.Pokemon.Base.Name}");
     *      playerUnit.PlayFaintAnimation(); //TODO. Esto es de momento hasta que haya una animacion de cambiar
     *      yield return new WaitForSeconds(Settings.pauseDuration);
     *  }
     *
     *  //Set up new pokemon in battle
     *  playerUnit.SetUp(newPokemon);
     *  dialogBox.SetMoveNames(newPokemon.Moves);
     *  yield return dialogBox.TypeDialog($"Go {newPokemon.Base.Name}.");
     *
     *  //Debug Info------------------------------------------
     *  //Debug.Log("New pokemon info:");
     *  //MyDebug.ShowPokemonState(playerUnit.Pokemon);
     *  //----------------------------------------------------
     *
     *  //TODO: Cambiamos el orden del equipo (Para esto deberiamos poder conservar el orden del equipo original, como de momento es una movida pasamos del tema)
     *
     *  state = BattleState.RunningTurn;
     * }
     */
    /*
     * Metodo encargado de determinar si una batalla ha terminado (cuando a alguno de los dos no les quedan pokemons se acaba
     */
    IEnumerator CheckForBattleOver(BattleUnit faintedUnit) //simplificar este metodo en la medida de lo posible!!
    {
        //Comprobamos si es player o no
        int pkAlive = 0;

        if (faintedUnit.IsPlayer)
        {
            pkAlive = getNumPokemonsAlive(player1Team);

            if (pkAlive == 0)                      // Gana el enemigo
            {
                BattleOver(false);                 //false si pierdes, true si ganas
            }
            else if (pkAlive < player1Slots.Count) //no le quedan pokemons que no esten en campo
            {
                //TODO: Nada (capar de alguna forma que no pueda seleccionar este slot ya)
                player1Slots[currentSlot].enabled = false;
            }
            else
            {
                player1Slots[currentSlot].battleAction = BattleAction.None;

                OpenParyScreen();

                while (player1Slots[currentSlot].Pokemon.CurrentHP <= 0)
                {
                    yield return(null);
                }

                yield return(new WaitForSeconds(Settings.pauseDuration));
            }
        }
        else
        {
            pkAlive = getNumPokemonsAlive(player2Team);

            if (pkAlive == 0)                      //no le quedan pokemons
            {
                BattleOver(true);                  //Ganas tu
            }
            else if (pkAlive < player2Slots.Count) //no le quedan pokemons que no esten en campo
            {
                //TODO: Nada (capar de alguna forma que no pueda seleccionar este slot ya)
                player2Slots[currentSlot].enabled = false;
            }
            else
            {
                Pokemon nextPokemon = player2Team.GetHealthyPokemon();

                player2Slots[currentSlot].SetUp(nextPokemon); //TODO: Necesito saber que slot es

                yield return(dialogBox.TypeDialog($"Next enemy pokemon is {nextPokemon.Base.Name}."));

                yield return(new WaitForSeconds(Settings.pauseDuration));
            }
        }
    }
Ejemplo n.º 3
0
    public IEnumerator SetupBattle()
    {
        playerUnit.Clear();
        enemyUnit.Clear();

        if (!isTrainerBattle)
        {
            // Wild Pokemon
            playerUnit.Setup(playerParty.GetHealthyPokemon());
            enemyUnit.Setup(wildPokemon);

            dialogBox.SetMoveNames(playerUnit.Pokemon.Moves);
            yield return(dialogBox.TypeDialog($"A wild {enemyUnit.Pokemon.Base.Name} appeared."));
        }
        else
        {
            // Trainer

            // Show Trainer and Player
            playerUnit.gameObject.SetActive(false);
            enemyUnit.gameObject.SetActive(false);

            playerImage.gameObject.SetActive(true);
            trainerImage.gameObject.SetActive(true);

            playerImage.sprite  = player.Sprite;
            trainerImage.sprite = trainer.Sprite;

            yield return(dialogBox.TypeDialog($"{trainer.Name} want to battle!"));

            // Send 1st Pokemon of player
            playerImage.gameObject.SetActive(false);
            playerUnit.gameObject.SetActive(true);

            var playerPokemon = playerParty.GetHealthyPokemon();

            playerUnit.Setup(playerPokemon);

            yield return(dialogBox.TypeDialog($"Go {playerPokemon.Base.Name}!"));

            dialogBox.SetMoveNames(playerUnit.Pokemon.Moves);
            // Send 1st Pokemon of trainer
            trainerImage.gameObject.SetActive(false);
            enemyUnit.gameObject.SetActive(true);

            var enemyPokemon = trainerParty.GetHealthyPokemon();

            enemyUnit.Setup(enemyPokemon);

            yield return(dialogBox.TypeDialog($"{trainer.Name} send out {enemyPokemon.Base.Name}"));
        }

        escapeAttempts = 0;
        partyScreen.Init();
        ActionSelection();
    }
Ejemplo n.º 4
0
    //gets the first healthy pokemon in the players party, gets a random enemy pokemon for that area
    //initilizes the party screen and displays the players moves
    public IEnumerator SetUpBattle()
    {
        playerUnit.Setup(playerParty.GetHealthyPokemon());
        enemyUnit.Setup(wildPokemon);

        partyScreen.Init();

        dialogBox.SetMoveNames(playerUnit.pokemon.moves);

        yield return(dialogBox.TypeDialog($"A wild {enemyUnit.pokemon.basePokemon.name} appeared!"));           //waits for this coroutine to finish instead of a set time


        ChooseFirstTurn();
    }
Ejemplo n.º 5
0
    public IEnumerator SetUpBattle()
    {
        playerUnit.Setup(playerParty.GetHealthyPokemon());
        enemyUnit.Setup(wildPokemon);
        playerHud.SetData(playerUnit.Pokemon);
        enemyHud.SetData(enemyUnit.Pokemon);

        dialogBox.SetMoveNames(playerUnit.Pokemon.Moves);

        yield return(StartCoroutine(dialogBox.TypeDialog($"A wild {enemyUnit.Pokemon.Base.Name} appeared.")));


        playerAction();
    }
    private IEnumerator SetupBattle()
    {
        playerUnit.Setup(playerParty.GetHealthyPokemon());
        enemyUnit.Setup(wildPokemon);
        playerHud.SetData(playerUnit.Pokemon);
        enemyHud.SetData(enemyUnit.Pokemon);

        dialogBox.SetMoveNames(playerUnit.Pokemon.Moves);

        yield return(StartCoroutine(dialogBox.TypeDialog($"Un {enemyUnit.Pokemon.Base.Name} salvaje aparecio.")));

        yield return(new WaitForSeconds(1f));

        PlayerMove();
    }
Ejemplo n.º 7
0
    public IEnumerator SetupBattle()
    {
        playerUnit.Setup(playerParty.GetHealthyPokemon());
        // playerHud.SetData(playerUnit.Pokemon);

        enemyUnit.Setup(wildpokemon);
        // enemyHud.SetData(enemyUnit.Pokemon);

        partyScreen.Init();

        dialogBox.SetMoveName(playerUnit.Pokemon.Moves);

        yield return(dialogBox.TypeDialog($"A wild {enemyUnit.Pokemon.Base.Name} appeared. "));

        ChooseFirstTurn();
        //ActionSelection();
    }
Ejemplo n.º 8
0
    public IEnumerator SetupBattle()
    {
        playerUnit.Setup(playerParty.GetHealthyPokemon());
        enemyUnit.Setup(wildPokemon);

        yield return(new WaitForSeconds(1f));

        playerUnit.PlayShinyAnimation();
        enemyUnit.PlayShinyAnimation();

        partyScreen.Init();

        dialogBox.SetMoveNames(playerUnit.Pokemon.Moves);

        yield return(dialogBox.TypeDialog($"A wild {enemyUnit.Pokemon.Base.Name} appeared!"));

        ActionSelection();
    }
Ejemplo n.º 9
0
    //Lance les fonctions de la bataille
    public IEnumerator SetupBattle()
    {
        //Configure le playerUnit et l'enemyUnit
        playerUnit.Setup(playerParty.GetHealthyPokemon());
        enemyUnit.Setup(wildPokemon);

        //Définit les données du playerHud et de l'enemyHud
        playerHud.SetData(playerUnit.Pokemon);
        enemyHud.SetData(enemyUnit.Pokemon);

        partyScreen.Init();

        //Affiche les moves des pokemons du joueur
        dialogBox.SetMoveNames(playerUnit.Pokemon.Moves);

        //Stop la coroutine et affiche une phrase
        yield return(dialogBox.TypeDialog($"A wild {enemyUnit.Pokemon.Base.Name} appeared."));

        PlayerAction();
    }
    /*
     * Gestiona quien sera el primer pokemon de cada jugador y actualiza la caja de dialogo
     */
    public IEnumerator SetupBattle()
    {
        playerUnit.SetUp(playerParty.GetHealthyPokemon());
        enemyUnit.SetUp(enemyParty.GetHealthyPokemon());
        partyScreen.Init();
        dialogBox.SetMoveNames(playerUnit.Pokemon.Moves); //siempre seran los del player
        //Si un string empieza con un $ puedes referenciar otros valoresd dentro del propio string
        //Si desde una corrutina se quiere iniciar otra, basta con hacer un yield
        yield return(dialogBox.TypeDialog($"A wild {enemyUnit.Pokemon.Base.Name} appeared."));

        ActionSelection();
    }
    void InitSetupPokemons()
    {
        //Iniciamos los slots de ambos jugadores con los pokemons correspondientes
        foreach (var slot in player1Slots)
        {
            //TODO (para dobles): Este metodo devuelve el primer pokemon del equipo que este vivo, habra que hacer otro metodo que devuelva tambien el segundo
            slot.SetUp(player1Team.GetHealthyPokemon());
        }

        foreach (var slot in player2Slots)
        {
            slot.SetUp(player2Team.GetHealthyPokemon());
        }

        //Iniciamos la pantalla de party selection
        partyScreen.Init();

        /*
         * yield return dialogBox.TypeDialog($"A wild {enemyUnit.Pokemon.Base.Name} appeared.");
         * ActionSelection();
         */
    }
Ejemplo n.º 12
0
    public IEnumerator SetupBattle() //We use the data created in the BattleUnit and BattleHud scripts
    {
        playerUnit.Clear();
        enemyUnit.Clear();

        //Everything NOT in the if/else, is common at Trainer and WildPokemon battles
        if (!isTrainerBattle)
        {
            //Wild pokemon battle
            playerUnit.Setup(playerParty.GetHealthyPokemon()); //Setup both pokemons
            enemyUnit.Setup(wildPokemon);

            dialogBox.SetMoveNames(playerUnit.Pokemon.Moves); //Enable the moves, and set the right names

            //We return the function Typedialog
            yield return(dialogBox.TypeDialog($"Un {enemyUnit.Pokemon.Base.Name} sauvage est apparu.")); //With the $, a string can show a special variable in it
        }
        else
        {
            //Trainer Battle
            if (trainer.CustomMusic)
            {
                battleDefault.Stop();
                bossTheme.Play();
            }
            //Show player and trainer images
            playerUnit.gameObject.SetActive(false); //Disable both player and enemy pokemons
            enemyUnit.gameObject.SetActive(false);

            playerImage.gameObject.SetActive(true); //Enable both player and trainer images
            trainerImage.gameObject.SetActive(true);
            playerImage.sprite  = player.Sprite;
            trainerImage.sprite = trainer.Sprite;

            yield return(dialogBox.TypeDialog($"{trainer.Name} veut se battre !"));

            //Send out first pokemon of the trainer, disabling image of trainer, enabling image ok pokemon
            trainerImage.gameObject.SetActive(false);
            enemyUnit.gameObject.SetActive(true);
            var enemyPokemon = trainerParty.GetHealthyPokemon(); //Get the first healthy pokemon
            enemyUnit.Setup(enemyPokemon);                       //And setup the battle

            yield return(dialogBox.TypeDialog($"{trainer.Name} envoie {enemyPokemon.Base.Name} !"));

            playerImage.transform.DOLocalMoveX(-550f, 1f);
            //animator.SetBool("throw", true);
            yield return(new WaitForSeconds(0.75f));


            //Send out first pokemon of the player
            playerUnit.gameObject.SetActive(true);
            playerImage.gameObject.SetActive(false);
            playerImage.transform.DOLocalMoveX(-274f, 1f);
            var playerPokemon = playerParty.GetHealthyPokemon(); //Get the first healthy pokemon
            playerUnit.Setup(playerPokemon);                     //And setup the battle
            yield return(dialogBox.TypeDialog($"Go {playerPokemon.Base.Name}! "));

            dialogBox.SetMoveNames(playerUnit.Pokemon.Moves); //Enable the moves, and set the right names
        }
        escapeAttempts = 0;                                   //Set escape attemp to 0, we'll use it in tryToEscape
        partyScreen.Init();
        //This is the function where the player choose a specific action
        ActionSelection();
    }