Esempio n. 1
0
    public void DoesNotSeeEnemy(HumanoidModel enemy)
    {
        EnemyTarget enemyTarget;

        viewableEnemies.TryGetValue(enemy, out enemyTarget);
        if (enemyTarget != null)
        {
            viewableEnemies.Remove(enemy);
            EnemyMarker newMarker = new EnemyMarker(enemyTarget, this);
            CommunicatableEnemyMarker newCMarker = new CommunicatableEnemyMarker(
                newMarker,
                checkHiddenEnemyRadius
                );
            // avoid clustering enemy markers in one spot
            if (NoMarkerTooCloseTo(newCMarker))
            {
                AddHiddenEnemy(newCMarker);
                HumanoidTargeterCommunication.Communicate(
                    new CommunicationPackage(
                        GetDeepCopyOfHiddenEnemies(),
                        this
                        )
                    );
            }
        }
    }
Esempio n. 2
0
    private void RemoveHiddenEnemy(CommunicatableEnemyMarker marker)
    {
        hiddenEnemies.Remove(marker);
        EnemyMarkerStore.RemoveCommunicatorSubscriber(marker);

        marker.GetEnemyMarker().RemoveUser(this);
    }
Esempio n. 3
0
    private void AddHiddenEnemy(CommunicatableEnemyMarker marker)
    {
        hiddenEnemies.Add(marker);
        EnemyMarkerStore.AddCommunicatorSubscriber(marker);

        marker.GetEnemyMarker().AddUser(this);
    }
Esempio n. 4
0
    public CommunicatableEnemyMarker GetNewMarker()
    {
        CommunicatableEnemyMarker newMarker = new CommunicatableEnemyMarker();

        newMarker.radius             = this.radius;
        newMarker.enemyMarker        = this.enemyMarker;
        newMarker.valid              = this.valid;
        newMarker.secondaryLocations = new Queue <Vector3>(this.secondaryLocations);
        return(newMarker);
    }
Esempio n. 5
0
 /*
  * Communicator must be in hiddenEnemies
  */
 public void InvalidateMarker(CommunicatableEnemyMarker communicator)
 {
     communicator.Invalidate();
     HumanoidTargeterCommunication.Communicate(
         new CommunicationPackage(
             GetDeepCopyOfHiddenEnemies(),
             this
             )
         );
     RemoveHiddenEnemy(communicator);
 }
Esempio n. 6
0
    private bool NoMarkerTooCloseTo(CommunicatableEnemyMarker target)
    {
        Vector3 targetLocation = target.GetEnemyMarker().GetLocation();

        foreach (CommunicatableEnemyMarker marker in hiddenEnemies)
        {
            Vector3 markerLocation = marker.GetEnemyMarker().GetLocation();
            if (Vector3.Distance(markerLocation, targetLocation) < hiddenEnemyRadius)
            {
                return(false);
            }
        }
        return(true);
    }
Esempio n. 7
0
    public static void AddCommunicatorSubscriber(CommunicatableEnemyMarker communicator)
    {
        Integer     communicators = null;
        EnemyMarker enemyMarker   = communicator.GetEnemyMarker();

        instance.enemyMarkers.TryGetValue(enemyMarker, out communicators);
        if (communicators == null)
        {
            instance.enemyMarkers.Add(enemyMarker, new Integer(0));
            instance.enemyMarkersPublic.Add(enemyMarker);
        }
        Integer existingCommunicator = instance.enemyMarkers[enemyMarker];

        existingCommunicator.value++;
    }
Esempio n. 8
0
 void Start()
 {
     amyTarget = HumanoidStore.GetAmyModel();
     enemyMarkerLocations.ForEach(m =>
     {
         EnemyMarker newMarker = new EnemyMarker(amyTarget, m.position, null);
         targeters.ForEach(t =>
         {
             CommunicatableEnemyMarker newCMarker = new CommunicatableEnemyMarker(
                 newMarker,
                 5
                 );
             t.AddEnemyMarker(newCMarker);
         });
     });
 }
Esempio n. 9
0
    public static void RemoveCommunicatorSubscriber(CommunicatableEnemyMarker communicator)
    {
        Integer     communicators = null;
        EnemyMarker enemyMarker   = communicator.GetEnemyMarker();

        instance.enemyMarkers.TryGetValue(enemyMarker, out communicators);
        if (communicators != null)
        {
            communicators.value--;
            if (communicators.value == 0)
            {
                instance.enemyMarkers.Remove(enemyMarker);
                instance.enemyMarkersPublic.Remove(enemyMarker);
            }
        }
    }
Esempio n. 10
0
 public void AddEnemyMarker(CommunicatableEnemyMarker newCMarker)
 {
     AddHiddenEnemy(newCMarker);
 }