Esempio n. 1
0
    /// <summary>
    /// Initialisation de la déviation : on va récupérer quelques variables et illuminer les cases concernées par la déviation
    /// </summary>
    public void StartDeviation()
    {
        foreach (int i in _selectedTiles)
        {
            TilesManager.Instance.TileList[i].gameObject.GetComponent <TileScript>().DesActiveChildObj(MYthsAndSteel_Enum.ChildTileType.AttackSelect);
        }

        //récupération de variable
        int  ennemyUnitIdTile = selectedUnitEnnemy.GetComponent <UnitScript>().ActualTiledId;
        bool endDeviation     = false;

        SetEnnemyUnitListTileNeighbourDiagUI = PlayerStatic.GetNeighbourDiag(ennemyUnitIdTile, TilesManager.Instance.TileList[ennemyUnitIdTile].GetComponent <TileScript>().Line, IsAttackDeviation);

        List <int> ennemyUnitListTileNeighbourDiagUI = new List <int>();

        SetEnnemyUnitListTileNeighbourDiagUI.Add(ennemyUnitIdTile);
        ennemyUnitListTileNeighbourDiagUI.AddRange(SetEnnemyUnitListTileNeighbourDiagUI);
        ennemyUnitListTileNeighbourDiagUI.Sort();

        //Illumination des cases
        foreach (int id in SetEnnemyUnitListTileNeighbourDiagUI)
        {
            TilesManager.Instance.TileList[id].GetComponent <SpriteRenderer>().sprite = _DeviationSelectUI;
            TilesManager.Instance.TileList[id].GetComponent <SpriteRenderer>().color  = new Color(1f, 1f, 1f, 1f);
        }
        //Lancement de l'animation Les coroutines ne se lancent pas les une après les autres c'est pour cela qu'il y a un delay qui va s'incrémenter au fur et à mesure de for
        int x = 0;

        for (int i = 0; i < ennemyUnitListTileNeighbourDiagUI.Count; i++, x++)
        {
            StartCoroutine(ColorTile(i, x, ennemyUnitListTileNeighbourDiagUI, ennemyUnitIdTile, endDeviation));
        }
    }
Esempio n. 2
0
    /// <summary>
    /// Highlight des cases dans la range d'attaque de l'unité
    /// </summary>
    /// <param name="tileId"></param>
    /// <param name="Range"></param>
    public void Highlight(int tileId, int currentID, int Range)
    {
        UIInstance.Instance.DesactivateNextPhaseButton();
        if (Range > 0)
        {
            foreach (int ID in PlayerStatic.GetNeighbourDiag(tileId, TilesManager.Instance.TileList[tileId].GetComponent <TileScript>().Line, false))
            {
                TileScript TileSc = TilesManager.Instance.TileList[ID].GetComponent <TileScript>();
                bool       i      = false;

                if (ID == currentID)
                {
                    i = true;
                    Debug.Log("jfdklq");
                }

                if (!i)
                {
                    TileSc.ActiveChildObj(MYthsAndSteel_Enum.ChildTileType.AttackSelect, _normalAttackSprite, 1);
                    if (!newNeighbourId.Contains(ID))
                    {
                        newNeighbourId.Add(ID);
                    }
                    Highlight(ID, currentID, Range - 1);;
                }
            }
        }
    }
