summaryrefslogtreecommitdiff
path: root/src/client.c
diff options
context:
space:
mode:
authorLizzy Fleckenstein <lizzy@vlhl.dev>2024-07-13 14:51:54 +0200
committerLizzy Fleckenstein <lizzy@vlhl.dev>2024-07-13 14:57:57 +0200
commit60e11c18b8ac11645c86eb80ae6a7e8555815f53 (patch)
tree26b172ef2708fe0efe8c3e2b3787947ecee6c5d1 /src/client.c
parent1c53c39feed656194daf2fc24ddc4d2ee6abf728 (diff)
downloadsilly_game-60e11c18b8ac11645c86eb80ae6a7e8555815f53.tar.xz
add ARR_ITER
Signed-off-by: Lizzy Fleckenstein <lizzy@vlhl.dev>
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);
}
}