Ejemplo n.º 1
0
 public void AcabarPathFinding()
 {
     unit.hasMoved = true;
     unit.PintarInfluencia(true);
     unit.ResetWeaponIcon();
     unit.GetEnemies(null);
     gm.MoveInfoPanel(unit);
     gm.AcabarAccionUnidadIA();
 }
Ejemplo n.º 2
0
    public void BuyUnit(Unit unit)
    {
        bool compra = false;

        if (unit.playerNumber == 1 && unit.cost <= gm.player1Gold)
        {
            player1Menu.SetActive(false);
            compra = true;
            //gm.player1Gold -= unit.cost;  //El pago se realizará después de colocar la unidad
        }
        else if (unit.playerNumber == 2 && unit.cost <= gm.player2Gold)
        {
            compra = true;
            player2Menu.SetActive(false);
            //gm.player2Gold -= unit.cost;
        }
        if (compra)
        {
            //gm.UpdateGoldText();
            gm.createdUnit = unit;

            DeselectUnit();
            SetCreatableTiles("unidad");
        }
        else
        {
            print("NOT ENOUGH GOLD, SORRY!");
            if (gm.playerTurn == 1)
            {
                return;
            }
            else
            {
                gm.AcabarAccionUnidadIA();
            }
        }
    }
Ejemplo n.º 3
0
    //Se ha hecho publico este método para que gm acceda a él a la hora de comprar unidades de la IA
    public void OnMouseDown()
    {
        //Después de seleccionar el personaje y que resalten los tiles alcanzables,
        //pulsamos en uno de éstos para que vaya hacia él
        if (isWalkable == true)
        {
            gm.selectedUnit.tilePosicion = this;
            gm.selectedUnit.Move(this.transform);

            //Para cuando se quiera spawnear una unidad ya seleccionada del menú
        }
        else if (isCreatable == true && gm.createdUnit != null &&
                 ((gm.createdUnit.playerNumber == 1 && gm.createdUnit.cost <= gm.player1Gold) ||
                  (gm.createdUnit.playerNumber == 2 && gm.createdUnit.cost <= gm.player2Gold)))
        {
            Unit unit = Instantiate(gm.createdUnit, new Vector3(transform.position.x, transform.position.y, 0), Quaternion.identity);
            //Nada más añadirlo, se pinta el mapa de influencia
            //unit.PintarInfluencia(true);
            //Si es una unidad de la IA, se añade a la lista del IAPlayer
            unit.hasMoved    = true;
            unit.hasAttacked = true;
            gm.ResetTiles();

            //Se realiza el pago por la creación de la unidad
            if (gm.createdUnit.playerNumber == 1)
            {
                gm.player1Gold -= gm.createdUnit.cost;
            }
            else
            {
                gm.player2Gold -= gm.createdUnit.cost;
            }

            gm.UpdateGoldText();

            //Comprando unidades para la IA:
            //Si aun queda suficiente dinero, se compra otra figura más
            if (gm.playerTurn == 2 && gm.player2Gold >= gm.createdUnit.cost)
            {
                gm.CrearUnidadIA();
            }
            else
            {
                gm.createdUnit = null;
                if (gm.playerTurn == 2)
                {
                    gm.AcabarAccionUnidadIA();
                }
            }



            //Para cua
        }
        else if (isCreatable == true && gm.createdVillage != null)
        {
            Instantiate(gm.createdVillage, new Vector3(transform.position.x, transform.position.y, 0), Quaternion.identity);
            gm.ResetTiles();

            //Se realiza el pago por la creación de la unidad
            if (gm.createdVillage.playerNumber == 1)
            {
                gm.player1Gold -= gm.createdVillage.cost;
            }
            else
            {
                gm.player2Gold -= gm.createdVillage.cost;
            }

            gm.UpdateGoldText();

            //Comprando unidades para la IA:
            //Si aun queda suficiente dinero, se compra otra figura más
            if (gm.playerTurn == 2 && gm.player2Gold >= gm.createdVillage.cost)
            {
                gm.CrearAldeaIA();
            }
            else
            {
                gm.createdVillage = null;
                if (gm.playerTurn == 2)
                {
                    gm.AcabarAccionUnidadIA();
                }
            }
        }
    }
Ejemplo n.º 4
0
    // La unidad seleccionada por GM ataca a la seleccionada en OnMouseDown (enemy)
    public void Attack(Unit enemy)
    {
        hasAttacked = true;

        int enemyDamege = attackDamage - enemy.armor;
        int unitDamage  = enemy.defenseDamage - armor;

        if (enemyDamege >= 1)
        {
            enemy.health -= enemyDamege;
            enemy.UpdateHealthDisplay();
            DamageIcon d = Instantiate(damageIcon, enemy.transform.position, Quaternion.identity);
            d.Setup(enemyDamege);
        }

        if (transform.tag == "Archer" && enemy.tag != "Archer")
        {
            if (gm.calculaDistancia(this.transform, enemy.transform) <= 1) // check is the enemy is near enough to attack
            {
                if (unitDamage >= 1)
                {
                    health -= unitDamage;
                    UpdateHealthDisplay();
                    DamageIcon d = Instantiate(damageIcon, transform.position, Quaternion.identity);
                    d.Setup(unitDamage);
                }
            }
        }
        else
        {
            if (unitDamage >= 1)
            {
                health -= unitDamage;
                UpdateHealthDisplay();
                DamageIcon d = Instantiate(damageIcon, transform.position, Quaternion.identity);
                d.Setup(unitDamage);
            }
        }

        if (enemy.health <= 0)
        {
            if (deathEffect != null)
            {
                Instantiate(deathEffect, enemy.transform.position, Quaternion.identity);
                camAnim.SetTrigger("shake");
            }

            if (enemy.isKing)
            {
                gm.ShowVictoryPanel(enemy.playerNumber);
            }

            GetWalkableTiles(); // check for new walkable tiles (if enemy has died we can now walk on his tile)
            //Si el enemigo era de la IA, se ha de borrar de la lista del IAPlayer
            enemy.PintarInfluencia(false);
            gm.RemoveInfoPanel(enemy);

            //Si el enemigo era del jugador, la IA debe de dejar de considerarlo como enemigo objetivo de la unidad
            if (enemy.playerNumber == 1)
            {
                gm.OlvidarEnemigoMatado(enemy);
            }
            Destroy(enemy.gameObject);
        }

        if (health <= 0)
        {
            if (deathEffect != null)
            {
                Instantiate(deathEffect, enemy.transform.position, Quaternion.identity);
                camAnim.SetTrigger("shake");
            }

            if (isKing)
            {
                gm.ShowVictoryPanel(playerNumber);
            }

            gm.ResetTiles(); // reset tiles when we die
            gm.RemoveInfoPanel(this);
            PintarInfluencia(false);
            if (playerNumber == 2)
            {
                gm.AcabarAccionYMatarUnidadIA(this.gameObject);
            }
            else
            {
                Destroy(gameObject);
            }
        }

        else if (playerNumber == 2)
        {
            gm.AcabarAccionUnidadIA();
        }

        gm.UpdateInfoStats();
    }