FireURQ:Тултипы с помощью декораторов
Пример со всплывающими подсказками, показанный Фаертоном перед релизом FireURQ 1.6.
:0 pln pln pln Вы стоите на берегу быстрого [[ручья|!float("x1", 200, "Ручей шумит и бормочет, прохладная вода бежит на восток, к реке.")]], весело бегущего между крупных замшелых [[валунов|!float("x2", 200, "Влажные большие валуны покрыты мхом и скользкими водорослями. Вода огибает их, и водоросли колышатся в потоке.")]]. Рядом с ручьём растёт раскидистое [[дерево|!float("x3", 300, "Это молодая плакучая ива, её длинные ветви колышит ветерок, и кажется, что шелест листьев переговаривается с журчаньем ручья...")]], его ветви склоняются над водой, как будто дерево хочет напиться прохладной воды. end
:float ; unique id, width, text ; параметры: ; 1 - уникальный id (текст) ; 2 - ширина тултипа (число) ; 3 - текст тултипа
; это id декораторов прямоугольника и текста тултипа rectid = "tiprect#%float_1$" textid = "tiptext#%float_1$"
if decor_#%rectid$_width = 0 then goto float_create ; если такой тултип уже есть, уничтожаем его decordel #%rectid$ decordel #%textid$
:float_create ; создаём декораторы (почти полностью прозрачными) decoradd #%textid$ (0, 0, -2) TEXT float_3, 0x01030086, "arial.ttf[13]" ; текстовый (-2 - потому что "выше" всех) decor_#%textid$_width = float_2 ; задаём ширину текста decoradd #%rectid$ (0, 0, -1) RECT float_2+10, decor_#%textid$_height+10, 0x01f8c862 ; прямоугольник под текстом, чуть шире и выше текста
; считаем позицию тултипа rect_y = mouse_y - decor_#%rectid$_height - 5 ; нижний край - над мышью if rect_y < 0 then rect_y = mouse_y + 5 ; если вылазит за экран, то пусть будет под мышью rect_x = mouse_x ; а левый край - прямо по мыши if rect_x + decor_#%rectid$_width > 800 then rect_x = 800 - decor_#%rectid$_width ; если вылазит, скорректируем, чтобы не вылазил decormov #%rectid$ rect_x, rect_y ; перемещаем прямоугольник на вычисленную позицию decormov #%textid$ rect_x + 5, rect_y + 5 ; а текст - внутри прямоугольника
; скриптуем декораторы (плавно зажечь, подождать 3 секунды и плавно потушить с небольшим сдвигом вниз) decor_#%textid$_script = "col 0xFF030086, 500 / pau 3000 / mvrx 0, 10, 1000/ col 0x01030086, 1000 / del" decor_#%rectid$_script = "col 0xFFf8c862, 500 / pau 3000 / mvrx 0, 10, 1000/ col 0x01f8c862, 1000 / del" end