private void WayNotFoundHandler(TankControl aControl) { // We can't reach our target... // But no problem, just finish this state // and AIAgent decide that we will do next... // Maybe select another point? ;) Finish(); }
private void ArrivedHandler(TankControl aControl) { // We have reach our target! // Don't forget to finish this state, // that is means that AIAgent can select new state. Finish(); }
public override void Create(GameObject aGameObject) { _control = aGameObject.GetComponent <TankControl>(); _blackboard = aGameObject.GetComponent <TankBlackboard>(); // This state can't be interrupted. AllowInterrupting = false; }
/// <summary> /// Sets target unit for the health bar for observing of the health. /// </summary> /// <param name="aTank">Target tank.</param> public void SetTarget(TankControl aTank) { _tank = aTank; _tank.EventChangeHealth += TankChangeHealthHandler; _tank.EventDestroyed += TankDestroyedHandler; _hasTarget = true; UpdateVisual(); }
private void TankDestroyedHandler(TankControl aTank) { // If target is destroyed, destroy the health bar too. aTank.EventDestroyed -= TankDestroyedHandler; aTank.EventChangeHealth -= TankChangeHealthHandler; _tank = null; _hasTarget = false; GameObject.Destroy(gameObject); }
private void AddTouchTank(TankControl aTank) { for (int i = 0; i < TANKS_COUNT; i++) { if (_touchTanks[i] == null) { _touchTanks[i] = aTank; } } }
private void AddTank(TankControl aTank) { for (int i = 0; i < TANKS_COUNT; i++) { if (_seeTanks[i] == null) { _seeTanks[i] = aTank; break; } } }
private void Awake() { _t = GetComponent <Transform>(); _control = GetComponent <TankControl>(); _blackboard = GetComponent <TankBlackboard>(); _seeItems = new CollectableItem[SEE_ITEMS_COUNT]; _seeTanks = new TankControl[TANKS_COUNT]; _touchTanks = new TankControl[TANKS_COUNT]; _seeFrom = new List <Vector2>(); _seeTo = new List <Vector2>(); }
/// <summary> /// Sets enemy tank as current target. /// </summary> /// <param name="aEnemyTank">Reference to the enemy tank.</param> public void TrackTank(TankControl aEnemyTank) { if (_enemyTank != null && !System.Object.ReferenceEquals(_enemyTank, aEnemyTank)) { // If we already tracked other tank, then check what of them is close to us? float dist = AntMath.Distance(_t.position, aEnemyTank.Position); if (dist < _enemyTankDist) { // If new enemy closer, then replace old on the new one. _enemyTankDist = dist; _enemyTank.EventDestroyed -= TankDestroyedHandler; _enemyTank = aEnemyTank; _enemyTank.EventDestroyed += TankDestroyedHandler; } } else { // Just track the enemy. _enemyTankDist = AntMath.Distance(_t.position, aEnemyTank.Position); _enemyTank = aEnemyTank; _enemyTank.EventDestroyed += TankDestroyedHandler; _hasEnemy = true; } }
public override void Create(GameObject aGameObject) { _control = aGameObject.GetComponent <TankControl>(); _blackboard = aGameObject.GetComponent <TankBlackboard>(); }
private void TankChangeHealthHandler(TankControl aTank) { // If target changed health value, update the health bar too. UpdateVisual(); }
private void TankDestroyedHandler(TankControl aTank) { // Tank of this spawner is destroyed, activating the spawner to spawn new Tank. aTank.EventDestroyed -= TankDestroyedHandler; _isActive = true; }
private void tankDestroyedHandler(TankControl aTank) { aTank.EventDestroyed -= tankDestroyedHandler; Finish(); }
private void TankDestroyedHandler(TankControl aTank) { aTank.EventDestroyed -= TankDestroyedHandler; _enemyTank = null; _hasEnemy = false; }
private void TankDestroyedHandler(TankControl aTank) { aTank.EventDestroyed -= TankDestroyedHandler; tanks.Remove(aTank); }