mirror of
https://github.com/zoriya/Gamacon.git
synced 2026-06-06 21:22:14 +00:00
Adding offsets to map linker
This commit is contained in:
@@ -15,6 +15,7 @@ struct map_linker
|
|||||||
{
|
{
|
||||||
gc_component base;
|
gc_component base;
|
||||||
struct tile *tile;
|
struct tile *tile;
|
||||||
|
gc_vector2i offset;
|
||||||
};
|
};
|
||||||
|
|
||||||
const struct map_linker map_linker;
|
const struct map_linker map_linker;
|
||||||
|
|||||||
@@ -47,6 +47,7 @@ static void ctr(void *component, va_list args)
|
|||||||
bool solid = va_arg(args, int);
|
bool solid = va_arg(args, int);
|
||||||
|
|
||||||
cmp->tile = NULL;
|
cmp->tile = NULL;
|
||||||
|
cmp->offset = (gc_vector2i){0, 0};
|
||||||
if (!scene || !(maps = scene->get_entity_by_cmp(scene, "vertex_component")))
|
if (!scene || !(maps = scene->get_entity_by_cmp(scene, "vertex_component")))
|
||||||
return;
|
return;
|
||||||
vert = GETCMP(maps->data, vertex_component);
|
vert = GETCMP(maps->data, vertex_component);
|
||||||
@@ -67,8 +68,9 @@ static void fdctr(gc_entity *entity, gc_scene *scene, void *component, node *n)
|
|||||||
return;
|
return;
|
||||||
vert = GETCMP(maps->data, vertex_component);
|
vert = GETCMP(maps->data, vertex_component);
|
||||||
cmp->tile = init(entity, vert, (gc_vector2i){x, y}, solid);
|
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;
|
renderer->render_mode_x = RENDER_MODE_CENTERED;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static void dtr(void *component)
|
static void dtr(void *component)
|
||||||
|
|||||||
@@ -97,7 +97,7 @@ struct vertex_component *info, float dt)
|
|||||||
tl = get_tile_from_pos(info, gc_vector2_add(pos, *(gc_vector2 *)&w));
|
tl = get_tile_from_pos(info, gc_vector2_add(pos, *(gc_vector2 *)&w));
|
||||||
for (i = 0; info->map[i].corners[0]; i++);
|
for (i = 0; info->map[i].corners[0]; i++);
|
||||||
for (i--; i >= 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);
|
sfmlrenderer_draw_tile(engine, pos, &info->map[i], dt);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -28,4 +28,7 @@ struct tile *tile, gc_vector2 map_offset) {
|
|||||||
tra->position.x += map_offset.x;
|
tra->position.x += map_offset.x;
|
||||||
tra->position.y += map_offset.y;
|
tra->position.y += map_offset.y;
|
||||||
tra->position.y *= -1;
|
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;
|
||||||
}
|
}
|
||||||
Reference in New Issue
Block a user