public void Add(CostNodeZone node) { if (node != null) { directions.Add(node); } }
public static int GetDistanceFrom(int zoneId, Dictionary <int, ShortestWayNode> allWaysToZone) { if (!allWaysToZone.ContainsKey(zoneId)) { return(int.MaxValue); } CostNodeZone node = allWaysToZone[zoneId].GetNextNodeZone(); if (node == null) { return(int.MaxValue); } return(node.cost); }
/// <summary> /// J'ajouter les feuilles d'exploration à la carte. /// L'idée est que chaque case doit possèder des liens vers c'est parent du tour avant. /// Et le nombre de ressource pour arriver au point voulu /// </summary> /// <param name="parent"> The direction where to go</param> /// <param name="leaf">La zone de feuille à ajoute à la map</param> /// <param name="currentCost">Le cout total pour arrivé à destination</param> /// <param name="map">La carte actuelle</param> private static void AddLeafToMap(Zone parent, Zone leaf, int currentCost, ref Dictionary <int, ShortestWayNode> map) { ShortestWayNode swn = null; map.TryGetValue(leaf.id, out swn); if (swn == null) { swn = new ShortestWayNode(leaf); map.Add(leaf.id, swn); } CostNodeZone nz = new CostNodeZone(parent, currentCost); swn.Add(nz); }
public CostNodeZone GetNextNodeZone() { int minCost = 10000; CostNodeZone next = null; foreach (CostNodeZone nz in directions) { if (nz.cost < minCost) { next = nz; minCost = nz.cost; } } return(next); }
//public FixedMap map; public void SetPlayerOrigineZone(bool isEnemy, Zone zone) { if (isEnemy) { enemyFlagLocalisation = zone; enemyFlagPath = AllWaysGoToRome.GetMap(zone); } else { myFlagLocalisation = zone; myFlagPath = AllWaysGoToRome.GetMap(zone); } if (myFlagLocalisation != null && enemyFlagPath != null) { ShortestWayNode swn = null; enemyFlagPath.TryGetValue(myFlagLocalisation.id, out swn); CostNodeZone nz = swn.GetNextNodeZone(); enemyDistance = nz.cost; } }