Extra2D/examples/flappy_bird/GameOverLayer.h

63 lines
1.4 KiB
C++

// ============================================================================
// GameOverLayer.h - 游戏结束层
// 描述: 显示游戏结束界面、得分和奖牌
// ============================================================================
#pragma once
#include <extra2d.h>
namespace flappybird {
/**
* @brief 游戏结束层类
* 显示游戏结束后的得分面板和按钮
*/
class GameOverLayer : public extra2d::Node {
public:
/**
* @brief 构造函数
* @param score 本局得分
*/
GameOverLayer(int score);
/**
* @brief 进入场景时调用
*/
void onEnter() override;
/**
* @brief 每帧更新时调用
* @param dt 时间间隔
*/
void onUpdate(float dt) override;
private:
/**
* @brief 初始化得分面板
* @param score 本局得分
* @param screenHeight 屏幕高度
*/
void initPanel(int score, float screenHeight);
/**
* @brief 初始化按钮
*/
void initButtons();
/**
* @brief 根据得分获取奖牌
* @param score 得分
* @return 奖牌精灵帧
*/
extra2d::Ptr<extra2d::SpriteFrame> getMedal(int score);
int score_ = 0; // 本局得分
bool animationDone_ = false; // 动画是否完成
extra2d::Ptr<extra2d::Button> restartBtn_; // 重新开始按钮
extra2d::Ptr<extra2d::Button> menuBtn_; // 菜单按钮
extra2d::Ptr<extra2d::Button> shareBtn_; // 分享按钮
};
} // namespace flappybird