コード例 #1
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);
        }
    }
コード例 #2
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));
        }
    }
コード例 #3
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);;
                }
            }
        }
    }
コード例 #4
0
    /// <summary>
    /// Permet de d閠erminer si autour des cases adjacentes il y a des effets de terrain qui pourraient g阯er le d閜loiement de troupes.
    /// </summary>
    /// <param name="tileCheck"></param>
    /// <returns></returns>
    bool CheckConditions(GameObject tileCheck, int origin)
    {
        //Y a une unit�
        if (tileCheck.GetComponent <TileScript>().Unit != null)
        {
            return(true);
        }

        //Y a de l'eau ou un ravin?
        if (tileCheck.GetComponent <TileScript>().TerrainEffectList.Contains(MYthsAndSteel_Enum.TerrainType.Ravin) ||
            tileCheck.GetComponent <TileScript>().TerrainEffectList.Contains(MYthsAndSteel_Enum.TerrainType.Eau))
        {
            return(true);
        }

        //RIVIERE?
        if (tileCheck.GetComponent <TileScript>().TerrainEffectList.Contains(MYthsAndSteel_Enum.TerrainType.Rivi鑢e_Nord) &&
            PlayerStatic.CheckDirection(origin, tileCheck.GetComponent <TileScript>().TileId) == MYthsAndSteel_Enum.Direction.Sud)
        {
            if (!tileCheck.GetComponent <TileScript>().TerrainEffectList.Contains(MYthsAndSteel_Enum.TerrainType.Pont_Nord))
            {
                return(true);
            }
        }

        if (tileCheck.GetComponent <TileScript>().TerrainEffectList.Contains(MYthsAndSteel_Enum.TerrainType.Rivi鑢e_Sud) &&
            PlayerStatic.CheckDirection(origin, tileCheck.GetComponent <TileScript>().TileId) == MYthsAndSteel_Enum.Direction.Nord)
        {
            if (!tileCheck.GetComponent <TileScript>().TerrainEffectList.Contains(MYthsAndSteel_Enum.TerrainType.Pont_Sud))
            {
                return(true);
            }
        }

        if (tileCheck.GetComponent <TileScript>().TerrainEffectList.Contains(MYthsAndSteel_Enum.TerrainType.Rivi鑢e_Ouest) &&
            PlayerStatic.CheckDirection(origin, tileCheck.GetComponent <TileScript>().TileId) == MYthsAndSteel_Enum.Direction.Est)
        {
            if (!tileCheck.GetComponent <TileScript>().TerrainEffectList.Contains(MYthsAndSteel_Enum.TerrainType.Rivi鑢e_Ouest))
            {
                return(true);
            }
        }

        if (tileCheck.GetComponent <TileScript>().TerrainEffectList.Contains(MYthsAndSteel_Enum.TerrainType.Rivi鑢e_Est) &&
            PlayerStatic.CheckDirection(origin, tileCheck.GetComponent <TileScript>().TileId) == MYthsAndSteel_Enum.Direction.Ouest)
        {
            if (!tileCheck.GetComponent <TileScript>().TerrainEffectList.Contains(MYthsAndSteel_Enum.TerrainType.Rivi鑢e_Est))
            {
                return(true);
            }
        }

        return(false);

        //Ajouter les barbelets.
    }
コード例 #5
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();
    }
コード例 #6
0
    /// <summary>
    /// Est ce que l'unité qui a été cliquée fait partie de l'armée
    /// </summary>
    /// <param name="uniTouch"></param>
    /// <returns></returns>
    bool CanUseUnitWhenClic(UnitScript uniTouch)
    {
        if (uniTouch.IsActivationDone == false)
        {
            if (GameManager.Instance.IsPlayerRedTurn)
            {
                if (!PlayerStatic.CheckIsUnitArmy(uniTouch, true) && !uniTouch.UnitStatus.Contains(MYthsAndSteel_Enum.UnitStatut.Possédé))
                {
                    return(false);
                }
            }
            else
            {
                if (!PlayerStatic.CheckIsUnitArmy(uniTouch, false) && !uniTouch.UnitStatus.Contains(MYthsAndSteel_Enum.UnitStatut.Possédé))
                {
                    return(false);
                }
            }


            if (GameManager.Instance.ActualTurnPhase != MYthsAndSteel_Enum.PhaseDeJeu.ActionJ1 && GameManager.Instance.ActualTurnPhase != MYthsAndSteel_Enum.PhaseDeJeu.ActionJ2)
            {
                return(false);
            }

            bool isDeactivate = false;
            foreach (MYthsAndSteel_Enum.TypeUnite type in PlayerScript.Instance.DisactivateUnitType)
            {
                if (uniTouch.UnitSO.typeUnite == type)
                {
                    isDeactivate = true;
                }
            }

            if (isDeactivate)
            {
                return(false);
            }
            else
            {
                return(true);
            }
        }
        else
        {
            return(false);
        }
    }
