5 Commits

94 changed files with 304 additions and 13 deletions

View File

@@ -113,6 +113,3 @@ ConnectionType=USBOnly
bUseManualIPAddress=False bUseManualIPAddress=False
ManualIPAddress= ManualIPAddress=
[/Script/Engine.AudioSettings]
DefaultBaseSoundMix=/Game/Sounds/MainSoundMix.MainSoundMix

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@@ -1,5 +1,4 @@
<wpf:ResourceDictionary xml:space="preserve" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:s="clr-namespace:System;assembly=mscorlib" xmlns:ss="urn:shemas-jetbrains-com:settings-storage-xaml" xmlns:wpf="http://schemas.microsoft.com/winfx/2006/xaml/presentation"> <wpf:ResourceDictionary xml:space="preserve" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:s="clr-namespace:System;assembly=mscorlib" xmlns:ss="urn:shemas-jetbrains-com:settings-storage-xaml" xmlns:wpf="http://schemas.microsoft.com/winfx/2006/xaml/presentation">
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=83F7D316_002D1724_002D38F0_002D85D9_002D704D5DF137A0_002Fdl_003ASource_003A_002E_002E_003F_002E_002E_003F_002E_002E_003F_002E_002E_003F_002E_002E_003F_002E_002E_003F_002E_002E_003FProgram_0020Files_003FEpic_0020Games_003FUE_005F5_002E7_003FEngine_003FSource_002Fd_003ARuntime_002Fd_003AEngine_002Fd_003AClasses_002Fd_003AGameFramework_002Ff_003AActor_002Eh/@EntryIndexedValue">ForceIncluded</s:String> <s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=83F7D316_002D1724_002D38F0_002D85D9_002D704D5DF137A0_002Fdl_003ASource_003A_002E_002E_003F_002E_002E_003F_002E_002E_003F_002E_002E_003F_002E_002E_003F_002E_002E_003F_002E_002E_003FProgram_0020Files_003FEpic_0020Games_003FUE_005F5_002E7_003FEngine_003FSource_002Fd_003ARuntime_002Fd_003AEngine_002Fd_003AClasses_002Fd_003AGameFramework_002Ff_003AActor_002Eh/@EntryIndexedValue">ForceIncluded</s:String>
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=83F7D316_002D1724_002D38F0_002D85D9_002D704D5DF137A0_002Fdl_003ASource_003A_002E_002E_003F_002E_002E_003F_002E_002E_003F_002E_002E_003F_002E_002E_003F_002E_002E_003F_002E_002E_003FProgram_0020Files_003FEpic_0020Games_003FUE_005F5_002E7_003FEngine_003FSource_002Fd_003ARuntime_002Fd_003AEngine_002Fd_003AClasses_002Fd_003AGameFramework_002Ff_003ACharacterMovementComponent_002Eh/@EntryIndexedValue">ForceIncluded</s:String>
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=83F7D316_002D1724_002D38F0_002D85D9_002D704D5DF137A0_002Fdl_003ASource_003A_002E_002E_003F_002E_002E_003F_002E_002E_003F_002E_002E_003F_002E_002E_003F_002E_002E_003F_002E_002E_003FProgram_0020Files_003FEpic_0020Games_003FUE_005F5_002E7_003FEngine_003FSource_002Fd_003ARuntime_002Fd_003AEngine_002Fd_003AClasses_002Fd_003APhysicsEngine_002Ff_003APhysicsSpringComponent_002Eh/@EntryIndexedValue">ForceIncluded</s:String> <s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=83F7D316_002D1724_002D38F0_002D85D9_002D704D5DF137A0_002Fdl_003ASource_003A_002E_002E_003F_002E_002E_003F_002E_002E_003F_002E_002E_003F_002E_002E_003F_002E_002E_003F_002E_002E_003FProgram_0020Files_003FEpic_0020Games_003FUE_005F5_002E7_003FEngine_003FSource_002Fd_003ARuntime_002Fd_003AEngine_002Fd_003AClasses_002Fd_003APhysicsEngine_002Ff_003APhysicsSpringComponent_002Eh/@EntryIndexedValue">ForceIncluded</s:String>
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=83F7D316_002D1724_002D38F0_002D85D9_002D704D5DF137A0_002Fdl_003ASource_003A_002E_002E_003F_002E_002E_003F_002E_002E_003F_002E_002E_003F_002E_002E_003F_002E_002E_003F_002E_002E_003FProgram_0020Files_003FEpic_0020Games_003FUE_005F5_002E7_003FEngine_003FSource_002Fd_003ARuntime_002Fd_003AUMG_002Fd_003APublic_002Fd_003AComponents_002Ff_003AWidgetSwitcher_002Eh/@EntryIndexedValue">ForceIncluded</s:String></wpf:ResourceDictionary> <s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=83F7D316_002D1724_002D38F0_002D85D9_002D704D5DF137A0_002Fdl_003ASource_003A_002E_002E_003F_002E_002E_003F_002E_002E_003F_002E_002E_003F_002E_002E_003F_002E_002E_003F_002E_002E_003FProgram_0020Files_003FEpic_0020Games_003FUE_005F5_002E7_003FEngine_003FSource_002Fd_003ARuntime_002Fd_003AUMG_002Fd_003APublic_002Fd_003AComponents_002Ff_003AWidgetSwitcher_002Eh/@EntryIndexedValue">ForceIncluded</s:String></wpf:ResourceDictionary>

