#pragma once #include "CoreMinimal.h" #include "ArmorDamageInfo.h" #include "ArmorPrimitiveDamagedDelegateDelegate.h" #include "ArmorPrimitiveDestroyedDelegate.h" #include "BaseArmorDamageComponent.h" #include "CompositeArmorItem.h" #include "CompositeArmorComponent.generated.h" class UFXSystemAsset; class UPrimitiveComponent; UCLASS(Blueprintable, ClassGroup=Custom, meta=(BlueprintSpawnableComponent)) class UCompositeArmorComponent : public UBaseArmorDamageComponent { GENERATED_BODY() public: protected: UPROPERTY(BlueprintAssignable, BlueprintReadWrite, EditAnywhere, meta=(AllowPrivateAccess=true)) FArmorPrimitiveDestroyed OnArmorPartDestroyedEvent; UPROPERTY(BlueprintAssignable, BlueprintReadWrite, EditAnywhere, meta=(AllowPrivateAccess=true)) FArmorPrimitiveDamagedDelegate OnArmorPartDamagedEvent; UPROPERTY(BlueprintReadWrite, EditAnywhere, meta=(AllowPrivateAccess=true)) UFXSystemAsset* BreakParticle; UPROPERTY(BlueprintReadWrite, EditAnywhere, meta=(AllowPrivateAccess=true)) bool AffectedByAmorBreak; UPROPERTY(BlueprintReadWrite, EditAnywhere, Transient, meta=(AllowPrivateAccess=true)) TArray ArmorItems; UPROPERTY(BlueprintReadWrite, EditAnywhere, Transient, ReplicatedUsing=OnRep_ArmorDamageInfo, meta=(AllowPrivateAccess=true)) FArmorDamageInfo ArmorDamageInfo; public: UCompositeArmorComponent(); virtual void GetLifetimeReplicatedProps(TArray& OutLifetimeProps) const override; protected: UFUNCTION(BlueprintCallable) void OnRep_ArmorDamageInfo(FArmorDamageInfo OldValue); public: UFUNCTION(BlueprintCallable) void AddArmorPart(UPrimitiveComponent* Primitive, float Health, bool overrideAffectedByArmomrBreak, bool NewAffectedByArmorBreak); };