// Fill out your copyright notice in the Description page of Project Settings. #pragma once struct FServerParameters; struct FProcessParameters; #include "CoreMinimal.h" #include "GameFramework/GameMode.h" #include "Game/GameLift/GameLiftClpTypes.h" #include "DS_GameMode.generated.h" DECLARE_LOG_CATEGORY_EXTERN(LogDS_GameMode, Log, All); struct FGameLiftConfig { bool bIsAnywhereFleet = false; bool bAllOptionsFound = false; int32 ServerPort = 7777; cmdlineparser::details::FParseResult AuthTokenResult; cmdlineparser::details::FParseResult FleetIdResult; cmdlineparser::details::FParseResult HostIdResult; cmdlineparser::details::FParseResult WebSocketUrlResult; }; UCLASS() class DEDICATEDSERVERS_API ADS_GameMode : public AGameMode { GENERATED_BODY() public: protected: virtual void BeginPlay() override; virtual void InitGame(const FString& MapName, const FString& Options, FString& ErrorMessage) override; private: FGameLiftConfig GameLiftConfig; FString CachedCommandLine; static FString GetSHA256Hash(const FString& InString); void InitGameLift(); bool GetAnywhereFleetParameters(const FString& CommandLineString); void LogAnywhereFleetParameters(); TSharedPtr ProcessParameters; static void LogServerParameters(const FServerParameters& InServerParameters); static FString GetValueOrHash(const FString& Value); };