View File

@@ -68,16 +68,20 @@ void ADDICharacter::Server_SpawnProjectile_Implementation()
FRotator Rotation = GetActorRotation(); FRotator Rotation = GetActorRotation();
FVector Dir = GetActorForwardVector(); FVector Dir = GetActorForwardVector();
Location += Dir * 200.f; // GetActorEyesViewPoint(Location, Rotation);
Location += Dir * 55.f;
if (!ProjectileClass) if (!ProjectileClass)
{ {
GEngine->AddOnScreenDebugMessage(1, 10.f, FColor::Emerald, "No Projectile Set"); GEngine->AddOnScreenDebugMessage(1, 10.f, FColor::Emerald, "No Projectile Set");
return; return;
} }
GetWorld()->SpawnActor<AActor>(ProjectileClass, Location, Rotation);
FActorSpawnParameters SpawnInfo;
SpawnInfo.Owner = this;
SpawnInfo.Instigator = GetInstigator();
GetWorld()->SpawnActor<AActor>(ProjectileClass, Location, Rotation, SpawnInfo);
} }
void ADDICharacter::Client_CharacterHit_Implementation() void ADDICharacter::Client_CharacterHit_Implementation()

View File

@@ -0,0 +1,63 @@
// Fill out your copyright notice in the Description page of Project Settings.
#include "MagazineActor.h"
#include "OpenConflict/PlayerCharacter/Components/DDIHealth.h"
// Sets default values
AMagazineActor::AMagazineActor()
{
// Set this actor to call Tick() every frame. You can turn this off to improve performance if you don't need it.
PrimaryActorTick.bCanEverTick = true;
bReplicates = true;
}
// Called when the game starts or when spawned
void AMagazineActor::BeginPlay()
{
Super::BeginPlay();
}
// Called every frame
void AMagazineActor::Tick(float DeltaTime)
{
Super::Tick(DeltaTime);
if (!ActiveMag && CurrentCount < MAX_COUNT )
{
GetWorld()->GetTimerManager().SetTimer(RepackTimer, this, &AMagazineActor::PackMag, RepackDelay, true, RepackDelay);
}
}
void AMagazineActor::PackMag()
{
if (hasReserveAmmo)
{
CurrentCount += 1;
AMMO_REPACK.Broadcast();
}
if (CurrentCount >= MAX_COUNT)
{
CurrentCount = MAX_COUNT;
GetWorld()->GetTimerManager().ClearTimer(RepackTimer);
}
}
void AMagazineActor::StripRound()
{
CurrentCount -= 1;
if (CurrentCount <= 0)
{
CurrentCount = 0;
}
}
void AMagazineActor::SetAmmoValues(int MaxCount)
{
MAX_COUNT = MaxCount;
CurrentCount = MAX_COUNT;
}

View File

