Exemplo n.º 1
0
    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);
        }
    }
Exemplo n.º 2
0
        private void RestoreValue()
        {
            if (_localValue.IsDependencyPropertyUnsetValue())
            {
                ActualTarget.ClearValue(ActualProperty);
            }
            else
            {
                ActualTarget.SetValue(ActualProperty, _localValue);
            }

            _localValue = null;
        }