#ifndef DEF_XMANAGER_H #define DEF_XMANAGER_H class xManager{ public: xManager(const char *t, int w, int h); ~xManager(); SDL_Window *window(); SDL_Renderer *renderer(); bool status(); bool setBackground(Uint8 r=0xff, Uint8 g=0xff, Uint8 b=0xff, Uint8 a=0xff); bool setImage(const char *url); bool hit(string current, int movex=0, int movey=0); // Gestion des collisions bool hit(SDL_Texture *current, int movex=0, int movey=0); // Gestion des collisions SDL_Texture *getTexture(string index); SDL_Rect *getSrc(string index); SDL_Rect *getDst(string index); void push(string index, SDL_Texture *t, SDL_Rect *origin, SDL_Rect *dest); void pull(string index); void pull(SDL_Texture *t); void update(); void manageFps(const int fps=0); // Gestion des evenements void attachEvent(SDL_EventType t, void(*handler)(SDL_Event*) ); void manageEvents(SDL_Event* event); private: // gestion FPS Uint32 _lasttick; Uint32 _fpstime; // Gestion evenements vector _events; vector _handlers; // status de l'initialisation bool _status; // Elements utiles SDL_Window *_window; SDL_Rect _winrect; SDL_Renderer *_renderer; SDL_Texture *_texture; // Gestion des textures vector _indexes; vector _sprites; vector _src; vector _dst; // Protection thread-safe mutex _mutex_push; mutex _mutex_pull; mutex _mutex_update; mutex _mutex_hit; }; #endif