コード例 #7
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();
    }
コード例 #8
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);
        }
    }
コード例 #9
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);
    }
コード例 #10
0
    /// <summary>
    /// Check si des ressources doivent être distribuées.
    /// </summary>
    public void CheckResources()
    {
        Debug.Log("Ressources");
        foreach (GameObject Tile in TilesManager.Instance.ResourcesList)
        {
            TileScript S = Tile.GetComponent <TileScript>();
            if (S.ResourcesCounter != 0)
            {
                if (S.Unit != null)
                {
                    UnitScript US = S.Unit.GetComponent <UnitScript>();
                    S.RemoveRessources(1, PlayerStatic.CheckIsUnitArmy(US.GetComponent <UnitScript>(), true) == true ? 1 : 2);
                }
            }

            if (S.ResourcesCounter == 0)
            {
                S.RemoveEffect(MYthsAndSteel_Enum.TerrainType.Point_de_ressource);
                S.TerrainEffectList.Remove(MYthsAndSteel_Enum.TerrainType.Point_de_ressource);
                S.TerrainEffectList.Add(MYthsAndSteel_Enum.TerrainType.Point_de_ressources_vide);
            }
        }
    }
コード例 #11
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);
                }
            }
        }
    }
コード例 #12
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é;
        }
    }
コード例 #13
0
    /// <summary>
    /// Change les stats en fonction de où se trouve l'unité
    /// </summary>
    public void ChangeStat()
    {
        // Applique les bonus/malus de terrains
        if (PlayerStatic.CheckTiles(MYthsAndSteel_Enum.TerrainType.Bosquet, _selectedUnit.GetComponent <UnitScript>().ActualTiledId)) // Bosquet
        {
            _numberRangeMin.x -= 1;
            _numberRangeMin.y -= 1;
            _numberRangeMax.x -= 1;
            Debug.Log("BosquetEffectApplyed");
        }

        if (PlayerStatic.CheckTiles(MYthsAndSteel_Enum.TerrainType.Colline, _selectedUnit.GetComponent <UnitScript>().ActualTiledId)) // Colline
        {
            _selectedUnit.GetComponent <UnitScript>().AttackRangeBonus += 1;
            Debug.Log("CollineEffectApplyed");
        }

        if (PlayerStatic.CheckTiles(MYthsAndSteel_Enum.TerrainType.Plage, _selectedUnit.GetComponent <UnitScript>().ActualTiledId) && _selectedUnit.GetComponent <Unit_SO>().typeUnite == MYthsAndSteel_Enum.TypeUnite.Infanterie) // Plage
        {
            _numberRangeMin.x += -2;
            _numberRangeMin.y += -1;
            _numberRangeMax.x += -1;
            Debug.Log("PlayaEffectApplyed");
        }

        if (PlayerStatic.CheckTiles(MYthsAndSteel_Enum.TerrainType.Haute_colline, _selectedUnit.GetComponent <UnitScript>().ActualTiledId)) // Haute colline 1
        {
            _selectedUnit.GetComponent <UnitScript>().AttackRangeBonus = 1;
            Debug.Log("Haute collineEffectApplyed");
        }

        if (PlayerStatic.CheckTiles(MYthsAndSteel_Enum.TerrainType.Haute_colline, selectedUnitEnnemy.GetComponent <UnitScript>().ActualTiledId)) // Haute colline 2
        {
            if (!PlayerStatic.CheckTiles(MYthsAndSteel_Enum.TerrainType.Colline, _selectedUnit.GetComponent <UnitScript>().ActualTiledId) || !PlayerStatic.CheckTiles(MYthsAndSteel_Enum.TerrainType.Haute_colline, _selectedUnit.GetComponent <UnitScript>().ActualTiledId))
            {
                _numberRangeMin.x += 2;
                _numberRangeMin.y += 2;
                _numberRangeMax.x += 2;
                Debug.Log("HautecollinesamerelapEffectApplyed");
            }
        }

        if (PlayerStatic.CheckTiles(MYthsAndSteel_Enum.TerrainType.Maison, selectedUnitEnnemy.GetComponent <UnitScript>().ActualTiledId)) // Maison
        {
            _damageMinimum -= 1;
            _damageMaximum -= 1;
            Debug.Log("Dégats Reduits");
            TilesManager.Instance.TileList[selectedUnitEnnemy.GetComponent <UnitScript>().ActualTiledId].GetComponent <TileScript>().TerrainEffectList.Remove(MYthsAndSteel_Enum.TerrainType.Maison);
            TilesManager.Instance.TileList[selectedUnitEnnemy.GetComponent <UnitScript>().ActualTiledId].GetComponent <TileScript>().TerrainEffectList.Add(MYthsAndSteel_Enum.TerrainType.Ruines);
            Debug.Log("IkeaEffectApplyed");
        }

        if (PlayerStatic.CheckTiles(MYthsAndSteel_Enum.TerrainType.Immeuble, selectedUnitEnnemy.GetComponent <UnitScript>().ActualTiledId)) // Immeubles
        {
            _damageMinimum = 0;
            _damageMaximum = 0;
            Debug.Log("Annulés");
            TilesManager.Instance.TileList[selectedUnitEnnemy.GetComponent <UnitScript>().ActualTiledId].GetComponent <TileScript>().TerrainEffectList.Remove(MYthsAndSteel_Enum.TerrainType.Immeuble);
            TilesManager.Instance.TileList[selectedUnitEnnemy.GetComponent <UnitScript>().ActualTiledId].GetComponent <TileScript>().TerrainEffectList.Add(MYthsAndSteel_Enum.TerrainType.Ruines);
            Debug.Log("BigBoumIkeaEffectApplyed");
        }
    }
