Exemple #1
0
 public bool EvaluateHex(BattleHex evaluatedHex)
 {
     return(evaluatedHex.battleHexState
            == HexState.active &&  // Excluye maleficios inactivos
            !evaluatedHex.isStartingHex &&     // Excluye la posición inicial
            evaluatedHex.AvailableToGround());       // excluye agua y montañas
 }
Exemple #2
0
 public bool EvaluateHex(BattleHex evaluatedHex)
 {
     return(evaluatedHex.battleHexState
            == HexState.active && //exclude inactive hexes
            !evaluatedHex.isStartingHex &&    //exclude starting hex
            !evaluatedHex.lookingForTarget);      //exclude previously checked hex
 }
        /* ---------------------------------------------------------------------------------------------------------- */

        #region Constructors/Initialisation

        /// <summary>
        /// Creates a new movement action for the specified unit.
        /// </summary>
        /// <param name="unit">The unit this action is attached to.</param>
        /// <param name="startPosition">The initial position to start this action from.</param>
        /// <param name="distance">The total distance of the movement.</param>
        /// <param name="startRotation">The initial rotation to start this action from.</param>
        /// <param name="endRotation">The end rotation for this movement action.</param>
        /// <param name="speedModifier">The movement speed modifier.</param>
        internal UnitMovement(BattleUnit unit, Vector3 startPosition, Vector3 endPosition, BattleHex currentTile, HexDirection startDirection, HexDirection endDirection, float startRotation, float endRotation, float speedModifier)
            : base(unit)
        {
            this._startPosition      = startPosition;
            this._endPosition        = endPosition;
            this._endTile            = currentTile;
            this._endFacingDirection = endDirection;

            if (startDirection != endDirection)
            {
                HexDirection between = HexHelpers.DirectionBetween(startDirection, endDirection);

                this._rotateAround = currentTile.GetNeighbourPosition(between);

                this._startRotation = startRotation;
                this._endRotation   = endRotation;

                float rotation = endRotation - startRotation;

                while (rotation <= 0f)
                {
                    rotation += 360f;
                }

                this._rotationAngle = rotation;
            }

            this._speedModifier = speedModifier;

            this._lerpValue = 0f;
        }
Exemple #4
0
    private void RemoveHero(Hero hero)                                 //removes the selected hero
    {
        BattleHex parentHex = hero.GetComponentInParent <BattleHex>(); // para acceder al método MakeMeDeploymentPosition

        parentHex.MakeMeDeploymentPosition();                          // devuelve el hex a la posición inicial
        Destroy(hero.gameObject);                                      // elimina al héroe
    }
 public bool EvaluateHex(BattleHex evaluatedHex)
 {
     return(evaluatedHex.battleHexState
            == HexState.active &&
            !evaluatedHex.isStartingHex &&
            !evaluatedHex.isNeighbourgHex);
 }
Exemple #6
0
    private void RemoveHero(Hero hero)                                 //removes the selected hero
    {
        BattleHex parentHex = hero.GetComponentInParent <BattleHex>(); //to access the MakeMeDeploymentPosition method

        parentHex.MakeMeDeploymentPosition();                          //returns the hex to the starting position
        Destroy(hero.gameObject);                                      //removes the hero
    }
 public bool EvaluateHex(BattleHex evaluatedHex)
 {
     return(evaluatedHex.battleHexState
            == HexState.active &&  //Excludes inactive hexes
            !evaluatedHex.isStartingHex &&     //Excludes the starting position
            evaluatedHex.AvailableToGround());       //excludes water and mountains
 }
 public bool EvaluateHex(BattleHex evaluatedHex)
 {
     return(evaluatedHex.battleHexState
            == HexState.active && // excluir hexágonos inactivos
            !evaluatedHex.isStartingHex &&     // excluir hexadecimal inicial
            !evaluatedHex.lookingForTarget);      // excluir hexadecimal previamente comprobado
 }
