diff -r b3295f94e5e9 -r 5b3beb90e1a6 qmlfrontend/engine_interface.h --- a/qmlfrontend/engine_interface.h Sun Nov 13 08:45:10 2022 +0100 +++ b/qmlfrontend/engine_interface.h Tue Nov 15 14:27:22 2022 +0100 @@ -4,8 +4,7 @@ #include #include -#ifdef __cplusplus -#define ENUM_CLASS enum +#include "../rust/lib-hedgewars-engine/target/lib-hedgewars-engine.hpp" #ifndef Q_NAMESPACE #define Q_NAMESPACE @@ -21,69 +20,35 @@ namespace Engine { extern "C" { -#else -#define ENUM_CLASS enum class -#endif - -typedef struct _EngineInstance EngineInstance; - -typedef struct { - uint32_t width; - uint32_t height; - uint8_t hedgehogs_number; - unsigned char* land; -} PreviewInfo; -typedef uint32_t hedgewars_engine_protocol_version_t(); -typedef EngineInstance* start_engine_t(const char* data_path); -typedef void generate_preview_t(EngineInstance* engine_state, - PreviewInfo* preview); -typedef void dispose_preview_t(EngineInstance* engine_state); -typedef void cleanup_t(EngineInstance* engine_state); +using EngineInstance = hwengine::EngineInstance; +using PreviewInfo = hwengine::PreviewInfo; -typedef void send_ipc_t(EngineInstance* engine_state, uint8_t* buf, - size_t size); -typedef size_t read_ipc_t(EngineInstance* engine_state, uint8_t* buf, - size_t size); - -typedef void setup_current_gl_context_t(EngineInstance* engine_state, - uint16_t width, uint16_t height, - void (*(const char*))()); -typedef void render_frame_t(EngineInstance* engine_state); +using hedgewars_engine_protocol_version_t = + decltype(hwengine::hedgewars_engine_protocol_version); -typedef bool advance_simulation_t(EngineInstance* engine_state, uint32_t ticks); - -typedef void move_camera_t(EngineInstance* engine_state, int32_t delta_x, - int32_t delta_y); - -ENUM_CLASS SimpleEventType{ - SwitchHedgehog, Timer, LongJump, HighJump, Accept, Deny, -}; - -ENUM_CLASS LongEventType{ - ArrowUp, ArrowDown, ArrowLeft, ArrowRight, Precision, Attack, -}; +using start_engine_t = decltype(hwengine::start_engine); +using generate_preview_t = decltype(hwengine::generate_preview); +using dispose_preview_t = decltype(hwengine::dispose_preview); +using cleanup_t = decltype(hwengine::cleanup); +using send_ipc_t = decltype(hwengine::send_ipc); +using read_ipc_t = decltype(hwengine::read_ipc); +using setup_current_gl_context_t = decltype(hwengine::setup_current_gl_context); +using render_frame_t = decltype(hwengine::render_frame); +using advance_simulation_t = decltype(hwengine::advance_simulation); +using move_camera_t = decltype(hwengine::move_camera); -ENUM_CLASS LongEventState{ - Set, - Unset, -}; +using simple_event_t = decltype(hwengine::simple_event); +using long_event_t = decltype(hwengine::long_event); +using positioned_event_t = decltype(hwengine::positioned_event); -ENUM_CLASS PositionedEventType{ - CursorMove, - CursorClick, -}; +using SimpleEventType = hwengine::SimpleEventType; +using LongEventType = hwengine::LongEventType; +using LongEventState = hwengine::LongEventState; +using PositionedEventType = hwengine::PositionedEventType; -typedef void simple_event_t(EngineInstance* engine_state, - SimpleEventType event_type); -typedef void long_event_t(EngineInstance* engine_state, - LongEventType event_type, LongEventState state); -typedef void positioned_event_t(EngineInstance* engine_state, - PositionedEventType event_type, int32_t x, - int32_t y); } // extern "C" -#ifdef __cplusplus Q_NAMESPACE Q_ENUM_NS(SimpleEventType) @@ -97,6 +62,5 @@ Q_DECLARE_METATYPE(Engine::LongEventType) Q_DECLARE_METATYPE(Engine::LongEventState) Q_DECLARE_METATYPE(Engine::PositionedEventType) -#endif #endif // ENGINE_H