#pragma once // ============================================================================ // engine.h - 引擎核心 // ============================================================================ #include // 前向声明 typedef struct Window Window; // 引擎配置 typedef struct { const char* app_name; int window_width; int window_height; int fullscreen; int vsync; } EngineConfig; // 引擎状态 typedef struct { int running; int initialized; EngineConfig config; Window* window; void* renderer; double delta_time; double total_time; int fps; uint64_t frame_count; } Engine; // 初始化默认配置 static inline EngineConfig engine_default_config(void) { EngineConfig config; config.app_name = "MiMo Engine ASM"; config.window_width = 1280; config.window_height = 720; config.fullscreen = 0; config.vsync = 1; return config; } // 引擎函数 Engine* engine_create(void); void engine_destroy(Engine* engine); int engine_init(Engine* engine, const EngineConfig* config); void engine_run(Engine* engine); void engine_shutdown(Engine* engine); void engine_request_quit(Engine* engine); // 回调 typedef void (*EngineUpdateCallback)(Engine* engine, double delta_time); typedef void (*EngineRenderCallback)(Engine* engine); typedef void (*EngineKeyCallback)(Engine* engine, int key); typedef void (*EngineResizeCallback)(Engine* engine, int width, int height); void engine_set_update_callback(Engine* engine, EngineUpdateCallback callback); void engine_set_render_callback(Engine* engine, EngineRenderCallback callback); void engine_set_key_callback(Engine* engine, EngineKeyCallback callback); void engine_set_resize_callback(Engine* engine, EngineResizeCallback callback);