Ticket #3244: t3244_keep_player_selection_r16665.patch
File t3244_keep_player_selection_r16665.patch, 2.9 KB (added by , 9 years ago) |
---|
-
binaries/data/mods/public/gui/lobby/lobby.js
1 1 var g_ChatMessages = []; 2 2 var g_Name = "unknown"; 3 3 var g_GameList = {}; 4 var g_selectedNick = ""; 4 5 var g_specialKey = Math.random(); 5 6 // This object looks like {"name":[numMessagesSinceReset, lastReset, timeBlocked]} when in use. 6 7 var g_spamMonitor = {}; 7 8 var g_timestamp = Engine.ConfigDB_GetValue("user", "lobby.chattimestamp") == "true"; 8 9 var g_mapSizes = {}; … … 154 155 * @return Array containing the player, presence, nickname, and rating listings. 155 156 */ 156 157 function updatePlayerList() 157 158 { 158 159 var playersBox = Engine.GetGUIObjectByName("playersBox"); 160 161 if (playersBox.selected > -1) 162 g_selectedNick = playersBox.list[playersBox.selected]; 163 159 164 var playerList = []; 160 165 var presenceList = []; 161 166 var nickList = []; 162 167 var ratingList = []; 163 168 var cleanPlayerList = Engine.GetPlayerList(); … … 189 194 } 190 195 playersBox.list_name = playerList; 191 196 playersBox.list_status = presenceList; 192 197 playersBox.list_rating = ratingList; 193 198 playersBox.list = nickList; 194 if (playersBox.selected >= playersBox.list.length) 195 playersBox.selected = -1; 199 200 // Select the previously selected player 201 playersBox.selected = nickList.indexOf(g_selectedNick); 202 196 203 return [playerList, presenceList, nickList, ratingList]; 197 204 } 198 205 199 206 /** 200 207 * Display the profile of the selected player. … … 627 634 var playerList = playersBox.list_name; 628 635 var presenceList = playersBox.list_status; 629 636 var nickList = playersBox.list; 630 637 var ratingList = playersBox.list_rating; 631 638 var nickIndex = nickList.indexOf(nick); 639 640 if (playersBox.selected > -1) 641 g_selectedNick = nickList[playersBox.selected]; 642 632 643 switch(message.level) 633 644 { 634 645 case "join": 635 646 if (nick == g_Name) 636 647 { … … 662 673 addChatMessage({ "text": "/special " + sprintf(translate("%(nick)s has left."), { nick: nick }), "key": g_specialKey }); 663 674 break; 664 675 case "nick": 665 676 if (nickIndex == -1) // This shouldn't ever happen 666 677 break; 678 667 679 if (!isValidNick(message.data)) 668 680 { 669 681 addChatMessage({ "from": "system", "text": sprintf(translate("Invalid nickname: %(nick)s"), { nick: message.data })}); 670 682 break; 671 683 } … … 694 706 // Push new data to GUI 695 707 playersBox.list_name = playerList; 696 708 playersBox.list_status = presenceList; 697 709 playersBox.list_rating = ratingList; 698 710 playersBox.list = nickList; 699 if (playersBox.selected >= playersBox.list.length)700 playersBox.selected = -1;711 // Select the previously selected player 712 playersBox.selected = nickList.indexOf(g_selectedNick); 701 713 break; 702 714 case "system": 703 715 switch (message.level) 704 716 { 705 717 case "standard":