Merge branch 'develop'
This commit is contained in:
BIN
Content/Blueprints/BP_DefaultPlayerCharacter.uasset
(Stored with Git LFS)
Normal file
BIN
Content/Blueprints/BP_DefaultPlayerCharacter.uasset
(Stored with Git LFS)
Normal file
Binary file not shown.
BIN
Content/Blueprints/DefaultClass.uasset
(Stored with Git LFS)
Normal file
BIN
Content/Blueprints/DefaultClass.uasset
(Stored with Git LFS)
Normal file
Binary file not shown.
BIN
Content/Blueprints/Notify/ContinueActing.uasset
(Stored with Git LFS)
Normal file
BIN
Content/Blueprints/Notify/ContinueActing.uasset
(Stored with Git LFS)
Normal file
Binary file not shown.
BIN
Content/Blueprints/Notify/ContinueAttack.uasset
(Stored with Git LFS)
Normal file
BIN
Content/Blueprints/Notify/ContinueAttack.uasset
(Stored with Git LFS)
Normal file
Binary file not shown.
BIN
Content/Blueprints/Notify/ContinueMoving.uasset
(Stored with Git LFS)
Normal file
BIN
Content/Blueprints/Notify/ContinueMoving.uasset
(Stored with Git LFS)
Normal file
Binary file not shown.
BIN
Content/Blueprints/Notify/ContinueSkilluse.uasset
(Stored with Git LFS)
Normal file
BIN
Content/Blueprints/Notify/ContinueSkilluse.uasset
(Stored with Git LFS)
Normal file
Binary file not shown.
BIN
Content/Blueprints/Notify/Rotating.uasset
(Stored with Git LFS)
Normal file
BIN
Content/Blueprints/Notify/Rotating.uasset
(Stored with Git LFS)
Normal file
Binary file not shown.
BIN
Content/Blueprints/Notify/StopActing.uasset
(Stored with Git LFS)
Normal file
BIN
Content/Blueprints/Notify/StopActing.uasset
(Stored with Git LFS)
Normal file
Binary file not shown.
BIN
Content/Blueprints/Notify/StopAttack.uasset
(Stored with Git LFS)
Normal file
BIN
Content/Blueprints/Notify/StopAttack.uasset
(Stored with Git LFS)
Normal file
Binary file not shown.
BIN
Content/Blueprints/Notify/StopMoving.uasset
(Stored with Git LFS)
Normal file
BIN
Content/Blueprints/Notify/StopMoving.uasset
(Stored with Git LFS)
Normal file
Binary file not shown.
BIN
Content/Blueprints/Notify/StopSkilluse.uasset
(Stored with Git LFS)
Normal file
BIN
Content/Blueprints/Notify/StopSkilluse.uasset
(Stored with Git LFS)
Normal file
Binary file not shown.
BIN
Content/Blueprints/Notify/WallEnd.uasset
(Stored with Git LFS)
Normal file
BIN
Content/Blueprints/Notify/WallEnd.uasset
(Stored with Git LFS)
Normal file
Binary file not shown.
BIN
Content/Blueprints/UI/NameBar_UI/Hp_UI.uasset
(Stored with Git LFS)
Normal file
BIN
Content/Blueprints/UI/NameBar_UI/Hp_UI.uasset
(Stored with Git LFS)
Normal file
Binary file not shown.
BIN
Content/Blueprints/UI/NameBar_UI/NameBar_UI.uasset
(Stored with Git LFS)
Normal file
BIN
Content/Blueprints/UI/NameBar_UI/NameBar_UI.uasset
(Stored with Git LFS)
Normal file
Binary file not shown.
BIN
Content/Character/Allium/BP_Allium.uasset
(Stored with Git LFS)
BIN
Content/Character/Allium/BP_Allium.uasset
(Stored with Git LFS)
Binary file not shown.
BIN
Content/Character/Allium/Material/Allium.uasset
(Stored with Git LFS)
BIN
Content/Character/Allium/Material/Allium.uasset
(Stored with Git LFS)
Binary file not shown.
BIN
Content/Character/Allium/Texture/Allium_BaseColor.uasset
(Stored with Git LFS)
BIN
Content/Character/Allium/Texture/Allium_BaseColor.uasset
(Stored with Git LFS)
Binary file not shown.
BIN
Content/Character/Allium/Texture/Allium_Emissive.uasset
(Stored with Git LFS)
BIN
Content/Character/Allium/Texture/Allium_Emissive.uasset
(Stored with Git LFS)
Binary file not shown.
BIN
Content/Character/Allium/Texture/Allium_Normal.uasset
(Stored with Git LFS)
BIN
Content/Character/Allium/Texture/Allium_Normal.uasset
(Stored with Git LFS)
Binary file not shown.
BIN
Content/Character/Allium/Texture/Allium_OcclusionRoughnessMetallic.uasset
(Stored with Git LFS)
BIN
Content/Character/Allium/Texture/Allium_OcclusionRoughnessMetallic.uasset
(Stored with Git LFS)
Binary file not shown.
BIN
Content/Character/Allium/Texture/알리움_리토폴로지조립_Allium_BaseColor.uasset
(Stored with Git LFS)
Normal file
BIN
Content/Character/Allium/Texture/알리움_리토폴로지조립_Allium_BaseColor.uasset
(Stored with Git LFS)
Normal file
Binary file not shown.
BIN
Content/Character/Allium/Texture/알리움_리토폴로지조립_Allium_Emissive.uasset
(Stored with Git LFS)
Normal file
BIN
Content/Character/Allium/Texture/알리움_리토폴로지조립_Allium_Emissive.uasset
(Stored with Git LFS)
Normal file
Binary file not shown.
BIN
Content/Character/Allium/Texture/알리움_리토폴로지조립_Allium_Normal.uasset
(Stored with Git LFS)
Normal file
BIN
Content/Character/Allium/Texture/알리움_리토폴로지조립_Allium_Normal.uasset
(Stored with Git LFS)
Normal file
Binary file not shown.
BIN
Content/Character/Allium/Texture/알리움_리토폴로지조립_Allium_OcclusionRoughnessMetallic.uasset
(Stored with Git LFS)
Normal file
BIN
Content/Character/Allium/Texture/알리움_리토폴로지조립_Allium_OcclusionRoughnessMetallic.uasset
(Stored with Git LFS)
Normal file
Binary file not shown.
BIN
Content/Character/BP_Folder/DefaultClass.uasset
(Stored with Git LFS)
BIN
Content/Character/BP_Folder/DefaultClass.uasset
(Stored with Git LFS)
Binary file not shown.
BIN
Content/Character/Lb/Animation/ABP_Lb.uasset
(Stored with Git LFS)
BIN
Content/Character/Lb/Animation/ABP_Lb.uasset
(Stored with Git LFS)
Binary file not shown.
BIN
Content/Character/Lb/Animation/Q_Anim.uasset
(Stored with Git LFS)
BIN
Content/Character/Lb/Animation/Q_Anim.uasset
(Stored with Git LFS)
Binary file not shown.
BIN
Content/Character/Lb/Animation/R1_Anim.uasset
(Stored with Git LFS)
BIN
Content/Character/Lb/Animation/R1_Anim.uasset
(Stored with Git LFS)
Binary file not shown.
BIN
Content/Character/Lb/Animation/R2_Anim.uasset
(Stored with Git LFS)
BIN
Content/Character/Lb/Animation/R2_Anim.uasset
(Stored with Git LFS)
Binary file not shown.
BIN
Content/Character/Lb/Animation/Treasure_Attack1_Anim.uasset
(Stored with Git LFS)
BIN
Content/Character/Lb/Animation/Treasure_Attack1_Anim.uasset
(Stored with Git LFS)
Binary file not shown.
BIN
Content/Character/Lb/BP_Lb.uasset
(Stored with Git LFS)
BIN
Content/Character/Lb/BP_Lb.uasset
(Stored with Git LFS)
Binary file not shown.
BIN
Content/Character/Lb/EskillBuff.uasset
(Stored with Git LFS)
Normal file
BIN
Content/Character/Lb/EskillBuff.uasset
(Stored with Git LFS)
Normal file
Binary file not shown.
BIN
Content/Character/Lb/LB_Bolla_Throw.uasset
(Stored with Git LFS)
BIN
Content/Character/Lb/LB_Bolla_Throw.uasset
(Stored with Git LFS)
Binary file not shown.
BIN
Content/Character/Monster/Golem/Animation/Golem_Dead_Anim.uasset
(Stored with Git LFS)
Normal file
BIN
Content/Character/Monster/Golem/Animation/Golem_Dead_Anim.uasset
(Stored with Git LFS)
Normal file
Binary file not shown.
BIN
Content/Character/Monster/Golem/Animation/Golem_Regen2_Anim.uasset
(Stored with Git LFS)
Normal file
BIN
Content/Character/Monster/Golem/Animation/Golem_Regen2_Anim.uasset
(Stored with Git LFS)
Normal file
Binary file not shown.
BIN
Content/Character/Monster/Golem/PhysicsAsset/Golem_Dead_PhysicsAsset.uasset
(Stored with Git LFS)
Normal file
BIN
Content/Character/Monster/Golem/PhysicsAsset/Golem_Dead_PhysicsAsset.uasset
(Stored with Git LFS)
Normal file
Binary file not shown.
BIN
Content/Character/Monster/Golem/SkeletalMesh/Golem_Dead.uasset
(Stored with Git LFS)
Normal file
BIN
Content/Character/Monster/Golem/SkeletalMesh/Golem_Dead.uasset
(Stored with Git LFS)
Normal file
Binary file not shown.
BIN
Content/Character/Monster/Golem/Skeleton/Golem_Dead_Skeleton.uasset
(Stored with Git LFS)
Normal file
BIN
Content/Character/Monster/Golem/Skeleton/Golem_Dead_Skeleton.uasset
(Stored with Git LFS)
Normal file
Binary file not shown.
BIN
Content/Character/Notify/ContinueActing.uasset
(Stored with Git LFS)
BIN
Content/Character/Notify/ContinueActing.uasset
(Stored with Git LFS)
Binary file not shown.
BIN
Content/Character/Notify/ContinueAttack.uasset
(Stored with Git LFS)
BIN
Content/Character/Notify/ContinueAttack.uasset
(Stored with Git LFS)
Binary file not shown.
BIN
Content/Character/Notify/ContinueMoving.uasset
(Stored with Git LFS)
BIN
Content/Character/Notify/ContinueMoving.uasset
(Stored with Git LFS)
Binary file not shown.
BIN
Content/Character/Notify/ContinueSkilluse.uasset
(Stored with Git LFS)
BIN
Content/Character/Notify/ContinueSkilluse.uasset
(Stored with Git LFS)
Binary file not shown.
BIN
Content/Character/Notify/Rotating.uasset
(Stored with Git LFS)
BIN
Content/Character/Notify/Rotating.uasset
(Stored with Git LFS)
Binary file not shown.
BIN
Content/Character/Notify/StopActing.uasset
(Stored with Git LFS)
BIN
Content/Character/Notify/StopActing.uasset
(Stored with Git LFS)
Binary file not shown.
BIN
Content/Character/Notify/StopAttack.uasset
(Stored with Git LFS)
BIN
Content/Character/Notify/StopAttack.uasset
(Stored with Git LFS)
Binary file not shown.
BIN
Content/Character/Notify/StopMoving.uasset
(Stored with Git LFS)
BIN
Content/Character/Notify/StopMoving.uasset
(Stored with Git LFS)
Binary file not shown.
BIN
Content/Character/Notify/StopSkilluse.uasset
(Stored with Git LFS)
BIN
Content/Character/Notify/StopSkilluse.uasset
(Stored with Git LFS)
Binary file not shown.
BIN
Content/Character/Notify/WallEnd.uasset
(Stored with Git LFS)
BIN
Content/Character/Notify/WallEnd.uasset
(Stored with Git LFS)
Binary file not shown.
BIN
Content/Character/Riana/Animation/ABP_Riana.uasset
(Stored with Git LFS)
Normal file
BIN
Content/Character/Riana/Animation/ABP_Riana.uasset
(Stored with Git LFS)
Normal file
Binary file not shown.
BIN
Content/Character/Riana/Animation/Skill3_Anim.uasset
(Stored with Git LFS)
BIN
Content/Character/Riana/Animation/Skill3_Anim.uasset
(Stored with Git LFS)
Binary file not shown.
BIN
Content/Character/Riana/Animation/Skill4_1_Anim.uasset
(Stored with Git LFS)
Normal file
BIN
Content/Character/Riana/Animation/Skill4_1_Anim.uasset
(Stored with Git LFS)
Normal file
Binary file not shown.
BIN
Content/Character/Riana/Animation/Skill4_2_Anim.uasset
(Stored with Git LFS)
Normal file
BIN
Content/Character/Riana/Animation/Skill4_2_Anim.uasset
(Stored with Git LFS)
Normal file
Binary file not shown.
BIN
Content/Character/Riana/Animation/Skill4_3_Anim.uasset
(Stored with Git LFS)
Normal file
BIN
Content/Character/Riana/Animation/Skill4_3_Anim.uasset
(Stored with Git LFS)
Normal file
Binary file not shown.
BIN
Content/Character/Riana/Animation/Skill4_Anim.uasset
(Stored with Git LFS)
BIN
Content/Character/Riana/Animation/Skill4_Anim.uasset
(Stored with Git LFS)
Binary file not shown.
BIN
Content/Character/Riana/BP_Riana.uasset
(Stored with Git LFS)
BIN
Content/Character/Riana/BP_Riana.uasset
(Stored with Git LFS)
Binary file not shown.
BIN
Content/Effect/ETC/Burning.uasset
(Stored with Git LFS)
BIN
Content/Effect/ETC/Burning.uasset
(Stored with Git LFS)
Binary file not shown.
BIN
Content/Effect/LB/Arrow/Arrow_Flash.uasset
(Stored with Git LFS)
BIN
Content/Effect/LB/Arrow/Arrow_Flash.uasset
(Stored with Git LFS)
Binary file not shown.
BIN
Content/Effect/LB/LB_Sprint.uasset
(Stored with Git LFS)
BIN
Content/Effect/LB/LB_Sprint.uasset
(Stored with Git LFS)
Binary file not shown.
BIN
Content/InputActions/InputMappingContext.uasset
(Stored with Git LFS)
BIN
Content/InputActions/InputMappingContext.uasset
(Stored with Git LFS)
Binary file not shown.
BIN
Content/InputActions/ObjectSelect.uasset
(Stored with Git LFS)
BIN
Content/InputActions/ObjectSelect.uasset
(Stored with Git LFS)
Binary file not shown.
BIN
Content/InputActions/Skill4.uasset
(Stored with Git LFS)
BIN
Content/InputActions/Skill4.uasset
(Stored with Git LFS)
Binary file not shown.
BIN
Content/InputActions/Skill4_End.uasset
(Stored with Git LFS)
Normal file
BIN
Content/InputActions/Skill4_End.uasset
(Stored with Git LFS)
Normal file
Binary file not shown.
BIN
Content/Maps/DevMap.umap
(Stored with Git LFS)
BIN
Content/Maps/DevMap.umap
(Stored with Git LFS)
Binary file not shown.
BIN
Content/Maps/Untitled.umap
(Stored with Git LFS)
BIN
Content/Maps/Untitled.umap
(Stored with Git LFS)
Binary file not shown.
BIN
Content/StarterContent/Architecture/Floor_400x400.uasset
(Stored with Git LFS)
BIN
Content/StarterContent/Architecture/Floor_400x400.uasset
(Stored with Git LFS)
Binary file not shown.
BIN
Content/StarterContent/Materials/M_Basic_Floor.uasset
(Stored with Git LFS)
BIN
Content/StarterContent/Materials/M_Basic_Floor.uasset
(Stored with Git LFS)
Binary file not shown.
BIN
Content/StarterContent/Particles/Materials/M_Radial_Gradient.uasset
(Stored with Git LFS)
BIN
Content/StarterContent/Particles/Materials/M_Radial_Gradient.uasset
(Stored with Git LFS)
Binary file not shown.
BIN
Content/StarterContent/Particles/Materials/M_radial_ramp.uasset
(Stored with Git LFS)
BIN
Content/StarterContent/Particles/Materials/M_radial_ramp.uasset
(Stored with Git LFS)
Binary file not shown.
BIN
Content/StarterContent/Particles/Materials/m_flare_01.uasset
(Stored with Git LFS)
BIN
Content/StarterContent/Particles/Materials/m_flare_01.uasset
(Stored with Git LFS)
Binary file not shown.
14
Source/Promether/AnimNotify/AN_Skill4_End.cpp
Normal file
14
Source/Promether/AnimNotify/AN_Skill4_End.cpp
Normal file
@@ -0,0 +1,14 @@
|
||||
// Fill out your copyright notice in the Description page of Project Settings.
|
||||
|
||||
|
||||
#include "AN_Skill4_End.h"
|
||||
|
||||
#include "../PlayerGeneric/DefaultPlayerCharacter.h"
|
||||
|
||||
void UAN_Skill4_End::Notify(USkeletalMeshComponent* MeshComp, UAnimSequenceBase* Animation, const FAnimNotifyEventReference& EventReference)
|
||||
{
|
||||
ADefaultPlayerCharacter* MyCharacter = MeshComp->GetOwner<ADefaultPlayerCharacter>();
|
||||
if (!MyCharacter) return;
|
||||
|
||||
MyCharacter->Skill4_End();
|
||||
}
|
||||
19
Source/Promether/AnimNotify/AN_Skill4_End.h
Normal file
19
Source/Promether/AnimNotify/AN_Skill4_End.h
Normal file
@@ -0,0 +1,19 @@
|
||||
// Fill out your copyright notice in the Description page of Project Settings.
|
||||
|
||||
#pragma once
|
||||
|
||||
#include "CoreMinimal.h"
|
||||
#include "Animation/AnimNotifies/AnimNotify.h"
|
||||
#include "AN_Skill4_End.generated.h"
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
UCLASS()
|
||||
class PROMETHER_API UAN_Skill4_End : public UAnimNotify
|
||||
{
|
||||
GENERATED_BODY()
|
||||
|
||||
public:
|
||||
virtual void Notify(USkeletalMeshComponent* MeshComp, UAnimSequenceBase* Animation, const FAnimNotifyEventReference& EventReference) override;
|
||||
};
|
||||
@@ -1,79 +0,0 @@
|
||||
#pragma once
|
||||
|
||||
#include "CoreMinimal.h"
|
||||
#include "DefaultStats.generated.h"
|
||||
|
||||
USTRUCT(Atomic, BlueprintType)
|
||||
struct FDefaultStats
|
||||
{
|
||||
GENERATED_BODY()
|
||||
|
||||
UPROPERTY(EditAnywhere, BlueprintReadWrite)
|
||||
int32 XP;
|
||||
UPROPERTY(EditAnywhere, BlueprintReadWrite)
|
||||
float Health;
|
||||
UPROPERTY(EditAnywhere, BlueprintReadWrite)
|
||||
float HPRegeneration;
|
||||
UPROPERTY(EditAnywhere, BlueprintReadWrite)
|
||||
float HealAndShieldpower;
|
||||
UPROPERTY(EditAnywhere, BlueprintReadWrite)
|
||||
float Armor;
|
||||
UPROPERTY(EditAnywhere, BlueprintReadWrite)
|
||||
float MagicResistance;
|
||||
UPROPERTY(EditAnywhere, BlueprintReadWrite)
|
||||
float Tenacity;
|
||||
UPROPERTY(EditAnywhere, BlueprintReadWrite)
|
||||
float SlowRisist;
|
||||
UPROPERTY(EditAnywhere, BlueprintReadWrite)
|
||||
float AttackSpeed;
|
||||
UPROPERTY(EditAnywhere, BlueprintReadWrite)
|
||||
float AttackDamage;
|
||||
UPROPERTY(EditAnywhere, BlueprintReadWrite)
|
||||
float AbilityPower;
|
||||
UPROPERTY(EditAnywhere, BlueprintReadWrite)
|
||||
float CriticalStrikeChance;
|
||||
UPROPERTY(EditAnywhere, BlueprintReadWrite)
|
||||
float CriticalStrikeDamage;
|
||||
UPROPERTY(EditAnywhere, BlueprintReadWrite)
|
||||
float ArmorPenetration;
|
||||
UPROPERTY(EditAnywhere, BlueprintReadWrite)
|
||||
float MagicPenetration;
|
||||
UPROPERTY(EditAnywhere, BlueprintReadWrite)
|
||||
float LifeSteal;
|
||||
UPROPERTY(EditAnywhere, BlueprintReadWrite)
|
||||
float PhysicalVamp;
|
||||
UPROPERTY(EditAnywhere, BlueprintReadWrite)
|
||||
float Omnivamp;
|
||||
UPROPERTY(EditAnywhere, BlueprintReadWrite)
|
||||
float AbilityHaste;
|
||||
UPROPERTY(EditAnywhere, BlueprintReadWrite)
|
||||
float Mana;
|
||||
UPROPERTY(EditAnywhere, BlueprintReadWrite)
|
||||
float ManaRegeneration;
|
||||
UPROPERTY(EditAnywhere, BlueprintReadWrite)
|
||||
float Energy;
|
||||
UPROPERTY(EditAnywhere, BlueprintReadWrite)
|
||||
float EnergyRegeneration;
|
||||
UPROPERTY(EditAnywhere, BlueprintReadWrite)
|
||||
float AttackRange;
|
||||
UPROPERTY(EditAnywhere, BlueprintReadWrite)
|
||||
float MovementSpeed;
|
||||
UPROPERTY(EditAnywhere, BlueprintReadWrite)
|
||||
float GoldGeneration;
|
||||
UPROPERTY(EditAnywhere, BlueprintReadWrite)
|
||||
float AttackDamageGrowth;
|
||||
UPROPERTY(EditAnywhere, BlueprintReadWrite)
|
||||
float AttackSpeedGrowth;
|
||||
UPROPERTY(EditAnywhere, BlueprintReadWrite)
|
||||
float ArmorGrowth;
|
||||
UPROPERTY(EditAnywhere, BlueprintReadWrite)
|
||||
float MagicResistanceGrowth;
|
||||
UPROPERTY(EditAnywhere, BlueprintReadWrite)
|
||||
float HealthGrowth;
|
||||
UPROPERTY(EditAnywhere, BlueprintReadWrite)
|
||||
float HealthRegenerationGrowth;
|
||||
UPROPERTY(EditAnywhere, BlueprintReadWrite)
|
||||
float ManaGrowth;
|
||||
UPROPERTY(EditAnywhere, BlueprintReadWrite)
|
||||
float ManaRegenerationGrowth;
|
||||
};
|
||||
@@ -133,7 +133,7 @@ FString ADeathmatch::InitNewPlayer(APlayerController* NewPlayerController, const
|
||||
//DebugPerpose
|
||||
if (Type == CharacterType::Lukriel)
|
||||
{
|
||||
Type = CharacterType::Allium;
|
||||
Type = CharacterType::Lb;
|
||||
}
|
||||
if (Team == TeamType::Null)
|
||||
{
|
||||
|
||||
@@ -1,34 +0,0 @@
|
||||
// Fill out your copyright notice in the Description page of Project Settings.
|
||||
|
||||
|
||||
#include "MyActor.h"
|
||||
#include "Net/UnrealNetwork.h"
|
||||
|
||||
// Sets default values
|
||||
AMyActor::AMyActor()
|
||||
{
|
||||
// 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;
|
||||
|
||||
}
|
||||
|
||||
// Called when the game starts or when spawned
|
||||
void AMyActor::BeginPlay()
|
||||
{
|
||||
Super::BeginPlay();
|
||||
|
||||
}
|
||||
|
||||
// Called every frame
|
||||
void AMyActor::Tick(float DeltaTime)
|
||||
{
|
||||
Super::Tick(DeltaTime);
|
||||
|
||||
}
|
||||
|
||||
void AMyActor::GetLifetimeReplicatedProps(TArray<FLifetimeProperty>& OutLifetimeProps) const
|
||||
{
|
||||
Super::GetLifetimeReplicatedProps(OutLifetimeProps);
|
||||
|
||||
DOREPLIFETIME(AMyActor, example);
|
||||
}
|
||||
@@ -1,30 +0,0 @@
|
||||
// Fill out your copyright notice in the Description page of Project Settings.
|
||||
|
||||
#pragma once
|
||||
|
||||
#include "CoreMinimal.h"
|
||||
#include "GameFramework/Actor.h"
|
||||
#include "PrometherEnum.h"
|
||||
#include "MyActor.generated.h"
|
||||
|
||||
UCLASS()
|
||||
class PROMETHER_API AMyActor : public AActor
|
||||
{
|
||||
GENERATED_BODY()
|
||||
|
||||
public:
|
||||
// Sets default values for this actor's properties
|
||||
AMyActor();
|
||||
|
||||
protected:
|
||||
// Called when the game starts or when spawned
|
||||
virtual void BeginPlay() override;
|
||||
|
||||
public:
|
||||
// Called every frame
|
||||
virtual void Tick(float DeltaTime) override;
|
||||
void GetLifetimeReplicatedProps(TArray< FLifetimeProperty >& OutLifetimeProps) const override;
|
||||
|
||||
UPROPERTY(Replicated, EditAnywhere, BlueprintReadWrite)
|
||||
FDefaultStats example;
|
||||
};
|
||||
@@ -24,40 +24,12 @@ ADefaultPlayerCharacter::ADefaultPlayerCharacter()
|
||||
|
||||
Camera = CreateDefaultSubobject<UCameraComponent>(TEXT("Camera"));
|
||||
Camera->SetupAttachment(CameraSpringArm, USpringArmComponent::SocketName);
|
||||
|
||||
for (uint8 i = 0; i < (uint8)EStats::SIZE; i++)
|
||||
DefaultStats.Add((EStats)i, 0.0f);
|
||||
|
||||
Health = 0.0f;
|
||||
HPRegeneration = 0.0f;
|
||||
HealAndShieldpower = 0.0f;
|
||||
Armor = 0.0f;
|
||||
MagicResistance = 0.0f;
|
||||
Tenacity = 0.0f;
|
||||
SlowRisist = 0.0f;
|
||||
AttackSpeed = 0.0f;
|
||||
AttackDamage = 0.0f;
|
||||
AbilityPower = 0.0f;
|
||||
CriticalStrikeChance = 0.0f;
|
||||
CriticalStrikeDamage = 0.0f;
|
||||
ArmorPenetration = 0.0f;
|
||||
MagicPenetration = 0.0f;
|
||||
LifeSteal = 0.0f;
|
||||
PhysicalVamp = 0.0f;
|
||||
Omnivamp = 0.0f;
|
||||
AbilityHaste = 0.0f;
|
||||
Mana = 0.0f;
|
||||
ManaRegeneration = 0.0f;
|
||||
Energy = 0.0f;
|
||||
EnergyRegeneration = 0.0f;
|
||||
AttackRange = 0.0f;
|
||||
MovementSpeed = 0.0f;
|
||||
GoldGeneration = 0.0f;
|
||||
AttackDamageGrowth = 0.0f;
|
||||
AttackSpeedGrowth = 0.0f;
|
||||
ArmorGrowth = 0.0f;
|
||||
MagicResistanceGrowth = 0.0f;
|
||||
HealthGrowth = 0.0f;
|
||||
HealthRegenerationGrowth = 0.0f;
|
||||
ManaGrowth = 0.0f;
|
||||
ManaRegenerationGrowth = 0.0f;
|
||||
for (uint8 i = 0; i < (uint8)CooldownType::SIZE; i++)
|
||||
CooldownDuration.Add((CooldownType)i, 0.0f);
|
||||
}
|
||||
|
||||
void ADefaultPlayerCharacter::Tick(float DeltaTime)
|
||||
@@ -104,15 +76,15 @@ float ADefaultPlayerCharacter::TakeDamage_Implementation(float DamageAmount, str
|
||||
float ADDamageMultiplier = 0;
|
||||
float APDamageMultiplier = 0;
|
||||
|
||||
if (MyState->Stats.Armor >= 0)
|
||||
ADDamageMultiplier = 100 / (100 + MyState->Stats.Armor);
|
||||
if (MyState->Stats[(uint8)EStats::Armor] >= 0)
|
||||
ADDamageMultiplier = 100 / (100 + MyState->Stats[(uint8)EStats::Armor]);
|
||||
else
|
||||
ADDamageMultiplier = 2 - 100 / (100 - MyState->Stats.Armor);
|
||||
ADDamageMultiplier = 2 - 100 / (100 - MyState->Stats[(uint8)EStats::Armor]);
|
||||
|
||||
if (MyState->Stats.MagicResistance >= 0)
|
||||
APDamageMultiplier = 100 / (100 + MyState->Stats.MagicResistance);
|
||||
if (MyState->Stats[(uint8)EStats::MagicResistance] >= 0)
|
||||
APDamageMultiplier = 100 / (100 + MyState->Stats[(uint8)EStats::MagicResistance]);
|
||||
else
|
||||
APDamageMultiplier = 2 - 100 / (100 - MyState->Stats.MagicResistance);
|
||||
APDamageMultiplier = 2 - 100 / (100 - MyState->Stats[(uint8)EStats::MagicResistance]);
|
||||
|
||||
|
||||
UE_LOG(LogTemp, Warning, TEXT("%s : ADDamageMultiplier : %f CalculatedDamage : %f"), *DamageCauser->GetName(), ADDamageMultiplier, DamageAmount * ADDamageMultiplier);
|
||||
@@ -120,19 +92,19 @@ float ADefaultPlayerCharacter::TakeDamage_Implementation(float DamageAmount, str
|
||||
|
||||
if (Cast<UBaseAttack>(DamageEvent.DamageTypeClass->GetDefaultObject()))
|
||||
{
|
||||
UE_LOG(LogTemp, Warning, TEXT("DamageType : BaseAttack"));
|
||||
UE_LOG(LogTemp, Warning, TEXT("DamageType : BaseAttack"));
|
||||
|
||||
float UpdatedHealth = MyState->Stats.Health - EventInstigatorState->Stats.AttackDamage * ADDamageMultiplier;
|
||||
float UpdatedHealth = MyState->Stats[(uint8)EStats::Health] - EventInstigatorState->Stats[(uint8)EStats::AttackDamage] * ADDamageMultiplier;
|
||||
if (UpdatedHealth < 0)
|
||||
{
|
||||
MyState->Stats.Health = 0;
|
||||
MyState->Stats[(uint8)EStats::Health] = 0;
|
||||
}
|
||||
else
|
||||
{
|
||||
MyState->Stats.Health = UpdatedHealth;
|
||||
MyState->Stats[(uint8)EStats::Health] = UpdatedHealth;
|
||||
}
|
||||
|
||||
UE_LOG(LogTemp, Warning, TEXT("Current Health : %f"), MyState->Stats.Health);
|
||||
UE_LOG(LogTemp, Warning, TEXT("Current Health : %f"), MyState->Stats[(uint8)EStats::Health]);
|
||||
}
|
||||
|
||||
}
|
||||
@@ -186,6 +158,16 @@ void ADefaultPlayerCharacter::NetMulticast_Skill4_Implementation()
|
||||
BP_Skill4();
|
||||
}
|
||||
|
||||
void ADefaultPlayerCharacter::Skill4_End_Implementation()
|
||||
{
|
||||
NetMulticast_Skill4_End();
|
||||
}
|
||||
|
||||
void ADefaultPlayerCharacter::NetMulticast_Skill4_End_Implementation()
|
||||
{
|
||||
BP_Skill4_End();
|
||||
}
|
||||
|
||||
void ADefaultPlayerCharacter::Skill5_Implementation()
|
||||
{
|
||||
NetMulticast_Skill5();
|
||||
|
||||
@@ -65,6 +65,14 @@ public:
|
||||
UFUNCTION(NetMulticast, Reliable)
|
||||
void NetMulticast_Skill4();
|
||||
|
||||
UFUNCTION(BlueprintCallable, Server, Reliable)
|
||||
void Skill4_End();
|
||||
//Override me
|
||||
UFUNCTION(BlueprintImplementableEvent)
|
||||
void BP_Skill4_End();
|
||||
UFUNCTION(NetMulticast, Reliable)
|
||||
void NetMulticast_Skill4_End();
|
||||
|
||||
UFUNCTION(BlueprintCallable, Server, Reliable)
|
||||
void Skill5();
|
||||
//Override me
|
||||
@@ -89,121 +97,14 @@ public:
|
||||
UFUNCTION(NetMulticast, Reliable)
|
||||
void NetMulticast_Skill7();
|
||||
|
||||
float GetHealth() const { return Health; }
|
||||
float GetHPRegeneration() const { return HPRegeneration; }
|
||||
float GetHealAndShieldpower() const { return HealAndShieldpower; }
|
||||
float GetArmor() const { return Armor; }
|
||||
float GetMagicResistance() const { return MagicResistance; }
|
||||
float GetTenacity() const { return Tenacity; }
|
||||
float GetSlowRisist() const { return SlowRisist; }
|
||||
float GetAttackSpeed() const { return AttackSpeed; }
|
||||
float GetAttackDamage() const { return AttackDamage; }
|
||||
float GetAbilityPower() const { return AbilityPower; }
|
||||
float GetCriticalStrikeChance() const { return CriticalStrikeChance; }
|
||||
float GetCriticalStrikeDamage() const { return CriticalStrikeDamage; }
|
||||
float GetArmorPenetration() const { return ArmorPenetration; }
|
||||
float GetMagicPenetration() const { return MagicPenetration; }
|
||||
float GetLifeSteal() const { return LifeSteal; }
|
||||
float GetPhysicalVamp() const { return PhysicalVamp; }
|
||||
float GetOmnivamp() const { return Omnivamp; }
|
||||
float GetAbilityHaste() const { return AbilityHaste; }
|
||||
const float* GetCooldownDuration() const { return CooldownDuration; }
|
||||
float GetMana() const { return Mana; }
|
||||
float GetManaRegeneration() const { return ManaRegeneration; }
|
||||
float GetEnergy() const { return Energy; }
|
||||
float GetEnergyRegeneration() const { return EnergyRegeneration; }
|
||||
float GetAttackRange() const { return AttackRange; }
|
||||
float GetMovementSpeed() const { return MovementSpeed; }
|
||||
float GetGoldGeneration() const { return GoldGeneration; }
|
||||
float GetAttackDamageGrowth() const { return AttackDamageGrowth; }
|
||||
float GetAttackSpeedGrowth() const { return AttackSpeedGrowth; }
|
||||
float GetArmorGrowth() const { return ArmorGrowth; }
|
||||
float GetMagicResistanceGrowth() const { return MagicResistanceGrowth; }
|
||||
float GetHealthGrowth() const { return HealthGrowth; }
|
||||
float GetHealthRegenerationGrowth() const { return HealthRegenerationGrowth; }
|
||||
float GetManaGrowth() const { return ManaGrowth; }
|
||||
float GetManaRegenerationGrowth() const { return ManaRegenerationGrowth; }
|
||||
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Stats")
|
||||
TMap<EStats, float> DefaultStats;
|
||||
|
||||
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Stats")
|
||||
TMap<CooldownType, float> CooldownDuration;
|
||||
protected:
|
||||
UPROPERTY(EditAnywhere)
|
||||
USpringArmComponent* CameraSpringArm;
|
||||
UPROPERTY(EditAnywhere)
|
||||
UCameraComponent* Camera;
|
||||
|
||||
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Stats|Defensive")
|
||||
float Health;
|
||||
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Stats|Defensive")
|
||||
float HPRegeneration;
|
||||
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Stats|Defensive")
|
||||
float HealAndShieldpower;
|
||||
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Stats|Defensive")
|
||||
float Armor;
|
||||
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Stats|Defensive")
|
||||
float MagicResistance;
|
||||
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Stats|Defensive")
|
||||
float Tenacity;
|
||||
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Stats|Defensive")
|
||||
float SlowRisist;
|
||||
|
||||
|
||||
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Stats|Offensive")
|
||||
float AttackSpeed;
|
||||
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Stats|Offensive")
|
||||
float AttackDamage;
|
||||
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Stats|Offensive")
|
||||
float AbilityPower;
|
||||
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Stats|Offensive")
|
||||
float CriticalStrikeChance;
|
||||
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Stats|Offensive")
|
||||
float CriticalStrikeDamage;
|
||||
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Stats|Offensive")
|
||||
float ArmorPenetration;
|
||||
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Stats|Offensive")
|
||||
float MagicPenetration;
|
||||
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Stats|Offensive")
|
||||
float LifeSteal;
|
||||
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Stats|Offensive")
|
||||
float PhysicalVamp;
|
||||
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Stats|Offensive")
|
||||
float Omnivamp;
|
||||
|
||||
|
||||
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Stats|Utility|Haste")
|
||||
float AbilityHaste;
|
||||
|
||||
UPROPERTY(EditAnywhere, Category = "Stats|Utility|Haste")
|
||||
float CooldownDuration[(uint8)CooldownType::SIZE] = { 0.0f, };
|
||||
|
||||
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Stats|Utility|Resource")
|
||||
float Mana;
|
||||
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Stats|Utility|Resource")
|
||||
float ManaRegeneration;
|
||||
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Stats|Utility|Resource")
|
||||
float Energy;
|
||||
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Stats|Utility|Resource")
|
||||
float EnergyRegeneration;
|
||||
|
||||
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Stats|Utility")
|
||||
float AttackRange;
|
||||
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Stats|Utility")
|
||||
float MovementSpeed;
|
||||
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Stats|Utility|Non-Combat")
|
||||
float GoldGeneration;
|
||||
|
||||
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Stats|Increasing Statistics")
|
||||
float AttackDamageGrowth;
|
||||
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Stats|Increasing Statistics")
|
||||
float AttackSpeedGrowth;
|
||||
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Stats|Increasing Statistics")
|
||||
float ArmorGrowth;
|
||||
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Stats|Increasing Statistics")
|
||||
float MagicResistanceGrowth;
|
||||
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Stats|Increasing Statistics")
|
||||
float HealthGrowth;
|
||||
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Stats|Increasing Statistics")
|
||||
float HealthRegenerationGrowth;
|
||||
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Stats|Increasing Statistics")
|
||||
float ManaGrowth;
|
||||
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Stats|Increasing Statistics")
|
||||
float ManaRegenerationGrowth;
|
||||
};
|
||||
|
||||
@@ -18,17 +18,19 @@ void ADefaultPlayerController::BeginPlay()
|
||||
{
|
||||
Super::BeginPlay();
|
||||
|
||||
if (ULocalPlayer* LocalPlayer = Cast<ULocalPlayer>(Player)) {
|
||||
if (UEnhancedInputLocalPlayerSubsystem* InputSystem = LocalPlayer->GetSubsystem<UEnhancedInputLocalPlayerSubsystem>()) {
|
||||
if (!PlayerInputMapping.IsNull()) {
|
||||
InputSystem->AddMappingContext(PlayerInputMapping.LoadSynchronous(), 0);
|
||||
}
|
||||
else {
|
||||
UE_LOG(LogTemp, Error, TEXT("AddMappingContext Failed"));
|
||||
}
|
||||
}
|
||||
ULocalPlayer* LocalPlayer = Cast<ULocalPlayer>(Player);
|
||||
if (!LocalPlayer) return;
|
||||
|
||||
UEnhancedInputLocalPlayerSubsystem* InputSystem = LocalPlayer->GetSubsystem<UEnhancedInputLocalPlayerSubsystem>();
|
||||
if (!InputSystem) return;
|
||||
|
||||
if (PlayerInputMapping.IsNull())
|
||||
{
|
||||
UE_LOG(LogTemp, Error, TEXT("AddMappingContext Failed"));
|
||||
return;
|
||||
}
|
||||
|
||||
InputSystem->AddMappingContext(PlayerInputMapping.LoadSynchronous(), 0);
|
||||
this->bShowMouseCursor = true;
|
||||
}
|
||||
|
||||
@@ -39,16 +41,29 @@ void ADefaultPlayerController::OnPossess(APawn* aPawn)
|
||||
Server_SpawnPlayerCamera();
|
||||
|
||||
AActor *PlayerCamera = GetPlayerState<ADefaultPlayerState>()->GetPlayerCamera();
|
||||
if (PlayerCamera)
|
||||
{
|
||||
SetViewTarget(PlayerCamera);
|
||||
|
||||
UE_LOG(LogTemp, Warning, TEXT("SetViewTarget Success : %s"), *GetPlayerState<ADefaultPlayerState>()->GetPlayerCamera()->GetName());
|
||||
}
|
||||
else
|
||||
if (!PlayerCamera)
|
||||
{
|
||||
UE_LOG(LogTemp, Error, TEXT("GetPlayerCamera Failed."));
|
||||
return;
|
||||
}
|
||||
|
||||
SetViewTarget(PlayerCamera);
|
||||
|
||||
UE_LOG(LogTemp, Warning, TEXT("SetViewTarget Success : %s"), *GetPlayerState<ADefaultPlayerState>()->GetPlayerCamera()->GetName());
|
||||
|
||||
ADefaultPlayerCharacter* ControlledPawn = GetPawn<ADefaultPlayerCharacter>();
|
||||
if (!ControlledPawn) return;
|
||||
|
||||
ADefaultPlayerState* MyPlayerState = GetPlayerState<ADefaultPlayerState>();
|
||||
if (!MyPlayerState) return;
|
||||
|
||||
TArray<float> DefaultStatsValue;
|
||||
TArray<float> CooldownDurationValue;
|
||||
|
||||
ControlledPawn->DefaultStats.GenerateValueArray(DefaultStatsValue);
|
||||
ControlledPawn->CooldownDuration.GenerateValueArray(CooldownDurationValue);
|
||||
|
||||
MyPlayerState->InitPlayerStats(DefaultStatsValue, CooldownDurationValue);
|
||||
}
|
||||
|
||||
void ADefaultPlayerController::OnUnPossess()
|
||||
@@ -66,48 +81,46 @@ void ADefaultPlayerController::Server_SpawnPlayerCamera_Implementation()
|
||||
|
||||
UE_LOG(LogTemp, Warning, TEXT("SpawnPlayerCamera"));
|
||||
|
||||
if (APawn* MyPawn = GetPawn())
|
||||
APawn* MyPawn = GetPawn();
|
||||
if (!MyPawn) return;
|
||||
|
||||
FTransform SpawnTransform = FTransform();
|
||||
|
||||
SpawnTransform.SetLocation(MyPawn->GetActorLocation());
|
||||
|
||||
OutContextPlayerCamera = GetWorld()->SpawnActor<AActor>(ADefaultPlayerCamera::StaticClass(), SpawnTransform, SpawnInfo);
|
||||
if (!OutContextPlayerCamera)
|
||||
{
|
||||
FTransform SpawnTransform = FTransform();
|
||||
|
||||
SpawnTransform.SetLocation(MyPawn->GetActorLocation());
|
||||
|
||||
OutContextPlayerCamera = GetWorld()->SpawnActor<AActor>(ADefaultPlayerCamera::StaticClass(), SpawnTransform, SpawnInfo);
|
||||
if (OutContextPlayerCamera)
|
||||
{
|
||||
GetPlayerState<ADefaultPlayerState>()->SetPlayerCamera(OutContextPlayerCamera);
|
||||
OutContextPlayerCamera->AttachToActor(GetPawn(), FAttachmentTransformRules(EAttachmentRule::SnapToTarget, EAttachmentRule::KeepWorld, EAttachmentRule::KeepWorld, false));
|
||||
|
||||
UE_LOG(LogTemp, Warning, TEXT("SetPlayerCamera Success : %s, %d"), *GetPlayerState<ADefaultPlayerState>()->GetPlayerCamera()->GetName(), GetPlayerState<ADefaultPlayerState>()->GetPlayerCamera());
|
||||
}
|
||||
else
|
||||
{
|
||||
UE_LOG(LogTemp, Error, TEXT("Camera Spawn Failed."));
|
||||
}
|
||||
UE_LOG(LogTemp, Error, TEXT("Camera Spawn Failed."));
|
||||
return;
|
||||
}
|
||||
|
||||
GetPlayerState<ADefaultPlayerState>()->SetPlayerCamera(OutContextPlayerCamera);
|
||||
OutContextPlayerCamera->AttachToActor(GetPawn(), FAttachmentTransformRules(EAttachmentRule::SnapToTarget, EAttachmentRule::KeepWorld, EAttachmentRule::KeepWorld, false));
|
||||
|
||||
UE_LOG(LogTemp, Warning, TEXT("SetPlayerCamera Success : %s, %d"), *GetPlayerState<ADefaultPlayerState>()->GetPlayerCamera()->GetName(), GetPlayerState<ADefaultPlayerState>()->GetPlayerCamera());
|
||||
}
|
||||
|
||||
void ADefaultPlayerController::SetACharacterOutlineColor(ACharacter* Target, bool Visible)
|
||||
{
|
||||
if (!HasAuthority())
|
||||
if (HasAuthority()) return;
|
||||
|
||||
ADefaultPlayerState* State = Target->GetPlayerState<ADefaultPlayerState>();
|
||||
if (!State)
|
||||
{
|
||||
if (ADefaultPlayerState* State = Target->GetPlayerState<ADefaultPlayerState>())
|
||||
{
|
||||
if (State->GetTeam() == GetPlayerState<ADefaultPlayerState>()->GetTeam())
|
||||
{
|
||||
Target->GetMesh()->SetRenderCustomDepth(Visible);
|
||||
Target->GetMesh()->CustomDepthStencilValue = 1;
|
||||
}
|
||||
else
|
||||
{
|
||||
Target->GetMesh()->SetRenderCustomDepth(Visible);
|
||||
Target->GetMesh()->CustomDepthStencilValue = 2;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
UE_LOG(LogTemp, Error, TEXT("GetPlayerState<ADefaultPlayerState> Failed"));
|
||||
}
|
||||
UE_LOG(LogTemp, Error, TEXT("GetPlayerState<ADefaultPlayerState> Failed"));
|
||||
return;
|
||||
}
|
||||
|
||||
if (State->GetTeam() == GetPlayerState<ADefaultPlayerState>()->GetTeam())
|
||||
{
|
||||
Target->GetMesh()->SetRenderCustomDepth(Visible);
|
||||
Target->GetMesh()->CustomDepthStencilValue = 1;
|
||||
}
|
||||
else
|
||||
{
|
||||
Target->GetMesh()->SetRenderCustomDepth(Visible);
|
||||
Target->GetMesh()->CustomDepthStencilValue = 2;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -215,34 +228,36 @@ void ADefaultPlayerController::SetupInputComponent()
|
||||
{
|
||||
Super::SetupInputComponent();
|
||||
|
||||
if (UEnhancedInputComponent* EnhancedInputComponent = Cast<UEnhancedInputComponent>(InputComponent))
|
||||
{
|
||||
EnhancedInputComponent->BindAction(Skill1Action.Get(), ETriggerEvent::Triggered, this, &ADefaultPlayerController::Skill1);
|
||||
EnhancedInputComponent->BindAction(Skill2Action.Get(), ETriggerEvent::Triggered, this, &ADefaultPlayerController::Skill2);
|
||||
EnhancedInputComponent->BindAction(Skill3Action.Get(), ETriggerEvent::Triggered, this, &ADefaultPlayerController::Skill3);
|
||||
EnhancedInputComponent->BindAction(Skill4Action.Get(), ETriggerEvent::Triggered, this, &ADefaultPlayerController::Skill4);
|
||||
EnhancedInputComponent->BindAction(RuneSpell1Action.Get(), ETriggerEvent::Triggered, this, &ADefaultPlayerController::RuneSpell1);
|
||||
EnhancedInputComponent->BindAction(RuneSpell2Action.Get(), ETriggerEvent::Triggered, this, &ADefaultPlayerController::RuneSpell2);
|
||||
EnhancedInputComponent->BindAction(WardAction.Get(), ETriggerEvent::Triggered, this, &ADefaultPlayerController::Ward);
|
||||
EnhancedInputComponent->BindAction(BombAction.Get(), ETriggerEvent::Triggered, this, &ADefaultPlayerController::Bomb);
|
||||
EnhancedInputComponent->BindAction(ObjectSelectAction.Get(), ETriggerEvent::Triggered, this, &ADefaultPlayerController::ObjectSelect);
|
||||
EnhancedInputComponent->BindAction(MoveAction.Get(), ETriggerEvent::Triggered, this, &ADefaultPlayerController::MoveTriggered);
|
||||
EnhancedInputComponent->BindAction(MoveAction.Get(), ETriggerEvent::Started, this, &ADefaultPlayerController::MoveStarted);
|
||||
}
|
||||
UEnhancedInputComponent* EnhancedInputComponent = Cast<UEnhancedInputComponent>(InputComponent);
|
||||
if (!EnhancedInputComponent) return;
|
||||
|
||||
EnhancedInputComponent->BindAction(Skill1Action.Get(), ETriggerEvent::Triggered, this, &ADefaultPlayerController::Skill1);
|
||||
EnhancedInputComponent->BindAction(Skill2Action.Get(), ETriggerEvent::Triggered, this, &ADefaultPlayerController::Skill2);
|
||||
EnhancedInputComponent->BindAction(Skill3Action.Get(), ETriggerEvent::Triggered, this, &ADefaultPlayerController::Skill3);
|
||||
EnhancedInputComponent->BindAction(Skill4Action.Get(), ETriggerEvent::Triggered, this, &ADefaultPlayerController::Skill4Triggered);
|
||||
EnhancedInputComponent->BindAction(Skill4Action.Get(), ETriggerEvent::Completed, this, &ADefaultPlayerController::Skill4Completed);
|
||||
EnhancedInputComponent->BindAction(RuneSpell1Action.Get(), ETriggerEvent::Triggered, this, &ADefaultPlayerController::RuneSpell1);
|
||||
EnhancedInputComponent->BindAction(RuneSpell2Action.Get(), ETriggerEvent::Triggered, this, &ADefaultPlayerController::RuneSpell2);
|
||||
EnhancedInputComponent->BindAction(WardAction.Get(), ETriggerEvent::Triggered, this, &ADefaultPlayerController::Ward);
|
||||
EnhancedInputComponent->BindAction(BombAction.Get(), ETriggerEvent::Triggered, this, &ADefaultPlayerController::Bomb);
|
||||
EnhancedInputComponent->BindAction(ObjectSelectAction.Get(), ETriggerEvent::Triggered, this, &ADefaultPlayerController::ObjectSelect);
|
||||
EnhancedInputComponent->BindAction(MoveAction.Get(), ETriggerEvent::Triggered, this, &ADefaultPlayerController::Move);
|
||||
}
|
||||
|
||||
void ADefaultPlayerController::Skill1()
|
||||
{
|
||||
//if (!(GetPlayerState<ADefaultPlayerState>()->Stats.Mana >= 100))
|
||||
// return;
|
||||
if (!(GetPlayerState<ADefaultPlayerState>()->Stats[(uint8)EStats::Mana] >= GetPlayerState<ADefaultPlayerState>()->Stats[(uint8)EStats::Skill1Cost]))
|
||||
return;
|
||||
|
||||
ACharacter* HitObject = nullptr;
|
||||
FVector Location = GetPawn()->GetActorLocation();
|
||||
Location.Z = 0;
|
||||
|
||||
SimpleMoveToLocation(this, Location);
|
||||
this->MoveToLocation(Location);
|
||||
Server_StopMove();
|
||||
Multicast_StopMove();
|
||||
|
||||
GetPawn()->SetActorRotation((GetMouseHitLocation() - Location).Rotation());
|
||||
Multicast_SetRotation(GetMouseHitLocation());
|
||||
Server_SetRotation(GetMouseHitLocation());
|
||||
|
||||
UE_LOG(LogTemp, Warning, TEXT("Skill1"));
|
||||
GetPlayerState<ADefaultPlayerState>()->SetState(ECharacterState::Attack);
|
||||
@@ -251,13 +266,18 @@ void ADefaultPlayerController::Skill1()
|
||||
|
||||
void ADefaultPlayerController::Skill2()
|
||||
{
|
||||
if (!(GetPlayerState<ADefaultPlayerState>()->Stats[(uint8)EStats::Mana] >= GetPlayerState<ADefaultPlayerState>()->Stats[(uint8)EStats::Skill2Cost]))
|
||||
return;
|
||||
|
||||
ACharacter* HitObject = nullptr;
|
||||
FVector Location = GetPawn()->GetActorLocation();
|
||||
Location.Z = 0;
|
||||
|
||||
SimpleMoveToLocation(this, Location);
|
||||
this->MoveToLocation(Location);
|
||||
Server_StopMove();
|
||||
Multicast_StopMove();
|
||||
|
||||
GetPawn()->SetActorRotation((GetMouseHitLocation() - Location).Rotation());
|
||||
Multicast_SetRotation(GetMouseHitLocation());
|
||||
Server_SetRotation(GetMouseHitLocation());
|
||||
|
||||
UE_LOG(LogTemp, Warning, TEXT("Skill2"));
|
||||
GetPlayerState<ADefaultPlayerState>()->SetState(ECharacterState::Attack);
|
||||
@@ -266,32 +286,49 @@ void ADefaultPlayerController::Skill2()
|
||||
|
||||
void ADefaultPlayerController::Skill3()
|
||||
{
|
||||
if (!(GetPlayerState<ADefaultPlayerState>()->Stats[(uint8)EStats::Mana] >= GetPlayerState<ADefaultPlayerState>()->Stats[(uint8)EStats::Skill3Cost]))
|
||||
return;
|
||||
|
||||
ACharacter* HitObject = nullptr;
|
||||
FVector Location = GetPawn()->GetActorLocation();
|
||||
Location.Z = 0;
|
||||
|
||||
SimpleMoveToLocation(this, Location);
|
||||
this->MoveToLocation(Location);
|
||||
Server_StopMove();
|
||||
Multicast_StopMove();
|
||||
|
||||
GetPawn()->SetActorRotation((GetMouseHitLocation() - Location).Rotation());
|
||||
Multicast_SetRotation(GetMouseHitLocation());
|
||||
Server_SetRotation(GetMouseHitLocation());
|
||||
|
||||
UE_LOG(LogTemp, Warning, TEXT("Skill3"));
|
||||
GetPlayerState<ADefaultPlayerState>()->SetState(ECharacterState::Attack);
|
||||
GetPlayerState<ADefaultPlayerState>()->SetAttackType(CooldownType::Skill3);
|
||||
}
|
||||
|
||||
void ADefaultPlayerController::Skill4()
|
||||
void ADefaultPlayerController::Skill4Triggered()
|
||||
{
|
||||
if (!(GetPlayerState<ADefaultPlayerState>()->Stats[(uint8)EStats::Mana] >= GetPlayerState<ADefaultPlayerState>()->Stats[(uint8)EStats::Skill4Cost]))
|
||||
return;
|
||||
|
||||
ACharacter* HitObject = nullptr;
|
||||
FVector Location = GetPawn()->GetActorLocation();
|
||||
Location.Z = 0;
|
||||
|
||||
SimpleMoveToLocation(this, Location);
|
||||
this->MoveToLocation(Location);
|
||||
Server_StopMove();
|
||||
Multicast_StopMove();
|
||||
|
||||
GetPawn()->SetActorRotation((GetMouseHitLocation() - Location).Rotation());
|
||||
Multicast_SetRotation(GetMouseHitLocation());
|
||||
Server_SetRotation(GetMouseHitLocation());
|
||||
|
||||
UE_LOG(LogTemp, Warning, TEXT("Skill4"));
|
||||
UE_LOG(LogTemp, Warning, TEXT("Skill4 Triggered"));
|
||||
GetPlayerState<ADefaultPlayerState>()->SetState(ECharacterState::Attack);
|
||||
GetPlayerState<ADefaultPlayerState>()->SetAttackType(CooldownType::Skill4Started);
|
||||
GetPlayerState<ADefaultPlayerState>()->SetAttackType(CooldownType::Skill4Triggered);
|
||||
}
|
||||
|
||||
void ADefaultPlayerController::Skill4Completed()
|
||||
{
|
||||
UE_LOG(LogTemp, Warning, TEXT("Skill4 Completed"));
|
||||
GetPlayerState<ADefaultPlayerState>()->SetState(ECharacterState::Attack);
|
||||
GetPlayerState<ADefaultPlayerState>()->SetAttackType(CooldownType::Skill4Comlpleted);
|
||||
}
|
||||
|
||||
void ADefaultPlayerController::RuneSpell1()
|
||||
@@ -331,30 +368,66 @@ void ADefaultPlayerController::ObjectSelect()
|
||||
|
||||
GetHitResultUnderCursorForObjects(ObjectTypes, true, HitResult);
|
||||
|
||||
if (ACharacter* HitObject = Cast<ACharacter>(HitResult.GetActor()))
|
||||
{
|
||||
UE_LOG(LogTemp, Warning, TEXT("%s"), *HitObject->GetName());
|
||||
SetACharacterOutlineColor(HitObject, true);
|
||||
}
|
||||
ACharacter* HitObject = Cast<ACharacter>(HitResult.GetActor());
|
||||
if (!HitObject) return;
|
||||
|
||||
UE_LOG(LogTemp, Warning, TEXT("%s"), *HitObject->GetName());
|
||||
SetACharacterOutlineColor(HitObject, true);
|
||||
}
|
||||
|
||||
void ADefaultPlayerController::MoveTriggered()
|
||||
{
|
||||
Move();
|
||||
}
|
||||
|
||||
void ADefaultPlayerController::MoveStarted()
|
||||
{
|
||||
Move();
|
||||
}
|
||||
|
||||
void ADefaultPlayerController::Move()
|
||||
{
|
||||
FVector Destination = GetMouseHitLocation();
|
||||
FHitResult HitResult;
|
||||
TArray<TEnumAsByte<EObjectTypeQuery>> ObjectTypes;
|
||||
ObjectTypes.Add(UEngineTypes::ConvertToObjectType(ECollisionChannel::ECC_WorldStatic));
|
||||
ObjectTypes.Add(UEngineTypes::ConvertToObjectType(ECollisionChannel::ECC_Pawn));
|
||||
|
||||
GetPlayerState<ADefaultPlayerState>()->SetState(ECharacterState::Moving);
|
||||
SimpleMoveToLocation(this, Destination);
|
||||
this->MoveToLocation(Destination);
|
||||
GetHitResultUnderCursorForObjects(ObjectTypes, true, HitResult);
|
||||
ACharacter* HitCharacter = Cast<ACharacter>(HitResult.GetActor()); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ʈ<EFBFBD><C6AE> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> HitCharactor<6F><72> <20><><EFBFBD><EFBFBD><<<3C><><EFBFBD><EFBFBD> <20><> ij<><C4B3><EFBFBD><EFBFBD><EFBFBD>϶<EFBFBD><CFB6><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>ؾ<EFBFBD><D8BE><EFBFBD>
|
||||
|
||||
if (HitCharacter != nullptr) //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> HitObject<63><74> null<6C><6C> <20>ƴ<EFBFBD> <20><><EFBFBD><EFBFBD> Attack()<29><> <20><><EFBFBD><EFBFBD><EFBFBD>ϴ<EFBFBD> <20>ڵ<EFBFBD><DAB5><EFBFBD><EFBFBD><EFBFBD>, HitObject<63><74> <20><> ij<><C4B3><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>ؾ<EFBFBD><D8BE><EFBFBD>
|
||||
{
|
||||
Attack(HitCharacter); //HitObject<63><74> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> Attack <20><><EFBFBD><EFBFBD>
|
||||
}
|
||||
else
|
||||
{
|
||||
FVector Destination = GetMouseHitLocation();
|
||||
GetPlayerState<ADefaultPlayerState>()->SetState(ECharacterState::Moving);
|
||||
SimpleMoveToLocation(this, Destination);
|
||||
this->MoveToLocation(Destination);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
void ADefaultPlayerController::Multicast_SetRotation_Implementation(FVector MouseHitLocation)
|
||||
{
|
||||
FVector Location = GetPawn()->GetActorLocation();
|
||||
Location.Z = 0;
|
||||
|
||||
GetPawn()->SetActorRotation((MouseHitLocation - Location).Rotation());
|
||||
}
|
||||
|
||||
void ADefaultPlayerController::Server_SetRotation_Implementation(FVector MouseHitLocation)
|
||||
{
|
||||
Multicast_SetRotation(MouseHitLocation);
|
||||
}
|
||||
|
||||
void ADefaultPlayerController::Server_StopMove_Implementation()
|
||||
{
|
||||
Multicast_StopMove();
|
||||
}
|
||||
|
||||
void ADefaultPlayerController::Multicast_StopMove_Implementation()
|
||||
{
|
||||
UPathFollowingComponent* PFollowComp = this->FindComponentByClass<UPathFollowingComponent>();
|
||||
if (!PFollowComp) return;
|
||||
|
||||
PFollowComp->OnRequestFinished.Clear();
|
||||
|
||||
PFollowComp->RequestMoveWithImmediateFinish(EPathFollowingResult::Success);
|
||||
|
||||
PFollowComp->OnRequestFinished.AddUObject(this, &ADefaultPlayerController::OnMoveCompleted);
|
||||
}
|
||||
|
||||
FVector ADefaultPlayerController::GetMouseHitLocation()
|
||||
@@ -363,7 +436,7 @@ FVector ADefaultPlayerController::GetMouseHitLocation()
|
||||
GetHitResultUnderCursor(ECollisionChannel::ECC_Visibility, true, HitResult);
|
||||
HitResult.Location.Z = 0;
|
||||
|
||||
UE_LOG(LogTemp, Warning, TEXT("Client%d MoveTo : (%f, %f)"), GPlayInEditorID, HitResult.Location.X, HitResult.Location.Y);
|
||||
//UE_LOG(LogTemp, Warning, TEXT("Client%d MoveTo : (%f, %f)"), GPlayInEditorID, HitResult.Location.X, HitResult.Location.Y);
|
||||
|
||||
FVector ActorLocation = GetPawn()->GetActorLocation();
|
||||
ActorLocation.Z = 0;
|
||||
@@ -376,22 +449,21 @@ FVector ADefaultPlayerController::GetMouseHitLocation()
|
||||
DrawDebugLine(GetWorld(), HitResult.Location, Destination, FColor::Emerald, false, 1, 0, 1);
|
||||
|
||||
const UWorld* CurrentWorld = GetWorld();
|
||||
if (CurrentWorld)
|
||||
{
|
||||
FHitResult CollisionCheck;
|
||||
if (!CurrentWorld) return Destination;
|
||||
|
||||
FCollisionQueryParams CollisionParams;
|
||||
CollisionParams.AddIgnoredActor(GetPawn());
|
||||
FHitResult CollisionCheck;
|
||||
|
||||
FVector Start = HitResult.Location;
|
||||
FVector End = Destination;
|
||||
FCollisionQueryParams CollisionParams;
|
||||
CollisionParams.AddIgnoredActor(GetPawn());
|
||||
|
||||
if (CurrentWorld->LineTraceSingleByChannel(CollisionCheck, Start, End, ECC_Visibility, CollisionParams))
|
||||
{
|
||||
DrawDebugLine(CurrentWorld, Start, End, FColor::Red, false, 1.5, 0, 2);
|
||||
Destination = HitResult.Location;
|
||||
}
|
||||
}
|
||||
FVector Start = HitResult.Location;
|
||||
FVector End = Destination;
|
||||
|
||||
if (!CurrentWorld->LineTraceSingleByChannel(CollisionCheck, Start, End, ECC_Visibility, CollisionParams))
|
||||
return Destination;
|
||||
|
||||
DrawDebugLine(CurrentWorld, Start, End, FColor::Red, false, 1.5, 0, 2);
|
||||
Destination = HitResult.Location;
|
||||
|
||||
return Destination;
|
||||
}
|
||||
@@ -476,25 +548,53 @@ void ADefaultPlayerController::SimpleMoveToLocation(AController* Controller, con
|
||||
|
||||
void ADefaultPlayerController::OnMoveCompleted(FAIRequestID RequestID, const FPathFollowingResult& MovementResult)
|
||||
{
|
||||
if (MovementResult.IsSuccess())
|
||||
if (!MovementResult.IsSuccess()) return;
|
||||
|
||||
if (!GPlayInEditorID)
|
||||
{
|
||||
if (!GPlayInEditorID)
|
||||
{
|
||||
UE_LOG(LogTemp, Warning, TEXT("Server MoveCompleted"));
|
||||
}
|
||||
else
|
||||
{
|
||||
UE_LOG(LogTemp, Warning, TEXT("Client%d MoveCompleted"), GPlayInEditorID);
|
||||
}
|
||||
GetPlayerState<ADefaultPlayerState>()->SetState(ECharacterState::Idle);
|
||||
UE_LOG(LogTemp, Warning, TEXT("Server MoveCompleted"));
|
||||
}
|
||||
else
|
||||
{
|
||||
UE_LOG(LogTemp, Warning, TEXT("Client%d MoveCompleted"), GPlayInEditorID);
|
||||
}
|
||||
|
||||
GetPlayerState<ADefaultPlayerState>()->SetState(ECharacterState::Idle);
|
||||
}
|
||||
|
||||
void ADefaultPlayerController::Attack()
|
||||
void ADefaultPlayerController::Attack(ACharacter* HitObject)
|
||||
{
|
||||
UE_LOG(LogTemp, Warning, TEXT("Attack"));
|
||||
GetPlayerState<ADefaultPlayerState>()->SetState(ECharacterState::Attack);
|
||||
GetPlayerState<ADefaultPlayerState>()->SetAttackType(CooldownType::Attack);
|
||||
if (!HitObject) return;
|
||||
|
||||
float MinDistance = GetPlayerState<ADefaultPlayerState>()->Stats[(uint8)EStats:: AttackRange];
|
||||
FVector Destination = HitObject->GetActorLocation(); // HitObject<63><74> <20><>ġ<EFBFBD><C4A1> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
|
||||
if (FVector::Dist(Destination, GetPawn()->GetActorLocation()) <= MinDistance)
|
||||
{
|
||||
if ((GetPlayerState<ADefaultPlayerState>()->CooldownDuration[(uint8)CooldownType::Attack] != 0))
|
||||
return;
|
||||
|
||||
FVector Location = GetPawn()->GetActorLocation();
|
||||
Location.Z = 0;
|
||||
|
||||
Server_StopMove();
|
||||
Multicast_StopMove();
|
||||
|
||||
Multicast_SetRotation(GetMouseHitLocation());
|
||||
Server_SetRotation(GetMouseHitLocation());
|
||||
|
||||
UE_LOG(LogTemp, Warning, TEXT("Attack"));
|
||||
GetPlayerState<ADefaultPlayerState>()->SetState(ECharacterState::Attack);
|
||||
GetPlayerState<ADefaultPlayerState>()->SetAttackType(CooldownType::Attack);
|
||||
}
|
||||
else
|
||||
{
|
||||
GetPlayerState<ADefaultPlayerState>()->SetState(ECharacterState::Moving);
|
||||
SimpleMoveToLocation(this, Destination);
|
||||
|
||||
Destination = HitObject->GetActorLocation(); // HitObject<63><74> <20><>ġ<EFBFBD><C4A1> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
this->MoveToLocation(Destination);
|
||||
}
|
||||
}
|
||||
|
||||
void ADefaultPlayerController::MoveToLocation_Implementation(FVector Location)
|
||||
|
||||
@@ -34,19 +34,29 @@ public:
|
||||
void Skill1();
|
||||
void Skill2();
|
||||
void Skill3();
|
||||
void Skill4();
|
||||
void Skill4Triggered();
|
||||
void Skill4Completed();
|
||||
void RuneSpell1();
|
||||
void RuneSpell2();
|
||||
void Ward();
|
||||
void Bomb();
|
||||
void ObjectSelect();
|
||||
void MoveTriggered();
|
||||
void MoveStarted();
|
||||
void Move();
|
||||
|
||||
UFUNCTION(Server, Reliable)
|
||||
void MoveToLocation(FVector Location);
|
||||
|
||||
UFUNCTION(Server, Reliable)
|
||||
void Server_StopMove();
|
||||
UFUNCTION(NetMulticast, Reliable)
|
||||
void Multicast_StopMove();
|
||||
|
||||
UFUNCTION(NetMulticast, Reliable)
|
||||
void Multicast_SetRotation(FVector MouseHitLocation);
|
||||
|
||||
UFUNCTION(Server, Reliable)
|
||||
void Server_SetRotation(FVector MouseHitLocation);
|
||||
|
||||
FVector GetMouseHitLocation();
|
||||
|
||||
UFUNCTION(BlueprintCallable, Category = "AI|Navigation")
|
||||
@@ -54,7 +64,9 @@ public:
|
||||
|
||||
void OnMoveCompleted(FAIRequestID RequestID, const FPathFollowingResult &MovementResult);
|
||||
|
||||
void Attack();
|
||||
|
||||
|
||||
void Attack(ACharacter* HitObject);
|
||||
|
||||
UPROPERTY(BlueprintReadWrite)
|
||||
float MouseClickInterval;
|
||||
|
||||
@@ -26,46 +26,18 @@ void ADefaultPlayerState::GetLifetimeReplicatedProps(TArray<FLifetimeProperty>&
|
||||
DOREPLIFETIME(ADefaultPlayerState, PlayerCamera);
|
||||
}
|
||||
|
||||
void ADefaultPlayerState::InitPlayerStats()
|
||||
void ADefaultPlayerState::InitPlayerStats_Implementation(const TArray<float>& StatsValue, const TArray<float>& CooldownDurationValue)
|
||||
{
|
||||
ADefaultPlayerCharacter* Initializer = Cast<ADefaultPlayerCharacter>(CharacterBPRef);
|
||||
MaxStats.Append(StatsValue);
|
||||
Stats.Append(StatsValue);
|
||||
CooldownDuration.Append(CooldownDurationValue);
|
||||
MaxCooldownDuration.Append(CooldownDurationValue);
|
||||
|
||||
Stats.Health = Initializer->GetHealth();
|
||||
Stats.HPRegeneration = Initializer->GetHPRegeneration();
|
||||
Stats.HealAndShieldpower = Initializer->GetHealAndShieldpower();
|
||||
Stats.Armor = Initializer->GetArmor();
|
||||
Stats.MagicResistance = Initializer->GetMagicResistance();
|
||||
Stats.Tenacity = Initializer->GetTenacity();
|
||||
Stats.SlowRisist = Initializer->GetSlowRisist();
|
||||
Stats.AttackSpeed = Initializer->GetAttackSpeed();
|
||||
Stats.AttackDamage = Initializer->GetAttackDamage();
|
||||
Stats.AbilityPower = Initializer->GetAbilityPower();
|
||||
Stats.CriticalStrikeChance = Initializer->GetCriticalStrikeChance();
|
||||
Stats.CriticalStrikeDamage = Initializer->GetCriticalStrikeDamage();
|
||||
Stats.ArmorPenetration = Initializer->GetArmorPenetration();
|
||||
Stats.MagicPenetration = Initializer->GetMagicPenetration();
|
||||
Stats.LifeSteal = Initializer->GetLifeSteal();
|
||||
Stats.PhysicalVamp = Initializer->GetPhysicalVamp();
|
||||
Stats.Omnivamp = Initializer->GetOmnivamp();
|
||||
Stats.AbilityHaste = Initializer->GetAbilityHaste();
|
||||
|
||||
SetMultipleCooldownDuration(Initializer->GetCooldownDuration());
|
||||
|
||||
Stats.Mana = Initializer->GetMana();
|
||||
Stats.ManaRegeneration = Initializer->GetManaRegeneration();
|
||||
Stats.Energy = Initializer->GetEnergy();
|
||||
Stats.EnergyRegeneration = Initializer->GetEnergyRegeneration();
|
||||
Stats.AttackRange = Initializer->GetAttackRange();
|
||||
Stats.MovementSpeed = Initializer->GetMovementSpeed();
|
||||
Stats.GoldGeneration = Initializer->GetGoldGeneration();
|
||||
Stats.AttackDamageGrowth = Initializer->GetAttackDamageGrowth();
|
||||
Stats.AttackSpeedGrowth = Initializer->GetAttackSpeedGrowth();
|
||||
Stats.ArmorGrowth = Initializer->GetArmorGrowth();
|
||||
Stats.MagicResistanceGrowth = Initializer->GetMagicResistanceGrowth();
|
||||
Stats.HealthGrowth = Initializer->GetHealthGrowth();
|
||||
Stats.HealthRegenerationGrowth = Initializer->GetHealthRegenerationGrowth();
|
||||
Stats.ManaGrowth = Initializer->GetManaGrowth();
|
||||
Stats.ManaRegenerationGrowth = Initializer->GetManaRegenerationGrowth();
|
||||
for (float Value : StatsValue)
|
||||
{
|
||||
UE_LOG(LogTemp, Warning, TEXT("Values: %f"), Value);
|
||||
}
|
||||
}
|
||||
|
||||
void ADefaultPlayerState::NetMulticast_SetAttackType_Implementation(CooldownType Value)
|
||||
@@ -92,8 +64,3 @@ int32 ADefaultPlayerState::GetCharacterLevel() const
|
||||
{
|
||||
return int32();
|
||||
}
|
||||
|
||||
void ADefaultPlayerState::SetMultipleCooldownDuration(const float* Value)
|
||||
{
|
||||
std::memcpy(&CooldownDuration, Value, sizeof(float) * (uint8)CooldownType::SIZE);
|
||||
}
|
||||
|
||||
@@ -21,7 +21,8 @@ public:
|
||||
ADefaultPlayerState();
|
||||
void GetLifetimeReplicatedProps(TArray< FLifetimeProperty >& OutLifetimeProps) const override;
|
||||
|
||||
void InitPlayerStats();
|
||||
UFUNCTION(Server, Reliable)
|
||||
void InitPlayerStats(const TArray<float>& StatsValue, const TArray<float>& CooldownDurationValue);
|
||||
|
||||
void SetCharacterBPRef(UClass* Value) { CharacterBPRef = Value; }
|
||||
UClass* GetCharacterBPRef() const { return CharacterBPRef; }
|
||||
@@ -34,10 +35,11 @@ public:
|
||||
void SetPlayerCamera(AActor* Actor) { PlayerCamera = Actor; }
|
||||
AActor* GetPlayerCamera() const { return PlayerCamera; }
|
||||
|
||||
UFUNCTION(BlueprintCallable)
|
||||
void SetCooldownDuration(CooldownType Key, float Value) { CooldownDuration[(uint8)Key] = Value; }
|
||||
UFUNCTION(BlueprintCallable)
|
||||
float GetCooldownDuration(CooldownType Key) const { return CooldownDuration[(uint8)Key]; }
|
||||
//fix later
|
||||
//UFUNCTION(BlueprintCallable)
|
||||
//void SetCooldownDuration(CooldownType Key, float Value) { CooldownDuration[(uint8)Key] = Value; }
|
||||
//UFUNCTION(BlueprintCallable)
|
||||
//float GetCooldownDuration(CooldownType Key) const { return CooldownDuration[(uint8)Key]; }
|
||||
|
||||
//Execute on server
|
||||
UFUNCTION(BlueprintCallable, Server, Reliable)
|
||||
@@ -57,14 +59,16 @@ public:
|
||||
|
||||
UFUNCTION(BlueprintCallable)
|
||||
int32 GetCharacterLevel() const;
|
||||
|
||||
//Should be ONLY executed on server!!
|
||||
void SetMultipleCooldownDuration(const float* Value) ;
|
||||
|
||||
UPROPERTY(Replicated, EditAnywhere, BlueprintReadWrite)
|
||||
FDefaultStats Stats;
|
||||
UPROPERTY(Replicated, EditAnywhere, BlueprintReadWrite)
|
||||
FDefaultStats MaxStats;
|
||||
UPROPERTY(Replicated, Transient, EditAnywhere, BlueprintReadWrite)
|
||||
TArray<float> Stats;
|
||||
UPROPERTY(Replicated, Transient, EditAnywhere, BlueprintReadWrite)
|
||||
TArray<float> MaxStats;
|
||||
|
||||
UPROPERTY(Replicated, Transient, BlueprintReadWrite)
|
||||
TArray<float> CooldownDuration;
|
||||
UPROPERTY(Replicated, Transient, BlueprintReadWrite)
|
||||
TArray<float> MaxCooldownDuration;
|
||||
|
||||
private:
|
||||
UPROPERTY(Replicated, Transient)
|
||||
@@ -72,9 +76,6 @@ private:
|
||||
UPROPERTY(Replicated, Transient)
|
||||
TeamType Team;
|
||||
|
||||
UPROPERTY(Replicated, Transient)
|
||||
float CooldownDuration[(uint8)CooldownType::SIZE] = { 0.0f, };
|
||||
|
||||
UPROPERTY(Replicated, Transient)
|
||||
ECharacterState State;
|
||||
UPROPERTY(Replicated, Transient)
|
||||
|
||||
@@ -1,6 +0,0 @@
|
||||
// Fill out your copyright notice in the Description page of Project Settings.
|
||||
|
||||
|
||||
#include "PerformSkill.h"
|
||||
|
||||
// Add default functionality here for any IPerformSkill functions that are not pure virtual.
|
||||
@@ -1,28 +0,0 @@
|
||||
// Fill out your copyright notice in the Description page of Project Settings.
|
||||
|
||||
#pragma once
|
||||
|
||||
#include "CoreMinimal.h"
|
||||
#include "UObject/Interface.h"
|
||||
#include "PerformSkill.generated.h"
|
||||
|
||||
// This class does not need to be modified.
|
||||
UINTERFACE(MinimalAPI)
|
||||
class UPerformSkill : public UInterface
|
||||
{
|
||||
GENERATED_BODY()
|
||||
};
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
class PROMETHER_API IPerformSkill
|
||||
{
|
||||
GENERATED_BODY()
|
||||
|
||||
// Add interface functions to this class. This is the class that will be inherited to implement this interface.
|
||||
public:
|
||||
virtual void Skill4Started() = 0;
|
||||
virtual void Skill4Triggered() = 0;
|
||||
virtual void Skill4Completed() = 0;
|
||||
};
|
||||
@@ -2,7 +2,6 @@
|
||||
#include "CoreMinimal.h"
|
||||
|
||||
#include "DamageType/BaseAttack.h"
|
||||
#include "DefaultStats.h"
|
||||
|
||||
UENUM(BlueprintType)
|
||||
enum class CharacterType : uint8
|
||||
@@ -91,3 +90,45 @@ struct FUniqueObjectID
|
||||
int32 RandomUniqueNumber;
|
||||
};
|
||||
|
||||
UENUM(BlueprintType)
|
||||
enum class EStats : uint8
|
||||
{
|
||||
Health,
|
||||
HPRegeneration,
|
||||
HealAndShieldpower,
|
||||
Armor,
|
||||
MagicResistance,
|
||||
Tenacity,
|
||||
SlowRisist,
|
||||
AttackSpeed,
|
||||
AttackDamage,
|
||||
AbilityPower,
|
||||
CriticalStrikeChance,
|
||||
CriticalStrikeDamage,
|
||||
ArmorPenetration,
|
||||
MagicPenetration,
|
||||
LifeSteal,
|
||||
PhysicalVamp,
|
||||
Omnivamp,
|
||||
AbilityHaste,
|
||||
Mana,
|
||||
ManaRegeneration,
|
||||
Energy,
|
||||
EnergyRegeneration,
|
||||
AttackRange,
|
||||
MovementSpeed,
|
||||
GoldGeneration,
|
||||
AttackDamageGrowth,
|
||||
AttackSpeedGrowth,
|
||||
ArmorGrowth,
|
||||
MagicResistanceGrowth,
|
||||
HealthGrowth,
|
||||
HealthRegenerationGrowth,
|
||||
ManaGrowth,
|
||||
ManaRegenerationGrowth,
|
||||
Skill1Cost,
|
||||
Skill2Cost,
|
||||
Skill3Cost,
|
||||
Skill4Cost,
|
||||
SIZE
|
||||
};
|
||||
Reference in New Issue
Block a user