mirror of
				https://github.com/edubart/otclient.git
				synced 2025-11-04 04:36:23 +01:00 
			
		
		
		
	
		
			
				
	
	
		
			68 lines
		
	
	
		
			1.8 KiB
		
	
	
	
		
			Lua
		
	
	
	
	
	
			
		
		
	
	
			68 lines
		
	
	
		
			1.8 KiB
		
	
	
	
		
			Lua
		
	
	
	
	
	
-- @docclass
 | 
						|
g_effects = {}
 | 
						|
 | 
						|
function g_effects.fadeIn(widget, time, elapsed)
 | 
						|
  if not elapsed then elapsed = 0 end
 | 
						|
  if not time then time = 300 end
 | 
						|
  widget:setOpacity(math.min(elapsed/time, 1))
 | 
						|
  removeEvent(widget.fadeEvent)
 | 
						|
  if elapsed < time then
 | 
						|
    removeEvent(widget.fadeEvent)
 | 
						|
    widget.fadeEvent = scheduleEvent(function()
 | 
						|
      g_effects.fadeIn(widget, time, elapsed + 30)
 | 
						|
    end, 30)
 | 
						|
  else
 | 
						|
    widget.fadeEvent = nil
 | 
						|
  end
 | 
						|
end
 | 
						|
 | 
						|
function g_effects.fadeOut(widget, time, elapsed)
 | 
						|
  if not elapsed then elapsed = 0 end
 | 
						|
  if not time then time = 300 end
 | 
						|
  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)
 | 
						|
  else
 | 
						|
    widget.fadeEvent = nil
 | 
						|
  end
 | 
						|
end
 | 
						|
 | 
						|
function g_effects.cancelFade(widget)
 | 
						|
  removeEvent(widget.fadeEvent)
 | 
						|
  widget.fadeEvent = nil
 | 
						|
end
 | 
						|
 | 
						|
function g_effects.startBlink(widget, duration, interval, clickCancel)
 | 
						|
  duration = duration or 0 -- until stop is called
 | 
						|
  interval = interval or 500
 | 
						|
  clickCancel = clickCancel or true
 | 
						|
 | 
						|
  removeEvent(widget.blinkEvent)
 | 
						|
  removeEvent(widget.blinkStopEvent)
 | 
						|
 | 
						|
  widget.blinkEvent = cycleEvent(function()
 | 
						|
    widget:setOn(not widget:isOn())
 | 
						|
  end, interval)
 | 
						|
 | 
						|
  if duration > 0 then
 | 
						|
    widget.blinkStopEvent = scheduleEvent(function()
 | 
						|
      g_effects.stopBlink(widget)
 | 
						|
    end, duration)
 | 
						|
  end
 | 
						|
 | 
						|
  connect(widget, { onClick = g_effects.stopBlink })
 | 
						|
end
 | 
						|
 | 
						|
function g_effects.stopBlink(widget)
 | 
						|
  disconnect(widget, { onClick = g_effects.stopBlink })
 | 
						|
  removeEvent(widget.blinkEvent)
 | 
						|
  removeEvent(widget.blinkStopEvent)
 | 
						|
  widget.blinkEvent = nil
 | 
						|
  widget.blinkStopEvent = nil
 | 
						|
  widget:setOn(false)
 | 
						|
end
 |