예제 #1
0
    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);
        }
    }
예제 #2
0
    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();
        }
    }
예제 #3
0
    /// <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);
    }
예제 #4
0
    //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;
        }
    }