55 lines
1.9 KiB
C++
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);
|
|
};
|