From b9b7e5344b80a43470f5e220703547e31ce3b16f Mon Sep 17 00:00:00 2001 From: LongLy Date: Tue, 14 Jan 2025 13:35:23 -0700 Subject: [PATCH] Implemented some classes to unlock OLSGameMode's constructor --- Source/ols/Private/GameModes/OLSGameMode.cpp | 26 +++++++++++-------- Source/ols/Private/GameModes/OLSGameState.cpp | 4 +++ .../OLSModularGameMode.cpp | 25 +++++++++++------- Source/ols/Private/Systems/OLSGameSession.cpp | 26 +++++++++++++++++++ Source/ols/Private/UI/OLSHUD.cpp | 4 +++ Source/ols/Public/Characters/OLSCharacter.h | 4 ++- Source/ols/Public/GameModes/OLSGameMode.h | 2 +- Source/ols/Public/GameModes/OLSGameState.h | 16 ++++++++++++ .../OLSModularGameMode.h | 4 +-- Source/ols/Public/Systems/OLSGameSession.h | 25 ++++++++++++++++++ Source/ols/Public/UI/OLSHUD.h | 16 ++++++++++++ 11 files changed, 127 insertions(+), 25 deletions(-) create mode 100644 Source/ols/Private/GameModes/OLSGameState.cpp create mode 100644 Source/ols/Private/Systems/OLSGameSession.cpp create mode 100644 Source/ols/Private/UI/OLSHUD.cpp create mode 100644 Source/ols/Public/GameModes/OLSGameState.h create mode 100644 Source/ols/Public/Systems/OLSGameSession.h create mode 100644 Source/ols/Public/UI/OLSHUD.h diff --git a/Source/ols/Private/GameModes/OLSGameMode.cpp b/Source/ols/Private/GameModes/OLSGameMode.cpp index e5a2ea9..1c3a908 100644 --- a/Source/ols/Private/GameModes/OLSGameMode.cpp +++ b/Source/ols/Private/GameModes/OLSGameMode.cpp @@ -5,27 +5,31 @@ #include "CommonUserSubsystem.h" #include "GameMapsSettings.h" +#include "Characters/OLSCharacter.h" #include "DataAssets/OLSExperienceDefinitionDataAsset.h" #include "DataAssets/OLSPawnDataAsset.h" #include "GameModes/OLSExperienceManagerComponent.h" +#include "GameModes/OLSGameState.h" #include "Kismet/GameplayStatics.h" +#include "Player/OLSPlayerController.h" #include "Player/OLSPlayerState.h" #include "Systems/OLSAssetManager.h" +#include "Systems/OLSGameSession.h" +#include "UI/OLSHUD.h" #include UE_INLINE_GENERATED_CPP_BY_NAME(OLSGameMode) -// AOLSGameMode::AOLSGameMode(const FObjectInitializer& objectInitializer) : Super(objectInitializer) -// { -// // @TODO: Implement this. -// // GameStateClass = ALyraGameState::StaticClass(); -// // GameSessionClass = ALyraGameSession::StaticClass(); -// // PlayerControllerClass = ALyraPlayerController::StaticClass(); -// // ReplaySpectatorPlayerControllerClass = ALyraReplayPlayerController::StaticClass(); -// // PlayerStateClass = ALyraPlayerState::StaticClass(); -// // DefaultPawnClass = ALyraCharacter::StaticClass(); -// // HUDClass = ALyraHUD::StaticClass(); -// } +AOLSGameMode::AOLSGameMode(const FObjectInitializer& objectInitializer) : Super(objectInitializer) +{ + GameStateClass = AOLSGameState::StaticClass(); + GameSessionClass = AOLSGameSession::StaticClass(); + PlayerControllerClass = AOLSPlayerController::StaticClass(); + // ReplaySpectatorPlayerControllerClass = ALyraReplayPlayerController::StaticClass(); + PlayerStateClass = AOLSPlayerState::StaticClass(); + DefaultPawnClass = AOLSCharacter::StaticClass(); + HUDClass = AOLSHUD::StaticClass(); +} const UOLSPawnDataAsset* AOLSGameMode::GetPawnDataForController(const AController* controller) const { diff --git a/Source/ols/Private/GameModes/OLSGameState.cpp b/Source/ols/Private/GameModes/OLSGameState.cpp new file mode 100644 index 0000000..5061566 --- /dev/null +++ b/Source/ols/Private/GameModes/OLSGameState.cpp @@ -0,0 +1,4 @@ +// © 2024 Long Ly. All rights reserved. Any unauthorized use, reproduction, or distribution of this trademark is strictly prohibited and may result in legal action. + + +#include "GameModes/OLSGameState.h" diff --git a/Source/ols/Private/ModularGameplayActors/OLSModularGameMode.cpp b/Source/ols/Private/ModularGameplayActors/OLSModularGameMode.cpp index 67e856d..645d739 100644 --- a/Source/ols/Private/ModularGameplayActors/OLSModularGameMode.cpp +++ b/Source/ols/Private/ModularGameplayActors/OLSModularGameMode.cpp @@ -3,18 +3,23 @@ #include "ModularGameplayActors/OLSModularGameMode.h" -AOLSModularGameModeBase::AOLSModularGameModeBase() +#include "ModularGameplayActors/OLSModularCharacter.h" +#include "ModularGameplayActors/OLSModularGameState.h" +#include "ModularGameplayActors/OLSModularPlayerController.h" +#include "ModularGameplayActors/OLSModularPlayerState.h" + +AOLSModularGameModeBase::AOLSModularGameModeBase(const FObjectInitializer& objectInitializer) : Super(objectInitializer) { - // GameStateClass = AGSCModularGameStateBase::StaticClass(); - // PlayerControllerClass = AGSCModularPlayerController::StaticClass(); - // PlayerStateClass = APlayerState::StaticClass(); - // DefaultPawnClass = AGSCModularCharacter::StaticClass(); + GameStateClass = AOLSModularGameStateBase::StaticClass(); + PlayerControllerClass = AOLSModularPlayerController::StaticClass(); + PlayerStateClass = AOLSModularPlayerState::StaticClass(); + DefaultPawnClass = AOLSModularCharacter::StaticClass(); } -AOLSModularGameMode::AOLSModularGameMode() +AOLSModularGameMode::AOLSModularGameMode(const FObjectInitializer& objectInitializer) : Super(objectInitializer) { - // GameStateClass = AGSCModularGameState::StaticClass(); - // PlayerControllerClass = AGSCModularPlayerController::StaticClass(); - // PlayerStateClass = APlayerState::StaticClass(); - // DefaultPawnClass = AGSCModularCharacter::StaticClass(); + GameStateClass = AOLSModularGameStateBase::StaticClass(); + PlayerControllerClass = AOLSModularPlayerController::StaticClass(); + PlayerStateClass = AOLSModularPlayerState::StaticClass(); + DefaultPawnClass = AOLSModularCharacter::StaticClass(); } diff --git a/Source/ols/Private/Systems/OLSGameSession.cpp b/Source/ols/Private/Systems/OLSGameSession.cpp new file mode 100644 index 0000000..0ab96bf --- /dev/null +++ b/Source/ols/Private/Systems/OLSGameSession.cpp @@ -0,0 +1,26 @@ +// © 2024 Long Ly. All rights reserved. Any unauthorized use, reproduction, or distribution of this trademark is strictly prohibited and may result in legal action. + + +#include "Systems/OLSGameSession.h" + + +// Sets default values +AOLSGameSession::AOLSGameSession() +{ + // 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 AOLSGameSession::BeginPlay() +{ + Super::BeginPlay(); + +} + +// Called every frame +void AOLSGameSession::Tick(float DeltaTime) +{ + Super::Tick(DeltaTime); +} + diff --git a/Source/ols/Private/UI/OLSHUD.cpp b/Source/ols/Private/UI/OLSHUD.cpp new file mode 100644 index 0000000..d2d2990 --- /dev/null +++ b/Source/ols/Private/UI/OLSHUD.cpp @@ -0,0 +1,4 @@ +// © 2024 Long Ly. All rights reserved. Any unauthorized use, reproduction, or distribution of this trademark is strictly prohibited and may result in legal action. + + +#include "UI/OLSHUD.h" diff --git a/Source/ols/Public/Characters/OLSCharacter.h b/Source/ols/Public/Characters/OLSCharacter.h index 8234d1f..43c08ae 100644 --- a/Source/ols/Public/Characters/OLSCharacter.h +++ b/Source/ols/Public/Characters/OLSCharacter.h @@ -8,10 +8,12 @@ #include "Interfaces/OLSAnimationInterface.h" #include "Interfaces/OLSMoveableInterface.h" #include "Interfaces/OLSReplicatedMovableInterface.h" +#include "ModularGameplayActors/OLSModularCharacter.h" +#include "ModularGameplayActors/OLSModularPlayerStateCharacter.h" #include "OLSCharacter.generated.h" UCLASS() -class OLS_API AOLSCharacter : public ACharacter, +class OLS_API AOLSCharacter : public AOLSModularPlayerStateCharacter, public IOLSMoveableInterface, public IOLSAnimationInterface { diff --git a/Source/ols/Public/GameModes/OLSGameMode.h b/Source/ols/Public/GameModes/OLSGameMode.h index 7ef23bf..d68e89e 100644 --- a/Source/ols/Public/GameModes/OLSGameMode.h +++ b/Source/ols/Public/GameModes/OLSGameMode.h @@ -28,7 +28,7 @@ class OLS_API AOLSGameMode : public AOLSModularGameModeBase public: - // AOLSGameMode(const FObjectInitializer& objectInitializer); + AOLSGameMode(const FObjectInitializer& objectInitializer); UFUNCTION(BlueprintCallable, Category = "OLS|Pawn") const class UOLSPawnDataAsset* GetPawnDataForController(const class AController* controller) const; diff --git a/Source/ols/Public/GameModes/OLSGameState.h b/Source/ols/Public/GameModes/OLSGameState.h new file mode 100644 index 0000000..53a7e2f --- /dev/null +++ b/Source/ols/Public/GameModes/OLSGameState.h @@ -0,0 +1,16 @@ +// © 2024 Long Ly. All rights reserved. Any unauthorized use, reproduction, or distribution of this trademark is strictly prohibited and may result in legal action. + +#pragma once + +#include "CoreMinimal.h" +#include "ModularGameplayActors/OLSModularGameState.h" +#include "OLSGameState.generated.h" + +/** + * + */ +UCLASS(Config = Game) +class OLS_API AOLSGameState : public AOLSModularGameState +{ + GENERATED_BODY() +}; diff --git a/Source/ols/Public/ModularGameplayActors/OLSModularGameMode.h b/Source/ols/Public/ModularGameplayActors/OLSModularGameMode.h index 3d24374..37f0205 100644 --- a/Source/ols/Public/ModularGameplayActors/OLSModularGameMode.h +++ b/Source/ols/Public/ModularGameplayActors/OLSModularGameMode.h @@ -15,7 +15,7 @@ class OLS_API AOLSModularGameModeBase : public AGameModeBase public: - AOLSModularGameModeBase(); + AOLSModularGameModeBase(const FObjectInitializer& objectInitializer); }; /** Pair this with a ModularGameState */ @@ -26,5 +26,5 @@ class OLS_API AOLSModularGameMode : public AGameMode public: - AOLSModularGameMode(); + AOLSModularGameMode(const FObjectInitializer& objectInitializer); }; diff --git a/Source/ols/Public/Systems/OLSGameSession.h b/Source/ols/Public/Systems/OLSGameSession.h new file mode 100644 index 0000000..cf50b21 --- /dev/null +++ b/Source/ols/Public/Systems/OLSGameSession.h @@ -0,0 +1,25 @@ +// © 2024 Long Ly. All rights reserved. Any unauthorized use, reproduction, or distribution of this trademark is strictly prohibited and may result in legal action. + +#pragma once + +#include "CoreMinimal.h" +#include "GameFramework/GameSession.h" +#include "OLSGameSession.generated.h" + +UCLASS() +class OLS_API AOLSGameSession : public AGameSession +{ + GENERATED_BODY() + +public: + // Sets default values for this actor's properties + AOLSGameSession(); + +protected: + // Called when the game starts or when spawned + virtual void BeginPlay() override; + +public: + // Called every frame + virtual void Tick(float DeltaTime) override; +}; diff --git a/Source/ols/Public/UI/OLSHUD.h b/Source/ols/Public/UI/OLSHUD.h new file mode 100644 index 0000000..4be30e2 --- /dev/null +++ b/Source/ols/Public/UI/OLSHUD.h @@ -0,0 +1,16 @@ +// © 2024 Long Ly. All rights reserved. Any unauthorized use, reproduction, or distribution of this trademark is strictly prohibited and may result in legal action. + +#pragma once + +#include "CoreMinimal.h" +#include "GameFramework/HUD.h" +#include "OLSHUD.generated.h" + +/** + * + */ +UCLASS() +class OLS_API AOLSHUD : public AHUD +{ + GENERATED_BODY() +};