Esempio n. 3
0
    private void Start()
    {
        HideChild();
        GameManager.Instance.ManagerSO.GoToActionJ1Phase += HideChild;
        GameManager.Instance.ManagerSO.GoToActionJ2Phase += HideChild;

        if (_redPlayerZone)
        {
            PlayerScript.Instance.RedPlayerInfos.TileCentreZoneOrgone = _centerOrgoneArea;
        }
        else
        {
            PlayerScript.Instance.BluePlayerInfos.TileCentreZoneOrgone = _centerOrgoneArea;
        }

        List <int> neighZone = PlayerStatic.GetNeighbourDiag(_centerOrgoneArea.GetComponent <TileScript>().TileId, _centerOrgoneArea.GetComponent <TileScript>().Line, true);

        _centerOrgoneArea.GetComponent <TileScript>().TerrainEffectList.Remove(_redPlayerZone ? MYthsAndSteel_Enum.TerrainType.OrgoneRed : MYthsAndSteel_Enum.TerrainType.OrgoneBlue);

        foreach (int i in neighZone)
        {
            TilesManager.Instance.TileList[i].GetComponent <TileScript>().TerrainEffectList.Remove(_redPlayerZone ? MYthsAndSteel_Enum.TerrainType.OrgoneRed : MYthsAndSteel_Enum.TerrainType.OrgoneBlue);
        }

        List <int> newNeighZone = PlayerStatic.GetNeighbourDiag(_centerOrgoneArea.GetComponent <TileScript>().TileId, _centerOrgoneArea.GetComponent <TileScript>().Line, true);

        newNeighZone.Add(_centerOrgoneArea.GetComponent <TileScript>().TileId);

        foreach (int i in newNeighZone)
        {
            TilesManager.Instance.TileList[i].GetComponent <TileScript>().TerrainEffectList.Add(_redPlayerZone ? MYthsAndSteel_Enum.TerrainType.OrgoneRed : MYthsAndSteel_Enum.TerrainType.OrgoneBlue);
        }
    }
Esempio n. 4
0
    /// <summary>
    /// Quand le joueur clique sur valider sur le panneau de validation
    /// </summary>
    public void WhenValidate()
    {
        foreach (GameObject gam in _tilesInRange)
        {
            gam.GetComponent <TileScript>().DesActiveChildObj(MYthsAndSteel_Enum.ChildTileType.EventSelect);
        }

        List <int> neighZone = PlayerStatic.GetNeighbourDiag(_centerOrgoneArea.GetComponent <TileScript>().TileId, _centerOrgoneArea.GetComponent <TileScript>().Line, true);

        _centerOrgoneArea.GetComponent <TileScript>().TerrainEffectList.Remove(_redPlayerZone ? MYthsAndSteel_Enum.TerrainType.OrgoneRed : MYthsAndSteel_Enum.TerrainType.OrgoneBlue);

        foreach (int i in neighZone)
        {
            TilesManager.Instance.TileList[i].GetComponent <TileScript>().TerrainEffectList.Remove(_redPlayerZone? MYthsAndSteel_Enum.TerrainType.OrgoneRed : MYthsAndSteel_Enum.TerrainType.OrgoneBlue);
        }

        if (GameManager.Instance.IsPlayerRedTurn)
        {
            PlayerScript.Instance.RedPlayerInfos.TileCentreZoneOrgone = _targetTile;
        }
        else
        {
            PlayerScript.Instance.BluePlayerInfos.TileCentreZoneOrgone = _targetTile;
        }

        _centerOrgoneArea = _targetTile;
        _targetTile       = null;

        //Chercher les voisins de la case
        List <int> newNeighZone = PlayerStatic.GetNeighbourDiag(_centerOrgoneArea.GetComponent <TileScript>().TileId, _centerOrgoneArea.GetComponent <TileScript>().Line, true);

        newNeighZone.Add(_centerOrgoneArea.GetComponent <TileScript>().TileId);

        foreach (int i in newNeighZone)
        {
            TilesManager.Instance.TileList[i].GetComponent <TileScript>().TerrainEffectList.Add(_redPlayerZone ? MYthsAndSteel_Enum.TerrainType.OrgoneRed : MYthsAndSteel_Enum.TerrainType.OrgoneBlue);
        }

        newNeighZone.Clear();

        GameManager.Instance._eventCall -= WhenValidate;
        //A bouger la zone d'orgone
        _hasMoveOrgoneArea = true;
        _tilesInRange.Clear();

        _isInValidation = false;
        HideChild();

        UIInstance.Instance.ActivateNextPhaseButton();
    }
