5#include "CoreMinimal.h"
7#include "WeaponInstanceToggleable.generated.h"
9class UAfflictionInstance;
10class UInteractableComponent;
11class UPrimitiveComponent;
12class APlayerController;
27 GENERATED_UCLASS_BODY()
31 virtual void BeginPlay()
override;
32 virtual void TickComponent(
float DeltaTime,
enum ELevelTick TickType, FActorComponentTickFunction* ThisTickFunction)
override;
38 virtual bool Fire(uint8
Mode,
float WorldTimeOverride = -1.f)
override;
39 virtual void StopAllActions()
override;
40 virtual void CoolDownStart(uint8
Mode);
41 virtual bool Equip()
override;
43 virtual void FireComplete(uint8
Mode)
override;
46 virtual void OnEnabledAfflictionEnded();
47 virtual void ActiveTimeComplete()
override;
51 UFUNCTION(BlueprintImplementableEvent, Category =
Weapon, meta = (DisplayName =
"On Activate", ScriptName =
"ToggleOn"))
54 UFUNCTION(BlueprintImplementableEvent, Category =
Weapon, meta = (DisplayName = "
On Deactivate", ScriptName = "ToggleOff"))
57 UFUNCTION(BlueprintCallable, Category =
Weapon)
58 virtual
void ToggleWeapon(
bool bEnable);
60 UFUNCTION(Client, Reliable)
61 void Client_Reliable_ToggleOff(
float FailWorldTime);
62 UFUNCTION(Client, Reliable)
63 void Client_Reliable_OnEnabledAfflictionEnded();
64 UFUNCTION(
Server, Reliable)
65 void Server_Reliable_ForceToggle(
bool bEnable);
68 virtual
void OnRep_Enabled();
71 virtual
void OnWeaponFire(uint8
Mode);
73 virtual
void OnHoldInteraction(UInteractableComponent* Interactable, UPrimitiveComponent* Component,
float HoldTime, APlayerController* Sender);
77 float LastEnableTime = -1.f;
79 UPROPERTY(ReplicatedUsing = OnRep_Enabled)
80 bool bIsEnabled = false;
87 UPROPERTY(EditDefaultsOnly, Category = "Toggleable
Weapon")
88 bool bToggleOffOnOtherWeaponFire = false;
90 UPROPERTY(EditDefaultsOnly, Category = "Toggleable
Weapon")
91 bool bToggleOffOnInteraction = false;
93 UPROPERTY(EditDefaultsOnly, Category = "Toggleable
Weapon")
94 bool bCanToggleOffManually = false;
95 UPROPERTY(EditDefaultsOnly, Category = "Toggleable
Weapon")
96 bool bTickWhenActive = false;
98 UPROPERTY(EditDefaultsOnly, Category = "Toggleable
Weapon", meta = (EditCondition = "bTickWhenActive"))
99 bool bConsumeOnTick = false;
102 UPROPERTY(EditDefaultsOnly, Category = "Toggleable
Weapon")
103 TSubclassOf<UAfflictionInstance> EnabledAffliction;
EWeaponError
Definition: WeaponComponent.h:15
EToggleTrigger
Definition: WeaponInstanceToggleable.h:16
Definition: WeaponInstance.h:220
Definition: WeaponInstanceToggleable.h:26