From f6c884cd7e0bac7e854231e8c8bbad1b296c90e9 Mon Sep 17 00:00:00 2001 From: Anthony Camboni Date: Sun, 15 Oct 2017 11:06:38 +0200 Subject: [PATCH] Ensure tile pos is always visible in map editor The tile position label was not entirely visible when hovering the tiles near the top/right of the screen. This modification ensures that the label is always visible by moving it to the opposite side of the tile if there is not enough space to display it on the default position. --- src/map.c | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/src/map.c b/src/map.c index ee3b4b4..be701c3 100644 --- a/src/map.c +++ b/src/map.c @@ -411,12 +411,16 @@ static void drawCursorPos(Map* map, s32 x, s32 y) sprintf(pos, "%03i:%03i", tx, ty); - x += (TIC_SPRITESIZE + 3); - y -= (TIC_FONT_HEIGHT + 2); + s32 width = map->tic->api.text(map->tic, pos, TIC80_WIDTH, 0, systemColor(tic_color_gray)); - s32 width = map->tic->api.text(map->tic, pos, x, y, systemColor(tic_color_gray)); - map->tic->api.rect(map->tic, x - 1, y - 1, width + 1, TIC_FONT_HEIGHT + 1, systemColor(tic_color_white)); - map->tic->api.text(map->tic, pos, x, y, systemColor(tic_color_light_blue)); + s32 px = x + (TIC_SPRITESIZE + 3); + if(px + width >= TIC80_WIDTH) px = x - (width + 2); + + s32 py = y - (TIC_FONT_HEIGHT + 2); + if(py <= TOOLBAR_SIZE) py = y + (TIC_SPRITESIZE + 3); + + map->tic->api.rect(map->tic, px - 1, py - 1, width + 1, TIC_FONT_HEIGHT + 1, systemColor(tic_color_white)); + map->tic->api.text(map->tic, pos, px, py, systemColor(tic_color_light_blue)); } static void setMapSprite(Map* map, s32 x, s32 y)