53 lines
1.6 KiB
C++
53 lines
1.6 KiB
C++
#include <extra2d/extra2d.h>
|
|
|
|
using namespace extra2d;
|
|
|
|
// ============================================================================
|
|
// Hello World 示例
|
|
// ============================================================================
|
|
|
|
int main(int argc, char **argv) {
|
|
E2D_INFO(CAT_APP, "========================");
|
|
E2D_INFO(CAT_APP, "Extra2D Hello World Demo");
|
|
E2D_INFO(CAT_APP, "========================");
|
|
|
|
// 获取应用实例并初始化
|
|
auto &app = Application::instance();
|
|
|
|
if (!app.init()) {
|
|
E2D_ERROR(CAT_APP, "应用初始化失败!");
|
|
return -1;
|
|
}
|
|
|
|
// 获取事件服务并订阅键盘事件
|
|
auto eventService = ServiceLocator::instance().get<IEventService>();
|
|
if (eventService) {
|
|
// 订阅 ESC 键退出
|
|
eventService->on(EventType::KeyPressed, [&app](Event &e) {
|
|
auto &keyEvent = std::get<KeyEvent>(e.data);
|
|
if (keyEvent.key == static_cast<i32>(Key::Escape)) {
|
|
E2D_INFO(CAT_INPUT, "ESC 键按下,退出应用");
|
|
app.quit();
|
|
}
|
|
});
|
|
|
|
// 订阅手柄按钮退出
|
|
eventService->on(EventType::GamepadButtonPressed, [&app](Event &e) {
|
|
auto &btnEvent = std::get<GamepadButtonEvent>(e.data);
|
|
if (btnEvent.button == static_cast<i32>(Gamepad::Start)) {
|
|
E2D_INFO(CAT_INPUT, "START 按钮按下,退出应用");
|
|
app.quit();
|
|
}
|
|
});
|
|
}
|
|
|
|
E2D_INFO(CAT_APP, "开始主循环...");
|
|
|
|
// 运行应用
|
|
app.run();
|
|
|
|
E2D_INFO(CAT_APP, "应用结束");
|
|
|
|
return 0;
|
|
}
|