Files
PHY/Source/PHY/Public/Game/PHYGameModeBase.h
2026-04-26 15:45:03 +08:00

55 lines
1.9 KiB
C++

// Copyright Epic Games, Inc. All Rights Reserved.
#pragma once
#include "CoreMinimal.h"
#include "GameFramework/GameModeBase.h"
#include "PHYGameModeBase.generated.h"
class APHYGameState;
/**
* @brief PHY 游戏模式根类。
*
* GameMode 是服务端玩法框架入口,负责绑定默认 Pawn、Controller、PlayerState、
* GameState 和 HUD。具体玩法系统仍通过 Character、ASC、输入和组件完成。
*/
UCLASS(BlueprintType, Blueprintable)
class PHY_API APHYGameModeBase : public AGameModeBase
{
GENERATED_BODY()
public:
/** @brief 构造默认项目框架类。 */
APHYGameModeBase(const FObjectInitializer& ObjectInitializer = FObjectInitializer::Get());
/** @brief 初始化地图参数并应用项目框架配置。 */
virtual void InitGame(const FString& MapName, const FString& Options, FString& ErrorMessage) override;
/** @brief GameState 初始化后同步项目框架状态。 */
virtual void InitGameState() override;
/** @brief 游戏正式开始时标记框架就绪。 */
virtual void StartPlay() override;
/** @brief 玩家登录后执行项目级初始化扩展点。 */
virtual void PostLogin(APlayerController* NewPlayer) override;
/** @brief 玩家退出时执行项目级清理扩展点。 */
virtual void Logout(AController* Exiting) override;
/** @brief 按控制器返回默认 Pawn 类,后续可扩展职业或模式差异。 */
virtual UClass* GetDefaultPawnClassForController_Implementation(AController* InController) override;
/** @brief 获取强类型 PHY GameState。 */
UFUNCTION(BlueprintCallable, BlueprintPure, Category="PHY|Game")
APHYGameState* GetPHYGameState() const;
protected:
/** @brief 从 UPHYGameFrameworkSettings 应用可配置框架类。 */
virtual void ApplyGameFrameworkSettings();
/** @brief 标记 GameState 框架是否就绪。 */
virtual void SetGameFrameworkReady(bool bNewReady);
};