#ifndef _ANIMATION_H #define _ANIMATION_H // Objects typedef struct { uint16_t x, y, r; // Position and radius struct { uint8_t enabled :1; // Object enabled (visible, updated) uint8_t col_nor :1; // Collisions in normal mode uint8_t col_foc :1; // Collisions in focused mode uint8_t color :4; // Color. 3 bits used, maybe 4 in the future uint8_t type :8; // Type of object. Linked to image_t } meta; } object_t; // Animations typedef struct animation_s animation_t; typedef struct { uint32_t timestamp; // Timestamp of the animation uint32_t n_objects; // Number of objects object_t *objects; // Table of object_t void (*updater)(animation_t*, uint32_t); // Updater function } animation_s; // Utils animation_t *new_animation(uint32_t objects, void (*updater)(animation_t*)); void del_animation(animation_t *animation); // List of animation functions void dummy_updater(animation_t *animation, uint32_t us_elapsed); #endif // _ANIMATION_H