#include #include #include #include #include "animation.h" void init_animation(struct animation* animation, struct animation_init* init) { int initial_frame_count = init->initial_frame_count; if (initial_frame_count <= 0) { fprintf(stderr, "All animations need to have at least 1 frame!\n"); exit(1); } animation->num_frames = initial_frame_count; int size = initial_frame_count * sizeof(float); animation->frame_times = malloc(size); memcpy(animation->frame_times, init->initial_frame_times, size); size = initial_frame_count * sizeof(SDL_Rect); animation->frames = malloc(size); memcpy(animation->frames, init->initial_frame_times, size); } void update_animation(struct animation* animation, float dt) { int frame_index = animation->current_frame; float current_frame_time = animation->frame_times[frame_index]; animation->current_time += dt; if(animation->current_time >= current_frame_time) { animation->current_time = 0; animation->current_frame = (frame_index + 1) % animation->num_frames; } }