예제 #1
0
    // Entrada da area pra dentro da area ou chute
    public PlayOutput Play3(Player actor)
    {
        PlayOutput output = new PlayOutput();

        output.actor = actor;

        // Player actor = new Player();
        Player receiver = new Player();

        // Player[] playersInPlay = new Player[4];
        Player[] playersToReceive = new Player[8];

        // Laterais, Volantes, Meias e Atacantes
        playersToReceive[0] = teams[0].players[1];
        playersToReceive[1] = teams[0].players[4];
        playersToReceive[2] = teams[0].players[5];
        playersToReceive[3] = teams[0].players[6];
        playersToReceive[4] = teams[0].players[7];
        playersToReceive[5] = teams[0].players[8];
        playersToReceive[6] = teams[0].players[9];
        playersToReceive[7] = teams[0].players[10];

        // Actor faz a jogada
        if (DontHit(actor.stats.pass))
        {
            // Get The receiver
            int higher = 0;
            foreach (Player player in playersToReceive)
            {
                int hit = RollDice(6);
                // Obs.: Unico que não recebe buff é o volante
                if (player.pos == "lat" || player.pos == "meia")
                {
                    hit += 1;
                }
                else if (player.pos == "atc") // Atacantes tem +3 chances de receber
                {
                    hit += 3;
                }

                if (hit > higher && player.number != actor.number)
                {
                    higher   = hit;
                    receiver = player;
                }
                ;
            }

            output.receiver = receiver;
            output.hasNext  = true;
            output.success  = true;
        }
        else
        {
            output.success = false;
        }

        return(output);
    }
예제 #2
0
    public PlayOutput Play4(Player actor)
    {
        PlayOutput output = new PlayOutput();

        output.actor = actor;

        output.playValue = actor.stats.finishing;
        output.hasNext   = false;
        output.success   = true;

        return(output);
    }
예제 #3
0
    /**PlayOutput Play0()
     * {
     *      PlayOutput output  = new PlayOutput();
     *
     * Player actor = new Player();
     * Player receiver = new Player();
     *
     * Player[] playersInPlay = new Player[4];
     * Player[] playersToReceive = new Player[4];
     *
     * // Laterais e zagueiros
     *      playersInPlay[0] = teams[0].players[1];
     *      playersInPlay[1] = teams[0].players[2];
     *      playersInPlay[2] = teams[0].players[3];
     *      playersInPlay[3] = teams[0].players[4];
     *
     * // Laterais e volantes
     * playersToReceive[0] = teams[0].players[1];
     * playersToReceive[1] = teams[0].players[4];
     * playersToReceive[2] = teams[0].players[5];
     * playersToReceive[3] = teams[0].players[6];
     *
     * int higher = 0;
     * for (int i = 0; i < playersInPlay.Length; i++)
     * {
     *  int currentHit = RollDice(6);
     *  if (currentHit > higher)
     *  {
     *      higher = currentHit;
     *      actor = playersInPlay[i];
     *  }
     * }
     *
     * if (DontHit(actor.stats.pass + 5))
     * {
     *  //Get the receiver
     *  higher = 0;
     *  for (int i = 0; i < playersToReceive.Length; i++)
     *  {
     *      int currentHit = RollDice(6);
     *      // O Recebedor não pode receber dele mesmo
     *      if (currentHit > higher && playersToReceive[i].number != actor.number)
     *      {
     *          higher = currentHit;
     *          receiver = playersToReceive[i];
     *      }
     *  }
     *
     *  Debug.Log("Player " + actor.name);
     *
     *  output.actor = actor;
     *  output.receiver = receiver;
     *  output.success = true;
     * } else
     * {
     *  output.actor = actor;
     *  output.success = false;
     * }
     *      return output;
     * }**/
    // Volancia para o meio
    public PlayOutput Play1(Player actor)
    {
        PlayOutput output = new PlayOutput();

        output.actor = actor;

        // Player actor = new Player();
        Player receiver = new Player();

        // Player[] playersInPlay = new Player[4];
        Player[] playersToReceive = new Player[6];

        // Meias, laterais e volantes
        playersToReceive[0] = teams[0].players[1];
        playersToReceive[1] = teams[0].players[4];
        playersToReceive[2] = teams[0].players[5];
        playersToReceive[3] = teams[0].players[6];
        playersToReceive[4] = teams[0].players[7];
        playersToReceive[5] = teams[0].players[8];

        // Actor faz a jogada
        if (DontHit(actor.stats.pass))
        {
            // Get The receiver
            int higher = 0;
            foreach (Player player in playersToReceive)
            {
                int hit = RollDice(6);
                // Meias tem mais chance de receber
                if (player.pos == "meia")
                {
                    hit += 1;
                }
                if (hit > higher && player.number != actor.number)
                {
                    higher   = hit;
                    receiver = player;
                }
                ;
            }

            output.receiver = receiver;
            output.success  = true;
        }
        else
        {
            output.success = false;
        }

        return(output);
    }
