public void Execute([ReadOnly] ref AbilitySourceTargetComponent abilitySourceTarget, ref AbilityStateComponent state, [ReadOnly] ref T1 ability)
    {
        if (state.State != EAbilityState.CheckResource)
        {
            return;
        }
        var resourceAvailable = false;
        var sourceAttrs       = attributesComponent[abilitySourceTarget.Source];

        resourceAvailable = ability.CheckResourceAvailable(ref abilitySourceTarget.Source, ref sourceAttrs);
        if (resourceAvailable)
        {
            state.State = EAbilityState.PreActivate;
        }
        else
        {
            state.State = EAbilityState.Failed;
        }
    }
 public void Execute(ref AbilityStateComponent state, [ReadOnly] ref AbilitySourceTargetComponent sourceTarget, [ReadOnly] ref T1 ability)
 {
     if (state.State != EAbilityState.CheckCooldown)
     {
         return;
     }
     cooldownsRemainingForAbility.TryGetValue(sourceTarget.Source, out var cooldownRemaining);
     if (cooldownRemaining.TimeRemaining > 0)
     {
         state.State = EAbilityState.Failed;
     }
     else
     {
         state.State = EAbilityState.CheckResource;
     }
     // if (cooldown.TimeRemaining > 0 && cooldown.CooldownActivated) {
     // } else {
     //     state.State = EAbilityState.CheckResource;
     // }
 }
Example #3
0
 public void Execute(Entity entity, int index, [ReadOnly] ref AbilityStateComponent abilityStateComponent, [ReadOnly] ref AbilitySourceTargetComponent abilitySourceTarget, [ReadOnly] ref T1 ability)
 {
     if (abilityStateComponent.State != EAbilityState.PreActivate)
     {
         return;
     }
     ability.ApplyCooldownEffect(index, Ecb, abilitySourceTarget.Source, WorldTime);
     ability.ApplyAbilityCosts(index, Ecb, abilitySourceTarget.Source, abilitySourceTarget.Target, attributesComponent[abilitySourceTarget.Source], WorldTime);
     abilityStateComponent.State = EAbilityState.Activate;
 }