diff --git a/Content/Blueprints/BE_Pistol.uasset b/Content/Blueprints/BE_Pistol.uasset deleted file mode 100644 index fe2f843..0000000 Binary files a/Content/Blueprints/BE_Pistol.uasset and /dev/null differ diff --git a/Content/Blueprints/BE_Rifle.uasset b/Content/Blueprints/BE_Rifle.uasset index bd2d151..736a8e6 100644 Binary files a/Content/Blueprints/BE_Rifle.uasset and b/Content/Blueprints/BE_Rifle.uasset differ diff --git a/Content/Blueprints/EmpPlayerState.uasset b/Content/Blueprints/EmpPlayerState.uasset index cf65861..1c94f05 100644 Binary files a/Content/Blueprints/EmpPlayerState.uasset and b/Content/Blueprints/EmpPlayerState.uasset differ diff --git a/Content/Blueprints/EmpiresCharacter.uasset b/Content/Blueprints/EmpiresCharacter.uasset index e743c79..b539cb4 100644 Binary files a/Content/Blueprints/EmpiresCharacter.uasset and b/Content/Blueprints/EmpiresCharacter.uasset differ diff --git a/Content/Blueprints/Firemodes/2RoundBurstFiremode.uasset b/Content/Blueprints/Firemodes/2RoundBurstFiremode.uasset new file mode 100644 index 0000000..009955b Binary files /dev/null and b/Content/Blueprints/Firemodes/2RoundBurstFiremode.uasset differ diff --git a/Content/Blueprints/Firemodes/3RoundBurstFiremode.uasset b/Content/Blueprints/Firemodes/3RoundBurstFiremode.uasset new file mode 100644 index 0000000..3c6d9b1 Binary files /dev/null and b/Content/Blueprints/Firemodes/3RoundBurstFiremode.uasset differ diff --git a/Content/Blueprints/Weapons/BE_Pistol.uasset b/Content/Blueprints/Weapons/BE_Pistol.uasset new file mode 100644 index 0000000..cd7ef5b Binary files /dev/null and b/Content/Blueprints/Weapons/BE_Pistol.uasset differ diff --git a/Content/Blueprints/Weapons/BE_Rifle.uasset b/Content/Blueprints/Weapons/BE_Rifle.uasset new file mode 100644 index 0000000..b6f60a4 Binary files /dev/null and b/Content/Blueprints/Weapons/BE_Rifle.uasset differ diff --git a/Content/Blueprints/emp_bullet.uasset b/Content/Blueprints/emp_bullet.uasset index 52dbd5c..0ea5202 100644 Binary files a/Content/Blueprints/emp_bullet.uasset and b/Content/Blueprints/emp_bullet.uasset differ diff --git a/Source/Empires2/Private/BaseEmpiresWeapon.cpp b/Source/Empires2/Private/BaseEmpiresWeapon.cpp index dcfdbd9..0eee1a7 100644 --- a/Source/Empires2/Private/BaseEmpiresWeapon.cpp +++ b/Source/Empires2/Private/BaseEmpiresWeapon.cpp @@ -35,7 +35,7 @@ void UBaseEmpiresWeapon::PostInitProperties() } } -UWorld* UBaseEmpiresWeapon::GetWorld() +UWorld* UBaseEmpiresWeapon::GetWorld() const { check(OwningCharacter); return OwningCharacter->GetWorld(); diff --git a/Source/Empires2/Private/BaseFiremode.cpp b/Source/Empires2/Private/BaseFiremode.cpp index ce59a71..5c0c871 100644 --- a/Source/Empires2/Private/BaseFiremode.cpp +++ b/Source/Empires2/Private/BaseFiremode.cpp @@ -11,7 +11,7 @@ UBaseFiremode::UBaseFiremode(const class FPostConstructInitializeProperties& PCI } -UWorld* UBaseFiremode::GetWorld() +UWorld* UBaseFiremode::GetWorld() const { check(Weapon); return Weapon->GetWorld(); diff --git a/Source/Empires2/Private/BurstFiremode.cpp b/Source/Empires2/Private/BurstFiremode.cpp new file mode 100644 index 0000000..535463c --- /dev/null +++ b/Source/Empires2/Private/BurstFiremode.cpp @@ -0,0 +1,46 @@ +// Fill out your copyright notice in the Description page of Project Settings. + +#include "Empires2.h" +#include "BurstFiremode.h" + + +UBurstFiremode::UBurstFiremode(const class FPostConstructInitializeProperties& PCIP) + : Super(PCIP) +{ + +} + +void UBurstFiremode::BeginFire() +{ + Super::BeginFire(); + + BurstsRemaining = ShotsInBurst; + + //Start a timer based off the first shot time + float FirstShotTime = Weapon->GetActiveFiremodeData().FirstShotFireDelay; + if (FirstShotTime != 0) + { + GetWorld()->GetTimerManager().SetTimer(this, &UBurstFiremode::HandleFire, FirstShotTime, false); + } + else + { + HandleFire(); + } +} + +void UBurstFiremode::HandleFire() +{ + BurstsRemaining--; + + Weapon->FireShot(); + + if (IsFiring() && BurstsRemaining > 0) + { + //get the time until the next shot + float FireTime = (1.0f / Weapon->GetActiveFiremodeData().RoundsPerMinute) * 60.0f; + + GetWorld()->GetTimerManager().SetTimer(this, &UBurstFiremode::HandleFire, FireTime, false); + } + +} + diff --git a/Source/Empires2/Public/BaseEmpiresWeapon.h b/Source/Empires2/Public/BaseEmpiresWeapon.h index 2cd54fd..2fe0172 100644 --- a/Source/Empires2/Public/BaseEmpiresWeapon.h +++ b/Source/Empires2/Public/BaseEmpiresWeapon.h @@ -98,7 +98,7 @@ class EMPIRES2_API UBaseEmpiresWeapon : public UObject virtual void PostInitProperties() override; - virtual UWorld* GetWorld(); + virtual UWorld* GetWorld() const override; //Display Properties public: diff --git a/Source/Empires2/Public/BaseFiremode.h b/Source/Empires2/Public/BaseFiremode.h index a6c772d..2dade77 100644 --- a/Source/Empires2/Public/BaseFiremode.h +++ b/Source/Empires2/Public/BaseFiremode.h @@ -18,7 +18,7 @@ class EMPIRES2_API UBaseFiremode : public UObject public: virtual void SetWeapon(class UBaseEmpiresWeapon* Weapon); - virtual UWorld* GetWorld(); + virtual UWorld* GetWorld() const override; protected: UBaseEmpiresWeapon* Weapon; @@ -27,12 +27,20 @@ class EMPIRES2_API UBaseFiremode : public UObject //FIRE CONTROL public: + /* Start the firing sequence. */ virtual void BeginFire(); + /* End the firing sequence */ virtual void EndFire(); + //Actually Fire the bullet virtual void HandleFire(); + virtual bool CanFire() + { + return true; + } + //TODO: Implement Blueprint Hooks so designers can create their own firemodes /* diff --git a/Source/Empires2/Public/BurstFiremode.h b/Source/Empires2/Public/BurstFiremode.h new file mode 100644 index 0000000..fd10d05 --- /dev/null +++ b/Source/Empires2/Public/BurstFiremode.h @@ -0,0 +1,28 @@ +// Fill out your copyright notice in the Description page of Project Settings. + +#pragma once + +#include "BaseFiremode.h" +#include "BurstFiremode.generated.h" + +/** + * + */ +UCLASS(Blueprintable) +class EMPIRES2_API UBurstFiremode : public UBaseFiremode +{ + GENERATED_UCLASS_BODY() + +public: + virtual void BeginFire() override; + + virtual void HandleFire() override; + + + UPROPERTY(EditDefaultsOnly, BlueprintReadWrite, Category = Firemode) + int32 ShotsInBurst; +protected: + int32 BurstsRemaining; + + +};