// PLAYER NAMES ////////////////////////////////////////////////////// // Player names are cached in local storage forever. There is no GUI // element from within the total conversion to clean them, but you // can run localStorage.clean() to reset it. // retrieves player name by GUID. If the name is not yet available, it // will be added to a global list of GUIDs that need to be resolved. // The resolve method is not called automatically. window.getPlayerName = function(guid) { if(localStorage[guid]) return localStorage[guid]; // only add to queue if it isn’t already if(playersToResolve.indexOf(guid) === -1 && playersInResolving.indexOf(guid) === -1) { console.log('resolving player guid=' + guid); playersToResolve.push(guid); } return '{'+guid.slice(0, 12)+'}'; } // resolves all player GUIDs that have been added to the list. Reruns // renderPortalDetails when finished, so that then-unresolved names // get replaced by their correct versions. window.resolvePlayerNames = function() { if(window.playersToResolve.length === 0) return; var p = window.playersToResolve; var d = {guids: p}; playersInResolving = window.playersInResolving.concat(p); playersToResolve = []; postAjax('getPlayersByGuids', d, function(dat) { $.each(dat.result, function(ind, player) { localStorage[player.guid] = player.nickname; // remove from array window.playersInResolving.splice(window.playersInResolving.indexOf(player.guid), 1); }); if(window.selectedPortal) window.renderPortalDetails(window.selectedPortal); }, function() { // append failed resolves to the list again console.warn('resolving player guids failed: ' + p.join(', ')); window.playersToResolve.concat(p); }); }