From 5b1b1701654d71d2ca449679afe97c004fa75643 Mon Sep 17 00:00:00 2001 From: Eduardo Bart Date: Sun, 6 Nov 2011 22:14:51 -0200 Subject: [PATCH] implement remove event lua function --- modules/core/dispatcher.lua | 38 +++++++++++++++++++---------- modules/textmessage/textmessage.lua | 5 ++-- 2 files changed, 28 insertions(+), 15 deletions(-) diff --git a/modules/core/dispatcher.lua b/modules/core/dispatcher.lua index ef8a3baf..312344f1 100644 --- a/modules/core/dispatcher.lua +++ b/modules/core/dispatcher.lua @@ -1,28 +1,40 @@ -local eventId = 1 -local events = { } +local eventId = 0 +local eventsTable = { } local orig = { scheduleEvent = scheduleEvent, addEvent = addEvent } -- fix original scheduleEvent function scheduleEvent(func, delay) - eventId = eventId + 1 - local id = eventId + 1 - local function proxyFunc() + eventId = eventId + 1 + local id = eventId + local function proxyFunc() + if eventsTable[id] then func() - table[id] = nil - end - table[id] = proxyFunc - orig.scheduleEvent(proxyFunc, delay) + eventsTable[id] = nil + end + end + eventsTable[id] = proxyFunc + orig.scheduleEvent(proxyFunc, delay) + return id +end + +function removeEvent(id) + if id and eventsTable[id] then + eventsTable[id] = nil + end end -- fix original addEvent function addEvent(func) eventId = eventId + 1 - local id = eventId + 1 + local id = eventId local function proxyFunc() - func() - table[id] = nil + if eventsTable[id] then + func() + eventsTable[id] = nil + end end - table[id] = proxyFunc + eventsTable[id] = proxyFunc orig.addEvent(proxyFunc) + return id end \ No newline at end of file diff --git a/modules/textmessage/textmessage.lua b/modules/textmessage/textmessage.lua index 3cdf20c6..748e7b3b 100644 --- a/modules/textmessage/textmessage.lua +++ b/modules/textmessage/textmessage.lua @@ -18,6 +18,7 @@ local messageTypes = { { type = 'MessageBlue', color = '#3264C8', showOnConsole = true, showOnWindow = false }, { type = 'MessageRed', color = '#C83200', showOnConsole = true, showOnWindow = false } } +local hideEvent -- public functions function TextMessage.create() @@ -47,11 +48,11 @@ function Game.onTextMessage(type, message) label:setVisible(true) label:setForegroundColor(messageType.color) label:setText(message) - label:setStyle(messageType.windowLocation) time = #message * 75 - scheduleEvent(function() + removeEvent(hideEvent) + hideEvent = scheduleEvent(function() label:setVisible(false) end, time) end