Esempio n. 5
0
    void LaunchDeplacementBombardement(GameObject unit)
    {
        int player = DeterminArmy(MYthsAndSteel_Enum.EventCard.Bombardement_aérien);
        List <GameObject> tileList = new List <GameObject>();

        List <int> unitNeigh = PlayerStatic.GetNeighbourDiag(unit.GetComponent <UnitScript>().ActualTiledId, TilesManager.Instance.TileList[unit.GetComponent <UnitScript>().ActualTiledId].GetComponent <TileScript>().Line, false);

        foreach (int i in unitNeigh)
        {
            tileList.Add(TilesManager.Instance.TileList[i]);
        }

        LaunchEventTile(1, player == 1 ? true : false, tileList, "Bombardement Aérien", "Êtes-vous sur de vouloir déplacer l'unité attaquée sur cette case?");
        GameManager.Instance._eventCall += MoveUnitBombardement;

        tileList.Clear();
    }
Esempio n. 6
0
    /// <summary>
    /// Lorsque le joueur commence à cliquer sur la case centrale de la zone d'orgone
    /// </summary>
    public void AddOrgoneAtRange()
    {
        List <int> OrgoneNeigh = _redPlayerZone ? PlayerStatic.GetNeighbourDiag(PlayerScript.Instance.RedPlayerInfos.TileCentreZoneOrgone.GetComponent <TileScript>().TileId,
                                                                                PlayerScript.Instance.RedPlayerInfos.TileCentreZoneOrgone.GetComponent <TileScript>().Line,
                                                                                false) :
                                 PlayerStatic.GetNeighbourDiag(PlayerScript.Instance.BluePlayerInfos.TileCentreZoneOrgone.GetComponent <TileScript>().TileId,
                                                               PlayerScript.Instance.BluePlayerInfos.TileCentreZoneOrgone.GetComponent <TileScript>().Line,
                                                               false);

        foreach (int i in OrgoneNeigh)
        {
            if (!_tilesInRange.Contains(TilesManager.Instance.TileList[i]))
            {
                if (TilesManager.Instance.TileList[i].GetComponent <TileScript>().TileId >= 8 && TilesManager.Instance.TileList[i].GetComponent <TileScript>().TileId <= 72 &&
                    9 * (TilesManager.Instance.TileList[i].GetComponent <TileScript>().Line - 1) != TilesManager.Instance.TileList[i].GetComponent <TileScript>().TileId&&
                    (9 * TilesManager.Instance.TileList[i].GetComponent <TileScript>().Line) - 1 != TilesManager.Instance.TileList[i].GetComponent <TileScript>().TileId)
                {
                    _tilesInRange.Add(TilesManager.Instance.TileList[i]);
                }


                List <int> newNeigh = PlayerStatic.GetNeighbourDiag(i, TilesManager.Instance.TileList[i].GetComponent <TileScript>().Line, false);

                foreach (int o in newNeigh)
                {
                    if (!_tilesInRange.Contains(TilesManager.Instance.TileList[o]))
                    {
                        if (TilesManager.Instance.TileList[o].GetComponent <TileScript>().TileId >= 8 && TilesManager.Instance.TileList[o].GetComponent <TileScript>().TileId <= 72 &&
                            9 * (TilesManager.Instance.TileList[o].GetComponent <TileScript>().Line - 1) != TilesManager.Instance.TileList[o].GetComponent <TileScript>().TileId&&
                            (9 * TilesManager.Instance.TileList[o].GetComponent <TileScript>().Line) - 1 != TilesManager.Instance.TileList[o].GetComponent <TileScript>().TileId)
                        {
                            _tilesInRange.Add(TilesManager.Instance.TileList[o]);
                        }
                    }
                }
            }
        }

        foreach (GameObject gam in _tilesInRange)
        {
            gam.GetComponent <TileScript>().ActiveChildObj(MYthsAndSteel_Enum.ChildTileType.EventSelect);
        }
    }
