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; // } }
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; }