Changeset View
Changeset View
Standalone View
Standalone View
binaries/data/mods/public/gui/lobby/XmppMessages.js
- This file was added.
Property | Old Value | New Value |
---|---|---|
svn:eol-style | null | native \ No newline at end of property |
/** | |||||
* This class stores and triggers the event handlers for the GUI messages constructed by the XmppClient. | |||||
*/ | |||||
class XmppMessages | |||||
{ | |||||
constructor() | |||||
{ | |||||
this.messageHandlers = {}; | |||||
for (let type in this.MessageTypes) | |||||
{ | |||||
this.messageHandlers[type] = {}; | |||||
for (let level of this.MessageTypes[type]) | |||||
this.messageHandlers[type][level] = new Set(); | |||||
} | |||||
this.messageBatchProcessedHandlers = new Set(); | |||||
Engine.GetGUIObjectByName("lobbyPage").onTick = | |||||
this.handleMessages.bind(this, Engine.LobbyGuiPollNewMessages); | |||||
} | |||||
registerHandler(type, level, handler) | |||||
{ | |||||
this.messageHandlers[type][level].add(handler); | |||||
} | |||||
unregisterHandler(type, level, handler) | |||||
{ | |||||
this.messageHandlers[type][level].delete(handler); | |||||
} | |||||
registerMessageBatchProcessedHandler(handler) | |||||
{ | |||||
this.messageBatchProcessedHandlers.add(handler); | |||||
} | |||||
unregisterMessageBatchProcessedHandler(handler) | |||||
{ | |||||
this.messageBatchProcessedHandlers.delete(handler); | |||||
} | |||||
processHistoricMessages() | |||||
{ | |||||
this.handleMessages(Engine.LobbyGuiPollHistoricMessages); | |||||
} | |||||
handleMessages(getMessages) | |||||
{ | |||||
let messages = getMessages(); | |||||
if (!messages) | |||||
return; | |||||
for (let message of messages) | |||||
{ | |||||
if (!this.messageHandlers[message.type]) | |||||
error("Unrecognized message type: " + message.type); | |||||
else if (!this.messageHandlers[message.type][message.level]) | |||||
error("Unrecognized message level: " + message.level); | |||||
else | |||||
for (let handler of this.messageHandlers[message.type][message.level]) | |||||
handler(message); | |||||
} | |||||
for (let handler of this.messageBatchProcessedHandlers) | |||||
handler(); | |||||
} | |||||
} | |||||
/** | |||||
* Processing of notifications sent by XmppClient.cpp. | |||||
*/ | |||||
XmppMessages.prototype.MessageTypes = { | |||||
"system": [ | |||||
"registered", | |||||
"connected", | |||||
"disconnected", | |||||
"error" | |||||
], | |||||
"chat": [ | |||||
"subject", | |||||
"join", | |||||
"leave", | |||||
"role", | |||||
"nick", | |||||
"kicked", | |||||
"banned", | |||||
"room-message", | |||||
"private-message" | |||||
], | |||||
"game": [ | |||||
"gamelist", | |||||
"profile", | |||||
"leaderboard", | |||||
"ratinglist" | |||||
] | |||||
}; |
Wildfire Games · Phabricator