@ -1,65 +1,31 @@
TextMessage = { }
MessageTypesConf = {
ConsoleRed = { color = ' #F55E5E ' , consoleTab = tr ( ' Default ' ) } ,
-- require styles
ConsoleOrange = { color = ' #FE6500 ' , consoleTab = tr ( ' Default ' ) } ,
g_ui.importStyle ( ' textmessage.otui ' )
ConsoleBlue = { color = ' #9F9DFD ' , consoleTab = tr ( ' Default ' ) } ,
Warning = { color = ' #F55E5E ' , consoleTab = tr ( ' Server Log ' ) , labelId = ' warningLabel ' } ,
-- private variables
Info = { color = ' #00EB00 ' , consoleTab = tr ( ' Server Log ' ) , labelId = ' infoLabel ' , consoleOption = ' showInfoMessagesInConsole ' } ,
local MessageTypes = {
EventAdvance = { color = ' #FFFFFF ' , consoleTab = tr ( ' Server Log ' ) , labelId = ' advanceLabel ' , consoleOption = ' showEventMessagesInConsole ' } ,
consoleRed = { color = ' #F55E5E ' , consoleTab = tr ( ' Default ' ) } ,
EventDefault = { color = ' #FFFFFF ' , consoleTab = tr ( ' Server Log ' ) , labelId = ' statusLabel ' , consoleOption = ' showEventMessagesInConsole ' } ,
consoleOrange = { color = ' #FE6500 ' , consoleTab = tr ( ' Default ' ) } ,
StatusDefault = { color = ' #FFFFFF ' , consoleTab = tr ( ' Server Log ' ) , labelId = ' statusLabel ' , consoleOption = ' showStatusMessagesInConsole ' } ,
consoleBlue = { color = ' #9F9DFD ' , consoleTab = tr ( ' Default ' ) } ,
StatusSmall = { color = ' #FFFFFF ' , labelId = ' statusLabel ' } ,
warning = { color = ' #F55E5E ' , consoleTab = tr ( ' Server Log ' ) , labelId = ' centerWarning ' } ,
Private = { color = ' #5FF7F7 ' , labelId = ' privateLabel ' }
infoDescription = { color = ' #00EB00 ' , consoleTab = tr ( ' Server Log ' ) , labelId = ' centerInfo ' , consoleOption = ' showInfoMessagesInConsole ' } ,
eventAdvance = { color = ' #FFFFFF ' , consoleTab = tr ( ' Server Log ' ) , labelId = ' centerAdvance ' , consoleOption = ' showEventMessagesInConsole ' } ,
eventDefault = { color = ' #FFFFFF ' , consoleTab = tr ( ' Server Log ' ) , labelId = ' bottomStatus ' , consoleOption = ' showEventMessagesInConsole ' } ,
statusDefault = { color = ' #FFFFFF ' , consoleTab = tr ( ' Server Log ' ) , labelId = ' bottomStatus ' , consoleOption = ' showStatusMessagesInConsole ' } ,
statusSmall = { color = ' #FFFFFF ' , labelId = ' bottomStatus ' } ,
private = { color = ' #5FF7F7 ' , labelId = ' centerPrivate ' }
}
}
local centerTextMessagePanel
centerTextMessagePanel = nil
local bottomStatusLabel
statusLabel = nil
local privateLabel
privateLabel = nil
warningLabel = nil
-- private functions
advanceLabel = nil
local function displayMessage ( msgtype , msg , time )
infoLabel = nil
if not g_game.isOnline ( ) then return end
function init ( )
if msgtype.consoleTab ~= nil then
connect ( g_game , {
if msgtype.consoleOption == nil or Options.getOption ( msgtype.consoleOption ) then
onTextMessage = displayMessage ,
Console.addText ( msg , msgtype , msgtype.consoleTab )
onGameStart = clearMessages
end
} )
end
registerProtocol ( )
if msgtype.labelId then
g_ui.importStyle ( ' textmessage.otui ' )
local label = GameInterface.getMapPanel ( ) : recursiveGetChildById ( msgtype.labelId )
label : setText ( msg )
label : setColor ( msgtype.color )
if not time then
time = math.max ( # msg * 100 , 4000 )
else
time = time * 1000
end
removeEvent ( label.hideEvent )
addEvent ( function ( ) label : setVisible ( true ) end )
label.hideEvent = scheduleEvent ( function ( ) label : setVisible ( false ) end , time )
end
end
local function createTextMessageLabel ( id , parent , class )
local label = g_ui.createWidget ( class , parent )
label : setFont ( ' verdana-11px-rounded ' )
label : setId ( id )
return label
end
-- public functions
function TextMessage . init ( )
connect ( g_game , { onTextMessage = TextMessage.display ,
onGameStart = TextMessage.clearMessages } )
centerTextMessagePanel = g_ui.createWidget ( ' Panel ' , GameInterface.getMapPanel ( ) )
centerTextMessagePanel = g_ui.createWidget ( ' Panel ' , GameInterface.getMapPanel ( ) )
centerTextMessagePanel : setId ( ' centerTextMessagePanel ' )
centerTextMessagePanel : setId ( ' centerTextMessagePanel ' )
@ -69,55 +35,78 @@ function TextMessage.init()
centerTextMessagePanel : setWidth ( 360 )
centerTextMessagePanel : setWidth ( 360 )
centerTextMessagePanel : centerIn ( ' parent ' )
centerTextMessagePanel : centerIn ( ' parent ' )
createTextMessageLabel ( ' centerWarning ' , centerTextMessagePanel , ' CenterLabel ' )
warningLabel = createTextMessageLabel ( ' warningLabel ' , centerTextMessagePanel , ' CenterLabel ' )
createTextMessageLabel ( ' centerAdvance ' , centerTextMessagePanel , ' CenterLabel ' )
advanceLabel = createTextMessageLabel ( ' advanceLabel ' , centerTextMessagePanel , ' CenterLabel ' )
createTextMessageLabel ( ' centerInfo ' , centerTextMessagePanel , ' CenterLabel ' )
infoLabel = createTextMessageLabel ( ' infoLabel ' , centerTextMessagePanel , ' CenterLabel ' )
privateLabel = createTextMessageLabel ( ' privateLabel ' , GameInterface.getMapPanel ( ) , ' TopCenterLabel ' )
privateLabel = createTextMessageLabel ( ' centerPrivate ' , GameInterface.getMapPanel ( ) , ' TopCenterLabel ' )
statusLabel = createTextMessageLabel ( ' statusLabel ' , GameInterface.getMapPanel ( ) , ' BottomLabel ' )
bottomStatusLabel = createTextMessageLabel ( ' bottomStatus ' , GameInterface.getMapPanel ( ) , ' BottomLabel ' )
export ( {
clearMessages = clearMessages ,
displayStatus = function ( ) displayMessage ( MessageTypes.StatusSmall , msg ) end ,
displayEventAdvance = function ( ) displayMessage ( MessageTypes.EventAdvance , msg , time ) end ,
displayPrivate = function ( ) displayPrivate ( msg , time ) end
} , ' TextMessage ' )
end
end
function TextMessage . terminate ( )
function terminate ( )
disconnect ( g_game , { onDeath = TextMessage.displayDeadMessage ,
disconnect ( g_game , {
onTextMessage = TextMessage.display ,
onTextMessage = display ,
onGameStart = TextMessage.clearMessages } )
onGameStart = clearMessages
removeEvent ( GameInterface.getMapPanel ( ) : recursiveGetChildById ( ' centerWarning ' ) . hideEvent )
} )
removeEvent ( GameInterface.getMapPanel ( ) : recursiveGetChildById ( ' centerAdvance ' ) . hideEvent )
unregisterProtocol ( )
removeEvent ( GameInterface.getMapPanel ( ) : recursiveGetChildById ( ' centerInfo ' ) . hideEvent )
removeEvent ( GameInterface.getMapPanel ( ) : recursiveGetChildById ( ' centerPrivate ' ) . hideEvent )
removeEvent ( warningLabel.hideEvent )
removeEvent ( GameInterface.getMapPanel ( ) : recursiveGetChildById ( ' bottomStatus ' ) . hideEvent )
removeEvent ( advanceLabel.hideEvent )
removeEvent ( infoLabel.hideEvent )
removeEvent ( privateLabel.hideEvent )
removeEvent ( statusLabel.hideEvent )
centerTextMessagePanel : destroy ( )
centerTextMessagePanel : destroy ( )
bottomStatusLabel : destroy ( )
s tatusLabel: destroy ( )
privateLabel : destroy ( )
privateLabel : destroy ( )
centerTextMessagePanel = nil
bottomStatusLabel = nil
privateLabel = nil
TextMessage = nil
end
function TextMessage . clearMessages ( )
unexport ( ' TextMessage ' )
GameInterface.getMapPanel ( ) : recursiveGetChildById ( ' centerWarning ' ) : hide ( )
GameInterface.getMapPanel ( ) : recursiveGetChildById ( ' centerAdvance ' ) : hide ( )
GameInterface.getMapPanel ( ) : recursiveGetChildById ( ' centerInfo ' ) : hide ( )
GameInterface.getMapPanel ( ) : recursiveGetChildById ( ' centerPrivate ' ) : hide ( )
GameInterface.getMapPanel ( ) : recursiveGetChildById ( ' bottomStatus ' ) : hide ( )
end
end
function TextMessage . displayStatus ( msg , time )
function clearMessages ( )
displayMessage ( MessageTypes.statusSmall , msg )
warningLabel : hide ( )
advanceLabel : hide ( )
infoLabel : hide ( )
privateLabel : hide ( )
statusLabel : hide ( )
end
end
function TextMessage . displayEventAdvance ( msg , time )
function createTextMessageLabel ( id , parent , class )
displayMessage ( MessageTypes.eventAdvance , msg , time )
local label = g_ui.createWidget ( class , parent )
label : setFont ( ' verdana-11px-rounded ' )
label : setId ( id )
return label
end
end
function TextMessage . displayPrivate ( msg , time )
function displayMessage ( msgtype , msg , time )
displayMessage ( MessageTypes.private , msg , time )
if not g_game.isOnline ( ) then return end
end
msgtypeconf = MessageTypesConf [ msgtype ]
function TextMessage . display ( msgtypedesc , msg )
if msgtypeconf.consoleTab ~= nil then
local msgtype = MessageTypes [ msgtypedesc ]
if msgtypeconf.consoleOption == nil or Options.getOption ( msgtypeconf.consoleOption ) then
if msgtype then
Console.addText ( msg , msgtypeconf , msgtypeconf.consoleTab )
displayMessage ( msgtype , msg )
end
end
if msgtypeconf.labelId then
local label = GameInterface.getMapPanel ( ) : recursiveGetChildById ( msgtypeconf.labelId )
label : setText ( msg )
label : setColor ( msgtypeconf.color )
if not time then
time = math.max ( # msg * 100 , 4000 )
else
time = time * 1000
end
removeEvent ( label.hideEvent )
addEvent ( function ( ) label : setVisible ( true ) end )
label.hideEvent = scheduleEvent ( function ( ) label : setVisible ( false ) end , time )
end
end
end
end