Add base `Weapon` class
This commit is contained in:
parent
35b6736e0a
commit
14bb9eef74
|
@ -0,0 +1,67 @@
|
|||
// Fill out your copyright notice in the Description page of Project Settings.
|
||||
|
||||
|
||||
#include "Weapon.h"
|
||||
|
||||
// Sets default values
|
||||
AWeapon::AWeapon()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
// Called when the game starts or when spawned
|
||||
void AWeapon::BeginPlay()
|
||||
{
|
||||
Super::BeginPlay();
|
||||
|
||||
}
|
||||
|
||||
USkeletalMeshComponent* AWeapon::GetSkeletalMesh()
|
||||
{
|
||||
return WeaponSkeletalMesh;
|
||||
}
|
||||
|
||||
void AWeapon::SetSkeletalMesh(USkeletalMeshComponent* USkeletalMeshComponent)
|
||||
{
|
||||
WeaponSkeletalMesh = USkeletalMeshComponent;
|
||||
}
|
||||
|
||||
TEnumAsByte<WeaponState>* AWeapon::GetCurrentWeaponStatus()
|
||||
{
|
||||
return &CurrentWeaponStatus;
|
||||
}
|
||||
|
||||
void AWeapon::SetCurrentWeaponStatus(TEnumAsByte<WeaponState> NewWeaponStatus)
|
||||
{
|
||||
CurrentWeaponStatus = NewWeaponStatus;
|
||||
}
|
||||
|
||||
FWeaponProperties* AWeapon::GetWeaponProperties()
|
||||
{
|
||||
return &WeaponProperties;
|
||||
}
|
||||
|
||||
void AWeapon::SetWeaponProperties(FWeaponProperties FWeaponProperties)
|
||||
{
|
||||
WeaponProperties = FWeaponProperties;
|
||||
}
|
||||
|
||||
ANakatomiCharacter* AWeapon::GetParentPawn()
|
||||
{
|
||||
return ParentPawn;
|
||||
}
|
||||
|
||||
void AWeapon::SetParentPawn(ANakatomiCharacter* ANakatomiCharacter)
|
||||
{
|
||||
ParentPawn = ANakatomiCharacter;
|
||||
}
|
||||
|
||||
USoundBase* AWeapon::GetFireSound()
|
||||
{
|
||||
return FireSound;
|
||||
}
|
||||
|
||||
void AWeapon::SetFireSound(USoundBase* USoundBase)
|
||||
{
|
||||
FireSound = USoundBase;
|
||||
}
|
|
@ -0,0 +1,90 @@
|
|||
// Fill out your copyright notice in the Description page of Project Settings.
|
||||
|
||||
#pragma once
|
||||
|
||||
#include "CoreMinimal.h"
|
||||
#include "GameFramework/Actor.h"
|
||||
#include "Weapon.generated.h"
|
||||
|
||||
class ANakatomiCharacter;
|
||||
|
||||
UENUM()
|
||||
enum WeaponState
|
||||
{
|
||||
Idle,
|
||||
Firing,
|
||||
Cooldown,
|
||||
Swapping
|
||||
};
|
||||
|
||||
USTRUCT()
|
||||
struct FWeaponProperties
|
||||
{
|
||||
GENERATED_USTRUCT_BODY()
|
||||
|
||||
float WeaponCooldown = 1.0f;
|
||||
|
||||
int WeaponDamage = 10;
|
||||
|
||||
float WeaponChangeTime = 2.0f;
|
||||
|
||||
int ProjectilesPerShot = 1;
|
||||
|
||||
float ProjectileRange = 10000.0f;
|
||||
|
||||
float WeaponSpread = 2.5f;
|
||||
|
||||
bool IsAutomatic = true;
|
||||
};
|
||||
|
||||
UCLASS(Abstract, Blueprintable)
|
||||
class NAKATOMI_API AWeapon : public AActor
|
||||
{
|
||||
GENERATED_BODY()
|
||||
|
||||
protected:
|
||||
|
||||
UPROPERTY(EditDefaultsOnly)
|
||||
USkeletalMeshComponent* WeaponSkeletalMesh;
|
||||
|
||||
UPROPERTY(EditDefaultsOnly)
|
||||
TEnumAsByte<WeaponState> CurrentWeaponStatus;
|
||||
|
||||
UPROPERTY(EditDefaultsOnly)
|
||||
FWeaponProperties WeaponProperties;
|
||||
|
||||
UPROPERTY(VisibleAnywhere)
|
||||
ANakatomiCharacter* ParentPawn;
|
||||
|
||||
UPROPERTY(EditDefaultsOnly)
|
||||
USoundBase* FireSound;
|
||||
|
||||
public:
|
||||
// Sets default values for this actor's properties
|
||||
AWeapon();
|
||||
|
||||
protected:
|
||||
// Called when the game starts or when spawned
|
||||
virtual void BeginPlay() override;
|
||||
|
||||
public:
|
||||
USkeletalMeshComponent* GetSkeletalMesh();
|
||||
|
||||
void SetSkeletalMesh(USkeletalMeshComponent* USkeletalMeshComponent);
|
||||
|
||||
TEnumAsByte<WeaponState>* GetCurrentWeaponStatus();
|
||||
|
||||
void SetCurrentWeaponStatus(TEnumAsByte<WeaponState> NewWeaponStatus);
|
||||
|
||||
FWeaponProperties* GetWeaponProperties();
|
||||
|
||||
void SetWeaponProperties(FWeaponProperties FWeaponProperties);
|
||||
|
||||
ANakatomiCharacter* GetParentPawn();
|
||||
|
||||
void SetParentPawn(ANakatomiCharacter* ANakatomiCharacter);
|
||||
|
||||
USoundBase* GetFireSound();
|
||||
|
||||
void SetFireSound(USoundBase* USoundBase);
|
||||
};
|
Loading…
Reference in New Issue