TextMessage = {} -- require styles importStyles 'textmessage.otui' -- private variables local bottomLabelWidget, centerLabelWidget local messageTypes = { first = 12, { type = 'MessageOrange', color = '#C87832', showOnConsole = true, showOnWindow = false }, { type = 'MessageOrange', color = '#C87832', showOnConsole = true, showOnWindow = false }, { type = 'MessageRed', color = '#C83200', showOnConsole = true, showOnWindow = true, windowLocation = 'CenterLabel' }, { type = 'MessageWhite', color = '#FFFFFF', showOnConsole = true, showOnWindow = true, windowLocation = 'CenterLabel' }, { type = 'MessageWhite', color = '#FFFFFF', showOnConsole = true, showOnWindow = true, windowLocation = 'BottomLabel' }, { type = 'MessageWhite', color = '#FFFFFF', showOnConsole = true, showOnWindow = true, windowLocation = 'BottomLabel' }, { type = 'MessageGreen', color = '#3FBE32', showOnConsole = true, showOnWindow = true, windowLocation = 'CenterLabel' }, { type = 'MessageWhite', color = '#FFFFFF', showOnConsole = false, showOnWindow = true, windowLocation = 'BottomLabel' }, { type = 'MessageBlue', color = '#3264C8', showOnConsole = true, showOnWindow = false }, { type = 'MessageRed', color = '#C83200', showOnConsole = true, showOnWindow = false } } local hideEvent -- public functions function TextMessage.create() bottomLabelWidget = UILabel.create() Game.gameMapPanel:addChild(bottomLabelWidget) centerLabelWidget = UILabel.create() Game.gameMapPanel:addChild(centerLabelWidget) end -- hooked events function TextMessage.onTextMessage(type, message) local messageType = messageTypes[type - messageTypes.first] print(messageType.color) if messageType.showOnConsole then -- TODO end if messageType.showOnWindow then local label if messageType.windowLocation == 'BottomLabel' then label = bottomLabelWidget elseif messageType.windowLocation == 'CenterLabel' then label = centerLabelWidget end label:setVisible(true) label:setText(message) label:setStyle(messageType.windowLocation) label:setForegroundColor(messageType.color) time = #message * 75 removeEvent(hideEvent) hideEvent = scheduleEvent(function() label:setVisible(false) end, time) end end connect(Game, { onLogin = TextMessage.create, onLogout = TextMessage.destroy, onTextMessage = TextMessage.onTextMessage })