Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // Shoot Them Up. All Rights Reserved.
- #pragma once
- #include "CoreMinimal.h"
- #include "Components/ActorComponent.h"
- #include "STUWeaponComponent.generated.h"
- class ASTUBaseWeapon;
- USTRUCT(BlueprintType)
- struct FWeaponData
- {
- GENERATED_USTRUCT_BODY()
- UPROPERTY(EditDefaultsOnly, BlueprintReadWrite, Category="Weapons")
- TSubclassOf<ASTUBaseWeapon> WeaponClass;
- UPROPERTY(EditDefaultsOnly, BlueprintReadWrite, Category="Weapons")
- UAnimMontage* ReloadAnimMontage;
- };
- UCLASS( ClassGroup=(Custom), meta=(BlueprintSpawnableComponent) )
- class SHOOTTHEMUP_API USTUWeaponComponent : public UActorComponent
- {
- GENERATED_BODY()
- public:
- USTUWeaponComponent();
- void StartFire();
- void StopFire();
- void NextWeapon();
- void Reload();
- protected:
- UPROPERTY(EditDefaultsOnly, Category="Weapon");
- TArray<FWeaponData> WeaponData;
- UPROPERTY(EditDefaultsOnly, Category="Weapon");
- FName WeaponEquipSocketName = "WeaponSocket";
- UPROPERTY(EditDefaultsOnly, Category="Weapon");
- FName WeaponArmorySocketName = "ArmorySocket";
- UPROPERTY(EditDefaultsOnly, Category="Animation");
- UAnimMontage* EquipAnimMontage;
- virtual void EndPlay(const EEndPlayReason::Type EndPlayReason) override;
- virtual void BeginPlay() override;
- private:
- UPROPERTY()
- ASTUBaseWeapon* CurrentWeapon = nullptr;
- UPROPERTY()
- TArray<ASTUBaseWeapon*> Weapons;
- UPROPERTY()
- UAnimMontage* CurrentReloadAnimMontage = nullptr;
- int32 CurrentWeaponIndex = 0;
- bool EquipAnimInProgress = false;
- void InitAnimations();
- void SpawnWeapons();
- void AttachWeaponToSocket(ASTUBaseWeapon* Weapon, USceneComponent* SceneComponent, const FName& SocketName);
- void EquipWeapon(int32 WeaponIndex);
- void PlayAnimMontage(UAnimMontage* Animation);
- void OnEquipIsFinished(USkeletalMeshComponent* MeshComponent);
- bool CanFire() const;
- bool CanEquip() const;
- };
Advertisement
Add Comment
Please, Sign In to add comment