Extra2D/examples/hello_module/main.cpp

64 lines
1.4 KiB
C++

#include "hello_module.h"
#include <extra2d/extra2d.h>
using namespace extra2d;
class HelloScene : public Scene {
public:
void onEnter() override {
Scene::onEnter();
E2D_INFO("HelloScene entered");
setBackgroundColor(Color(0.1f, 0.1f, 0.2f, 1.0f));
auto hello = Application::get().get<HelloModule>();
if (hello) {
E2D_INFO("Scene calling HelloModule from onEnter...");
hello->sayHello();
}
}
void onUpdate(float dt) override {
Scene::onUpdate(dt);
time_ += dt;
if (time_ >= 1.0f) {
auto *hello = Application::get().get<HelloModule>();
if (hello) {
E2D_INFO("Scene calling HelloModule from onUpdate...");
hello->sayHello();
}
time_ = 0.0f;
}
}
void onRender(Renderer &renderer) override { Scene::onRender(renderer); }
private:
float time_ = 0.0f;
};
int main(int argc, char *argv[]) {
Application &app = Application::get();
// 注册模块
app.use<WindowModule>([](auto &cfg) {
cfg.w = 800;
cfg.h = 600;
});
app.use<RenderModule>([](auto &cfg) { cfg.priority = 10; });
app.use<HelloModule>([](auto &cfg) {
cfg.greeting = "Hello from custom module!";
cfg.repeatCount = 3;
});
if (!app.init()) {
E2D_INFO("Failed to initialize application");
return 1;
}
auto scene = makeShared<HelloScene>();
app.enterScene(scene);
app.run();
app.shutdown();
return 0;
}