@@ -0,0 +1,76 @@
// Fill out your copyright notice in the Description page of Project Settings.
#pragma once
#include "CoreMinimal.h"
#include "GameFramework/Actor.h"
#include "MagazineActor.generated.h"
DECLARE_DYNAMIC_MULTICAST_DELEGATE(FAMMO_REPACK);
UCLASS()
class OPENCONFLICT_API AMagazineActor : public AActor
{
GENERATED_BODY()
/*UPROPERTY and UFUNCTION declarations*/
private:
/*Properties*/
UPROPERTY(BlueprintReadOnly, meta=(AllowPrivateAccess=true))
int MAX_COUNT;
UPROPERTY(BlueprintReadOnly, meta=(AllowPrivateAccess=true))
int CurrentCount;
UPROPERTY(BlueprintReadOnly, meta=(AllowPrivateAccess=true))
bool ActiveMag = false;
UPROPERTY(BlueprintReadOnly, meta=(AllowPrivateAccess=true))
float RepackDelay = 0.5f;
/*Functions*/
protected:
/*Properties*/
/*Functions*/
public:
/*Properties*/
UPROPERTY(BlueprintAssignable)
FAMMO_REPACK AMMO_REPACK;
/*Functions*/
UFUNCTION(BlueprintImplementableEvent)
void EmptyMagEvent();
/*C++ only declarations*/
private:
/*Properties*/
/*Functions*/
void PackMag();
protected:
/*Properties*/
FTimerHandle RepackTimer;
/*Functions*/
// Called when the game starts or when spawned
virtual void BeginPlay() override;
public:
/*Properties*/
bool hasReserveAmmo = true;
/*Functions*/
// Sets default values for this actor's properties
AMagazineActor();
AMagazineActor(int MaxCount);
// Called every frame
virtual void Tick(float DeltaTime) override;
void StripRound();
void SetAmmoValues(int MaxCount);
};

View File

@@ -0,0 +1,34 @@
// Fill out your copyright notice in the Description page of Project Settings.
#include "MagazineComponenet.h"
// Sets default values for this component's properties
UMagazineComponenet::UMagazineComponenet()
{
// Set this component to be initialized when the game starts, and to be ticked every frame. You can turn these features
// off to improve performance if you don't need them.
PrimaryComponentTick.bCanEverTick = true;
// ...
}
// Called when the game starts
void UMagazineComponenet::BeginPlay()
{
Super::BeginPlay();
// ...
}
// Called every frame
void UMagazineComponenet::TickComponent(float DeltaTime, ELevelTick TickType, FActorComponentTickFunction* ThisTickFunction)
{
Super::TickComponent(DeltaTime, TickType, ThisTickFunction);
// ...
}

View File

@@ -0,0 +1,28 @@
// Fill out your copyright notice in the Description page of Project Settings.
#pragma once
#include "CoreMinimal.h"
#include "Components/ActorComponent.h"
#include "MagazineComponenet.generated.h"
UCLASS( ClassGroup=(Custom), meta=(BlueprintSpawnableComponent) )
class OPENCONFLICT_API UMagazineComponenet : public UActorComponent
{
GENERATED_BODY()
public:
// Sets default values for this component's properties
UMagazineComponenet();
protected:
// Called when the game starts
virtual void BeginPlay() override;
public:
// Called every frame
virtual void TickComponent(float DeltaTime, ELevelTick TickType, FActorComponentTickFunction* ThisTickFunction) override;
};

View File

@@ -8,6 +8,8 @@ AWeaponBase::AWeaponBase()
{ {
// Set this actor to call Tick() every frame. You can turn this off to improve performance if you don't need it. // Set this actor to call Tick() every frame. You can turn this off to improve performance if you don't need it.
PrimaryActorTick.bCanEverTick = true; PrimaryActorTick.bCanEverTick = true;
bReplicates = true;
WeaponMesh = CreateDefaultSubobject<USkeletalMeshComponent>(TEXT("Weapon Component"));
} }
@@ -15,6 +17,13 @@ AWeaponBase::AWeaponBase()
void AWeaponBase::BeginPlay() void AWeaponBase::BeginPlay()
{ {
Super::BeginPlay(); Super::BeginPlay();
// AMMO_REPACK.AddDynamic(this, &AWeaponBase::MagRepacking);
for (int i = 0; i < RESERVE_MAG_COUNT; i++)
{
// AMagazineActor* mag = new AMagazineActor();
// mag->SetAmmoValues(MAX_AMMO_COUNT);
// ActiveMags.Add(mag);
}
} }
@@ -25,3 +34,15 @@ void AWeaponBase::Tick(float DeltaTime)
} }
void AWeaponBase::MagRepacking()
{
RESERVE_AMMO_POOL_DEFAULT -= 1;
if (RESERVE_AMMO_POOL_DEFAULT <= 0)
{
RESERVE_AMMO_POOL_DEFAULT = 0;
// for (AMagazineActor* mag : ActiveMags)
// {
// mag->hasReserveAmmo = false;
// }
}
}

