BANZAIII

WeaponComponent.h

May 15th, 2023
118
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.87 KB | None | 0 0
  1. // Shoot Them Up. All Rights Reserved.
  2.  
  3. #pragma once
  4.  
  5. #include "CoreMinimal.h"
  6. #include "Components/ActorComponent.h"
  7. #include "STUWeaponComponent.generated.h"
  8.  
  9. class ASTUBaseWeapon;
  10.  
  11. USTRUCT(BlueprintType)
  12. struct FWeaponData
  13. {
  14.     GENERATED_USTRUCT_BODY()
  15.     UPROPERTY(EditDefaultsOnly, BlueprintReadWrite, Category="Weapons")
  16.     TSubclassOf<ASTUBaseWeapon> WeaponClass;
  17.  
  18.     UPROPERTY(EditDefaultsOnly, BlueprintReadWrite, Category="Weapons")
  19.     UAnimMontage* ReloadAnimMontage;
  20.    
  21. };
  22.  
  23. UCLASS( ClassGroup=(Custom), meta=(BlueprintSpawnableComponent) )
  24.  
  25. class SHOOTTHEMUP_API USTUWeaponComponent : public UActorComponent
  26. {
  27.     GENERATED_BODY()
  28.  
  29. public:
  30.     USTUWeaponComponent();
  31.  
  32.     void StartFire();
  33.     void StopFire();
  34.     void NextWeapon();
  35.     void Reload();
  36.  
  37. protected:
  38.    
  39.     UPROPERTY(EditDefaultsOnly, Category="Weapon");
  40.     TArray<FWeaponData> WeaponData;
  41.  
  42.     UPROPERTY(EditDefaultsOnly, Category="Weapon");
  43.     FName WeaponEquipSocketName = "WeaponSocket";
  44.  
  45.     UPROPERTY(EditDefaultsOnly, Category="Weapon");
  46.     FName WeaponArmorySocketName = "ArmorySocket";
  47.    
  48.     UPROPERTY(EditDefaultsOnly, Category="Animation");
  49.     UAnimMontage* EquipAnimMontage;
  50.  
  51.     virtual void EndPlay(const EEndPlayReason::Type EndPlayReason) override;
  52.     virtual void BeginPlay() override;
  53.  
  54. private:
  55.  
  56.     UPROPERTY()
  57.     ASTUBaseWeapon* CurrentWeapon = nullptr;
  58.  
  59.     UPROPERTY()
  60.     TArray<ASTUBaseWeapon*> Weapons;
  61.  
  62.     UPROPERTY()
  63.     UAnimMontage* CurrentReloadAnimMontage = nullptr;
  64.  
  65.    
  66.     int32 CurrentWeaponIndex = 0;
  67.     bool EquipAnimInProgress = false;
  68.    
  69.     void InitAnimations();
  70.     void SpawnWeapons();
  71.     void AttachWeaponToSocket(ASTUBaseWeapon* Weapon, USceneComponent* SceneComponent, const FName& SocketName);
  72.     void EquipWeapon(int32 WeaponIndex);
  73.  
  74.     void PlayAnimMontage(UAnimMontage* Animation);
  75.     void OnEquipIsFinished(USkeletalMeshComponent* MeshComponent);
  76.     bool CanFire() const;
  77.     bool CanEquip() const;
  78.    
  79. };
  80.  
Advertisement
Add Comment
Please, Sign In to add comment