Changeset View
Changeset View
Standalone View
Standalone View
binaries/data/mods/public/gui/lobby/LobbyPage/Buttons/BuddyButton.js
- This file was added.
Property | Old Value | New Value |
---|---|---|
svn:eol-style | null | native \ No newline at end of property |
/** | |||||
* This class manages the button that enables the player to add or remove buddies. | |||||
*/ | |||||
class BuddyButton | |||||
{ | |||||
constructor(xmppMessages) | |||||
{ | |||||
this.buddyChangedHandlers = new Set(); | |||||
this.playerName = undefined; | |||||
this.toggleBuddyButton = Engine.GetGUIObjectByName("toggleBuddyButton"); | |||||
this.toggleBuddyButton.onPress = this.onPress.bind(this); | |||||
let rebuild = this.rebuild.bind(this); | |||||
xmppMessages.registerHandler("system", "connected", rebuild); | |||||
xmppMessages.registerHandler("system", "disconnected", rebuild); | |||||
this.rebuild(); | |||||
} | |||||
registerBuddyChangeHandler(handler) | |||||
{ | |||||
this.buddyChangedHandlers.add(handler); | |||||
} | |||||
onPlayerSelectionChange(playerName) | |||||
{ | |||||
this.playerName = playerName; | |||||
this.rebuild(); | |||||
} | |||||
rebuild() | |||||
{ | |||||
this.toggleBuddyButton.caption = | |||||
g_Buddies.indexOf(this.playerName) != -1 ? | |||||
this.UnmarkString : | |||||
this.MarkString; | |||||
this.toggleBuddyButton.enabled = Engine.IsXmppClientConnected() && !!this.playerName && this.playerName != g_Username; | |||||
} | |||||
/** | |||||
* Toggle the buddy state of the selected player. | |||||
*/ | |||||
onPress() | |||||
{ | |||||
if (!this.playerName || this.playerName == g_Username || this.playerName.indexOf(g_BuddyListDelimiter) != -1) | |||||
return; | |||||
let index = g_Buddies.indexOf(this.playerName); | |||||
if (index != -1) | |||||
g_Buddies.splice(index, 1); | |||||
else | |||||
g_Buddies.push(this.playerName); | |||||
Engine.ConfigDB_CreateAndWriteValueToFile( | |||||
"user", | |||||
"lobby.buddies", | |||||
g_Buddies.filter(nick => nick).join(g_BuddyListDelimiter) || g_BuddyListDelimiter, | |||||
"config/user.cfg"); | |||||
this.rebuild(); | |||||
for (let handler of this.buddyChangedHandlers) | |||||
handler(); | |||||
} | |||||
} | |||||
BuddyButton.prototype.MarkString = translate("Mark as Buddy"); | |||||
BuddyButton.prototype.UnmarkString = translate("Unmark as Buddy"); |
Wildfire Games · Phabricator