Esempio n. 7
0
    /// <summary>
    /// Obtient les cases s閘ectionnables
    /// </summary>
    /// <param name="usineList"></param>
    /// <returns></returns>
    List <GameObject> CreateTileList(List <GameObject> usineList)
    {
        List <GameObject> tempList = new List <GameObject>();

        foreach (GameObject typeTile in usineList)
        {
            int typeTileID = int.Parse(TilesManager.Instance.TileList.IndexOf(typeTile).ToString());
            //Debug.Log(typeTile);
            foreach (int idtyleIndex in PlayerStatic.GetNeighbourDiag(typeTileID, TilesManager.Instance.TileList[typeTileID].GetComponent <TileScript>().Line, false))
            {
                //Tu ajoutes la tile correspondant � l'usineJ2
                if (!tempList.Contains(typeTile))
                {
                    if (typeTile.GetComponent <TileScript>().Unit == null)
                    {
                        tempList.Add(typeTile);
                    }
                }
                //Si le num閞o n'est pas pr閟ent dans la liste, tu l'ajoutes.
                if (!tempList.Contains(TilesManager.Instance.TileList[idtyleIndex]))
                {
                    tempList.Add(TilesManager.Instance.TileList[idtyleIndex]);
                    //Si il y un boolean qui est retourn� alors tu enl鑦es les 閘閙ents de la liste.
                    if (CheckConditions(TilesManager.Instance.TileList[idtyleIndex], typeTileID) == true)
                    {
                        tempList.Remove(TilesManager.Instance.TileList[idtyleIndex]);
                    }
                }
            }
        }

        //Pour chaque 閘閙ent dans la liste, tu ajoutes l'effet TileCr閍ble
        foreach (GameObject typeWithoutEffect in tempList)
        {
            if (!typeWithoutEffect.GetComponent <TileScript>().EffetProg.Contains(MYthsAndSteel_Enum.EffetProg.Zone_creable))
            {
                typeWithoutEffect.GetComponent <TileScript>().EffetProg.Add(MYthsAndSteel_Enum.EffetProg.Zone_creable);
            }
        }

        return(tempList);
    }
Esempio n. 8
0
    /// <summary>
    ///  Fais une liste des cases s閘ectionnables autour des leader
    /// </summary>
    /// <param name="leaderArmy1"></param>
    void AroundLeader(bool leaderArmy1)
    {
        //Si l'arm閑 est jouer par l'arm閑 Bleu.
        if (leaderArmy1 == true)
        {
            foreach (GameObject unit in _leaderListRed)
            {
                if (unit != null)
                {
                    int typeTileID = unit.GetComponent <UnitScript>().ActualTiledId;

                    //Pour chaque num閞o pr閟ent dans le PlayerStatic avec la valeur qu'on a convertit pr閏閐emment.
                    foreach (int idtyleIndex in PlayerStatic.GetNeighbourDiag(typeTileID, TilesManager.Instance.TileList[typeTileID].GetComponent <TileScript>().Line, false))
                    {
                        GameObject tile = TilesManager.Instance.TileList[idtyleIndex];
                        //Si le num閞o n'est pas pr閟ent dans la liste, tu l'ajoutes.
                        if (!_createLeader1.Contains(tile))
                        {
                            _createLeader1.Add(tile);

                            //Si il y un boolean qui est retourn� alors tu enl鑦es les 閘閙ents de la liste.
                            if (CheckConditions(tile, typeTileID) == true)
                            {
                                _createLeader1.Remove(tile);
                            }
                        }
                    }
                }
            }
            //Pour chaque 閘閙ent dans la liste, tu ajoutes l'effet TileCr閍ble
            foreach (GameObject typeWithoutEffect in _createLeader1)
            {
                if (!typeWithoutEffect.GetComponent <TileScript>().EffetProg.Contains(MYthsAndSteel_Enum.EffetProg.Zone_creable))
                {
                    typeWithoutEffect.GetComponent <TileScript>().EffetProg.Add(MYthsAndSteel_Enum.EffetProg.Zone_creable);
                }
            }
        }


        else
        {
            foreach (GameObject unit in _leaderListBlue)
            {
                if (unit != null)
                {
                    int typeTileID = unit.GetComponent <UnitScript>().ActualTiledId;

                    //Pour chaque num閞o pr閟ent dans le PlayerStatic avec la valeur qu'on a convertit pr閏閐emment.
                    foreach (int idtyleIndex in PlayerStatic.GetNeighbourDiag(typeTileID, TilesManager.Instance.TileList[typeTileID].GetComponent <TileScript>().Line, false))
                    {
                        GameObject tile = TilesManager.Instance.TileList[idtyleIndex];
                        //Si le num閞o n'est pas pr閟ent dans la liste, tu l'ajoutes.
                        if (!_createLeader2.Contains(tile))
                        {
                            _createLeader2.Add(tile);

                            //Si il y un boolean qui est retourn� alors tu enl鑦es les 閘閙ents de la liste.
                            if (CheckConditions(tile, typeTileID) == true)
                            {
                                _createLeader2.Remove(tile);
                            }
                        }
                    }
                }
            }
            //Pour chaque 閘閙ent dans la liste, tu ajoutes l'effet TileCr閍ble
            foreach (GameObject typeWithoutEffect in _createTileJ2)
            {
                if (!typeWithoutEffect.GetComponent <TileScript>().EffetProg.Contains(MYthsAndSteel_Enum.EffetProg.Zone_creable))
                {
                    typeWithoutEffect.GetComponent <TileScript>().EffetProg.Add(MYthsAndSteel_Enum.EffetProg.Zone_creable);
                }
            }
        }
    }
