From 8d091a9575414e2b4e081ad3aa2aa5dc4b53b93c Mon Sep 17 00:00:00 2001
From: Anonymus Raccoon
Date: Wed, 29 Apr 2020 22:43:33 +0200
Subject: [PATCH] Adding offsets to map linker
---
include/components/map_linker.h | 1 +
src/components/map_linker.c | 4 +++-
src/sfml_renderer/sfml_vertex.c | 2 +-
src/systems/map_linker_system.c | 3 +++
4 files changed, 8 insertions(+), 2 deletions(-)
diff --git a/include/components/map_linker.h b/include/components/map_linker.h
index 01152ac..3dc94cd 100644
--- a/include/components/map_linker.h
+++ b/include/components/map_linker.h
@@ -15,6 +15,7 @@ struct map_linker
{
gc_component base;
struct tile *tile;
+ gc_vector2i offset;
};
const struct map_linker map_linker;
diff --git a/src/components/map_linker.c b/src/components/map_linker.c
index 660cb94..613c598 100644
--- a/src/components/map_linker.c
+++ b/src/components/map_linker.c
@@ -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)
diff --git a/src/sfml_renderer/sfml_vertex.c b/src/sfml_renderer/sfml_vertex.c
index d94b49a..22cebd0 100644
--- a/src/sfml_renderer/sfml_vertex.c
+++ b/src/sfml_renderer/sfml_vertex.c
@@ -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);
}
}
\ No newline at end of file
diff --git a/src/systems/map_linker_system.c b/src/systems/map_linker_system.c
index e8e9aa3..d508112 100644
--- a/src/systems/map_linker_system.c
+++ b/src/systems/map_linker_system.c
@@ -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;
}
\ No newline at end of file