diff options
Diffstat (limited to 'src/client.c')
-rw-r--r-- | src/client.c | 26 |
1 files changed, 8 insertions, 18 deletions
diff --git a/src/client.c b/src/client.c index 679fcd4..608eeaa 100644 --- a/src/client.c +++ b/src/client.c @@ -37,17 +37,13 @@ typedef struct { player *player_from_id(client *c, entity_id id) { - for (size_t i = 0; i < c->players.len; i++) - if (c->players.data[i].id == id) - return &c->players.data[i]; + ARR_ITER(c->players, p) if (p->id == id) return p; return NULL; } entity *entity_from_id(client *c, entity_id id) { - for (size_t i = 0; i < c->entities.len; i++) - if (c->entities.data[i].id == id) - return &c->entities.data[i]; + ARR_ITER(c->entities, e) if (e->id == id) return e; return NULL; } @@ -168,8 +164,7 @@ void gfx_render(client *c, uint64_t dtime) } // entities - for (size_t i = 0; i < c->entities.len; i++) { - entity *e = &c->entities.data[i]; + ARR_ITER(c->entities, e) { if (!box2_contains(c->map.bounds, e->pos)) // just to be safe... continue; vec2 pos = vec2_sub(e->pos, c->map.bounds.pos); @@ -207,9 +202,7 @@ void gfx_render(client *c, uint64_t dtime) void free_players(client *c) { - for (size_t i = 0; i < c->players.len; i++) - free(c->players.data[i].name.data); - + ARR_ITER(c->players, p) free(p->name.data); free(c->players.data); c->players.len = 0; @@ -271,14 +264,11 @@ void map_set_center(client *c, vec2 center) chunk_clear(c->map); chunk_copy(c->map, old); - for (size_t i = 0; i < c->entities.len;) { - entity *e = &c->entities.data[i]; - if (box2_contains(c->map.bounds, e->pos)) { - i++; - continue; + ARR_ITER(c->entities, e) { + if (!box2_contains(c->map.bounds, e->pos)) { + ARR_REMOVE(c->entities, e); + e--; } - - ARR_REMOVE(c->entities, e); } } |