Exemple #9
0
 public void SetDistanceForFlyingUnit(BattleHex initialHex)
 {
     stepsToGo = 1;
     // agrega un paso al paso anterior para obtener la diastancia desde el punto de partida
     distanceFromStartingPoint = initialHex.distanceText.distanceFromStartingPoint + stepsToGo;
     //display new value of the distanceFromStartingPoint
     //DisplayDistanceText();
 }
Exemple #10
0
 public bool EvaluateHex(BattleHex evaluatedHex)
 {
     return(evaluatedHex.battleHexState
            == HexState.active &&
            !evaluatedHex.isStartingHex &&
            !evaluatedHex.isIncluded &&
            evaluatedHex.AvailableToGround());
 }
Exemple #11
0
 public bool EvaluateHex(BattleHex evaluatedHex)
 {
     return(evaluatedHex.battleHexState
            == HexState.active &&
            !evaluatedHex.isStartingHex &&
            !evaluatedHex.isNeighboringHex &&
            evaluatedHex.GetComponentInChildren <Enemy>() == null);
 }
Exemple #12
0
 public void SetDistanceForFlyingUnit(BattleHex initialHex)
 {
     stepsToGo = 1;
     //add a step to the previous step to get diastance from starting point
     distanceFromStartingPoint = initialHex.distanceText.distanceFromStartingPoint + stepsToGo;
     //display new value of the distanceFromStartingPoint
     //DisplayDistanceText();
 }
 public bool EvaluateHex(BattleHex evaluatedHex)
 {
     return(evaluatedHex.battleHexState
            == HexState.active &&  // Excluye maleficios inactivos
            !evaluatedHex.isStartingHex &&     // Excluye la posición inicial
            !evaluatedHex.isIncluded &&     // excluye los hexágonos que ya están marcados como válidos
            evaluatedHex.AvailableToGround() &&     // excluye agua y montañas
            ifThereIsAI(evaluatedHex));       // excluye los hacks ocupados por el regimiento del jugador
 }
 public bool EvaluateHex(BattleHex evaluatedHex)
 {
     return(evaluatedHex.battleHexState
            == HexState.active &&
            !evaluatedHex.isStartingHex &&
            !evaluatedHex.isIncluded &&
            evaluatedHex.AvailableToGround() &&
            evaluatedHex.GetComponentInChildren <Enemy>() == null);
 }
 public bool EvaluateHex(BattleHex evaluatedHex)
 {
     return(evaluatedHex.battleHexState
            == HexState.active &&  //Excludes inactive hexes
            !evaluatedHex.isStartingHex &&     //Excludes the starting position
            !evaluatedHex.isIncluded &&     //excludes hexes that are already marked as valid
            evaluatedHex.AvailableToGround() &&     //excludes water and mountains
            ifThereIsAI(evaluatedHex));       //excludes hacks occupied by player's regiment
 }
    public bool EvaluateDistanceForGround(BattleHex initialHex)
    {
        int currentDistance = initialHex.distanceText.distanceFromStartingPosition
                              + initialHex.distanceText.stepsToGo;
        int stepsLimit = BattleController.currentAtacker.velocity;

        return(distanceFromStartingPosition > currentDistance &&
               stepsLimit >= currentDistance);
    }