Esempio n. 9
0
    public void LaunchDéploiementAccéléré()
    {
        UIInstance.Instance.ActivateNextPhaseButton();

        int player = DeterminArmy(MYthsAndSteel_Enum.EventCard.Déploiement_accéléré);
        List <GameObject> gamList = new List <GameObject>();

        //obtien les cases voisines pour chaque unité de l'armée
        foreach (GameObject unit in player == 1? PlayerScript.Instance.UnitRef.UnitListRedPlayer : PlayerScript.Instance.UnitRef.UnitListBluePlayer)
        {
            List <int> neighTile = PlayerStatic.GetNeighbourDiag(unit.GetComponent <UnitScript>().ActualTiledId, TilesManager.Instance.TileList[unit.GetComponent <UnitScript>().ActualTiledId].GetComponent <TileScript>().Line, false);

            //Check les effets de terrain pour voir si il doit ajouter la tile à la liste
            foreach (int i in neighTile)
            {
                //Obtient la direction de la case par rapport à l'unité
                MYthsAndSteel_Enum.Direction dir = PlayerStatic.CheckDirection(unit.GetComponent <UnitScript>().ActualTiledId, i);

                if (TilesManager.Instance.TileList[i].GetComponent <TileScript>().TerrainEffectList.Contains(MYthsAndSteel_Enum.TerrainType.Ravin) || TilesManager.Instance.TileList[i].GetComponent <TileScript>().TerrainEffectList.Contains(MYthsAndSteel_Enum.TerrainType.Eau))
                {
                    //La tile n'est pas ajoutée
                }
                else
                {
                    switch (dir)
                    {
                    case MYthsAndSteel_Enum.Direction.Nord:
                        if (!TilesManager.Instance.TileList[i].GetComponent <TileScript>().TerrainEffectList.Contains(MYthsAndSteel_Enum.TerrainType.Rivière_Sud))
                        {
                            gamList.Add(TilesManager.Instance.TileList[i]);
                        }
                        break;

                    case MYthsAndSteel_Enum.Direction.Sud:
                        if (!TilesManager.Instance.TileList[i].GetComponent <TileScript>().TerrainEffectList.Contains(MYthsAndSteel_Enum.TerrainType.Rivière_Nord))
                        {
                            gamList.Add(TilesManager.Instance.TileList[i]);
                        }
                        break;

                    case MYthsAndSteel_Enum.Direction.Est:
                        if (!TilesManager.Instance.TileList[i].GetComponent <TileScript>().TerrainEffectList.Contains(MYthsAndSteel_Enum.TerrainType.Rivière_Ouest))
                        {
                            gamList.Add(TilesManager.Instance.TileList[i]);
                        }
                        break;

                    case MYthsAndSteel_Enum.Direction.Ouest:
                        if (!TilesManager.Instance.TileList[i].GetComponent <TileScript>().TerrainEffectList.Contains(MYthsAndSteel_Enum.TerrainType.Rivière_Est))
                        {
                            gamList.Add(TilesManager.Instance.TileList[i]);
                        }
                        break;
                    }
                }
            }
        }

        if ((GameManager.Instance.ActualTurnPhase == MYthsAndSteel_Enum.PhaseDeJeu.ActionJ1 || GameManager.Instance.ActualTurnPhase == MYthsAndSteel_Enum.PhaseDeJeu.ActionJ2) &&
            ((player == 1 && GameManager.Instance.IsPlayerRedTurn) || (player == 2 && !GameManager.Instance.IsPlayerRedTurn)))
        {
            LaunchEventTile(1, player == 1 ? true : false, gamList, "Déploiement accéléré", "Êtes-vous sur de vouloir créer une unité d'infanterie sur cette case?");
            GameManager.Instance._eventCall += DéploiementAccéléré;
        }
    }
