177 lines
6.4 KiB
C++
Executable file
177 lines
6.4 KiB
C++
Executable file
#pragma once
|
|
#include "CoreMinimal.h"
|
|
#include "UObject/NoExportTypes.h"
|
|
#include "UObject/NoExportTypes.h"
|
|
#include "DelegateDelegate.h"
|
|
#include "EEscortExtractorState.h"
|
|
#include "EEscortMissionState.h"
|
|
#include "EscortMuleExtractorSlot.h"
|
|
#include "EscortMuleMovementState.h"
|
|
#include "FSDPawn.h"
|
|
#include "FloatDelegateDelegate.h"
|
|
#include "GaragePathSignatureDelegate.h"
|
|
#include "IntDelegateDelegate.h"
|
|
#include "MuleActivatedSignatureDelegate.h"
|
|
#include "SpeedChangedSignatureDelegate.h"
|
|
#include "TriggerAI.h"
|
|
#include "EscortMule.generated.h"
|
|
|
|
class AExtractorItem;
|
|
class APlayerCharacter;
|
|
class UEscortObjective;
|
|
class UFriendlyHealthComponent;
|
|
class UInstantUsable;
|
|
class UOutlineComponent;
|
|
class URestrictedResourceBank;
|
|
class USimpleObjectInfoComponent;
|
|
class USkeletalMeshComponent;
|
|
|
|
UCLASS(Blueprintable)
|
|
class FSD_API AEscortMule : public AFSDPawn, public ITriggerAI {
|
|
GENERATED_BODY()
|
|
public:
|
|
UPROPERTY(BlueprintAssignable, BlueprintReadWrite, EditAnywhere, meta=(AllowPrivateAccess=true))
|
|
FMuleActivatedSignature OnMuleActivated;
|
|
|
|
UPROPERTY(BlueprintAssignable, BlueprintReadWrite, EditAnywhere, meta=(AllowPrivateAccess=true))
|
|
FSpeedChangedSignature OnSpeedChanged;
|
|
|
|
UPROPERTY(BlueprintAssignable, BlueprintReadWrite, EditAnywhere, meta=(AllowPrivateAccess=true))
|
|
FIntDelegate OnFullCanistersChanged;
|
|
|
|
UPROPERTY(BlueprintAssignable, BlueprintReadWrite, EditAnywhere, meta=(AllowPrivateAccess=true))
|
|
FGaragePathSignature OnExitGaragePathSet;
|
|
|
|
UPROPERTY(BlueprintAssignable, BlueprintReadWrite, EditAnywhere, meta=(AllowPrivateAccess=true))
|
|
FFloatDelegate Cheat_SetMuleSpeed;
|
|
|
|
UPROPERTY(BlueprintAssignable, BlueprintReadWrite, EditAnywhere, meta=(AllowPrivateAccess=true))
|
|
FDelegate Cheat_JumpToNextPhase;
|
|
|
|
protected:
|
|
UPROPERTY(BlueprintReadWrite, EditAnywhere, Instanced, meta=(AllowPrivateAccess=true))
|
|
UFriendlyHealthComponent* HealthComponent;
|
|
|
|
UPROPERTY(BlueprintReadWrite, EditAnywhere, Instanced, meta=(AllowPrivateAccess=true))
|
|
USimpleObjectInfoComponent* ObjectInfo;
|
|
|
|
UPROPERTY(BlueprintReadWrite, EditAnywhere, Instanced, meta=(AllowPrivateAccess=true))
|
|
URestrictedResourceBank* ResourceBank;
|
|
|
|
UPROPERTY(BlueprintReadWrite, EditAnywhere, Transient, meta=(AllowPrivateAccess=true))
|
|
FTransform TargetTransform;
|
|
|
|
UPROPERTY(BlueprintReadWrite, EditAnywhere, Transient, meta=(AllowPrivateAccess=true))
|
|
FTransform PreviousTransform;
|
|
|
|
UPROPERTY(BlueprintReadWrite, EditAnywhere, Transient, ReplicatedUsing=OnObjectiveStateChanged, meta=(AllowPrivateAccess=true))
|
|
EEscortMissionState State;
|
|
|
|
UPROPERTY(BlueprintReadWrite, EditAnywhere, Instanced, meta=(AllowPrivateAccess=true))
|
|
UEscortObjective* EscortObjective;
|
|
|
|
UPROPERTY(BlueprintReadWrite, EditAnywhere, Transient, ReplicatedUsing=OnRep_MovementState, meta=(AllowPrivateAccess=true))
|
|
FEscortMuleMovementState MovementState;
|
|
|
|
UPROPERTY(BlueprintReadWrite, EditAnywhere, Transient, ReplicatedUsing=OnRep_SpeedModifier, meta=(AllowPrivateAccess=true))
|
|
float SpeedModifier;
|
|
|
|
UPROPERTY(BlueprintReadWrite, EditAnywhere, Instanced, meta=(AllowPrivateAccess=true))
|
|
USkeletalMeshComponent* Mesh;
|
|
|
|
UPROPERTY(BlueprintReadWrite, EditAnywhere, Instanced, meta=(AllowPrivateAccess=true))
|
|
UOutlineComponent* OutlineComponent;
|
|
|
|
UPROPERTY(BlueprintReadWrite, EditAnywhere, meta=(AllowPrivateAccess=true))
|
|
float HealPerTickNormal;
|
|
|
|
UPROPERTY(BlueprintReadWrite, EditAnywhere, meta=(AllowPrivateAccess=true))
|
|
float HealPerTickUnderAttack;
|
|
|
|
UPROPERTY(BlueprintReadWrite, EditAnywhere, Replicated, Transient, meta=(AllowPrivateAccess=true))
|
|
bool CannisterVisible_Left;
|
|
|
|
UPROPERTY(BlueprintReadWrite, EditAnywhere, Replicated, Transient, meta=(AllowPrivateAccess=true))
|
|
bool CannisterVisible_Right;
|
|
|
|
UPROPERTY(BlueprintReadWrite, EditAnywhere, Replicated, meta=(AllowPrivateAccess=true))
|
|
FVector NextStop;
|
|
|
|
UPROPERTY(BlueprintReadWrite, EditAnywhere, ReplicatedUsing=OnRep_IsCarvingTunnel, meta=(AllowPrivateAccess=true))
|
|
bool IsCarvingTunnel;
|
|
|
|
UPROPERTY(BlueprintReadWrite, EditAnywhere, Transient, meta=(AllowPrivateAccess=true))
|
|
int32 FullCanisters;
|
|
|
|
UPROPERTY(BlueprintReadWrite, EditAnywhere, ReplicatedUsing=OnRep_ExtractorSlots, meta=(AllowPrivateAccess=true))
|
|
TArray<FEscortMuleExtractorSlot> ExtractorSlots;
|
|
|
|
public:
|
|
AEscortMule();
|
|
virtual void GetLifetimeReplicatedProps(TArray<FLifetimeProperty>& OutLifetimeProps) const override;
|
|
|
|
protected:
|
|
UFUNCTION(BlueprintCallable)
|
|
bool TryHeal(APlayerCharacter* User, float Amount);
|
|
|
|
public:
|
|
UFUNCTION(BlueprintAuthorityOnly, BlueprintCallable)
|
|
void SetTargetTransform(FTransform InTransform);
|
|
|
|
UFUNCTION(BlueprintAuthorityOnly, BlueprintCallable)
|
|
void SetSpeedModifier(float inSpeedModifier);
|
|
|
|
UFUNCTION(BlueprintAuthorityOnly, BlueprintCallable)
|
|
void SetFullExtracterAttached(UInstantUsable* Usable);
|
|
|
|
UFUNCTION(BlueprintAuthorityOnly, BlueprintCallable)
|
|
void SetExtractorDetached(UInstantUsable* Usable);
|
|
|
|
UFUNCTION(BlueprintCallable)
|
|
void SetExitGaragePath(const TArray<FVector> Path);
|
|
|
|
UFUNCTION(BlueprintAuthorityOnly, BlueprintCallable)
|
|
void ResetExtractors();
|
|
|
|
UFUNCTION(BlueprintCallable, BlueprintImplementableEvent)
|
|
void PathIsReady();
|
|
|
|
protected:
|
|
UFUNCTION(BlueprintCallable)
|
|
void OnRep_SpeedModifier();
|
|
|
|
UFUNCTION(BlueprintCallable)
|
|
void OnRep_MovementState();
|
|
|
|
UFUNCTION(BlueprintCallable, BlueprintImplementableEvent)
|
|
void OnRep_IsCarvingTunnel();
|
|
|
|
UFUNCTION(BlueprintCallable)
|
|
void OnRep_ExtractorSlots();
|
|
|
|
public:
|
|
UFUNCTION(BlueprintCallable, BlueprintImplementableEvent)
|
|
void OnObjectiveStateChanged(EEscortMissionState oldState);
|
|
|
|
UFUNCTION(BlueprintCallable, BlueprintImplementableEvent)
|
|
void OnExtractorSlotChanged(const FEscortMuleExtractorSlot& Slot, int32 Index);
|
|
|
|
protected:
|
|
UFUNCTION(BlueprintCallable, BlueprintImplementableEvent)
|
|
void OnExtractorDetached(AExtractorItem* Item);
|
|
|
|
public:
|
|
UFUNCTION(BlueprintCallable)
|
|
void ObjectiveStateChange(EEscortMissionState NewState);
|
|
|
|
UFUNCTION(BlueprintCallable, BlueprintPure)
|
|
EEscortExtractorState GetExtractorState(UInstantUsable* Usable) const;
|
|
|
|
protected:
|
|
UFUNCTION(BlueprintCallable)
|
|
void ActivateMule();
|
|
|
|
|
|
// Fix for true pure virtual functions not being implemented
|
|
};
|
|
|