LEAP Documentation 40220
Documentation for the LEAP project
WeaponInstanceActor.h
Go to the documentation of this file.
1// Copyright Blue Isle Studios Inc 2018. All Rights Reserved.
2
3#pragma once
4
5#include "CoreMinimal.h"
6#include "GameFramework/Actor.h"
7#include "OwnedInterface.h"
8#include "TeamInterface.h"
9#include "WeaponInstanceActor.generated.h"
10
11class APlayerState;
12class UWeaponInstance;
13
14UCLASS()
15class PROJECTX_API AWeaponInstanceActor : public AActor, public IOwnedInterface, public ITeamInterface
16{
17 GENERATED_UCLASS_BODY()
18
19//~ Begin AActor Interface
20protected:
21 virtual void BeginPlay() override;
22public:
23 virtual void EndPlay(const EEndPlayReason::Type EndPlayReason) override;
24//~ End AActor Interface
25
26//~ Begin IPlayerOwnedInterface Interface.
27public:
28 virtual APlayerState* GetOwnedPlayerState() const override;
29 virtual void OnOwnerLeave() override;
30 virtual void SetWeaponInstanceClass(TSubclassOf<UWeaponInstance> WeaponInstanceClass) { OwningWeaponClass = WeaponInstanceClass; }
31//~ End IPlayerOwnedInterface Interface.
32
33public:
34 UFUNCTION(BlueprintCallable, Category = WeaponInstanceActor)
35 APlayerState* GetPlayerOwner() const { return PlayerOwner; }
36
37 virtual int32 GetTeam() const override;
38
39 UFUNCTION(BlueprintCallable, Category = WeaponInstanceActor)
40 virtual AProjectXCharacter* GetOwningPawn(AProjectXPlayerController* const OverrideController = nullptr) const;
41
42 UFUNCTION(BlueprintCallable, Category = WeaponInstanceActor)
43 virtual UWeaponComponent* GetOwningWeaponComponent() const;
44
45 UFUNCTION(BlueprintCallable, Category = WeaponInstanceActor)
46 bool IsLocallyOwned() const { return GetPlayerOwner() ? (Cast<AController>(GetPlayerOwner()->GetOwner()) ? Cast<AController>(GetPlayerOwner()->GetOwner())->IsLocalPlayerController() : false) : false; }
47
48 UFUNCTION(BlueprintCallable, Category = WeaponInstanceActor)
49 FORCEINLINE TSubclassOf<UWeaponInstance> GetOwningWeaponClass() const { return OwningWeaponClass; }
50
51 const UWeaponInstance* GetOwningWeaponCDO() const;
52
53 template <class T>
54 const T* GetOwningWeaponCDO() const { return Cast<T>(GetOwningWeaponCDO()); }
55
56protected:
57 UPROPERTY()
58 APlayerState* PlayerOwner = NULL;
59
60 UPROPERTY()
61 TSubclassOf<UWeaponInstance> OwningWeaponClass = NULL;
62};
Definition: ProjectXCharacter.h:128
Definition: ProjectXPlayerController.h:83
Definition: WeaponInstanceActor.h:16
const T * GetOwningWeaponCDO() const
Definition: WeaponInstanceActor.h:54
virtual void SetWeaponInstanceClass(TSubclassOf< UWeaponInstance > WeaponInstanceClass)
Definition: WeaponInstanceActor.h:30
Definition: OwnedInterface.h:20
Definition: TeamInterface.h:26
Definition: WeaponInstance.h:220
friend class UWeaponComponent
Definition: WeaponInstance.h:1197
virtual bool IsLocallyOwned() const
Definition: WeaponInstance.cpp:91
virtual void BeginPlay() override
Definition: WeaponInstance.cpp:192
virtual void EndPlay(const EEndPlayReason::Type EndPlayReason) override
Definition: WeaponInstance.cpp:207