예제 #4
0
    public static PlayOutput ZagaToVol(Team team)
    {
        PlayOutput output = new PlayOutput();

        Player actor    = new Player();
        Player receiver = new Player();

        Player[] actorsAvailable    = Formation.GetActorsAvailable(team, 0);
        Player[] receiversAvailable = Formation.GetReceiversAvailable(team, 1);

        int higher = 0;

        for (int i = 0; i < actorsAvailable.Length; i++)
        {
            int currentHit = RollDice(6);
            if (currentHit > higher)
            {
                higher = currentHit;
                actor  = actorsAvailable[i];
            }
        }

        if (DontHit(actor.stats.pass + 10))
        {
            //Get the receiver
            higher = 0;
            for (int i = 0; i < receiversAvailable.Length; i++)
            {
                int currentHit = RollDice(6);
                // O Recebedor não pode receber dele mesmo
                if (currentHit > higher && receiversAvailable[i].number != actor.number)
                {
                    higher   = currentHit;
                    receiver = receiversAvailable[i];
                }
            }

            output.actor    = actor;
            output.receiver = receiver;
            output.success  = true;
            output.hasNext  = true;
        }
        else
        {
            output.actor   = actor;
            output.success = false;
            output.hasNext = false;
        }
        return(output);
    }
예제 #5
0
    // ZONA 02
    // Pode tocar pra frente ou fazer o passe longo e pular uma zona
    public PlayOutput Play2(Team team, Player actor)
    {
        PlayOutput output = new PlayOutput();

        output.actor = actor;

        // Player actor = new Player();
        Player receiver = new Player();

        // Player[] playersInPlay = new Player[4];
        Player[] playersToReceive = new Player[6];

        // Decide se ele vai lançar longa ou tocar pra frente
        int longPassBuff   = (team.mindset == TeamMindset.BOLA_LONGA) ? 2 : 0;
        int longPassResult = RollDice(actor.stats.longPass + longPassBuff);

        int passBuff   = (team.mindset == TeamMindset.TROCA_DE_PASSE) ? 2 : 0;
        int passResult = RollDice(actor.stats.pass + passBuff);

        // Faz o passe pra frente
        if (passResult >= longPassResult)
        {
            // Actor faz a jogada
            if (DontHit(actor.stats.pass))
            {
                Player[] availableReceivers = Formation.GetReceiversAvailable(team, 3);
                // Get The receiver
                int higher = 0;
                foreach (Player player in availableReceivers)
                {
                    int hit = RollDice(6);
                    // Meias tem duas vezes mais chance de receber
                    if (player.pos == "meia")
                    {
                        hit += 2;
                    }
                    else if (player.pos == "atc") // Atacantes tem +1 chances de receber
                    {
                        hit += 1;
                    }

                    if (hit > higher && player.number != actor.number)
                    {
                        higher   = hit;
                        receiver = player;
                    }
                    ;
                }

                output.debugText = actor.name + " [" + actor.pos + "] tocou a bola para " + receiver.name + " [" + receiver.pos + "] do MEIO para a ENTRADA DA ÁREA";
                output.receiver  = receiver;
                output.success   = true;
            }
            else
            {
                output.debugText = actor.name + " [" + actor.pos + "] errou o passe no MEIO para DENTRO DA ÁREA";
                output.success   = false;
            }
        }
        // Pula uma e faz o passe longo
        else
        {
            // Actor faz a jogada
            if (DontHit(actor.stats.longPass))
            {
                Player[] availableReceivers = Formation.GetReceiversAvailable(team, 4);
                // Get The receiver
                int higher = 0;
                foreach (Player player in availableReceivers)
                {
                    int hit = RollDice(6);

                    if (hit > higher && player.number != actor.number)
                    {
                        higher   = hit;
                        receiver = player;
                    }
                    ;
                }

                output.debugText = actor.name + " [" + actor.pos + "] tocou fez o pase longo para " + receiver.name + " [" + receiver.pos + "] do MEIO para a DENTRO DA ÁREA";
                output.receiver  = receiver;
                output.jump      = true;
                output.success   = true;
            }
            else
            {
                output.debugText = actor.name + " [" + actor.pos + "] errou o passe no MEIO para DENTRO DA ÁREA";
                output.success   = false;
            }
        }

        return(output);
    }
