Path following

This commit is contained in:
2023-11-14 12:01:28 +01:00
parent ab817ee03d
commit 8825b9e01f
14 changed files with 213 additions and 102 deletions

View File

@@ -7,39 +7,8 @@
void renderEntities(ecs_iter_t *it);
void updateAnimations(ecs_iter_t *it);
#include "../game_state.h"
#include <math.h>
#include <raymath.h>
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;
}
}
void updatePos(ecs_iter_t *it);
void targetFinish(ecs_iter_t *it);
void startPath(ecs_iter_t *it);
#endif //PIXELDEFENSE_SYSTEMS_H