public void SetPlayerOrigineZone(int playerId, Zone zone) { GameData game = GameData.Instance; if (playerId < 0 || playerId > 3) { return; } players[playerId].origine = zone; if (playerId == GameData.Instance.myId) { game.myFlag = CentralMap.GetMap(zone); game.myFlagZone = zone; } else { game.enemyFlag = CentralMap.GetMap(zone); game.enemyFlagZone = zone; } if (game.myFlag != null && game.enemyFlag != null) { ShortestWayNode swn = null; game.enemyFlag.TryGetValue(game.myFlagZone.id, out swn); NodeZone nz = swn.GetNextNodeZone(); game.enemyDistance = nz.cost; Player.DebugLog("Dist based:" + game.enemyDistance); } }
public static void Rush() { GetUnityGroup(game.myId, ref alone, ref duo, ref littleGroup, ref bigGroup, ref army, ref allGroup); if (game.frame == 0) { Zone start = game.myFlagZone; ShortestWayNode swn = null; game.enemyFlag.TryGetValue(start.id, out swn); Zone attackZone = swn.GetNextZone(); Zone seekerZone = start.GetOtherLinkedZone(attackZone); MoveDrone(5, start.id, attackZone.id); if (seekerZone != null) { MoveDrone(1, start.id, seekerZone.id); } } else if (game.frame < game.enemyDistance + 2) { foreach (Zone z in allGroup) { if (z.GetMyDrones(game.myId) == 1) { Squad sq = new Squad(1, z); sq.SetBehaviour(BehaviorStorage.IncomeSeekerBehavior); squadsToMove.Add(sq); } else if (z.id == game.myFlagZone.id) { } else { Squad sq = new Squad(z.GetMyDrones(game.myId), z); sq.SetBehaviour(BehaviorStorage.GoDirectlyToBase); squadsToMove.Add(sq); } } foreach (Squad s in squadsToMove) { s.DoTheThing(); if (s.nextPosition != null) { MoveDrone(s.droneNumber, s.currentPosition.id, s.nextPosition.id); } } } else { SquadMissionManagement(); } }
/// <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); } NodeZone nz = new NodeZone(parent, currentCost); swn.Add(nz); }
//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; } }