diff options
author | P. J. McDermott <pjm@nac.net> | 2013-02-17 16:39:25 (EST) |
---|---|---|
committer | P. J. McDermott <pjm@nac.net> | 2013-02-17 16:42:41 (EST) |
commit | 12b4f785f2bfccce59eb80378a76bf36bef6ff55 (patch) | |
tree | 69f202d5fe228b1589b7520eaa7eef0bd5ff0bd3 /src/resources/map.c | |
parent | e5b4399a3cdbb259236e6d98896abc706fc93c1d (diff) | |
download | overworld-rpg-12b4f785f2bfccce59eb80378a76bf36bef6ff55.zip overworld-rpg-12b4f785f2bfccce59eb80378a76bf36bef6ff55.tar.gz overworld-rpg-12b4f785f2bfccce59eb80378a76bf36bef6ff55.tar.bz2 |
Add map exits to a collisions array.
Diffstat (limited to 'src/resources/map.c')
-rw-r--r-- | src/resources/map.c | 16 |
1 files changed, 16 insertions, 0 deletions
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"); |