Clientside Lobby support for muted players (visitor role).
Displays a chat message and a notification in the player details to everyone if someone was muted and hides the chat input to visitors. Differential Revision: https://code.wildfiregames.com/D339 Reviewed By: user1 This was SVN commit r19514.
This commit is contained in:
parent
ba37ff9907
commit
76bc9b579a
@ -53,6 +53,12 @@ const g_PlayerStatuses = {
|
|||||||
"unknown": { "color": "178 178 178", "status": translateWithContext("lobby presence", "Unknown") }
|
"unknown": { "color": "178 178 178", "status": translateWithContext("lobby presence", "Unknown") }
|
||||||
};
|
};
|
||||||
|
|
||||||
|
const g_RoleNames = {
|
||||||
|
"moderator": translate("Moderator"),
|
||||||
|
"participant": translate("Player"),
|
||||||
|
"visitor": translate("Muted Player")
|
||||||
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Color for error messages in the chat.
|
* Color for error messages in the chat.
|
||||||
*/
|
*/
|
||||||
@ -136,6 +142,7 @@ var g_NetMessageTypes = {
|
|||||||
|
|
||||||
for (let button of ["host", "leaderboard", "userprofile", "toggleBuddy"])
|
for (let button of ["host", "leaderboard", "userprofile", "toggleBuddy"])
|
||||||
Engine.GetGUIObjectByName(button + "Button").enabled = false;
|
Engine.GetGUIObjectByName(button + "Button").enabled = false;
|
||||||
|
Engine.GetGUIObjectByName("chatInput").hidden = true;
|
||||||
|
|
||||||
if (!g_Kicked)
|
if (!g_Kicked)
|
||||||
addChatMessage({
|
addChatMessage({
|
||||||
@ -175,6 +182,40 @@ var g_NetMessageTypes = {
|
|||||||
},
|
},
|
||||||
"presence": msg => {
|
"presence": msg => {
|
||||||
},
|
},
|
||||||
|
"role": msg => {
|
||||||
|
Engine.GetGUIObjectByName("chatInput").hidden = Engine.LobbyGetPlayerRole(g_Username) == "visitor";
|
||||||
|
|
||||||
|
let me = g_Username == msg.text;
|
||||||
|
let role = Engine.LobbyGetPlayerRole(msg.text);
|
||||||
|
let txt =
|
||||||
|
role == "visitor" ?
|
||||||
|
me ?
|
||||||
|
translate("You have been muted.") :
|
||||||
|
translate("%(nick)s has been muted.") :
|
||||||
|
role == "moderator" ?
|
||||||
|
me ?
|
||||||
|
translate("You are now a moderator.") :
|
||||||
|
translate("%(nick)s is now a moderator.") :
|
||||||
|
msg.data == "visitor" ?
|
||||||
|
me ?
|
||||||
|
translate("You have been unmuted.") :
|
||||||
|
translate("%(nick)s has been unmuted.") :
|
||||||
|
me ?
|
||||||
|
translate("You are not a moderator anymore.") :
|
||||||
|
translate("%(nick)s is not a moderator anymore.");
|
||||||
|
|
||||||
|
addChatMessage({
|
||||||
|
"text": "/special " + sprintf(txt, { "nick": msg.text }),
|
||||||
|
"isSpecial": true
|
||||||
|
});
|
||||||
|
|
||||||
|
// Update status information if that player is selected
|
||||||
|
if (g_SelectedPlayer == msg.text)
|
||||||
|
{
|
||||||
|
let playersBox = Engine.GetGUIObjectByName("playersBox");
|
||||||
|
playersBox.selected = playersBox.list.indexOf(g_SelectedPlayer);
|
||||||
|
}
|
||||||
|
},
|
||||||
"nick": msg => {
|
"nick": msg => {
|
||||||
addChatMessage({
|
addChatMessage({
|
||||||
"text": "/special " + sprintf(translate("%(oldnick)s is now known as %(newnick)s."), {
|
"text": "/special " + sprintf(translate("%(oldnick)s is now known as %(newnick)s."), {
|
||||||
@ -657,9 +698,8 @@ function lookupSelectedUserProfile(guiObjectName)
|
|||||||
|
|
||||||
Engine.SendGetProfile(playerName);
|
Engine.SendGetProfile(playerName);
|
||||||
|
|
||||||
let isModerator = Engine.LobbyGetPlayerRole(playerName) == "moderator";
|
|
||||||
Engine.GetGUIObjectByName("usernameText").caption = playerName;
|
Engine.GetGUIObjectByName("usernameText").caption = playerName;
|
||||||
Engine.GetGUIObjectByName("roleText").caption = isModerator ? translate("Moderator") : translate("Player");
|
Engine.GetGUIObjectByName("roleText").caption = g_RoleNames[Engine.LobbyGetPlayerRole(playerName)]
|
||||||
Engine.GetGUIObjectByName("rankText").caption = translate("N/A");
|
Engine.GetGUIObjectByName("rankText").caption = translate("N/A");
|
||||||
Engine.GetGUIObjectByName("highestRatingText").caption = translate("N/A");
|
Engine.GetGUIObjectByName("highestRatingText").caption = translate("N/A");
|
||||||
Engine.GetGUIObjectByName("totalGamesText").caption = translate("N/A");
|
Engine.GetGUIObjectByName("totalGamesText").caption = translate("N/A");
|
||||||
|
@ -751,12 +751,12 @@ void XmppClient::CreateGUIMessage(const std::string& type, const std::string& le
|
|||||||
*/
|
*/
|
||||||
void XmppClient::handleMUCParticipantPresence(glooxwrapper::MUCRoom*, const glooxwrapper::MUCRoomParticipant participant, const glooxwrapper::Presence& presence)
|
void XmppClient::handleMUCParticipantPresence(glooxwrapper::MUCRoom*, const glooxwrapper::MUCRoomParticipant participant, const glooxwrapper::Presence& presence)
|
||||||
{
|
{
|
||||||
//std::string jid = participant.jid->full();
|
|
||||||
std::string nick = participant.nick->resource().to_string();
|
std::string nick = participant.nick->resource().to_string();
|
||||||
gloox::Presence::PresenceType presenceType = presence.presence();
|
gloox::Presence::PresenceType presenceType = presence.presence();
|
||||||
std::string presenceString, roleString;
|
std::string presenceString, roleString;
|
||||||
GetPresenceString(presenceType, presenceString);
|
GetPresenceString(presenceType, presenceString);
|
||||||
GetRoleString(participant.role, roleString);
|
GetRoleString(participant.role, roleString);
|
||||||
|
|
||||||
if (presenceType == gloox::Presence::Unavailable)
|
if (presenceType == gloox::Presence::Unavailable)
|
||||||
{
|
{
|
||||||
if (!participant.newNick.empty() && (participant.flags & (gloox::UserNickChanged | gloox::UserSelf)))
|
if (!participant.newNick.empty() && (participant.flags & (gloox::UserNickChanged | gloox::UserSelf)))
|
||||||
@ -800,6 +800,8 @@ void XmppClient::handleMUCParticipantPresence(glooxwrapper::MUCRoom*, const gloo
|
|||||||
}
|
}
|
||||||
else if (m_PlayerMap.find(nick) == m_PlayerMap.end())
|
else if (m_PlayerMap.find(nick) == m_PlayerMap.end())
|
||||||
CreateGUIMessage("chat", "join", nick);
|
CreateGUIMessage("chat", "join", nick);
|
||||||
|
else if (m_PlayerMap[nick][2] != roleString)
|
||||||
|
CreateGUIMessage("chat", "role", nick, m_PlayerMap[nick][2]);
|
||||||
else
|
else
|
||||||
CreateGUIMessage("chat", "presence", nick);
|
CreateGUIMessage("chat", "presence", nick);
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user