mirror of
https://github.com/edubart/otclient.git
synced 2025-04-30 01:29:21 +02:00
103 lines
3.2 KiB
Lua
103 lines
3.2 KiB
Lua
TextMessage = {}
|
|
|
|
-- require styles
|
|
importStyle 'textmessage.otui'
|
|
|
|
-- private variables
|
|
local bottomLabelWidget, centerLabelWidget
|
|
|
|
local MessageTypes = {
|
|
warning = { color = '#F55E5E', showOnConsole = true, showOnWindow = true, windowLocation = 'CenterLabel' },
|
|
eventAdvance = { color = '#FFFFFF', showOnConsole = true, showOnWindow = true, windowLocation = 'CenterLabel' },
|
|
eventDefault = { color = '#FFFFFF', showOnConsole = true, showOnWindow = true, windowLocation = 'BottomLabel' },
|
|
statusDefault = { color = '#FFFFFF', showOnConsole = true, showOnWindow = true, windowLocation = 'BottomLabel' },
|
|
infoDesc = { color = '#00EB00', showOnConsole = true, showOnWindow = true, windowLocation = 'CenterLabel' },
|
|
statusSmall = { color = '#FFFFFF', showOnConsole = false, showOnWindow = true, windowLocation = 'BottomLabel' },
|
|
consoleOrange = { color = '#FE6500', showOnConsole = true, showOnWindow = false },
|
|
consoleBlue = { color = '#9F9DFD', showOnConsole = true, showOnWindow = false },
|
|
consoleRed = { color = '#F55E5E', showOnConsole = true, showOnWindow = false }
|
|
}
|
|
|
|
local MessageTypesMap = {
|
|
[12] = MessageTypes.consoleOrange,
|
|
[13] = MessageTypes.consoleOrange,
|
|
[14] = MessageTypes.warning,
|
|
[15] = MessageTypes.eventAdvance,
|
|
[15] = MessageTypes.eventDefault,
|
|
[16] = MessageTypes.statusDefault,
|
|
[17] = MessageTypes.infoDesc,
|
|
[18] = MessageTypes.statusSmall,
|
|
[19] = MessageTypes.consoleBlue,
|
|
[20] = MessageTypes.consoleRed,
|
|
--[[
|
|
[18] = MessageTypes.consoleRed,
|
|
[19] = MessageTypes.consoleOrange,
|
|
[20] = MessageTypes.consoleOrange,
|
|
[21] = MessageTypes.warning,
|
|
[22] = MessageTypes.eventAdvance,
|
|
[23] = MessageTypes.eventDefault,
|
|
[24] = MessageTypes.statusDefault,
|
|
[25] = MessageTypes.infoDesc,
|
|
[26] = MessageTypes.statusSmall,
|
|
[27] = MessageTypes.consoleBlue
|
|
]]--
|
|
}
|
|
|
|
-- private variables
|
|
local bottomLabelHideEvent
|
|
local centerLabelHideEvent
|
|
|
|
-- private functions
|
|
local function displayMessage(msgtype, msg)
|
|
if msgtype.showOnConsole then
|
|
-- TODO
|
|
end
|
|
|
|
if msgtype.showOnWindow then
|
|
local label
|
|
if msgtype.windowLocation == 'BottomLabel' then
|
|
label = bottomLabelWidget
|
|
elseif msgtype.windowLocation == 'CenterLabel' then
|
|
label = centerLabelWidget
|
|
end
|
|
|
|
label:setVisible(true)
|
|
label:setText(msg)
|
|
label:setStyle(msgtype.windowLocation)
|
|
label:setForegroundColor(msgtype.color)
|
|
|
|
time = #msg * 75
|
|
removeEvent(label.hideEvent)
|
|
label.hideEvent = scheduleEvent(function() label:setVisible(false) end, time)
|
|
end
|
|
end
|
|
|
|
-- public functions
|
|
function TextMessage.create()
|
|
bottomLabelWidget = createWidget('UILabel', Game.gameMapPanel)
|
|
centerLabelWidget = createWidget('UILabel', Game.gameMapPanel)
|
|
end
|
|
|
|
function TextMessage.displayWarning(msg)
|
|
TextMessage.display(MessageTypes.warning, msg)
|
|
end
|
|
|
|
function TextMessage.display(msgtypeid, msg)
|
|
local msgtype = MessageTypesMap[msgtypeid]
|
|
if msgtype == nil then
|
|
error('unknown text msg type ' .. msgtypeid)
|
|
return
|
|
end
|
|
displayMessage(msgtype, msg)
|
|
end
|
|
|
|
-- hooked events
|
|
function TextMessage.onTextMessage(msgtypeid, msg)
|
|
TextMessage.display(msgtypeid, msg)
|
|
end
|
|
|
|
|
|
connect(Game, { onLogin = TextMessage.create,
|
|
onLogout = TextMessage.destroy,
|
|
onTextMessage = TextMessage.onTextMessage })
|