author | Wuzzy <Wuzzy2@mail.ru> |
Mon, 16 Sep 2019 17:53:19 +0200 | |
changeset 15416 | 2cde69c1c680 |
parent 15222 | b32c52c76977 |
permissions | -rw-r--r-- |
#ifndef ENGINE_H #define ENGINE_H #include <stddef.h> #include <stdint.h> #ifdef __cplusplus #define ENUM_CLASS enum #ifndef Q_NAMESPACE #define Q_NAMESPACE #endif #ifndef Q_ENUM_NS #define Q_ENUM_NS(x) #endif #ifndef Q_DECLARE_METATYPE #define Q_DECLARE_METATYPE(x) #endif 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(); 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); 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); 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, }; ENUM_CLASS LongEventState{ Set, Unset, }; ENUM_CLASS PositionedEventType{ CursorMove, CursorClick, }; 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) Q_ENUM_NS(LongEventType) Q_ENUM_NS(LongEventState) Q_ENUM_NS(PositionedEventType) }; // namespace Q_DECLARE_METATYPE(Engine::SimpleEventType) Q_DECLARE_METATYPE(Engine::LongEventType) Q_DECLARE_METATYPE(Engine::LongEventState) Q_DECLARE_METATYPE(Engine::PositionedEventType) #endif #endif // ENGINE_H