private void Atack(CharacterConteiner player, CharacterConteiner target)
 {
     target.charCurrentHealth -= player.charAtack;
     print("Char Health: " + target.charCurrentHealth);
     player.active          = false;
     player.alreadyAttacked = true;
     count++;
 }
    private void EnemyAction(CharacterConteiner enemy)
    {
        GameObject[]       playerTeam     = GameObject.FindGameObjectsWithTag("Player");
        int                index2         = Random.Range(0, playerTeam.Length);
        GameObject         selectedPlayer = playerTeam[index2];
        CharacterConteiner target         = selectedPlayer.GetComponent <CharacterDisplay>().character;

        target.charCurrentHealth -= enemy.charAtack;
        enemy.alreadyAttacked     = true;
        print("Enemy " + enemy.charClass + " Attacked Player " + target.charClass);
        count++;
    }
    private void Update()
    {
        mousePosition = Camera.main.ScreenToWorldPoint(Input.mousePosition);

        if (Input.GetMouseButtonDown(0))
        {
            RaycastHit2D hit = Physics2D.Raycast(mousePosition, Vector2.zero, Mathf.Infinity);

            if (hit.collider != null)
            {
                if (hit.collider.CompareTag("Enemy"))
                {
                    enemy = hit.collider.GetComponent <CharacterDisplay>().character;
                    Atack(player, enemy);
                    ManageBattle();
                }
            }
        }
    }
 private void Heal(CharacterConteiner target)
 {
     target.charCurrentHealth += 10;
     print("Char Health: " + target.charCurrentHealth);
 }
    private CharacterConteiner ManageBattle()
    {
        List <GameObject> turnList = new List <GameObject>();

        GameObject[] playerTeam;
        GameObject[] enemyTeam;
        GameObject[] aux;
        int          initiativeRoll;

        aux        = GameObject.FindGameObjectsWithTag("Character");
        playerTeam = GameObject.FindGameObjectsWithTag("Player");
        enemyTeam  = GameObject.FindGameObjectsWithTag("Enemy");

        GameObject[] characters = new GameObject[aux.Length];

        for (int i = 0; i < aux.Length; i++)
        {
            GameObject objectMain = aux[i].transform.parent.gameObject;
            characters.SetValue(objectMain, i);
        }

        foreach (var character in characters)
        {
            initiativeRoll = Random.Range(0, 3);
            character.GetComponent <CharacterDisplay>().character.charCurrentSpeed += initiativeRoll;
            turnList.Add(character);
        }

        turnList = turnList.OrderByDescending(x => x.GetComponent <CharacterDisplay>().character.charCurrentSpeed).ToList();

        foreach (var action in turnList)
        {
            if (action.GetComponent <CharacterDisplay>().CompareTag("Player") && !action.GetComponent <CharacterDisplay>().character.alreadyAttacked)
            {
                player        = action.GetComponent <CharacterDisplay>().character;
                player.active = true;

                print("Seclected: " + player.charClass + " Count: " + count + " Turn List: " + turnList.Count);

                return(player);
            }
            if (action.GetComponent <CharacterDisplay>().CompareTag("Enemy") && !action.GetComponent <CharacterDisplay>().character.alreadyAttacked)
            {
                enemy = action.GetComponent <CharacterDisplay>().character;
                EnemyAction(enemy);
            }
        }

        if (count == turnList.Count)
        {
            count = 0;
            turn++;

            for (int i = 0; i < playerTeam.Length; i++)
            {
                playerTeam[i].GetComponent <CharacterDisplay>().character.alreadyAttacked = false;
            }
            for (int i = 0; i < enemyTeam.Length; i++)
            {
                enemyTeam[i].GetComponent <CharacterDisplay>().character.alreadyAttacked = false;
            }
            ManageBattle();
        }

        return(player);
    }