Ticket #3388: t3388_fix_initial_playerlist_v2.diff
File t3388_fix_initial_playerlist_v2.diff, 3.0 KB (added by , 9 years ago) |
---|
-
binaries/data/mods/public/gui/lobby/lobby.js
41 41 42 42 var mapTypeFilter = Engine.GetGUIObjectByName("mapTypeFilter"); 43 43 mapTypeFilter.list = [translateWithContext("map", "Any")].concat(g_mapTypesText); 44 44 mapTypeFilter.list_data = [""].concat(g_mapTypes); 45 45 46 // The initial list is loaded on "join-completed". 47 // This call is only needed to init the list when we return from a match. 48 updatePlayerList(); 49 46 50 Engine.LobbySetPlayerPresence("available"); 47 51 Engine.SendGetGameList(); 48 52 Engine.SendGetBoardList(); 49 updatePlayerList();50 53 updateSubject(Engine.LobbyGetRoomSubject()); 51 54 52 55 resetFilters(); 53 56 } 54 57 … … 762 765 updateLeaderboard(); 763 766 updatePlayerList(); 764 767 // Disable the 'host' button 765 768 Engine.GetGUIObjectByName("hostButton").enabled = false; 766 769 } 767 else if (message.text == "connected") 768 { 769 Engine.GetGUIObjectByName("hostButton").enabled = true; 770 } 770 // else if (message.text == "connected") // currently we don't attempt to rejoin 771 771 break; 772 772 case "error": 773 773 addChatMessage({ "from": "system", "text": text, "color": "150 0 0" }); 774 774 break; 775 775 case "internal": 776 776 switch (message.text) 777 777 { 778 case "join-completed": 779 // We finished downloading the playerlist after connecting 780 updatePlayerList(); 781 break; 778 782 case "gamelist updated": 779 783 updateGameList(); 780 784 break; 781 785 case "boardlist updated": 782 786 updateLeaderboard(); -
source/lobby/XmppClient.cpp
801 801 DbgXMPP(nick << " left the room"); 802 802 m_PlayerMap.erase(nick); 803 803 } 804 804 else 805 805 { 806 /* During the initialization process, we recieve join messages for everyone 807 * currently in the room. We don't want to display these, so we filter them 808 * out. We will always be the last to join during initialization. 809 */ 810 if (!m_initialLoadComplete) 806 // Send user join/leave events after we joined 807 if (m_initialLoadComplete) 811 808 { 812 if (m_mucRoom->nick().to_string() == nick) 813 m_initialLoadComplete = true; 809 if (m_PlayerMap.find(nick) == m_PlayerMap.end()) 810 CreateSimpleMessage("muc", nick, "join"); 811 else 812 CreateSimpleMessage("muc", nick, "presence"); 813 } 814 else if (m_mucRoom->nick().to_string() == nick) 815 { 816 m_initialLoadComplete = true; 817 CreateSimpleMessage("system", "join-completed", "internal"); 814 818 } 815 else if (m_PlayerMap.find(nick) == m_PlayerMap.end())816 CreateSimpleMessage("muc", nick, "join");817 else818 CreateSimpleMessage("muc", nick, "presence");819 819 820 820 DbgXMPP(nick << " is in the room, presence : " << (int)presenceType); 821 821 m_PlayerMap[nick].resize(3); 822 822 m_PlayerMap[nick][0] = presenceString; 823 823 m_PlayerMap[nick][2] = roleString;