Adding offsets to map linker

This commit is contained in:
Anonymus Raccoon
2020-04-29 22:43:33 +02:00
parent d1a8a904a4
commit 8d091a9575
4 changed files with 8 additions and 2 deletions
+1
View File
@@ -15,6 +15,7 @@ struct map_linker
{
gc_component base;
struct tile *tile;
gc_vector2i offset;
};
const struct map_linker map_linker;
+3 -1
View File
@@ -47,6 +47,7 @@ static void ctr(void *component, va_list args)
bool solid = va_arg(args, int);
cmp->tile = NULL;
cmp->offset = (gc_vector2i){0, 0};
if (!scene || !(maps = scene->get_entity_by_cmp(scene, "vertex_component")))
return;
vert = GETCMP(maps->data, vertex_component);
@@ -67,8 +68,9 @@ static void fdctr(gc_entity *entity, gc_scene *scene, void *component, node *n)
return;
vert = GETCMP(maps->data, vertex_component);
cmp->tile = init(entity, vert, (gc_vector2i){x, y}, solid);
if (renderer && xml_hasproperty(n, "centered"))
if (renderer && xml_hasproperty(n, "centered")) {
renderer->render_mode_x = RENDER_MODE_CENTERED;
}
}
static void dtr(void *component)
+1 -1
View File
@@ -97,7 +97,7 @@ struct vertex_component *info, float dt)
tl = get_tile_from_pos(info, gc_vector2_add(pos, *(gc_vector2 *)&w));
for (i = 0; info->map[i].corners[0]; i++);
for (i--; i >= 0; i--) {
sfmlrenderer_manage_hovered_tile(this, &info->map[i] == tl);
sfmlrenderer_manage_hovered_tile(this, &info->map[i] == tl || info->map[i].entity);
sfmlrenderer_draw_tile(engine, pos, &info->map[i], dt);
}
}
+3
View File
@@ -28,4 +28,7 @@ struct tile *tile, gc_vector2 map_offset) {
tra->position.x += map_offset.x;
tra->position.y += map_offset.y;
tra->position.y *= -1;
gc_vector2 off = gc_vector2_from_coords(link->offset.x, link->offset.y, 0);
tra->position.x += off.x / 16;
tra->position.y += off.y / 16;
}