void UGSAbilitiesComponent::GiveAbilityAndInsert(TSubclassOf<class  UGSAbility> AbilityIn)
{
	if (GetOwnerRole() < ROLE_Authority)
	{
		ServerGiveAbilityAndInsert(AbilityIn);
	}
	else
	{
		int32 abIndex = AddAbilityToActiveList(AbilityIn);

		if (abIndex != -1)
		{
			for (FGSAbilitiesSets& set : AbilitySets)
			{
				for (FGSAbilitySlot& slot : set.AbilitySlots)
				{
					if (slot.AbilityIndex == -1)
					{
						set.RepMe++;
						slot.AbilityIndex = abIndex;
						if (GetNetMode() == ENetMode::NM_Standalone)
							OnAbilityAddedToSet.ExecuteIfBound();
						
						return;
					}
				}
			}
		}
	}
}
void UGSAbilitiesComponent::AddAbilityToSlotFromBook(int32 TargetSetIndex, int32 TargetSlotIndex, int32 BookTabIndex,
	int32 BookSlotIndex)
{
	if (GetOwnerRole() < ENetRole::ROLE_Authority)
	{
		ServerAddAbilityToSlotFromBook(TargetSetIndex, TargetSlotIndex, BookTabIndex, BookSlotIndex);
	}
	else
	{
		TSubclassOf<UGSAbility> abilityClass = OwnedAbilities.AbilitiesTab[BookTabIndex].Abilities[BookSlotIndex].AbilityClass;

		int32 abIndex = AddAbilityToActiveList(abilityClass);

		AbilitySets[TargetSetIndex].AbilitySlots[TargetSetIndex].AbilityIndex = abIndex;
		AbilitySets[TargetSetIndex].RepMe++;
		if (GetNetMode() == ENetMode::NM_Standalone)
			OnRep_AbilitySets();
	}
}
Ejemplo n.º 3
0
void UGASAbilitiesComponent::BP_AddAbility(TSubclassOf<class UGASAbility> AbilityClass)
{
	AddAbilityToActiveList(AbilityClass);
}