#ifndef OBJECT_STORE_H #define OBJECT_STORE_H #include "Renderer.h" #include "SDL_events.h" #include "engine_build_config.h" typedef int32_t ObjectID; typedef void (*EventHandlerPtr)(const SDL_Event *event, void *object); typedef void (*UpdateFuncPtr)(float delta, void *object); typedef void (*RenderFuncPtr)(Renderer *renderer, void *object); typedef struct object_store ObjectStore; ObjectStore *create_object_store(); ObjectID add_object_to_store(ObjectStore *os, void *object, EventHandlerPtr eh, UpdateFuncPtr uf, RenderFuncPtr rf); void remove_object_from_store(ObjectStore *os, ObjectID id); void handle_all_objects_events(ObjectStore *os, const SDL_Event *event); void update_all_objects(ObjectStore *os, float delta); void render_all_objects(ObjectStore *os, Renderer *renderer); void destroy_object_store(ObjectStore *os); #ifdef DEBUG_ENGINE void print_objects(ObjectStore *os); #endif /* DEBUG_ENGINE */ #endif // !OBJECT_STORE_H