View File

@@ -4,6 +4,8 @@
#include "CoreMinimal.h" #include "CoreMinimal.h"
#include "GameFramework/Actor.h" #include "GameFramework/Actor.h"
#include "WeaponEnums.h"
// #include "UMagazine.h"
#include "WeaponBase.generated.h" #include "WeaponBase.generated.h"
UCLASS() UCLASS()
@@ -11,16 +13,70 @@ class OPENCONFLICT_API AWeaponBase : public AActor
{ {
GENERATED_BODY() GENERATED_BODY()
public: /*UPROPERTY and UFUNCTION declarations*/
// Sets default values for this actor's properties private:
AWeaponBase(); /*Properties*/
UPROPERTY(EditDefaultsOnly, BlueprintReadOnly, Category="Weapon HUD", meta=(AllowPrivateAccess=true))
UTexture2D* Texture;
UPROPERTY(EditDefaultsOnly, BlueprintReadOnly, Category="Weapon Anims", meta=(AllowPrivateAccess=true))
WeaponNames WeaponNameEnum;
UPROPERTY(EditDefaultsOnly, BlueprintReadOnly, Category="Weapon Anims", meta=(AllowPrivateAccess=true))
FName AttachSocketName;
/*Ammo counter for in mags*/
UPROPERTY(EditDefaultsOnly, BlueprintReadOnly, Category="Weapon Ammo", meta=(AllowPrivateAccess=true))
int MAX_AMMO_COUNT = 30; //Tracks max ammo in one mag, not to be edited during runtime ever
UPROPERTY(BlueprintReadOnly, Category="Weapon Ammo", meta=(AllowPrivateAccess=true))
int MagIndex; //Tracks index for ActiveMags Array
// UPROPERTY(BlueprintReadOnly, Category="Weapon Ammo", meta=(AllowPrivateAccess=true))
// TArray<UMagazine*> ActiveMags; //Tracks all mags for weapon
UPROPERTY(EditDefaultsOnly, BlueprintReadOnly, Category="Weapon Ammo", meta=(AllowPrivateAccess=true))
int RESERVE_MAG_COUNT = 2; //Tracks how many mags are kept in reserve. DO NOT INCLUDE MAG IN WEAPON
UPROPERTY(EditDefaultsOnly, BlueprintReadOnly, Category="Weapon Ammo", meta=(AllowPrivateAccess=true))
int RESERVE_AMMO_POOL_DEFAULT = 120;
UPROPERTY(EditDefaultsOnly, BlueprintReadOnly, meta=(AllowPrivateAccess=true))
USkeletalMeshComponent* WeaponMesh;
/*Functions*/
protected: protected:
/*Properties*/
/*Functions*/
public:
/*Properties*/
// UPROPERTY(BlueprintAssignable)
// FAMMO_REPACK AMMO_REPACK;
/*Functions*/
UFUNCTION()
void MagRepacking();
/*C++ only declarations*/
private:
/*Properties*/
/*Functions*/
protected:
/*Properties*/
/*Functions*/
// Called when the game starts or when spawned // Called when the game starts or when spawned
virtual void BeginPlay() override; virtual void BeginPlay() override;
public: public:
/*Properties*/
/*Functions*/
// Called every frame // Called every frame
virtual void Tick(float DeltaTime) override; virtual void Tick(float DeltaTime) override;
// Sets default values for this actor's properties
AWeaponBase();
}; };

View File

@@ -0,0 +1,13 @@
#pragma once
#include "CoreMinimal.h"
#include "WeaponEnums.generated.h"
UENUM(BlueprintType)
enum class WeaponNames : uint8
{
Pistol = 0 UMETA(DisplayName = "Pistol"),
Rifle = 1 UMETA(DisplayName = "Rifle"),
Shotgun = 2 UMETA(DisplayName = "Shotgun"),
Sniper = 3 UMETA(DisplayName = "Sniper")
};