otclient-redemption/modules/corelib/ui/effects.lua

80 lines
2 KiB
Lua
Raw Permalink Normal View History

2012-06-25 19:13:30 -03:00
-- @docclass
g_effects = {}
2012-06-25 19:13:30 -03:00
function g_effects.fadeIn(widget, time, elapsed)
if not elapsed then
elapsed = 0
end
if not time then
time = 300
end
2021-07-19 19:24:59 -03:00
widget:setOpacity(math.min(elapsed / time, 1))
removeEvent(widget.fadeEvent)
2021-07-19 19:24:59 -03:00
if elapsed < time then
removeEvent(widget.fadeEvent)
widget.fadeEvent = scheduleEvent(function()
g_effects.fadeIn(widget, time, elapsed + 30)
end, 30)
2021-07-19 19:24:59 -03:00
else
widget.fadeEvent = nil
end
end
2012-06-25 19:13:30 -03:00
function g_effects.fadeOut(widget, time, elapsed)
if not elapsed then
elapsed = 0
end
if not time then
time = 300
end
2021-07-19 19:24:59 -03:00
elapsed = math.max((1 - widget:getOpacity()) * time, elapsed)
removeEvent(widget.fadeEvent)
widget:setOpacity(math.max((time - elapsed) / time, 0))
if elapsed < time then
widget.fadeEvent = scheduleEvent(function()
g_effects.fadeOut(widget, time, elapsed + 30)
end, 30)
2021-07-19 19:24:59 -03:00
else
widget.fadeEvent = nil
end
end
2012-06-25 19:13:30 -03:00
function g_effects.cancelFade(widget)
2021-07-19 19:24:59 -03:00
removeEvent(widget.fadeEvent)
widget.fadeEvent = nil
end
2013-02-05 19:08:32 -02:00
function g_effects.startBlink(widget, duration, interval, clickCancel)
2021-07-19 19:24:59 -03:00
duration = duration or 0 -- until stop is called
interval = interval or 500
clickCancel = clickCancel or true
2013-02-05 19:08:32 -02:00
2021-07-19 19:24:59 -03:00
removeEvent(widget.blinkEvent)
removeEvent(widget.blinkStopEvent)
2013-02-05 19:08:32 -02:00
widget.blinkEvent = cycleEvent(function()
widget:setOn(not widget:isOn())
end, interval)
2013-02-05 19:08:32 -02:00
if duration > 0 then
widget.blinkStopEvent = scheduleEvent(function()
g_effects.stopBlink(widget)
end, duration)
end
2013-02-05 19:08:32 -02:00
2022-04-29 23:14:24 -03:00
connect(widget, {
onClick = g_effects.stopBlink
})
2013-02-05 19:08:32 -02:00
end
function g_effects.stopBlink(widget)
2022-04-29 23:14:24 -03:00
disconnect(widget, {
onClick = g_effects.stopBlink
})
2021-07-19 19:24:59 -03:00
removeEvent(widget.blinkEvent)
removeEvent(widget.blinkStopEvent)
widget.blinkEvent = nil
widget.blinkStopEvent = nil
widget:setOn(false)
2013-02-05 19:08:32 -02:00
end