Exemple #17
0
    /* --------------------------------------------------------------------- */

    #region Public Methods

    public override void StartTurn()
    {
        BattleHex endTile = null;

        for (int i = 0; i < hexesWithinDistance.Count; i++)
        {
            BattleHex tile = hexesWithinDistance[i];

            if (tile.DoesNeighbourHaveUnit)
            {
                for (int j = 0; j < tile.Neighbours.Count; j++)
                {
                    BattleHex neighbour = tile.Neighbours[j];
                    if (neighbour.HasUnit && neighbour.Unit.IsAIControlled == false)
                    {
                        endTile = tile;
                        break;
                    }
                }

                if (endTile != null)
                {
                    break;
                }
            }
        }

        if (endTile == null)
        {
            int tileIndex = ((int)(Random.value * 1000)) % hexesWithinDistance.Count;
            endTile = hexesWithinDistance[tileIndex];
        }

        Path <BattleHex> path = PathFinder.FindPath(CurrentHexTile, endTile);

        BattleUnit attackTarget = null;

        for (int i = 0; i < endTile.Neighbours.Count; i++)
        {
            BattleHex neighbour = endTile.Neighbours[i];

            if (neighbour.HasUnit && neighbour.Unit.IsAIControlled == false)
            {
                attackTarget = neighbour.Unit;
            }
        }

        if (attackTarget != null)
        {
            TravelPathAndAttack(path.GetPath(), attackTarget);
        }
        else
        {
            TravelPath(path.GetPath());
        }
    }
Exemple #18
0
    public bool EvaluateDistanceForGroundAI(BattleHex initialHex, int stepsLimit)
    {
        //distance to reach initial hex and get out of it
        int currentDistance = initialHex.distanceText.distanceFromStartingPoint
                              + initialHex.distanceText.stepsToGo;

        //default value of distanceFromStartingPoint is 20 to set the shortest path
        return(distanceFromStartingPoint > currentDistance &&
               stepsLimit >= currentDistance);//to evaluate if the velocity is enough to reach this hex
    }
Exemple #19
0
    public bool EvaluateDistanceForGroundAI(BattleHex initialHex, int stepsLimit)
    {
        // distancia para alcanzar el hex inicial y salir de él
        int currentDistance = initialHex.distanceText.distanceFromStartingPoint
                              + initialHex.distanceText.stepsToGo;

        // el valor predeterminado de distanceFromStartingPoint es 20 para establecer la ruta más corta
        return(distanceFromStartingPoint > currentDistance &&
               stepsLimit >= currentDistance);// para evaluar si la velocidad es suficiente para alcanzar este
    }
Exemple #20
0
 private void DestroyMe(CharAttributes SOHero) // destruye este objeto
 {
     if (SOHero == heroData)                   // compara la elección del jugador con el héroe
     {
         BattleHex parentHex = GetComponentInParent <BattleHex>();
         parentHex.MakeMeDeploymentPosition();
         startBTN.ControlStartBTN();/// comprueba si es hora de ocultar el botón Inicio
         Destroy(gameObject);
     }
 }
Exemple #21
0
    public void Aisturnbegins(IInitialHexes getInitialHexes)
    {
        int       stepsLimit  = battleController.stepsToCheckWholeField;//gets current velocity of the atacker
        BattleHex startintHex = GetComponentInParent <BattleHex>();

        //starts looking for all player's units
        tocheckTheField.GetAvailablePositions(stepsLimit, getInitialHexes, startintHex);
        CollectAllPosToOccupy();
        AIMakesDecision();
    }
    // si no hay enemigos cerca, continúa buscando
    void TargetsAtAttackDistance(Hero currentAtacker)
    {
        int             stepsLimit  = currentAtacker.heroData.Atackdistanse;             // número de niveles de búsqueda
        BattleHex       inititalHex = currentAtacker.GetComponentInParent <BattleHex>(); // hexadecimal inicial
        IAdjacentFinder adjFinder   = new MarkTargets();                                 // regla para verificar el hexadecimal

        // verifica toda el área de ataque
        currentAtacker.GetComponent <AvailablePos>().GetAvailablePositions(stepsLimit, adjFinder, getInitialHexes);
        CheckIfItIsNewTurn();
    }
Exemple #23
0
    internal void ManageSortingLayer(BattleHex targetHex)
    {
        heroSprite = GetComponent <SpriteRenderer>();
        Canvas canvasOfStack = GetComponentInChildren <Canvas>();
        int    currentLayer  = 16 - targetHex.verticalCoordinate;

        canvasOfStack.sortingOrder = currentLayer + 1;
        heroSprite.sortingOrder    = currentLayer;
        //hero.stack.GetComponent<Canvas>().sortingOrder = currentLayer;
    }
