Differential D3720 Diff 16643 binaries/data/mods/public/gui/gamesetup/Pages/GameSetupPage/Panels/Chat.js
Changeset View
Changeset View
Standalone View
Standalone View
binaries/data/mods/public/gui/gamesetup/Pages/GameSetupPage/Panels/Chat.js
- This file was added.
/** | |||||
* Properties of this prototype are classes that subscribe to one or more events and | |||||
* construct a formatted chat message to be displayed on that event. | |||||
* | |||||
* Important: Apply escapeText on player provided input to avoid players breaking the game for everybody. | |||||
*/ | |||||
class ChatMessageEvents | |||||
{ | |||||
} | |||||
class Chat | |||||
{ | |||||
constructor(setupWindow, gameSettingControlManager, gameSettingsPanel) | |||||
{ | |||||
let useTimestampWrapper = Engine.ConfigDB_GetValue("user", this.ConfigTimestamp) == "true"; | |||||
this.chatPanel = new ChatPanel(useTimestampWrapper); | |||||
this.chatPanel.setAutocompleteGetter((entries) => this.gameSettingControlManager.addAutocompleteEntries(entries)); | |||||
this.chatMessageEvents = []; | |||||
for (let name in ChatMessageEvents) | |||||
this.chatMessageEvents.push(new ChatMessageEvents[name](setupWindow, this.chatPanel)); | |||||
this.gameSettingsPanel = gameSettingsPanel; | |||||
gameSettingsPanel.registerGameSettingsPanelResizeHandler(this.onGameSettingsPanelResize.bind(this)); | |||||
setupWindow.controls.netMessages.registerNetMessageHandler("netstatus", this.onNetStatusMessage.bind(this)); | |||||
setupWindow.controls.playerAssignmentsController.registerPlayerAssignmentsChangeHandler(this.onAutocompleteChange.bind(this)); | |||||
setupWindow.controls.gameSettingsController.registerSettingsChangeHandler(this.onAutocompleteChange.bind(this)); | |||||
// TODO: Remove global requirements by gui/common/network.js | |||||
g_NetworkCommands["/list"] = () => { this.chatPanel.addText(getUsernameList()); }; | |||||
g_NetworkCommands["/clear"] = () => this.chatPanel.clearChatMessages(); | |||||
global.kickError = () => {}; | |||||
} | |||||
onAutocompleteChange() | |||||
{ | |||||
this.chatPanel.onAutocompleteChange(); | |||||
} | |||||
onNetStatusMessage(message) | |||||
{ | |||||
if (message.status == "disconnected") | |||||
{ | |||||
reportDisconnect(message.reason, true); | |||||
this.chatPanel.setEnabledInput(false); | |||||
} | |||||
} | |||||
onGameSettingsPanelResize(settingsPanel) | |||||
{ | |||||
let size = this.chatPanel.getSize(); | |||||
size.right = settingsPanel.size.left + this.gameSettingsPanel.MaxColumnWidth + this.Margin; | |||||
this.chatPanel.setSize(size); | |||||
} | |||||
} | |||||
/** | |||||
* Horizontal space between the chat window and the settings panel. | |||||
*/ | |||||
Chat.prototype.Margin = 10; | |||||
Chat.prototype.ConfigTimestamp = "chat.timestamp"; |
Wildfire Games · Phabricator