From 12b4f785f2bfccce59eb80378a76bf36bef6ff55 Mon Sep 17 00:00:00 2001 From: P. J. McDermott Date: Sun, 17 Feb 2013 16:39:25 -0500 Subject: Add map exits to a collisions array. --- (limited to 'src/resources/map.c') diff --git a/src/resources/map.c b/src/resources/map.c index c1a33bf..4b2b9ac 100644 --- a/src/resources/map.c +++ b/src/resources/map.c @@ -160,6 +160,8 @@ map_get_layer(struct map *m, const char *name) void map_add_exit(struct map *m, struct map_exit *e) { + int i, j; + e->next = NULL; if (m->map_exits_head == NULL) { m->map_exits_head = e; @@ -167,6 +169,13 @@ map_add_exit(struct map *m, struct map_exit *e) m->map_exits_tail->next = e; } m->map_exits_tail = e; + + for (i = 0; i < e->width; ++i) { + for (j = 0; j < e->height; ++j) { + m->collisions[j * m->width + i].type = COLLISION_EXIT; + m->collisions[j * m->width + i].data.e = e; + } + } } static struct tileset * @@ -254,6 +263,13 @@ tmx_map_start(void *pv, const char *name, const char **attr) xml_get_int_attr(p, attr, "height", &m->height, 1); xml_get_int_attr(p, attr, "tilewidth", &m->tilewidth, 1); xml_get_int_attr(p, attr, "tileheight", &m->tileheight, 1); + m->collisions = malloc(m->width * m->height * + sizeof(*m->collisions)); + if (m->collisions == NULL) { + return; + } + memset(m->collisions, 0, m->width * m->height * + sizeof(*m->collisions)); xml_node_push(p, m, tmx_map_el_start, tmx_map_end, NULL); } else { xml_unexpected_start_tag(p, name, "map"); -- cgit v0.9.1