#ifndef PIXELDEFENSE_SYSTEMS_H #define PIXELDEFENSE_SYSTEMS_H #include #include "../components.h" void renderEntities(ecs_iter_t *it); void updateAnimations(ecs_iter_t *it); #include "../game_state.h" #include #include static void updatePos(ecs_iter_t *it) { Position *pos = ecs_field(it, Position, 1); TextureRegion *t = ecs_field(it, TextureRegion, 2); Vector2 target = GAME->targetPos; if (target.x == 0 && target.y == 0) return; for (i32 i = 0; i < it->count; i++) { target = Vector2Subtract(target, pos[i]); float dX = 0, dY = 0; if (target.x > 0) dX = 1; else if (target.x < 0) dX = -1; if (target.y > 0) dY = 1; else if (target.y < 0) dY = -1; dX *= 20; dY *= 20; if (Vector2Length(target) < 1) continue; pos[i].x += dX * it->delta_time; pos[i].y += dY * it->delta_time; f32 ddx = GAME->targetPos.x - pos[i].x; if (ddx < 0) ddx *= -1.0f; if (ddx > 5) t[i].flipX = dX < 0; } } #endif //PIXELDEFENSE_SYSTEMS_H