summaryrefslogtreecommitdiff
path: root/src/client.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/client.c')
-rw-r--r--src/client.c26
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);
}
}