/// <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)); } }
/// <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);; } } } }
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); } }
/// <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(); }
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(); }
/// <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); } }
/// <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); }
/// <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); } } } }
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é; } }
/// <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); } } } }