Compare commits
2 Commits
3a58e90802
...
22aee515ed
| Author | SHA1 | Date | |
|---|---|---|---|
| 22aee515ed | |||
| 8f84dcf3d3 |
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.
@@ -8,9 +8,9 @@
|
|||||||
|
|
||||||
UGasaAttributeSet::UGasaAttributeSet()
|
UGasaAttributeSet::UGasaAttributeSet()
|
||||||
{
|
{
|
||||||
InitHealth( 100.f );
|
InitHealth( 50.f );
|
||||||
InitMaxHealth( 100.f );
|
InitMaxHealth( 100.f );
|
||||||
InitMana( 50.f );
|
InitMana( 25.f );
|
||||||
InitMaxMana( 50.f );
|
InitMaxMana( 50.f );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -17,7 +17,7 @@ void AGasaEffectActor::ApplyEffectToActor(AActor* Actor, TSubclassOf<UGameplayEf
|
|||||||
FGameplayEffectContextHandle
|
FGameplayEffectContextHandle
|
||||||
Context = AS->MakeEffectContext();
|
Context = AS->MakeEffectContext();
|
||||||
Context.AddSourceObject(Actor);
|
Context.AddSourceObject(Actor);
|
||||||
|
|
||||||
FGameplayEffectSpecHandle Spec = AS->MakeOutgoingSpec( EffectClass, 1.0f, Context );
|
FGameplayEffectSpecHandle Spec = AS->MakeOutgoingSpec( EffectClass, 1.0f, Context );
|
||||||
AS->ApplyGameplayEffectSpecToSelf( * Spec.Data );
|
AS->ApplyGameplayEffectSpecToSelf( * Spec.Data );
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -13,7 +13,10 @@ class GASA_API AGasaEffectActor : public AGasaActor
|
|||||||
public:
|
public:
|
||||||
|
|
||||||
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Gameplay Effects")
|
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Gameplay Effects")
|
||||||
TSoftClassPtr<UGameplayEffect> InstantEffectClass;
|
TSubclassOf<UGameplayEffect> InstantEffectClass;
|
||||||
|
|
||||||
|
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Gameplay Effects")
|
||||||
|
TSubclassOf<UGameplayEffect> DurationEffectClass;
|
||||||
|
|
||||||
AGasaEffectActor();
|
AGasaEffectActor();
|
||||||
|
|
||||||
|
|||||||
@@ -29,7 +29,6 @@ AGasaGameState::AGasaGameState()
|
|||||||
void AGasaGameState::OnGameFrameworkInitialized()
|
void AGasaGameState::OnGameFrameworkInitialized()
|
||||||
{
|
{
|
||||||
NetLog("Received gameplay framework initialization.");
|
NetLog("Received gameplay framework initialization.");
|
||||||
|
|
||||||
if (IsServer())
|
if (IsServer())
|
||||||
{
|
{
|
||||||
if (PlayerArray.Num() > 0)
|
if (PlayerArray.Num() > 0)
|
||||||
@@ -41,7 +40,6 @@ void AGasaGameState::OnGameFrameworkInitialized()
|
|||||||
NetLog("Was not able to assign HostingPlayer!", ELogV::Error);
|
NetLog("Was not able to assign HostingPlayer!", ELogV::Error);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
BP_OnGameFrameworkInitialized();
|
BP_OnGameFrameworkInitialized();
|
||||||
}
|
}
|
||||||
#pragma endregion GameFramework
|
#pragma endregion GameFramework
|
||||||
@@ -71,7 +69,6 @@ void AGasaGameState::HandleBeginPlay()
|
|||||||
void AGasaGameState::SeamlessTravelTransitionCheckpoint(bool bToTransitionMap)
|
void AGasaGameState::SeamlessTravelTransitionCheckpoint(bool bToTransitionMap)
|
||||||
{
|
{
|
||||||
Super::SeamlessTravelTransitionCheckpoint(bToTransitionMap);
|
Super::SeamlessTravelTransitionCheckpoint(bToTransitionMap);
|
||||||
|
|
||||||
NetLog("SeamlessTravelTransitionCheckpoint");
|
NetLog("SeamlessTravelTransitionCheckpoint");
|
||||||
NetLog(FString("ToTransitionMap: ") + FString(bToTransitionMap ? "true" : "false"));
|
NetLog(FString("ToTransitionMap: ") + FString(bToTransitionMap ? "true" : "false"));
|
||||||
|
|
||||||
@@ -90,7 +87,6 @@ void AGasaGameState::SeamlessTravelTransitionCheckpoint(bool bToTransitionMap)
|
|||||||
void AGasaGameState::BeginPlay()
|
void AGasaGameState::BeginPlay()
|
||||||
{
|
{
|
||||||
Super::BeginPlay();
|
Super::BeginPlay();
|
||||||
|
|
||||||
NetLog("BeginPlay");
|
NetLog("BeginPlay");
|
||||||
|
|
||||||
// Notified as initialized here as any possible components should also be initialized by this point.
|
// Notified as initialized here as any possible components should also be initialized by this point.
|
||||||
@@ -100,18 +96,17 @@ void AGasaGameState::BeginPlay()
|
|||||||
GI->NotifyGameFrameworkClassReady(EGameFrameworkClassFlag::GameState);
|
GI->NotifyGameFrameworkClassReady(EGameFrameworkClassFlag::GameState);
|
||||||
|
|
||||||
#if ENABLE_COG
|
#if ENABLE_COG
|
||||||
CogWindowManager = NewObject<UCogWindowManager>(this);
|
CogWindowManager = NewObject<UCogWindowManager>(this);
|
||||||
CogWindowManagerRef = CogWindowManager;
|
CogWindowManagerRef = CogWindowManager;
|
||||||
|
|
||||||
// Add all the built-in windows
|
// Add all the built-in windows
|
||||||
Cog::AddAllWindows(*CogWindowManager);
|
Cog::AddAllWindows(*CogWindowManager);
|
||||||
#endif //ENABLE_COG
|
#endif //ENABLE_COG
|
||||||
}
|
}
|
||||||
|
|
||||||
void AGasaGameState::PostInitializeComponents()
|
void AGasaGameState::PostInitializeComponents()
|
||||||
{
|
{
|
||||||
NetLog("PostInitializeComponents");
|
NetLog("PostInitializeComponents");
|
||||||
|
|
||||||
Super::PostInitializeComponents();
|
Super::PostInitializeComponents();
|
||||||
|
|
||||||
if ( ! GetWorld()->IsEditorWorld() && IsServer())
|
if ( ! GetWorld()->IsEditorWorld() && IsServer())
|
||||||
@@ -135,7 +130,8 @@ void AGasaGameState::Tick(float DeltaSeconds)
|
|||||||
Super::Tick(DeltaSeconds);
|
Super::Tick(DeltaSeconds);
|
||||||
|
|
||||||
#if ENABLE_COG
|
#if ENABLE_COG
|
||||||
CogWindowManager->Tick(DeltaSeconds);
|
if (CogWindowManager)
|
||||||
|
CogWindowManager->Tick(DeltaSeconds);
|
||||||
#endif //ENABLE_COG
|
#endif //ENABLE_COG
|
||||||
}
|
}
|
||||||
#pragma endregion Actor
|
#pragma endregion Actor
|
||||||
|
|||||||
@@ -0,0 +1,147 @@
|
|||||||
|
#include "GasaGameState.h"
|
||||||
|
|
||||||
|
#include "CogAll.h"
|
||||||
|
#include "CogWindowManager.h"
|
||||||
|
#include "GasaPlayerState.h"
|
||||||
|
#include "GasaGameInstance.h"
|
||||||
|
#include "Net/UnrealNetwork.h"
|
||||||
|
#include "Networking/GasaNetLibrary_Inlines.h"
|
||||||
|
using namespace Gasa;
|
||||||
|
|
||||||
|
AGasaGameState::AGasaGameState()
|
||||||
|
{
|
||||||
|
// Enable ticking
|
||||||
|
PrimaryActorTick.bCanEverTick = true;
|
||||||
|
PrimaryActorTick.SetTickFunctionEnable(true);
|
||||||
|
PrimaryActorTick.bStartWithTickEnabled = true;
|
||||||
|
|
||||||
|
// Replication
|
||||||
|
bReplicates = true;
|
||||||
|
bNetLoadOnClient = false;
|
||||||
|
NetDormancy = DORM_Awake;
|
||||||
|
NetCullDistanceSquared = NetCullDist_Default;
|
||||||
|
NetUpdateFrequency = 10.0f;
|
||||||
|
MinNetUpdateFrequency = 1.0f;
|
||||||
|
NetPriority = 5.0f;
|
||||||
|
}
|
||||||
|
|
||||||
|
#pragma region GameFramework
|
||||||
|
void AGasaGameState::OnGameFrameworkInitialized()
|
||||||
|
{
|
||||||
|
NetLog("Received gameplay framework initialization.");
|
||||||
|
if (IsServer())
|
||||||
|
{
|
||||||
|
if (PlayerArray.Num() > 0)
|
||||||
|
{
|
||||||
|
ListenServerHost = Cast<AGasaPlayerState>(PlayerArray[0]);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
NetLog("Was not able to assign HostingPlayer!", ELogV::Error);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
BP_OnGameFrameworkInitialized();
|
||||||
|
}
|
||||||
|
#pragma endregion GameFramework
|
||||||
|
|
||||||
|
#pragma region Networking
|
||||||
|
void AGasaGameState::Client_OnRep_OnlinePlayers()
|
||||||
|
{
|
||||||
|
}
|
||||||
|
#pragma endregion Networking
|
||||||
|
|
||||||
|
#pragma region Seamless Travel
|
||||||
|
void AGasaGameState::Multicast_R_NotifySeamlessTravelEnd_Implementation()
|
||||||
|
{
|
||||||
|
NetLog("Multicast_R_NotifySeamlessTravelEnd_Implementation");
|
||||||
|
BP_Event_OnSeamlessTravelEnd.Broadcast();
|
||||||
|
Event_OnSeamlessTravelEnd.Broadcast();
|
||||||
|
}
|
||||||
|
#pragma endregion Seamless Travel
|
||||||
|
|
||||||
|
#pragma region GameStateBase
|
||||||
|
void AGasaGameState::HandleBeginPlay()
|
||||||
|
{
|
||||||
|
Super::HandleBeginPlay();
|
||||||
|
NetLog("HandleBeginPlay: Directly called from GM");
|
||||||
|
}
|
||||||
|
|
||||||
|
void AGasaGameState::SeamlessTravelTransitionCheckpoint(bool bToTransitionMap)
|
||||||
|
{
|
||||||
|
Super::SeamlessTravelTransitionCheckpoint(bToTransitionMap);
|
||||||
|
NetLog("SeamlessTravelTransitionCheckpoint");
|
||||||
|
NetLog(FString("ToTransitionMap: ") + FString(bToTransitionMap ? "true" : "false"));
|
||||||
|
|
||||||
|
if (bToTransitionMap)
|
||||||
|
{
|
||||||
|
Event_OnSeamlessTravelStart.Broadcast();
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
Multicast_R_NotifySeamlessTravelEnd();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#pragma endregion GameStateBase
|
||||||
|
|
||||||
|
#pragma region Actor
|
||||||
|
void AGasaGameState::BeginPlay()
|
||||||
|
{
|
||||||
|
Super::BeginPlay();
|
||||||
|
NetLog("BeginPlay");
|
||||||
|
|
||||||
|
// Notified as initialized here as any possible components should also be initialized by this point.
|
||||||
|
UGasaGameInstance*
|
||||||
|
GI = GetGameInstance<UGasaGameInstance>();
|
||||||
|
GI->Event_OnGameFrameworkInitialized.AddDynamic(this, & ThisClass::OnGameFrameworkInitialized);
|
||||||
|
GI->NotifyGameFrameworkClassReady(EGameFrameworkClassFlag::GameState);
|
||||||
|
|
||||||
|
#if ENABLE_COG
|
||||||
|
CogWindowManager = NewObject<UCogWindowManager>(this);
|
||||||
|
CogWindowManagerRef = CogWindowManager;
|
||||||
|
|
||||||
|
// Add all the built-in windows
|
||||||
|
Cog::AddAllWindows(*CogWindowManager);
|
||||||
|
#endif //ENABLE_COG
|
||||||
|
}
|
||||||
|
|
||||||
|
void AGasaGameState::PostInitializeComponents()
|
||||||
|
{
|
||||||
|
NetLog("PostInitializeComponents");
|
||||||
|
Super::PostInitializeComponents();
|
||||||
|
|
||||||
|
if ( ! GetWorld()->IsEditorWorld() && IsServer())
|
||||||
|
{
|
||||||
|
OnlinePlayers.Empty();
|
||||||
|
#if 0
|
||||||
|
const auto GI = Cast<UGasaGameInstance>(GetGameInstance());
|
||||||
|
if (GI != nullptr)
|
||||||
|
{
|
||||||
|
int32 NumConnections = GI->SessionSettings.bPublicGame
|
||||||
|
? GI->SessionSettings.PublicConnections
|
||||||
|
: GI->SessionSettings.PrivateConnections;
|
||||||
|
OnlinePlayers.Init(nullptr, NumConnections);
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void AGasaGameState::Tick(float DeltaSeconds)
|
||||||
|
{
|
||||||
|
Super::Tick(DeltaSeconds);
|
||||||
|
|
||||||
|
#if ENABLE_COG
|
||||||
|
if (CogWindowManager)
|
||||||
|
CogWindowManager->Tick(DeltaSeconds);
|
||||||
|
#endif //ENABLE_COG
|
||||||
|
}
|
||||||
|
#pragma endregion Actor
|
||||||
|
|
||||||
|
#pragma region UObject
|
||||||
|
void AGasaGameState::GetLifetimeReplicatedProps(TArray<FLifetimeProperty>& OutLifetimeProps) const
|
||||||
|
{
|
||||||
|
Super::GetLifetimeReplicatedProps(OutLifetimeProps);
|
||||||
|
|
||||||
|
DOREPLIFETIME(AGasaGameState, ListenServerHost);
|
||||||
|
DOREPLIFETIME(AGasaGameState, OnlinePlayers);
|
||||||
|
}
|
||||||
|
#pragma endregion UObject
|
||||||
@@ -52,7 +52,7 @@ public:
|
|||||||
|
|
||||||
#pragma region Actor
|
#pragma region Actor
|
||||||
void BeginPlay() override;
|
void BeginPlay() override;
|
||||||
#pragma region endActor
|
#pragma endregion endActor
|
||||||
};
|
};
|
||||||
|
|
||||||
namespace Gasa
|
namespace Gasa
|
||||||
|
|||||||
Reference in New Issue
Block a user