qmlfrontend/engine_interface.h
branchhedgeroid
changeset 15510 7030706266df
parent 15217 b32c52c76977
child 15891 d52f5d8e75e6
equal deleted inserted replaced
7861:bc7b6aa5d67a 15510:7030706266df
       
     1 #ifndef ENGINE_H
       
     2 #define ENGINE_H
       
     3 
       
     4 #include <stddef.h>
       
     5 #include <stdint.h>
       
     6 
       
     7 #ifdef __cplusplus
       
     8 #define ENUM_CLASS enum
       
     9 
       
    10 #ifndef Q_NAMESPACE
       
    11 #define Q_NAMESPACE
       
    12 #endif
       
    13 
       
    14 #ifndef Q_ENUM_NS
       
    15 #define Q_ENUM_NS(x)
       
    16 #endif
       
    17 
       
    18 #ifndef Q_DECLARE_METATYPE
       
    19 #define Q_DECLARE_METATYPE(x)
       
    20 #endif
       
    21 
       
    22 namespace Engine {
       
    23 extern "C" {
       
    24 #else
       
    25 #define ENUM_CLASS enum class
       
    26 #endif
       
    27 
       
    28 typedef struct _EngineInstance EngineInstance;
       
    29 
       
    30 typedef struct {
       
    31   uint32_t width;
       
    32   uint32_t height;
       
    33   uint8_t hedgehogs_number;
       
    34   unsigned char* land;
       
    35 } PreviewInfo;
       
    36 
       
    37 typedef uint32_t hedgewars_engine_protocol_version_t();
       
    38 typedef EngineInstance* start_engine_t();
       
    39 typedef void generate_preview_t(EngineInstance* engine_state,
       
    40                                 PreviewInfo* preview);
       
    41 typedef void dispose_preview_t(EngineInstance* engine_state);
       
    42 typedef void cleanup_t(EngineInstance* engine_state);
       
    43 
       
    44 typedef void send_ipc_t(EngineInstance* engine_state, uint8_t* buf,
       
    45                         size_t size);
       
    46 typedef size_t read_ipc_t(EngineInstance* engine_state, uint8_t* buf,
       
    47                           size_t size);
       
    48 
       
    49 typedef void setup_current_gl_context_t(EngineInstance* engine_state,
       
    50                                         uint16_t width, uint16_t height,
       
    51                                         void (*(const char*))());
       
    52 typedef void render_frame_t(EngineInstance* engine_state);
       
    53 
       
    54 typedef bool advance_simulation_t(EngineInstance* engine_state, uint32_t ticks);
       
    55 
       
    56 typedef void move_camera_t(EngineInstance* engine_state, int32_t delta_x,
       
    57                            int32_t delta_y);
       
    58 
       
    59 ENUM_CLASS SimpleEventType{
       
    60     SwitchHedgehog, Timer, LongJump, HighJump, Accept, Deny,
       
    61 };
       
    62 
       
    63 ENUM_CLASS LongEventType{
       
    64     ArrowUp, ArrowDown, ArrowLeft, ArrowRight, Precision, Attack,
       
    65 };
       
    66 
       
    67 ENUM_CLASS LongEventState{
       
    68     Set,
       
    69     Unset,
       
    70 };
       
    71 
       
    72 ENUM_CLASS PositionedEventType{
       
    73     CursorMove,
       
    74     CursorClick,
       
    75 };
       
    76 
       
    77 typedef void simple_event_t(EngineInstance* engine_state,
       
    78                             SimpleEventType event_type);
       
    79 typedef void long_event_t(EngineInstance* engine_state,
       
    80                           LongEventType event_type, LongEventState state);
       
    81 typedef void positioned_event_t(EngineInstance* engine_state,
       
    82                                 PositionedEventType event_type, int32_t x,
       
    83                                 int32_t y);
       
    84 }  // extern "C"
       
    85 
       
    86 #ifdef __cplusplus
       
    87 Q_NAMESPACE
       
    88 
       
    89 Q_ENUM_NS(SimpleEventType)
       
    90 Q_ENUM_NS(LongEventType)
       
    91 Q_ENUM_NS(LongEventState)
       
    92 Q_ENUM_NS(PositionedEventType)
       
    93 
       
    94 };  // namespace
       
    95 
       
    96 Q_DECLARE_METATYPE(Engine::SimpleEventType)
       
    97 Q_DECLARE_METATYPE(Engine::LongEventType)
       
    98 Q_DECLARE_METATYPE(Engine::LongEventState)
       
    99 Q_DECLARE_METATYPE(Engine::PositionedEventType)
       
   100 #endif
       
   101 
       
   102 #endif  // ENGINE_H