예제 #6
0
    // Update is called once per frame
    void Update()
    {
        timer += Time.deltaTime * spedUpTime;

        if (timer >= steps && currentZone < 50)
        {
            string actionText = "";

            PlayOutput play = PlayBook.ZagaToVol(teams[0]);
            if (play.hasNext)
            {
                actionText += "\n[" + play.actor.pos + "]" + play.actor.name + " PASSOU da ZAGA para a VOLANCIA";

                play = Play1(play.receiver);
                if (play.success)
                {
                    actionText += "\n[" + play.actor.pos + "]" + play.actor.name + " PASSOU da VOLANCIA para o MEIO";

                    play = Play2(teams[0], play.receiver);
                    if (play.success)
                    {
                        actionText += "\n" + play.debugText;

                        if (!play.jump)
                        {
                            play = Play3(play.receiver);
                            if (play.success)
                            {
                                actionText += "\n[" + play.actor.pos + "]" + play.actor.name + " passou da ENTRADA DA AREA para DENTRO DA AREA";

                                play        = Play4(play.receiver);
                                actionText += "\n[" + play.actor.pos + "]" + play.actor.name + " finalizou (" + play.playValue + ")";
                            }
                            else
                            {
                                actionText += "\n[" + play.actor.pos + "]" + play.actor.name + " errou passe da ENTRADA DA AREA para DENTRO DA AREA";
                            }
                        }
                        else
                        {
                            play        = Play4(play.receiver);
                            actionText += "\n[" + play.actor.pos + "]" + play.actor.name + " finalizou (" + play.playValue + ")";
                        }
                    }
                    else
                    {
                        actionText += "\n[" + play.actor.pos + "]" + play.actor.name + " errou o passe para a ENTRADA DA AREA";
                    }
                }
                else
                {
                    actionText += "\n[" + play.actor.pos + "]" + play.actor.name + " errou o passe para o MEIO";
                }
            }
            else
            {
                actionText += "\n[" + play.actor.pos + "]" + play.actor.name + " ERROU o passe na ZAGA";
            }

            GameObject newTextObject = new GameObject();
            newTextObject.AddComponent <Text>();
            newTextObject.GetComponent <Text>().text               = actionText;
            newTextObject.GetComponent <Text>().font               = defaultFont;
            newTextObject.GetComponent <Text>().fontSize           = 15;
            newTextObject.GetComponent <Text>().horizontalOverflow = HorizontalWrapMode.Overflow;
            newTextObject.GetComponent <Text>().verticalOverflow   = VerticalWrapMode.Overflow;
            newTextObject.GetComponent <RectTransform>().anchorMin = new Vector2(0, 1);
            newTextObject.GetComponent <RectTransform>().anchorMax = new Vector2(0, 1);

            newTextObject.GetComponent <RectTransform>().sizeDelta = new Vector2(0, 20f);
            newTextObject.GetComponent <RectTransform>().position  = new Vector2(lastText.position.x, lastText.position.y - 100);

            // newTextObject.GetComponent<RectTransform>().offsetMin = new Vector2(0,0);
            //newTextObject.GetComponent<RectTransform>().offsetMax = new Vector2(0, 0);

            newTextObject.transform.SetParent(viewport.transform);
            lastText = newTextObject.transform;

            timer = 0;
            currentZone++;
        }
    }