コード例 #14
0
    /// <summary>
    /// Ajoute la tile à TileSelected. Pour le mvmt du joueur => Check egalement toutes les conditions de déplacement.
    /// </summary>
    /// <param name="tileId">Tile</param>
    public void AddMouvement(int tileId)
    {
        check = false;
        if (_isInMouvement)
        {
            if (newNeighbourId.Contains(tileId)) // Si cette case est dans la range de l'unité.
            {
                if (selectedTileId.Contains(tileId))
                {
                    // Supprime toutes les cases sélectionnées à partir de l'ID tileId.
                    for (int i = selectedTileId.IndexOf(tileId); i < selectedTileId.Count; i++)
                    {
                        if (PlayerStatic.CheckTiles(MYthsAndSteel_Enum.TerrainType.Forêt, selectedTileId[i]) || PlayerStatic.CheckTiles(MYthsAndSteel_Enum.TerrainType.Mont, selectedTileId[i]))
                        {
                            // Redistribution du Range à chaque suppression de case.
                            if (RouteBonus)
                            {
                                RouteBonus = false;
                                if (mUnit.GetComponent <UnitScript>().MoveLeft + 1 > mUnit.GetComponent <UnitScript>().UnitSO.MoveSpeed)
                                {
                                    mUnit.GetComponent <UnitScript>().MoveSpeedBonus += 1;
                                }
                                else
                                {
                                    mUnit.GetComponent <UnitScript>().MoveLeft += 1;
                                }
                            }
                            else
                            {
                                if (mUnit.GetComponent <UnitScript>().MoveLeft + 2 > mUnit.GetComponent <UnitScript>().UnitSO.MoveSpeed)
                                {
                                    int moveToAdd = 2 - (mUnit.GetComponent <UnitScript>().UnitSO.MoveSpeed - mUnit.GetComponent <UnitScript>().MoveLeft);
                                    mUnit.GetComponent <UnitScript>().MoveLeft        = mUnit.GetComponent <UnitScript>().UnitSO.MoveSpeed;
                                    mUnit.GetComponent <UnitScript>().MoveSpeedBonus += moveToAdd;
                                }
                                else
                                {
                                    mUnit.GetComponent <UnitScript>().MoveLeft += 2;
                                }
                            }

                            temp.Add(selectedTileId[i]);
                            TilesManager.Instance.TileList[selectedTileId[i]].GetComponent <TileScript>().ActiveChildObj(MYthsAndSteel_Enum.ChildTileType.MoveSelect, _selectedSprite); // Repasse les sprites en apparence "séléctionnable".
                            // Déselectionne les cases. hxh

                            TilesManager.Instance.TileList[selectedTileId[i]].GetComponent <TileScript>().DesActiveChildObj(MYthsAndSteel_Enum.ChildTileType.MoveArrow);
                        }
                        else
                        {
                            // Redistribution du Range à chaque suppression de case.
                            if (mUnit.GetComponent <UnitScript>().MoveLeft + 1 > mUnit.GetComponent <UnitScript>().UnitSO.MoveSpeed)
                            {
                                int moveToAdd = 1 - (mUnit.GetComponent <UnitScript>().UnitSO.MoveSpeed - mUnit.GetComponent <UnitScript>().MoveLeft);
                                mUnit.GetComponent <UnitScript>().MoveLeft        = mUnit.GetComponent <UnitScript>().UnitSO.MoveSpeed;
                                mUnit.GetComponent <UnitScript>().MoveSpeedBonus += moveToAdd;
                            }
                            else
                            {
                                if (RouteBonus)
                                {
                                    RouteBonus = false;
                                }
                                else
                                {
                                    mUnit.GetComponent <UnitScript>().MoveLeft += 1;
                                }
                            }

                            temp.Add(selectedTileId[i]);
                            TilesManager.Instance.TileList[selectedTileId[i]].GetComponent <TileScript>().ActiveChildObj(MYthsAndSteel_Enum.ChildTileType.MoveSelect, _selectedSprite); // Repasse les sprites en apparence "séléctionnable".
                        }
                    }
                    foreach (int i in temp)
                    {
                        selectedTileId.Remove(i);
                    }
                    temp.Clear();

                    Attaque.Instance.RemoveTileSprite();
                    Attaque.Instance.StartAttackSelectionUnit(selectedTileId[selectedTileId.Count - 1]);
                }  // Si cette case est déjà selectionnée.
                else if (PlayerStatic.IsNeighbour(tileId, selectedTileId[selectedTileId.Count - 1], TilesManager.Instance.TileList[tileId].GetComponent <TileScript>().Line, false))
                {
                    // et qu'il reste du mvmt, on assigne la nouvelle case selectionnée à la liste SelectedTile.
                    if (PlayerStatic.CheckTiles(MYthsAndSteel_Enum.TerrainType.Rivière_Est, tileId) && PlayerStatic.CheckDirection(tileId, selectedTileId[selectedTileId.Count - 1]) == MYthsAndSteel_Enum.Direction.Est && !PlayerStatic.CheckTiles(MYthsAndSteel_Enum.TerrainType.Pont_Est, tileId))
                    {
                        check = true;
                    }
                    if (PlayerStatic.CheckTiles(MYthsAndSteel_Enum.TerrainType.Rivière_Nord, tileId) && PlayerStatic.CheckDirection(tileId, selectedTileId[selectedTileId.Count - 1]) == MYthsAndSteel_Enum.Direction.Nord && !PlayerStatic.CheckTiles(MYthsAndSteel_Enum.TerrainType.Pont_Nord, tileId))
                    {
                        check = true;
                    }
                    if (PlayerStatic.CheckTiles(MYthsAndSteel_Enum.TerrainType.Rivière_Sud, tileId) && PlayerStatic.CheckDirection(tileId, selectedTileId[selectedTileId.Count - 1]) == MYthsAndSteel_Enum.Direction.Sud && !PlayerStatic.CheckTiles(MYthsAndSteel_Enum.TerrainType.Pont_Sud, tileId))
                    {
                        check = true;
                    }
                    if (PlayerStatic.CheckTiles(MYthsAndSteel_Enum.TerrainType.Rivière_Ouest, tileId) && PlayerStatic.CheckDirection(tileId, selectedTileId[selectedTileId.Count - 1]) == MYthsAndSteel_Enum.Direction.Ouest && !PlayerStatic.CheckTiles(MYthsAndSteel_Enum.TerrainType.Pont_Ouest, tileId))
                    {
                        check = true;
                    }
                    if (PlayerStatic.CheckTiles(MYthsAndSteel_Enum.TerrainType.Forêt, tileId) || PlayerStatic.CheckTiles(MYthsAndSteel_Enum.TerrainType.Mont, tileId))
                    {
                        if (mUnit.GetComponent <UnitScript>().MoveLeft >= 2 && !check)
                        {
                            check = true;
                            mUnit.GetComponent <UnitScript>().MoveLeft -= 2; // sup 2 mvmt.
                            selectedTileId.Add(tileId);
                            TilesManager.Instance.TileList[tileId].GetComponent <TileScript>().ActiveChildObj(MYthsAndSteel_Enum.ChildTileType.MoveSelect, _tileSprite);

                            Attaque.Instance.RemoveTileSprite();
                            Attaque.Instance.StartAttackSelectionUnit(tileId);
                        }
                        else if (mUnit.GetComponent <UnitScript>().MoveLeft + mUnit.GetComponent <UnitScript>().MoveSpeedBonus >= 2 && !check)
                        {
                            int moveToDecrease = 2;
                            moveToDecrease -= mUnit.GetComponent <UnitScript>().MoveLeft;
                            mUnit.GetComponent <UnitScript>().MoveLeft        = 0;
                            mUnit.GetComponent <UnitScript>().MoveSpeedBonus -= moveToDecrease;
                        }
                        else if (PlayerStatic.CheckTiles(MYthsAndSteel_Enum.TerrainType.Route, selectedTileId[selectedTileId.Count - 1]) && (mUnit.GetComponent <UnitScript>().MoveLeft + mUnit.GetComponent <UnitScript>().MoveSpeedBonus) == 1 && !RouteBonus && !check)
                        {
                            RouteBonus = true;
                            check      = true;
                            if (mUnit.GetComponent <UnitScript>().MoveLeft > 0)
                            {
                                mUnit.GetComponent <UnitScript>().MoveLeft--;
                            }
                            else
                            {
                                mUnit.GetComponent <UnitScript>().MoveSpeedBonus--;
                            }
                            selectedTileId.Add(tileId);
                            TilesManager.Instance.TileList[tileId].GetComponent <TileScript>().ActiveChildObj(MYthsAndSteel_Enum.ChildTileType.MoveSelect, _tileSprite);

                            Attaque.Instance.RemoveTileSprite();
                            Attaque.Instance.StartAttackSelectionUnit(tileId);
                        }
                        else
                        {
                            check = true;
                            Debug.Log("La tile d'ID : " + tileId + " est une foret ou un mont.");
                        }
                    }
                    if (PlayerStatic.CheckTiles(MYthsAndSteel_Enum.TerrainType.Route, selectedTileId[selectedTileId.Count - 1]) && (mUnit.GetComponent <UnitScript>().MoveLeft + mUnit.GetComponent <UnitScript>().MoveSpeedBonus) == 0 && !RouteBonus)
                    {
                        RouteBonus = true;
                        check      = true;
                        selectedTileId.Add(tileId);
                        TilesManager.Instance.TileList[tileId].GetComponent <TileScript>().ActiveChildObj(MYthsAndSteel_Enum.ChildTileType.MoveSelect, _tileSprite);
                        Attaque.Instance.RemoveTileSprite();
                        Attaque.Instance.StartAttackSelectionUnit(tileId);
                    }
                    if (!check)
                    {
                        if (mUnit.GetComponent <UnitScript>().MoveLeft > 0)
                        {
                            mUnit.GetComponent <UnitScript>().MoveLeft--; // sup 1 mvmt.
                            selectedTileId.Add(tileId);
                            TilesManager.Instance.TileList[tileId].GetComponent <TileScript>().ActiveChildObj(MYthsAndSteel_Enum.ChildTileType.MoveSelect, _tileSprite);

                            Attaque.Instance.RemoveTileSprite();
                            Attaque.Instance.StartAttackSelectionUnit(tileId);
                        }
                        else if (mUnit.GetComponent <UnitScript>().MoveSpeedBonus > 0)
                        {
                            mUnit.GetComponent <UnitScript>().MoveSpeedBonus--; // sup 1 mvmt.
                            selectedTileId.Add(tileId);
                            TilesManager.Instance.TileList[tileId].GetComponent <TileScript>().ActiveChildObj(MYthsAndSteel_Enum.ChildTileType.MoveSelect, _tileSprite);

                            Attaque.Instance.RemoveTileSprite();
                            Attaque.Instance.StartAttackSelectionUnit(tileId);
                        }
                    }
                }    // Sinon, si cette case est bien voisine de l'ancienne selection.
                else // Sinon cette case est trop loin de l'ancienne seletion.
                {
                    Debug.Log("La tile d'ID : " + tileId + " est trop loin de la tile d'ID: " + selectedTileId[selectedTileId.Count - 1]);
                }
            }
            // Sinon cette case est hors de la range de l'unité.
            else
            {
                Debug.Log("La tile d'ID : " + tileId + " est trop loin de la tile d'ID: " + selectedTileId[selectedTileId.Count - 1]);
            }
        }
        if (selectedTileId.Count > 1 && TilesManager.Instance.TileList[selectedTileId[selectedTileId.Count - 1]].GetComponent <TileScript>().Unit == null)
        {
            UIInstance.Instance.ActivationUnitPanel.ShowMovementPanel();
        }
        else
        {
            UIInstance.Instance.ActivationUnitPanel.CloseMovementPanel();
        }
        //DisplayMoveArrow();
    }
コード例 #15
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);
             }
         }
     }
 }