20 Commits

Author SHA1 Message Date
da3abbfafb Delete Content/Characters/Mannequins/Anims/Unarmed/ABP_Unarmed.uasset 2026-05-24 01:44:15 +00:00
7a2a24b654 Changed projectile to spawn closer and smaller/faster 2026-05-23 20:46:28 -04:00
5dbee0a354 forgotten updates? 2026-05-18 01:52:12 -04:00
16e03e2360 weapon setup 2026-01-20 00:12:14 -05:00
7d48a2d40b Merge pull request 'Merge pull request 'Main Rebase' (#5) from main into MenusAndStuffpt2' (#6) from MenusAndStuffpt2 into main
Reviewed-on: http://git.keeper317.com/Keeper317/open-conflict/pulls/6
2026-01-03 06:26:39 +00:00
0361eb2c00 Merge pull request 'Main Rebase' (#5) from main into MenusAndStuffpt2
Reviewed-on: http://git.keeper317.com/Keeper317/open-conflict/pulls/5
2026-01-03 06:25:23 +00:00
47e434f596 Merge remote-tracking branch 'open-conflict/main' 2026-01-03 01:24:59 -05:00
5f827eeadf Added Event for when character is damaged 2026-01-03 01:24:48 -05:00
970101a74c Fixed HUD Healthbar updates 2026-01-03 01:24:48 -05:00
3f02fd02e5 Added OnRep to health componenet 2026-01-03 01:24:48 -05:00
4662e6701a health var updates correctly on client when hit by projectile 2026-01-03 01:24:48 -05:00
ecd15c271f Working on netowrked projectiles 2026-01-03 01:24:47 -05:00
494d76833f setup hits on character 2026-01-03 01:24:07 -05:00
da46541a07 Added basics for projectile system
still needs hits on character
2026-01-03 01:24:07 -05:00
Kukukakhew
7e393cd7bb DERP! 2026-01-03 01:19:00 -05:00
ef5830dea3 Merge pull request 'https://differentdirection.youtrack.cloud/issue/OC-3/Replication-Projectiles complete' (#3) from projectilebase into main
Reviewed-on: http://git.keeper317.com/Keeper317/open-conflict/pulls/3
2026-01-03 06:14:24 +00:00
Kukukakhew
3bb02d3cf8 Some work on a weapon slot. 2026-01-01 21:11:08 -05:00
398ea98e43 fixeded? 2025-12-09 00:11:42 -05:00
Kukukakhew
0c657b9228 testing stuff - ads 2025-12-08 23:27:25 -05:00
Kukukakhew
39e416295b Added weapon class and data asset, weapons can be spawned to actor 2025-12-06 21:32:09 -05:00
79 changed files with 333 additions and 10 deletions

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,27 @@
;METADATA=(Diff=true, UseCommands=true)
[/Script/GameplayTags.GameplayTagsSettings]
ImportTagsFromConfig=True
WarnOnInvalidTags=True
ClearInvalidTags=False
AllowEditorTagUnloading=True
AllowGameTagUnloading=False
FastReplication=False
bDynamicReplication=False
InvalidTagCharacters="\"\',"
NumBitsForContainerSize=6
NetIndexFirstBitSegment=16
+GameplayTagRedirects=(OldTagName="Weapon.Slot1",NewTagName="Weapon.PrimarySlot")
+GameplayTagList=(Tag="Aim",DevComment="")
+GameplayTagList=(Tag="Aim.CanAim",DevComment="")
+GameplayTagList=(Tag="Aim.IronSights",DevComment="")
+GameplayTagList=(Tag="Aim.IsADS",DevComment="")
+GameplayTagList=(Tag="Aim.Scope",DevComment="")
+GameplayTagList=(Tag="Aim.Sight",DevComment="")
+GameplayTagList=(Tag="Weapon",DevComment="")
+GameplayTagList=(Tag="Weapon.CanFire",DevComment="")
+GameplayTagList=(Tag="Weapon.CanReload",DevComment="")
+GameplayTagList=(Tag="Weapon.CanSwitch",DevComment="")
+GameplayTagList=(Tag="Weapon.PrimarySlot",DevComment="")
+GameplayTagList=(Tag="Weapon.SecondarySlot",DevComment="")
+GameplayTagList=(Tag="Weapon.SpecialSlot",DevComment="")

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.

BIN
Content/Input/Aim_IA.uasset Normal file

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,3 +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_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

@@ -67,17 +67,21 @@ void ADDICharacter::Server_SpawnProjectile_Implementation()
FVector Location = GetActorLocation(); FVector Location = GetActorLocation();
FRotator Rotation = GetActorRotation(); FRotator Rotation = GetActorRotation();
FVector Dir = GetActorForwardVector(); FVector Dir = GetActorForwardVector();
// GetActorEyesViewPoint(Location, Rotation);
Location += Dir * 200.f; 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,23 +4,79 @@
#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()
class OPENCONFLICT_API AWeaponBase : public AActor class OPENCONFLICT_API AWeaponBase : public AActor
{ {
GENERATED_BODY() GENERATED_BODY()
/*UPROPERTY and UFUNCTION declarations*/
private:
/*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;
public: /*Ammo counter for in mags*/
// Sets default values for this actor's properties UPROPERTY(EditDefaultsOnly, BlueprintReadOnly, Category="Weapon Ammo", meta=(AllowPrivateAccess=true))
AWeaponBase(); 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")
};