Exemple #24
0
    public void Aisturnbegins(IInitialHexes getInitialHexes)
    {
        int       stepsLimit  = battleController.stepsToCheckWholeField;// obtiene la velocidad actual del atacante
        BattleHex startintHex = GetComponentInParent <BattleHex>();

        // comienza a buscar todas las unidades del jugador
        tocheckTheField.GetAvailablePositions(stepsLimit, getInitialHexes, startintHex);
        CollectAllPosToOccupy();
        AIMakesDecision();
    }
 private void DestroyMe(CharAttributes SOHero) //destroys this object
 {
     if (SOHero == heroData)                   // compares the player’s choice with the hero
     {
         BattleHex parentHex = GetComponentInParent <BattleHex>();
         parentHex.MakeMeDeploymentPosition();
         startBTN.ControlStartBTN();//checks if it's time to hide the Start button
         Destroy(gameObject);
     }
 }
    public void GetAdjacentHexesExtended(BattleHex initialHex)
    {
        List <BattleHex> neighboursToCkeck = NeighboursFinder.GetAdjacentHexes(initialHex, checkHex);

        foreach (BattleHex hex in neighboursToCkeck)
        {
            hex.isNeighbourgHex = true;
            hex.distanceText.SetDistanceFofFlyingUnit(initialHex);
            hex.MakeAvailable();
        }
    }
    IEvaluateHex checkHex = new IfItIsNewFlying();//refer to interface to access the behavior we need
    //individualizes the search for positions for a flying regiments
    public void GetAdjacentHexesExtended(BattleHex initialHex)
    {
        List <BattleHex> neighboursToCheck = NeighboursFinder.GetAdjacentHexes(initialHex, checkHex);

        foreach (BattleHex hex in neighboursToCheck)
        {
            hex.isNeighboringHex = true;//defines the hex as adjacent to evaluted initial hex
            hex.distanceText.SetDistanceForFlyingUnit(initialHex);
            hex.MakeMeAvailable();
        }
    }
Exemple #28
0
    public bool EvaluateDistanceForGround(BattleHex initialHex)
    {
        //distance to reach initial hex and get out of it
        int currentDistance = initialHex.distanceText.distanceFromStartingPoint
                              + initialHex.distanceText.stepsToGo;
        int stepsLimit = BattleController.currentAtacker.heroData.CurrentVelocity;//velocity of a hero

        //default value of distanceFromStartingPoint is 20 to set the shortest path
        return(distanceFromStartingPoint > currentDistance &&
               stepsLimit >= currentDistance);//to evaluate if the velocity is enough to reach this hex
    }
Exemple #29
0
    private void Start()
    {
        IdentifyHexes();
        AvailablePosition hero       = FindObjectOfType <AvailablePosition>();
        IAdjacentFinder   adjFinder  = new PositionsForFlying();
        BattleHex         startigHex = hero.GetComponentInParent <BattleHex>();
        int stepsLimit = BattleController.currentAtacker.velocity;

        startigHex.DefineAsStartingHex();
        hero.GetAvailablePositions(hero.GetComponentInParent <BattleHex>(), stepsLimit, adjFinder);
    }
    IEvaluateHex checkHex = new IfItIsNewFlying();// consulte la interfaz para acceder al comportamiento que necesitamos
    // individualiza la búsqueda de puestos para un regimiento de vuelo
    public void GetAdjacentHexesExtended(BattleHex initialHex)
    {
        List <BattleHex> neighboursToCheck = NeighboursFinder.GetAdjacentHexes(initialHex, checkHex);

        foreach (BattleHex hex in neighboursToCheck)
        {
            hex.isNeighboringHex = true;// define el hexadecimal como adyacente al hexadecimal inicial evaluado
            hex.distanceText.SetDistanceForFlyingUnit(initialHex);
            hex.MakeMeAvailable();
        }
    }