2026-02-15 17:00:39 +08:00
|
|
|
|
#pragma once
|
|
|
|
|
|
|
2026-02-16 23:14:12 +08:00
|
|
|
|
#include <extra2d/core/module.h>
|
2026-02-15 17:00:39 +08:00
|
|
|
|
#include <string>
|
2026-02-17 00:34:14 +08:00
|
|
|
|
#include <functional>
|
2026-02-15 17:00:39 +08:00
|
|
|
|
|
|
|
|
|
|
namespace extra2d {
|
|
|
|
|
|
|
2026-02-17 00:34:14 +08:00
|
|
|
|
/**
|
|
|
|
|
|
* @brief Hello模块配置结构
|
|
|
|
|
|
*/
|
|
|
|
|
|
struct HelloCfg {
|
|
|
|
|
|
std::string greeting;
|
|
|
|
|
|
int repeatCount;
|
|
|
|
|
|
int priority;
|
|
|
|
|
|
|
|
|
|
|
|
HelloCfg()
|
|
|
|
|
|
: greeting("Hello, Extra2D!")
|
|
|
|
|
|
, repeatCount(1)
|
|
|
|
|
|
, priority(100) {}
|
|
|
|
|
|
};
|
|
|
|
|
|
|
2026-02-15 17:00:39 +08:00
|
|
|
|
/**
|
2026-02-16 23:14:12 +08:00
|
|
|
|
* @brief Hello模块示例
|
|
|
|
|
|
* 展示如何创建自定义模块
|
2026-02-15 17:00:39 +08:00
|
|
|
|
*/
|
2026-02-16 23:14:12 +08:00
|
|
|
|
class HelloModule : public Module {
|
2026-02-15 17:00:39 +08:00
|
|
|
|
public:
|
|
|
|
|
|
/**
|
2026-02-17 00:34:14 +08:00
|
|
|
|
* @brief 配置类型别名(向后兼容)
|
2026-02-15 17:00:39 +08:00
|
|
|
|
*/
|
2026-02-17 00:34:14 +08:00
|
|
|
|
using Cfg = HelloCfg;
|
|
|
|
|
|
|
2026-02-15 17:00:39 +08:00
|
|
|
|
/**
|
2026-02-16 23:14:12 +08:00
|
|
|
|
* @brief 构造函数
|
|
|
|
|
|
* @param cfg 配置
|
2026-02-15 17:00:39 +08:00
|
|
|
|
*/
|
2026-02-17 00:34:14 +08:00
|
|
|
|
explicit HelloModule(const HelloCfg& cfg = HelloCfg{});
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
* @brief 构造函数(Lambda 配置)
|
|
|
|
|
|
* @param configFn 配置函数
|
|
|
|
|
|
*/
|
|
|
|
|
|
explicit HelloModule(std::function<void(HelloCfg&)> configFn);
|
2026-02-16 23:14:12 +08:00
|
|
|
|
|
2026-02-15 17:00:39 +08:00
|
|
|
|
/**
|
2026-02-16 23:14:12 +08:00
|
|
|
|
* @brief 析构函数
|
2026-02-15 17:00:39 +08:00
|
|
|
|
*/
|
2026-02-16 23:14:12 +08:00
|
|
|
|
~HelloModule() override;
|
|
|
|
|
|
|
|
|
|
|
|
bool init() override;
|
2026-02-15 17:00:39 +08:00
|
|
|
|
void shutdown() override;
|
2026-02-16 23:14:12 +08:00
|
|
|
|
bool ok() const override { return initialized_; }
|
|
|
|
|
|
const char* name() const override { return "hello"; }
|
|
|
|
|
|
int priority() const override { return cfg_.priority; }
|
|
|
|
|
|
|
2026-02-15 17:00:39 +08:00
|
|
|
|
/**
|
|
|
|
|
|
* @brief 执行问候操作
|
|
|
|
|
|
*/
|
|
|
|
|
|
void sayHello() const;
|
|
|
|
|
|
|
|
|
|
|
|
private:
|
2026-02-17 00:34:14 +08:00
|
|
|
|
HelloCfg cfg_;
|
2026-02-15 17:00:39 +08:00
|
|
|
|
bool initialized_ = false;
|
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
} // namespace extra2d
|