Esempio n. 10
0
 /// <summary>
 /// Cette fonction "highlight" les cases atteignables par l'unité sur la case sélectionnée.
 /// </summary>
 /// <param name="tileId">Tile centrale</param>
 /// <param name="Range">Range de l'unité</param>
 public void Highlight(int tileId, int Range, int lasttileId)
 {
     if (Range > 0)
     {
         foreach (int ID in PlayerStatic.GetNeighbourDiag(tileId, TilesManager.Instance.TileList[tileId].GetComponent <TileScript>().Line, false))
         {
             if (ID == lasttileId)
             {
                 continue;
             }
             TileScript TileSc = TilesManager.Instance.TileList[ID].GetComponent <TileScript>();
             bool       i      = false;
             if (GameManager.Instance.IsPlayerRedTurn)
             {
                 if (TilesManager.Instance.TileList[ID].GetComponent <TileScript>().Unit != null)
                 {
                     if (!TilesManager.Instance.TileList[ID].GetComponent <TileScript>().Unit.GetComponent <UnitScript>().UnitSO.IsInRedArmy)
                     {
                         i = true;
                     }
                     if (TilesManager.Instance.TileList[ID].GetComponent <TileScript>().Unit.GetComponent <UnitScript>().UnitSO.IsInRedArmy&& Range == 1)
                     {
                         i = true;
                     }
                 }
             }
             if (!GameManager.Instance.IsPlayerRedTurn)
             {
                 if (TilesManager.Instance.TileList[ID].GetComponent <TileScript>().Unit != null)
                 {
                     if (TilesManager.Instance.TileList[ID].GetComponent <TileScript>().Unit.GetComponent <UnitScript>().UnitSO.IsInRedArmy)
                     {
                         i = true;
                     }
                     if (!TilesManager.Instance.TileList[ID].GetComponent <TileScript>().Unit.GetComponent <UnitScript>().UnitSO.IsInRedArmy&& Range == 1)
                     {
                         i = true;
                     }
                 }
             }
             foreach (MYthsAndSteel_Enum.TerrainType Type in TileSc.TerrainEffectList)
             {
                 if (EffectToCheck.Contains(Type))
                 {
                     if (PlayerStatic.CheckTiles(MYthsAndSteel_Enum.TerrainType.Ravin, ID) || PlayerStatic.CheckTiles(MYthsAndSteel_Enum.TerrainType.Eau, ID))
                     {
                         i = true;
                         break;
                     }
                     if (PlayerStatic.CheckTiles(MYthsAndSteel_Enum.TerrainType.Rivière_Est, tileId) && PlayerStatic.CheckDirection(tileId, ID) == MYthsAndSteel_Enum.Direction.Est && !PlayerStatic.CheckTiles(MYthsAndSteel_Enum.TerrainType.Pont_Est, tileId))
                     {
                         i = true;
                         break;
                     }
                     if (PlayerStatic.CheckTiles(MYthsAndSteel_Enum.TerrainType.Rivière_Nord, tileId) && PlayerStatic.CheckDirection(tileId, ID) == MYthsAndSteel_Enum.Direction.Nord && !PlayerStatic.CheckTiles(MYthsAndSteel_Enum.TerrainType.Pont_Nord, tileId))
                     {
                         i = true;
                         break;
                     }
                     if (PlayerStatic.CheckTiles(MYthsAndSteel_Enum.TerrainType.Rivière_Sud, tileId) && PlayerStatic.CheckDirection(tileId, ID) == MYthsAndSteel_Enum.Direction.Sud && !PlayerStatic.CheckTiles(MYthsAndSteel_Enum.TerrainType.Pont_Sud, tileId))
                     {
                         i = true;
                         break;
                     }
                     if (PlayerStatic.CheckTiles(MYthsAndSteel_Enum.TerrainType.Rivière_Ouest, tileId) && PlayerStatic.CheckDirection(tileId, ID) == MYthsAndSteel_Enum.Direction.Ouest && !PlayerStatic.CheckTiles(MYthsAndSteel_Enum.TerrainType.Pont_Ouest, tileId))
                     {
                         i = true;
                         break;
                     }
                     if (PlayerStatic.CheckTiles(MYthsAndSteel_Enum.TerrainType.Mont, ID) || PlayerStatic.CheckTiles(MYthsAndSteel_Enum.TerrainType.Forêt, ID))
                     {
                         if (Range >= 2 && !i)
                         {
                             i = true;
                             TilesManager.Instance.TileList[ID].GetComponent <TileScript>().ActiveChildObj(MYthsAndSteel_Enum.ChildTileType.MoveSelect, _selectedSprite);
                             if (!newNeighbourId.Contains(ID))
                             {
                                 newNeighbourId.Add(ID);
                             }
                             Highlight(ID, Range - 2, tileId);
                             break;
                         }
                         else
                         {
                             i = true;
                             break;
                         }
                     }
                 }
             }
             if (!i)
             {
                 TilesManager.Instance.TileList[ID].GetComponent <TileScript>().ActiveChildObj(MYthsAndSteel_Enum.ChildTileType.MoveSelect, _selectedSprite);
                 if (!newNeighbourId.Contains(ID))
                 {
                     newNeighbourId.Add(ID);
                 }
                 Highlight(ID, Range - 1, tileId);
             }
         }
     }
     // Si il s'agit d'une route et que la range est de 0.
     if (PlayerStatic.CheckTiles(MYthsAndSteel_Enum.TerrainType.Route, tileId) && Range == 0)
     {
         foreach (int ID in PlayerStatic.GetNeighbourDiag(tileId, TilesManager.Instance.TileList[tileId].GetComponent <TileScript>().Line, false))
         {
             if (ID == lasttileId)
             {
                 continue;
             }
             TileScript TileSc = TilesManager.Instance.TileList[ID].GetComponent <TileScript>();
             bool       i      = false;
             if (TilesManager.Instance.TileList[ID].GetComponent <TileScript>().Unit != null)
             {
                 i = true;
             }
             foreach (MYthsAndSteel_Enum.TerrainType Type in TileSc.TerrainEffectList)
             {
                 if (EffectToCheck.Contains(Type))
                 {
                     if (PlayerStatic.CheckTiles(MYthsAndSteel_Enum.TerrainType.Ravin, ID) || PlayerStatic.CheckTiles(MYthsAndSteel_Enum.TerrainType.Eau, ID))
                     {
                         i = true;
                         break;
                     }
                     if (PlayerStatic.CheckTiles(MYthsAndSteel_Enum.TerrainType.Rivière_Est, tileId) && PlayerStatic.CheckDirection(tileId, ID) == MYthsAndSteel_Enum.Direction.Est && !PlayerStatic.CheckTiles(MYthsAndSteel_Enum.TerrainType.Pont_Est, tileId))
                     {
                         i = true;
                         break;
                     }
                     if (PlayerStatic.CheckTiles(MYthsAndSteel_Enum.TerrainType.Rivière_Nord, tileId) && PlayerStatic.CheckDirection(tileId, ID) == MYthsAndSteel_Enum.Direction.Nord && !PlayerStatic.CheckTiles(MYthsAndSteel_Enum.TerrainType.Pont_Nord, tileId))
                     {
                         i = true;
                         break;
                     }
                     if (PlayerStatic.CheckTiles(MYthsAndSteel_Enum.TerrainType.Rivière_Sud, tileId) && PlayerStatic.CheckDirection(tileId, ID) == MYthsAndSteel_Enum.Direction.Sud && !PlayerStatic.CheckTiles(MYthsAndSteel_Enum.TerrainType.Pont_Sud, tileId))
                     {
                         i = true;
                         break;
                     }
                     if (PlayerStatic.CheckTiles(MYthsAndSteel_Enum.TerrainType.Rivière_Ouest, tileId) && PlayerStatic.CheckDirection(tileId, ID) == MYthsAndSteel_Enum.Direction.Ouest && !PlayerStatic.CheckTiles(MYthsAndSteel_Enum.TerrainType.Pont_Ouest, tileId))
                     {
                         i = true;
                         break;
                     }
                     if (PlayerStatic.CheckTiles(MYthsAndSteel_Enum.TerrainType.Mont, ID) || PlayerStatic.CheckTiles(MYthsAndSteel_Enum.TerrainType.Forêt, ID))
                     {
                         i = true;
                     }
                 }
             }
             if (!i)
             {
                 TilesManager.Instance.TileList[ID].GetComponent <TileScript>().ActiveChildObj(MYthsAndSteel_Enum.ChildTileType.MoveSelect, _selectedSprite);
                 if (!newNeighbourId.Contains(ID))
                 {
                     newNeighbourId.Add(ID);
                 }
                 Highlight(ID, -1, tileId);
             }
         }
     }
     // Si il s'agit d'une route et que la range est de 1.
     if (PlayerStatic.CheckTiles(MYthsAndSteel_Enum.TerrainType.Route, tileId) && Range == 1)
     {
         foreach (int ID in PlayerStatic.GetNeighbourDiag(tileId, TilesManager.Instance.TileList[tileId].GetComponent <TileScript>().Line, false))
         {
             if (ID == lasttileId)
             {
                 continue;
             }
             TileScript TileSc = TilesManager.Instance.TileList[ID].GetComponent <TileScript>();
             bool       i      = false;
             if (TilesManager.Instance.TileList[ID].GetComponent <TileScript>().Unit != null)
             {
                 i = true;
             }
             foreach (MYthsAndSteel_Enum.TerrainType Type in TileSc.TerrainEffectList)
             {
                 if (EffectToCheck.Contains(Type))
                 {
                     if (PlayerStatic.CheckTiles(MYthsAndSteel_Enum.TerrainType.Ravin, ID) || PlayerStatic.CheckTiles(MYthsAndSteel_Enum.TerrainType.Eau, ID))
                     {
                         i = true;
                         break;
                     }
                     if (PlayerStatic.CheckTiles(MYthsAndSteel_Enum.TerrainType.Rivière_Est, tileId) && PlayerStatic.CheckDirection(tileId, ID) == MYthsAndSteel_Enum.Direction.Est && !PlayerStatic.CheckTiles(MYthsAndSteel_Enum.TerrainType.Pont_Est, tileId))
                     {
                         i = true;
                         break;
                     }
                     if (PlayerStatic.CheckTiles(MYthsAndSteel_Enum.TerrainType.Rivière_Nord, tileId) && PlayerStatic.CheckDirection(tileId, ID) == MYthsAndSteel_Enum.Direction.Nord && !PlayerStatic.CheckTiles(MYthsAndSteel_Enum.TerrainType.Pont_Nord, tileId))
                     {
                         i = true;
                         break;
                     }
                     if (PlayerStatic.CheckTiles(MYthsAndSteel_Enum.TerrainType.Rivière_Sud, tileId) && PlayerStatic.CheckDirection(tileId, ID) == MYthsAndSteel_Enum.Direction.Sud && !PlayerStatic.CheckTiles(MYthsAndSteel_Enum.TerrainType.Pont_Sud, tileId))
                     {
                         i = true;
                         break;
                     }
                     if (PlayerStatic.CheckTiles(MYthsAndSteel_Enum.TerrainType.Rivière_Ouest, tileId) && PlayerStatic.CheckDirection(tileId, ID) == MYthsAndSteel_Enum.Direction.Ouest && !PlayerStatic.CheckTiles(MYthsAndSteel_Enum.TerrainType.Pont_Ouest, tileId))
                     {
                         i = true;
                         break;
                     }
                 }
             }
             if (!i)
             {
                 TilesManager.Instance.TileList[ID].GetComponent <TileScript>().ActiveChildObj(MYthsAndSteel_Enum.ChildTileType.MoveSelect, _selectedSprite);
                 if (!newNeighbourId.Contains(ID))
                 {
                     newNeighbourId.Add(ID);
                 }
                 Highlight(ID, -1, lasttileId);
             }
         }
     }
 }