Extra2D/examples/push_box/BaseScene.h

58 lines
1.5 KiB
C++

// ============================================================================
// BaseScene.h - Push Box 基础场景类
// 描述: 提供统一的居中视口适配功能,所有游戏场景都应继承此类
// ============================================================================
#pragma once
#include <extra2d.h>
namespace pushbox {
// 游戏逻辑分辨率
static constexpr float GAME_WIDTH = 640.0f;
static constexpr float GAME_HEIGHT = 480.0f;
/**
* @brief Push Box 基础场景类
* 所有游戏场景都应继承此类,以获得统一的居中视口适配功能
*/
class BaseScene : public extra2d::Scene {
public:
/**
* @brief 构造函数
*/
BaseScene();
/**
* @brief 场景进入时调用
*/
void onEnter() override;
/**
* @brief 渲染时调用,设置居中视口
* @param renderer 渲染后端
*/
void onRender(extra2d::Renderer &renderer) override;
/**
* @brief 渲染场景内容,确保视口正确设置
* @param renderer 渲染后端
*/
void renderContent(extra2d::Renderer &renderer) override;
protected:
/**
* @brief 更新视口计算,使游戏内容在窗口中居中显示
*/
void updateViewport();
// 视口适配参数(用于在窗口中居中显示游戏内容)
float scaledGameWidth_ = 0.0f; // 缩放后的游戏宽度
float scaledGameHeight_ = 0.0f; // 缩放后的游戏高度
float viewportOffsetX_ = 0.0f; // 视口水平偏移
float viewportOffsetY_ = 0.0f; // 视口垂直偏移
};
} // namespace pushbox