private void Update() { if (ActualTarget == null) { if (actualState != TroopStates.DEFENDING) { ActualTarget = PickAnTarget(); } } else { if (!IsInRange(ActualTarget.position, troopData.attackDistance)) { actualState = TroopStates.MOVING; movementAction.actualTarget = ActualTarget.position; } else { if (troopData.troopObjective == PhaseObjectives.DEFEND && ActualTarget.CompareTag("Tower")) { EnterInDefenseState(); } else if (!attackAction.IsAttacking) { AttackTarget(ActualTarget); } } } if (attackAction.IsAttacking && actualState == TroopStates.ATTACKING) { attackingTowerEvent.Raise(troopData); } }
private void RestoreValue() { if (_localValue.IsDependencyPropertyUnsetValue()) { ActualTarget.ClearValue(ActualProperty); } else { ActualTarget.SetValue(ActualProperty, _localValue); } _localValue = null; }