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 ) ); } } }
private void RemoveHiddenEnemy(CommunicatableEnemyMarker marker) { hiddenEnemies.Remove(marker); EnemyMarkerStore.RemoveCommunicatorSubscriber(marker); marker.GetEnemyMarker().RemoveUser(this); }
private void AddHiddenEnemy(CommunicatableEnemyMarker marker) { hiddenEnemies.Add(marker); EnemyMarkerStore.AddCommunicatorSubscriber(marker); marker.GetEnemyMarker().AddUser(this); }
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); }
/* * Communicator must be in hiddenEnemies */ public void InvalidateMarker(CommunicatableEnemyMarker communicator) { communicator.Invalidate(); HumanoidTargeterCommunication.Communicate( new CommunicationPackage( GetDeepCopyOfHiddenEnemies(), this ) ); RemoveHiddenEnemy(communicator); }
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); }
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++; }
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); }); }); }
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); } } }
public void AddEnemyMarker(CommunicatableEnemyMarker newCMarker) { AddHiddenEnemy(newCMarker); }